diff -Nru qca2-2.0.3/apidocs/html/aes-cmac.cpp-example.html qca2-2.1.0/apidocs/html/aes-cmac.cpp-example.html --- qca2-2.0.3/apidocs/html/aes-cmac.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/aes-cmac.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,351 +0,0 @@ - - - - -Qt Cryptographic Architecture: aes-cmac.cpp - - - - - - -
-

aes-cmac.cpp

This example shows how to implement a client side "provider".There are three important parts to this:

- -
/*
- Copyright (C) 2006 Brad Hards <bradh@frogmouth.net>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-// QtCrypto has the declarations for all of QCA
-#include <QtCrypto>
-
-#include <QCoreApplication>
-#include <QDebug>
-
-class AESCMACContext : public QCA::MACContext
-{
-public:
-    AESCMACContext(QCA::Provider *p) : QCA::MACContext(p, "cmac(aes)")
-    {
-    }
-
-    ~AESCMACContext()
-    {
-    }
-
-
-    // Helper to left shift an arbitrary length array
-    // This is heavily based on the example in the I-D.
-    QCA::SecureArray leftShift(const QCA::SecureArray &array)
-    {
-        // We create an output of the same size as the input
-        QCA::SecureArray out(array.size());
-        // We handle one byte at a time - this is the high bit
-        // from the previous byte.
-        int overflow = 0;
-
-        // work through each byte.
-        for (int i = array.size() -1; i >= 0; --i) {
-            // do the left shift on this byte.
-            out[i] = array[i] << 1;
-            // make the low bit on this byte be the high bit
-            // from the previous byte.
-            out[i] |= overflow;
-            // save the high bit for next time
-            overflow = (array[i] & 0x80) ? 1 : 0;
-        }
-        return out;
-    }
-
-
-    // Helper to XOR two arrays - must be same length
-    QCA::SecureArray xorArray(const QCA::SecureArray &array1,
-                          const QCA::SecureArray &array2)
-    {
-        if (array1.size() != array2.size())
-            // empty array
-            return QCA::SecureArray();
-
-        QCA::SecureArray result(array1.size());
-
-        for (int i = 0; i < array1.size(); ++i)
-            result[i] = array1[i] ^ array2[i];
-
-        return result;
-    }
-
-
-    void setup(const QCA::SymmetricKey &key)
-    {
-        // We might not have a real key, since this can get called
-        // from the constructor.
-        if (key.size() == 0)
-            return;
-
-        m_key = key;
-        // Generate the subkeys
-        QCA::SecureArray const_Zero(16);
-        QCA::SecureArray const_Rb(16);
-        const_Rb[15] = (char)0x87;
-
-        m_X = const_Zero;
-        m_residual = QCA::SecureArray();
-
-        // Figure 2.2, step 1.
-        QCA::Cipher aesObj(QString("aes128"),
-                           QCA::Cipher::ECB, QCA::Cipher::DefaultPadding,
-                           QCA::Encode, key);
-        QCA::SecureArray L = aesObj.process(const_Zero);
-
-        // Figure 2.2, step 2
-        if (0 == (L[0] & 0x80))
-            m_k1 = leftShift(L);
-        else
-            m_k1 = xorArray(leftShift(L), const_Rb);
-
-        // Figure 2.2, step 3
-        if (0 == (m_k1[0] & 0x80))
-            m_k2 = leftShift(m_k1);
-        else
-            m_k2 = xorArray(leftShift(m_k1), const_Rb);
-    }
-
-    QCA::Provider::Context *clone() const
-    {
-        return new AESCMACContext(*this);
-    }
-
-    void clear()
-    {
-        setup(m_key);
-    }
-
-    QCA::KeyLength keyLength() const
-    {
-        return QCA::KeyLength(16, 16, 1);
-    }
-
-    // This is a bit different to the way the I-D does it,
-    // to allow for multiple update() calls.
-    void update(const QCA::MemoryRegion &a)
-    {
-        QCA::SecureArray bytesToProcess = m_residual + a;
-        int blockNum;
-        // note that we don't want to do the last full block here, because
-        // it needs special treatment in final().
-        for (blockNum = 0; blockNum < ((bytesToProcess.size()-1)/16); ++blockNum) {
-            // copy a block of data
-            QCA::SecureArray thisBlock(16);
-            for (int yalv = 0; yalv < 16; ++yalv)
-                thisBlock[yalv] = bytesToProcess[blockNum*16 + yalv];
-
-            m_Y = xorArray(m_X, thisBlock);
-
-            QCA::Cipher aesObj(QString("aes128"),
-                               QCA::Cipher::ECB, QCA::Cipher::DefaultPadding,
-                               QCA::Encode, m_key);
-            m_X = aesObj.process(m_Y);
-        }
-        // This can be between 1 and 16
-        int numBytesLeft = bytesToProcess.size() - 16*blockNum;
-        // we copy the left over part
-        m_residual.resize(numBytesLeft);
-        for(int yalv = 0; yalv < numBytesLeft; ++yalv)
-            m_residual[yalv] = bytesToProcess[blockNum*16 + yalv];
-    }
-
-    void final( QCA::MemoryRegion *out)
-    {
-        QCA::SecureArray lastBlock;
-        int numBytesLeft = m_residual.size();
-
-        if ( numBytesLeft != 16 ) {
-            // no full block, so we have to pad.
-            m_residual.resize(16);
-            m_residual[numBytesLeft] = (char)0x80;
-            lastBlock = xorArray(m_residual, m_k2);
-        } else {
-            // this is a full block - no padding
-            lastBlock = xorArray(m_residual, m_k1);
-        }
-        m_Y = xorArray(m_X, lastBlock);
-        QCA::Cipher aesObj(QString("aes128"),
-                           QCA::Cipher::ECB, QCA::Cipher::DefaultPadding,
-                           QCA::Encode, m_key);
-        *out = aesObj.process(m_Y);
-
-    }
-
-protected:
-    // first subkey
-    QCA::SecureArray m_k1;
-    // second subkey
-    QCA::SecureArray m_k2;
-    // main key
-    QCA::SecureArray m_key;
-
-    // state
-    QCA::SecureArray m_X;
-    QCA::SecureArray m_Y;
-
-    // partial block that we can't do yet
-    QCA::SecureArray m_residual;
-};
-
-class ClientSideProvider : public QCA::Provider
-{
-public:
-        int qcaVersion() const
-        {
-                return QCA_VERSION;
-        }
-
-        QString name() const
-        {
-                return "exampleClientSideProvider";
-        }
-
-        QStringList features() const
-        {
-                QStringList list;
-                list += "cmac(aes)";
-                // you can add more features in here, if you have some.
-                return list;
-        }
-
-        Provider::Context *createContext(const QString &type)
-        {
-            if(type == "cmac(aes)")
-                return new AESCMACContext(this);
-            // else if (type == some other feature)
-            //  return some other context.
-            else
-                return 0;
-        }
-};
-
-
-// AES CMAC is a Message Authentication Code based on a block cipher
-// instead of the more normal keyed hash.
-// See RFC 4493 "The AES-CMAC Algorithm"
-class AES_CMAC: public QCA::MessageAuthenticationCode
-{
-public:
-    AES_CMAC(const QCA::SymmetricKey &key = QCA::SymmetricKey(),
-             const QString &provider = QString()):
-        QCA::MessageAuthenticationCode( "cmac(aes)", key, provider)
-    {}
-};
-
-
-int main(int argc, char **argv)
-{
-    // the Initializer object sets things up, and
-    // also does cleanup when it goes out of scope
-    QCA::Initializer init;
-
-    qDebug() << "This example shows AES CMAC";
-
-    QCoreApplication app(argc, argv);
-
-    if( ! QCA::isSupported("aes128-ecb") ) {
-        qDebug() << "AES not supported!";
-    }
-
-    if ( QCA::insertProvider(new ClientSideProvider, 0) )
-        qDebug() << "Inserted our provider";
-    else
-        qDebug() << "our provider could not be added";
-
-    // We should check AES CMAC is supported before using it.
-    if( ! QCA::isSupported("cmac(aes)") ) {
-        qDebug() << "AES CMAC not supported!";
-    } else {
-        // create the required object
-        AES_CMAC cmacObject;
-
-        // create the key
-        QCA::SymmetricKey key(QCA::hexToArray("2b7e151628aed2a6abf7158809cf4f3c"));
-
-        // set the MAC to use the key
-        cmacObject.setup(key);
-
-        QCA::SecureArray message = QCA::hexToArray("6bc1bee22e409f96e93d7e117393172a"
-                                               "ae2d8a571e03ac9c9eb76fac45af8e51"
-                                               "30c81c46a35ce411e5fbc1191a0a52ef"
-                                               "f69f2445df4f9b17ad2b417be66c3710");
-        QCA::SecureArray message1(message);
-        message1.resize(0);
-        qDebug();
-        qDebug() << "Message1: " << QCA::arrayToHex(message1.toByteArray());
-        qDebug() << "Expecting:  bb1d6929e95937287fa37d129b756746";
-        qDebug() << "AES-CMAC: " << QCA::arrayToHex(cmacObject.process(message1).toByteArray());
-
-        cmacObject.clear();
-        QCA::SecureArray message2(message);
-        message2.resize(16);
-        qDebug();
-        qDebug() << "Message2: " << QCA::arrayToHex(message2.toByteArray());
-        qDebug() << "Expecting:  070a16b46b4d4144f79bdd9dd04a287c";
-        qDebug() << "AES-CMAC: " << QCA::arrayToHex(cmacObject.process(message2).toByteArray());
-
-        cmacObject.clear();
-        QCA::SecureArray message3(message);
-        message3.resize(40);
-        qDebug();
-        qDebug() << "Message3: " << QCA::arrayToHex(message3.toByteArray());
-        qDebug() << "Expecting:  dfa66747de9ae63030ca32611497c827";
-        qDebug() << "AES-CMAC  " << QCA::arrayToHex(cmacObject.process(message3).toByteArray());
-
-        cmacObject.clear();
-        QCA::SecureArray message4(message);
-        message4.resize(64);
-        qDebug();
-        qDebug() << "Message4: " << QCA::arrayToHex(message4.toByteArray());
-        qDebug() << "Expecting:  51f0bebf7e3b9d92fc49741779363cfe";
-        qDebug() << "AES-CMAC: " << QCA::arrayToHex(cmacObject.process(message4).toByteArray());
-    }
-
-    return 0;
-}
-
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/annotated.html qca2-2.1.0/apidocs/html/annotated.html --- qca2-2.0.3/apidocs/html/annotated.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/annotated.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,155 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class List - - - - - - -
-

Class List

Here are the classes, structs, unions and interfaces with brief descriptions: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
QCA::AbstractLogDeviceAn abstract log device
QCA::AlgorithmGeneral superclass for an algorithm
QCA::Base64Base64 encoding / decoding
QCA::BasicContextBase class to use for primitive provider contexts
QCA::BigIntegerArbitrary precision integer
QCA::BufferedComputationGeneral superclass for buffered computation algorithms
QCA::CAContextX.509 certificate authority provider
QCA::CertBaseX.509 certificate and certificate request provider base
QCA::CertCollectionContextX.509 certificate collection provider
QCA::CertContextX.509 certificate provider
QCA::CertContextPropsX.509 certificate or certificate request properties
QCA::CertificatePublic Key (X.509) certificate
QCA::CertificateAuthorityA Certificate Authority is used to generate Certificates and Certificate Revocation Lists (CRLs)
QCA::CertificateChainA chain of related Certificates
QCA::CertificateCollectionBundle of Certificates and CRLs
QCA::CertificateInfoOrderedOrdered certificate properties type
QCA::CertificateInfoPairOne entry in a certificate information list
QCA::CertificateInfoTypeCertificate information type
QCA::CertificateOptionsCertificate options
QCA::CertificateRequestCertificate Request
QCA::CipherGeneral class for cipher (encryption / decryption) algorithms
QCA::CipherContextCipher provider
QCA::CMSCryptographic Message Syntax messaging system
QCA::ConsoleQCA Console system
QCA::ConsolePromptConsole prompt handler
QCA::ConsoleReferenceManager for a Console
QCA::ConstraintTypeCertificate constraint
QCA::Provider::ContextInternal context class used for the plugin
Context public QObject
QCA::CRLCertificate Revocation List
QCA::CRLContextX.509 certificate revocation list provider
QCA::CRLContextPropsX.509 certificate revocation list properties
QCA::CRLEntryPart of a CRL representing a single certificate
QCA::CSRContextX.509 certificate request provider
QCA::DHContextDiffie-Hellman provider
QCA::DHPrivateKeyDiffie-Hellman Private Key
QCA::DHPublicKeyDiffie-Hellman Public Key
QCA::DirWatchSupport class to monitor a directory for activity
QCA::DLGroupA discrete logarithm group
QCA::DLGroupContextDiscrete logarithm provider
QCA::DSAContextDSA provider
QCA::DSAPrivateKeyDigital Signature Algorithm Private Key
QCA::DSAPublicKeyDigital Signature Algorithm Public Key
QCA::EventAn asynchronous event
QCA::EventHandlerInterface class for password / passphrase / PIN and token handlers
QCA::FileWatchSupport class to monitor a file for activity
QCA::FilterGeneral superclass for filtering transformation algorithms
QCA::HashGeneral class for hashing algorithms
QCA::HashContextHash provider
QCA::HexHexadecimal encoding / decoding
QCA::SASLContext::HostPortConvenience class to hold an IP address and an associated port
QCA::InfoContextExtended provider information
QCA::InitializationVectorContainer for initialisation vectors and nonces
QCA::InitializerConvenience method for initialising and cleaning up QCA
QCA::KDFContextKey derivation function provider
QCA::KeyBundleCertificate chain and private key pair
QCA::KeyDerivationFunctionGeneral superclass for key derivation algorithms
QCA::KeyGeneratorClass for generating asymmetric key pairs
QCA::KeyLengthSimple container for acceptable key lengths
QCA::KeyLoaderAsynchronous private key loader
QCA::KeyStoreGeneral purpose key storage object
QCA::KeyStoreEntrySingle entry in a KeyStore
QCA::KeyStoreEntryContextKeyStoreEntry provider
QCA::KeyStoreEntryWatcherClass to monitor the availability of a KeyStoreEntry
QCA::KeyStoreInfoKey store information, outside of a KeyStore object
QCA::KeyStoreListContextKeyStore provider
QCA::KeyStoreManagerAccess keystores, and monitor keystores for changes
QCA::LoggerA simple logging system
QCA::MACContextMessage authentication code provider
QCA::MemoryRegionArray of bytes that may be optionally secured
QCA::MessageAuthenticationCodeGeneral class for message authentication code (MAC) algorithms
QCA::MessageContextSecureMessage provider
QCA::OpenPGPPretty Good Privacy messaging system
QCA::SASL::ParamsParameter flags for the SASL authentication
QCA::PasswordAskerUser password / passphrase / PIN handler
QCA::PBKDF1Password based key derivation function version 1
QCA::PBKDF2Password based key derivation function version 2
QCA::PGPKeyPretty Good Privacy key
QCA::PGPKeyContextOpenPGP key provider
QCA::PGPKeyContextPropsOpenPGP key properties
QCA::PKCS12ContextPKCS#12 provider
QCA::PKeyGeneral superclass for public (PublicKey) and private (PrivateKey) keys used with asymmetric encryption techniques
QCA::PKeyBasePublic key implementation provider base
QCA::PKeyContextPublic key container provider
QCA::PrivateKeyGeneric private key
QCA::ProviderAlgorithm provider
QCA::PublicKeyGeneric public key
QCAPluginProvider plugin base class
QCA::QPipeA FIFO buffer (named pipe) abstraction
QCA::QPipeDeviceUnbuffered direct pipe
QCA::QPipeEndA buffered higher-level pipe end
QCA::RandomSource of random numbers
QCA::RandomContextRandom provider
QCA::RSAContextRSA provider
QCA::RSAPrivateKeyRSA Private Key
QCA::RSAPublicKeyRSA Public Key
QCA::SASLSimple Authentication and Security Layer protocol implementation
QCA::SASLContextSASL provider
QCA::SecureArraySecure array of bytes
QCA::SecureLayerAbstract interface to a security layer
QCA::SecureMessageClass representing a secure message
QCA::SecureMessageKeyKey for SecureMessage system
QCA::SecureMessageSignatureSecureMessage signature
QCA::SecureMessageSystemAbstract superclass for secure messaging systems
QCA::TLSContext::SessionInfoInformation about an active TLS connection
QCA::SMSContextSecureMessageSystem provider
QCA::SymmetricKeyContainer for keys for symmetric encryption algorithms
QCA::SynchronizerEnable synchronization between two threads
QCA::SyncThreadConvenience class to run a thread and interact with it synchronously
QCA::TextFilterSuperclass for text based filtering algorithms
QCA::TLSTransport Layer Security / Secure Socket Layer
QCA::TLSContextTLS provider
QCA::TLSSessionSession token, used for TLS resuming
QCA::TLSSessionContextTLS "session" provider
QCA::TokenAskerUser token handler
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/architecture.html qca2-2.1.0/apidocs/html/architecture.html --- qca2-2.0.3/apidocs/html/architecture.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/architecture.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,167 +0,0 @@ - - - - -Qt Cryptographic Architecture: Architecture - - - - - - -
- - -

Architecture

Note:
You don't need to understand any of this to use QCA - it is documented for those who are curious, and for anyone planning to extend or modify QCA.
-

The design of QCA is based on the Bridge design pattern. The intent of the Bridge pattern is to "Decouple an abstraction from its -implementation so that the two can vary independently." [Gamma et.al, pg 151].

-

To understand how this decoupling works in the case of QCA, is is easiest to look at an example - a cryptographic Hash. The API is pretty simple (although I've left out some parts that aren't required for this example):

-
class QCA_EXPORT Hash : public Algorithm, public BufferedComputation
-{
-public:
-    Hash(const QString &type, const QString &provider);
-    virtual void clear();
-    virtual void update(const QCA::SecureArray &a);
-    virtual QCA::SecureArray final();
-}
-

The implementation for the Hash class is almost as simple:

-
Hash::Hash(const QString &type, const QString &provider)
-:Algorithm(type, provider)
-{
-}
-
-void Hash::clear()
-{
-        static_cast<HashContext *>(context())->clear();
-}
-
-void Hash::update(const QCA::SecureArray &a)
-{
-        static_cast<HashContext *>(context())->update(a);
-}
-
-QCA::SecureArray Hash::final()
-{
-        return static_cast<HashContext *>(context())->final();
-}
-

The reason why it looks so simple is that the various methods in Hash just call out to equivalent routines in the context() object. The context comes from a call (getContext()) that is made as part of the Algorithm constructor. That getContext() call causes QCA to work through the list of providers (generally plugins) that it knows about, looking for a provider that can produce the right kind of context (in this case, a HashContext).

-

The code for a HashContext doesn't need to be linked into QCA - it can be varied in its implementation, including being changed at run-time. The application doesn't need to know how HashContext is implemented, because it just has to deal with the Hash class interface. In fact, HashContext may not be implemented, so the application should check (using QCA::isSupported()) before trying to use features that are implemented with plugins.

-

The code for one implementation (in this case, calling OpenSSL) is shown below.

-
class opensslHashContext : public HashContext
-{
-public:
-    opensslHashContext(const EVP_MD *algorithm, Provider *p, const QString &type) : HashContext(p, type)
-    {
-        m_algorithm = algorithm;
-        EVP_DigestInit( &m_context, m_algorithm );
-    };
-
-    ~opensslHashContext()
-    {
-        EVP_MD_CTX_cleanup(&m_context);
-    }
-
-    void clear()
-    {
-        EVP_MD_CTX_cleanup(&m_context);
-        EVP_DigestInit( &m_context, m_algorithm );
-    }
-
-    void update(const QCA::SecureArray &a)
-    {
-        EVP_DigestUpdate( &m_context, (unsigned char*)a.data(), a.size() );
-    }
-
-    QCA::SecureArray final()
-    {
-        QCA::SecureArray a( EVP_MD_size( m_algorithm ) );
-        EVP_DigestFinal( &m_context, (unsigned char*)a.data(), 0 );
-        return a;
-    }
-
-    Provider::Context *clone() const
-    {
-        return new opensslHashContext(*this);
-    }
-
-protected:
-    const EVP_MD *m_algorithm;
-    EVP_MD_CTX m_context;
-};
-

This approach (using an Adapter pattern) is very common in QCA backends, because the plugins are often based on existing libraries.

-

In addition to the various Context objects, each provider also has a parameterised Factory class that has a createContext() method, as shown below:

-
        Context *createContext(const QString &type)
-        {
-                //OpenSSL_add_all_digests();
-                if ( type == "sha1" )
-                        return new opensslHashContext( EVP_sha1(), this, type);
-                else if ( type == "sha0" )
-                        return new opensslHashContext( EVP_sha(), this, type);
-                else if ( type == "md5" )
-                        return new opensslHashContext( EVP_md5(), this, type);
-                else if ( type == "aes128-cfb" )
-                        return new opensslCipherContext( EVP_aes_128_cfb(), 0, this, type);
-                else if ( type == "aes128-cbc" )
-                        return new opensslCipherContext( EVP_aes_128_cbc(), 0, this, type);
-                else
-                        return 0;
-        }
-

The resulting effect is that QCA can ask the provider to provide an appropriate Context object without worrying about how it is implemented.

-

For features that are implemented with variable algorithms (for example, HashContext can support a wide range of algorithms - MD5, SHA0, and SHA1 in the example above; and CipherContext and MACContext can also do this), we need to be able to let applications determine which algorithms are supported. This is handled through the InfoContext class. A typical example is shown below:

-
        class opensslInfoContext : public InfoContext
-        {
-                Q_OBJECT
-        public:
-                opensslInfoContext(Provider *p) : InfoContext(p)
-                {
-                }
-
-                Context *clone() const
-                {
-                        return new opensslInfoContext(*this);
-                }
-
-                QStringList supportedHashTypes() const
-                {
-                        QStringList list;
-                        list += "sha1";
-                        list += "sha0";
-                        list += "md5";
-                        return list;
-                }
-
-                // MAC and Cipher types can go in here
-        };
-

Note that InfoContext is itself a feature, so you have to add it to the createContext() method for the provider, as shown below:

-
        Context *createContext(const QString &type)
-        {
-                if ( type == "sha1" )
-                        return new opensslHashContext( EVP_sha1(), this, type);
-                else if ( type == "sha0" )
-                        return new opensslHashContext( EVP_sha(), this, type);
-                else if ( type == "md5" )
-                        return new opensslHashContext( EVP_md5(), this, type);
-                else if ( type == "info" )
-                        return new opensslInfoContext( this );
-                else
-                        return 0;
-        }
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/base64test.cpp-example.html qca2-2.1.0/apidocs/html/base64test.cpp-example.html --- qca2-2.0.3/apidocs/html/base64test.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/base64test.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,99 +0,0 @@ - - - - -Qt Cryptographic Architecture: base64test.cpp - - - - - - -
-

base64test.cpp

The code below shows some simple operations on a QCA::Base64 object, converting between QCA::SecureArray and QString.

-
/*
- Copyright (C) 2004-2005 Brad Hards <bradh@frogmouth.net>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-// QtCrypto has the declarations for all of QCA
-#include <QtCrypto>
-
-#include <QCoreApplication>
-
-#include <iostream>
-
-int main(int argc, char **argv)
-{
-        QCoreApplication(argc, argv);
-
-        // the Initializer object sets things up, and
-        // also does cleanup when it goes out of scope
-        QCA::Initializer init;
-
-        // we use the first argument as the data to encode
-        // if an argument is provided. Use "hello" if no argument
-        QByteArray arg; // empty array
-        arg.append((argc >= 2) ? argv[1] : "hello");
-
-        // create our object, which does encoding by default
-        // QCA::Base64 encoder(QCA::Encode); is equivalent
-        QCA::Base64 encoder;
-
-        // This does the actual conversion (encoding).
-        // You might prefer to use encoder.encode(); and have
-        // it return a QCA::SecureArray, depending on your needs
-        QString encoded = encoder.arrayToString(arg);
-
-        std::cout << arg.data() << " in base64 encoding is ";
-        std::cout << encoded.toLatin1().data() << std::endl;
-
-        // This time, we'll create an object to decode base64. We
-        // could also have reused the existing object, calling
-        // clear(); and setup(QCA::Decode); on it.
-        QCA::Base64 decoder(QCA::Decode);
-
-        // This time, we convert a QString into a QString
-        QString decoded = decoder.decodeString(encoded);
-
-        std::cout << encoded.toLatin1().data() << " decoded from base64 is ";
-        std::cout << decoded.toLatin1().data() << std::endl;
-
-        return 0;
-}
-
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/certtest.cpp-example.html qca2-2.1.0/apidocs/html/certtest.cpp-example.html --- qca2-2.0.3/apidocs/html/certtest.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/certtest.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,204 +0,0 @@ - - - - -Qt Cryptographic Architecture: certtest.cpp - - - - - - -
-

certtest.cpp

This example shows how QCA::Certificate and QCA::CertificateCollection can be used. Note that the argument, if you provide it, must be a PEM encoded file collection.

-
/*
- Copyright (C) 2003 Justin Karneges <justin@affinix.com>
- Copyright (C) 2005 Brad Hards <bradh@frogmouth.net>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-
-#include <QtCrypto>
-
-#include <QCoreApplication>
-
-#include <iostream>
-
-// dump out information about some part of the certificate
-// we use this same approach for information about the subject
-// of the certificate, and also about the issuer of the certificate
-static void dumpCertificateInfo( QCA::CertificateInfo info)
-{
-    std::cout << "  Organization: " << std::endl;
-
-    // Note that a single certificate can apply to more than one
-    // organisation. QCA::Certificate is a multimap, so when you
-    // ask for the values associated with a parameter, it returns
-    // a list.
-    QList<QString> orgInfoList = info.values(QCA::Organization);
-
-    // foreach() interates over each value in the list, and we dump
-    // out each value. Note that is uncommon for a certificate to
-    // actually contain multiple values for a single parameter.
-    QString organization;
-    foreach( organization, orgInfoList ) {
-        std::cout << "    " << qPrintable(organization) << std::endl;
-    }
-
-    std::cout << "  Country: " << std::endl;
-    // As above, however this shows a more compact way to represent
-    // the iteration and output.
-    foreach( QString country, info.values(QCA::Country) ) {
-        std::cout << "    " << qPrintable(country) << std::endl;
-    }
-}
-
-// This is just a convenience routine
-static void dumpSubjectInfo( QCA::CertificateInfo subject)
-{
-    std::cout << "Subject: " << std::endl;
-
-    dumpCertificateInfo( subject );
-}
-
-
-// This is just a convenience routine
-static void dumpIssuerInfo( QCA::CertificateInfo issuer)
-{
-    std::cout << "Issuer: " << std::endl;
-
-    dumpCertificateInfo( issuer );
-}
-
-
-int main(int argc, char** argv)
-{
-    // the Initializer object sets things up, and
-    // also does cleanup when it goes out of scope
-    QCA::Initializer init;
-
-    QCoreApplication app(argc, argv);
-
-    // We need to ensure that we have certificate handling support
-    if ( !QCA::isSupported( "cert" ) ) {
-        std::cout << "Sorry, no PKI certificate support" << std::endl;
-        return 1;
-    }
-
-    // We are going to work with a number of certificates, and a
-    // QList is a great template class for that
-    QList<QCA::Certificate> certlist;
-
-    // We do two different cases - if we provide an argument, it is taken
-    // as a filename to read the keys from. If there is no argument, we just
-    // read from the system store certificates.
-    if (argc >= 2) {
-        // we are going to read the certificates in using a single call
-        // which requires a CertificateCollection.
-        QCA::CertificateCollection filecerts;
-        // The conversion can be tested (although you don't have to) to find out if it
-        // worked.
-        QCA::ConvertResult importResult;
-        // This imports all the PEM encoded certificates from the file specified as the argument
-        // Note that you pass in a pointer to the result argument.
-        filecerts = QCA::CertificateCollection::fromFlatTextFile( argv[1], &importResult );
-        if ( QCA::ConvertGood == importResult) {
-            std::cout << "Import succeeded" << std::endl;
-            // this turns the CertificateCollection into a QList of Certificate objects
-            certlist = filecerts.certificates();
-        }
-    } else {
-        // we have no arguments, so just use the system certificates
-        if ( !QCA::haveSystemStore() ) {
-            std::cout << "System certificates not available" << std::endl;
-            return 2;
-        }
-
-        // Similar to above, except we just want the system certificates
-        QCA::CertificateCollection systemcerts = QCA::systemStore();
-
-        // this turns the CertificateCollection into a QList of Certificate objects
-        certlist = systemcerts.certificates();
-    }
-
-    std::cout << "Number of certificates: " << certlist.count() << std::endl;
-
-    QCA::Certificate cert;
-    foreach (cert, certlist) {
-        std::cout << "Serial Number:";
-        // the serial number of the certificate is a QCA::BigInteger, but we can
-        // just convert it to a string, and then output it.
-        std::cout << qPrintable(cert.serialNumber().toString()) << std::endl;
-
-        // The subject information shows properties of who the certificate
-        // applies to. See the convenience routines above.
-        dumpSubjectInfo( cert.subjectInfo() );
-
-        // The issuer information shows properties of who the certificate
-        // was signed by. See the convenience routines above.
-        dumpIssuerInfo( cert.issuerInfo() );
-
-        // Test if the certificate can be used as a certificate authority
-        if ( cert.isCA() ) {
-            std::cout << "Is certificate authority" << std::endl;
-        } else {
-            std::cout << "Is not a certificate authority" << std::endl;
-        }
-
-        // Test if the certificate is self-signed.
-        if (cert.isSelfSigned() ) {
-            std::cout << "Self signed" << std::endl;
-        } else {
-            std::cout << "Is not self-signed!!!" << std::endl;
-        }
-
-        // Certificate are only valid between specific dates. We can get the dates
-        // (as a QDateTime) using a couple of calls
-        std::cout << "Valid from " << qPrintable(cert.notValidBefore().toString());
-        std::cout << ", until " << qPrintable(cert.notValidAfter().toString());
-        std::cout << std::endl;
-
-        // You can get the certificate in PEM encoding with a simple toPEM() call
-        std::cout << "PEM:" << std::endl;
-        std::cout << qPrintable(cert.toPEM());
-        std::cout << std::endl << std::endl;
-   }
-
-    return 0;
-}
-
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/ciphertest.cpp-example.html qca2-2.1.0/apidocs/html/ciphertest.cpp-example.html --- qca2-2.0.3/apidocs/html/ciphertest.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/ciphertest.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,161 +0,0 @@ - - - - -Qt Cryptographic Architecture: ciphertest.cpp - - - - - - -
-

ciphertest.cpp

The code below shows the normal way to use the QCA::Cipher class.

-
/*
- Copyright (C) 2003 Justin Karneges <justin@affinix.com>
- Copyright (C) 2005-2006 Brad Hards <bradh@frogmouth.net>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-// QtCrypto has the declarations for all of QCA
-#include <QtCrypto>
-#include <stdio.h>
-
-#include <QCoreApplication>
-
-int main(int argc, char **argv)
-{
-    // the Initializer object sets things up, and
-    // also does cleanup when it goes out of scope
-    QCA::Initializer init;
-
-    QCoreApplication app(argc, argv);
-
-    // we use the first argument if provided, or
-    // use "hello" if no arguments
-    QCA::SecureArray arg = (argc >= 2) ? argv[1] : "hello";
-
-    // AES128 testing
-    if(!QCA::isSupported("aes128-cbc-pkcs7"))
-        printf("AES128-CBC not supported!\n");
-    else {
-        // Create a random key - you'd probably use one from another
-        // source in a real application
-        QCA::SymmetricKey key(16);
-
-        // Create a random initialisation vector - you need this
-        // value to decrypt the resulting cipher text, but it
-        // need not be kept secret (unlike the key).
-        QCA::InitializationVector iv(16);
-
-        // create a 128 bit AES cipher object using Cipher Block Chaining (CBC) mode
-        QCA::Cipher cipher(QString("aes128"),QCA::Cipher::CBC,
-                           // use Default padding, which is equivalent to PKCS7 for CBC
-                           QCA::Cipher::DefaultPadding,
-                           // this object will encrypt
-                           QCA::Encode,
-                           key, iv);
-
-        // we use the cipher object to encrypt the argument we passed in
-        // the result of that is returned - note that if there is less than
-        // 16 bytes (1 block), then nothing will be returned - it is buffered
-        // update() can be called as many times as required.
-        QCA::SecureArray u = cipher.update(arg);
-
-        // We need to check if that update() call worked.
-        if (!cipher.ok()) {
-            printf("Update failed\n");
-        }
-        // output the results of that stage
-        printf("AES128 encryption of %s is [%s]\n",
-               arg.data(),
-               qPrintable(QCA::arrayToHex(u.toByteArray())) );
-
-
-        // Because we are using PKCS7 padding, we need to output the final (padded) block
-        // Note that we should always call final() even with no padding, to clean up
-        QCA::SecureArray f = cipher.final();
-
-        // Check if the final() call worked
-        if (!cipher.ok()) {
-            printf("Final failed\n");
-        }
-        // and output the resulting block. The ciphertext is the results of update()
-        // and the result of final()
-        printf("Final block for AES128 encryption is [0x%s]\n", qPrintable(QCA::arrayToHex(f.toByteArray())) );
-
-        // re-use the Cipher t decrypt. We need to use the same key and
-        // initialisation vector as in the encryption.
-        cipher.setup( QCA::Decode, key, iv );
-
-        // Build a single cipher text array. You could also call update() with
-        // each block as you receive it, if that is more useful.
-        QCA::SecureArray cipherText = u.append(f);
-
-        // take that cipher text, and decrypt it
-        QCA::SecureArray plainText = cipher.update(cipherText);
-
-        // check if the update() call worked
-        if (!cipher.ok()) {
-            printf("Update failed\n");
-        }
-
-        // output results
-        printf("Decryption using AES128 of [0x%s] is %s\n",
-               qPrintable(QCA::arrayToHex(cipherText.toByteArray())), plainText.data());
-
-        // Again we need to call final(), to get the last block (with its padding removed)
-        plainText = cipher.final();
-
-        // check if the final() call worked
-        if (!cipher.ok()) {
-            printf("Final failed\n");
-        }
-
-        // output results
-        printf("Final decryption block using AES128 is %s\n", plainText.data());
-        // instead of update() and final(), you can do the whole thing
-        // in one step, using process()
-        printf("One step decryption using AES128: %s\n",
-               QCA::SecureArray(cipher.process(cipherText)).data() );
-
-    }
-
-    return 0;
-}
-
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classContext_01public_01QObject.html qca2-2.1.0/apidocs/html/classContext_01public_01QObject.html --- qca2-2.0.3/apidocs/html/classContext_01public_01QObject.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classContext_01public_01QObject.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ - - - - -Qt Cryptographic Architecture: Context public QObject Class Reference - - - - - - -
-

Context public QObject Class Reference

-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classes.html qca2-2.1.0/apidocs/html/classes.html --- qca2-2.0.3/apidocs/html/classes.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classes.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ - - - - -Qt Cryptographic Architecture: Alphabetical List - - - - - - -
-

Class Index

A | B | C | D | E | F | H | I | K | L | M | O | P | Q | R | S | T
- -
  A  
-
ConsolePrompt (QCA)   Hash (QCA)   MemoryRegion (QCA)   Random (QCA)   
AbstractLogDevice (QCA)   ConsoleReference (QCA)   HashContext (QCA)   MessageAuthenticationCode (QCA)   RandomContext (QCA)   
Algorithm (QCA)   ConstraintType (QCA)   Hex (QCA)   MessageContext (QCA)   RSAContext (QCA)   
  B  
-
Provider::Context (QCA)   SASLContext::HostPort (QCA)   
  O  
-
RSAPrivateKey (QCA)   
Base64 (QCA)   Context public QObject   
  I  
-
OpenPGP (QCA)   RSAPublicKey (QCA)   
BasicContext (QCA)   CRL (QCA)   InfoContext (QCA)   
  P  
-
  S  
-
BigInteger (QCA)   CRLContext (QCA)   InitializationVector (QCA)   SASL::Params (QCA)   SASL (QCA)   
BufferedComputation (QCA)   CRLContextProps (QCA)   Initializer (QCA)   PasswordAsker (QCA)   SASLContext (QCA)   
  C  
-
CRLEntry (QCA)   
  K  
-
PBKDF1 (QCA)   SecureArray (QCA)   
CAContext (QCA)   CSRContext (QCA)   KDFContext (QCA)   PBKDF2 (QCA)   SecureLayer (QCA)   
CertBase (QCA)   
  D  
-
KeyBundle (QCA)   PGPKey (QCA)   SecureMessage (QCA)   
CertCollectionContext (QCA)   DHContext (QCA)   KeyDerivationFunction (QCA)   PGPKeyContext (QCA)   SecureMessageKey (QCA)   
CertContext (QCA)   DHPrivateKey (QCA)   KeyGenerator (QCA)   PGPKeyContextProps (QCA)   SecureMessageSignature (QCA)   
CertContextProps (QCA)   DHPublicKey (QCA)   KeyLength (QCA)   PKCS12Context (QCA)   SecureMessageSystem (QCA)   
Certificate (QCA)   DirWatch (QCA)   KeyLoader (QCA)   PKey (QCA)   TLSContext::SessionInfo (QCA)   
CertificateAuthority (QCA)   DLGroup (QCA)   KeyStore (QCA)   PKeyBase (QCA)   SMSContext (QCA)   
CertificateChain (QCA)   DLGroupContext (QCA)   KeyStoreEntry (QCA)   PKeyContext (QCA)   SymmetricKey (QCA)   
CertificateCollection (QCA)   DSAContext (QCA)   KeyStoreEntryContext (QCA)   PrivateKey (QCA)   Synchronizer (QCA)   
CertificateInfoOrdered (QCA)   DSAPrivateKey (QCA)   KeyStoreEntryWatcher (QCA)   Provider (QCA)   SyncThread (QCA)   
CertificateInfoPair (QCA)   DSAPublicKey (QCA)   KeyStoreInfo (QCA)   PublicKey (QCA)   
  T  
-
CertificateInfoType (QCA)   
  E  
-
KeyStoreListContext (QCA)   
  Q  
-
TextFilter (QCA)   
CertificateOptions (QCA)   Event (QCA)   KeyStoreManager (QCA)   QCAPlugin   TLS (QCA)   
CertificateRequest (QCA)   EventHandler (QCA)   
  L  
-
QPipe (QCA)   TLSContext (QCA)   
Cipher (QCA)   
  F  
-
Logger (QCA)   QPipeDevice (QCA)   TLSSession (QCA)   
CipherContext (QCA)   FileWatch (QCA)   
  M  
-
QPipeEnd (QCA)   TLSSessionContext (QCA)   
CMS (QCA)   Filter (QCA)   MACContext (QCA)   
  R  
-
TokenAsker (QCA)   
Console (QCA)   
  H  
-
A | B | C | D | E | F | H | I | K | L | M | O | P | Q | R | S | T
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1AbstractLogDevice__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1AbstractLogDevice__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1AbstractLogDevice__coll__graph.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1AbstractLogDevice__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1AbstractLogDevice__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1AbstractLogDevice__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1AbstractLogDevice__coll__graph.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1AbstractLogDevice__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5c1184f4206cdc44e35ce767a7f9f808 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1AbstractLogDevice__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1AbstractLogDevice__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1AbstractLogDevice.html qca2-2.1.0/apidocs/html/classQCA_1_1AbstractLogDevice.html --- qca2-2.0.3/apidocs/html/classQCA_1_1AbstractLogDevice.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1AbstractLogDevice.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,201 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::AbstractLogDevice Class Reference - - - - - - -
-

QCA::AbstractLogDevice Class Reference
- -[QCA user API] -

-

An abstract log device. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::AbstractLogDevice:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - -

Public Member Functions

virtual void logBinaryMessage (const QByteArray &blob, Logger::Severity severity)
virtual void logTextMessage (const QString &message, Logger::Severity severity)
QString name () const

Protected Member Functions

 AbstractLogDevice (const QString &name, QObject *parent=0)
-

Detailed Description

-

An abstract log device.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::AbstractLogDevice::AbstractLogDevice (const QString name,
QObject parent = 0 
) [explicit, protected]
-
-
- -

Create a new message logger.

-
Parameters:
- - - -
name the name of this log device
parent the parent for this logger
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
QString QCA::AbstractLogDevice::name ( )  const
-
-
- -

The name of this log device.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::AbstractLogDevice::logTextMessage (const QString message,
Logger::Severity  severity 
) [virtual]
-
-
- -

Log a message.

-

The default implementation does nothing - you should override this method in your subclass to do whatever logging is required

-
Parameters:
- - - -
message the message to log
severity the severity level of the message
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::AbstractLogDevice::logBinaryMessage (const QByteArray blob,
Logger::Severity  severity 
) [virtual]
-
-
- -

Log a binary blob.

-

The default implementation does nothing - you should override this method in your subclass to do whatever logging is required

-
Parameters:
- - - -
blob the message (as a byte array) to log
severity the severity level of the message
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1AbstractLogDevice-members.html qca2-2.1.0/apidocs/html/classQCA_1_1AbstractLogDevice-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1AbstractLogDevice-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1AbstractLogDevice-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::AbstractLogDevice Member List

This is the complete list of members for QCA::AbstractLogDevice, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AbstractLogDevice(const QString &name, QObject *parent=0)QCA::AbstractLogDevice [explicit, protected]
blockSignals(bool block)QObject
childEvent(QChildEvent *event)QObject
children()QObject
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
killTimer(int id)QObject
logBinaryMessage(const QByteArray &blob, Logger::Severity severity)QCA::AbstractLogDevice [virtual]
logTextMessage(const QString &message, Logger::Severity severity)QCA::AbstractLogDevice [virtual]
metaObject()QObject
moveToThread(QThread *targetThread)QObject
name() const QCA::AbstractLogDevice
parent()QObject
property(const char *name)QObject
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
sender()QObject
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
startTimer(int interval)QObject
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
~AbstractLogDevice()=0 (defined in QCA::AbstractLogDevice)QCA::AbstractLogDevice [protected, pure virtual]
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Algorithm__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1Algorithm__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1Algorithm__coll__graph.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Algorithm__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Algorithm__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1Algorithm__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1Algorithm__coll__graph.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Algorithm__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -a361d2a9c25adc71ff5f243a8be27a8b \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1Algorithm__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1Algorithm__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Algorithm.html qca2-2.1.0/apidocs/html/classQCA_1_1Algorithm.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Algorithm.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Algorithm.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,347 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::Algorithm Class Reference - - - - - - -
-

QCA::Algorithm Class Reference
- -[QCA user API] -

-

General superclass for an algorithm. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::Algorithm:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - -

Public Member Functions

 Algorithm (const Algorithm &from)
void change (const QString &type, const QString &provider)
void change (Provider::Context *c)
const Provider::Contextcontext () const
Provider::Contextcontext ()
Algorithmoperator= (const Algorithm &from)
Providerprovider () const
Provider::ContexttakeContext ()
QString type () const

Protected Member Functions

 Algorithm (const QString &type, const QString &provider)
 Algorithm ()
-

Detailed Description

-

General superclass for an algorithm.

-

This is a fairly abstract class, mainly used for implementing the backend "provider" interface.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::Algorithm::Algorithm (const Algorithm from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the Algorithm to copy from
-
-
- -
-
- -
-
- - - - - - - - -
QCA::Algorithm::Algorithm ( )  [protected]
-
-
- -

Constructor for empty algorithm.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::Algorithm::Algorithm (const QString type,
const QString provider 
) [protected]
-
-
- -

Constructor of a particular algorithm.

-
Parameters:
- - - -
type the algorithm to construct
provider the name of a particular Provider
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
Algorithm& QCA::Algorithm::operator= (const Algorithm from ) 
-
-
- -

Assignment operator.

-
Parameters:
- - -
from the Algorithm to copy state from
-
-
- -
-
- -
-
- - - - - - - - -
QString QCA::Algorithm::type ( )  const
-
-
- -

The name of the algorithm type.

- -

Reimplemented in QCA::Hash, QCA::Cipher, QCA::MessageAuthenticationCode, QCA::KeyStoreEntry, QCA::KeyStore, QCA::PKey, and QCA::SecureMessage.

- -
-
- -
-
- - - - - - - - -
Provider* QCA::Algorithm::provider ( )  const
-
-
- -

The name of the provider.

-

Each algorithm is implemented by a provider. This allows you to figure out which provider is associated

- -
-
- -
-
- - - - - - - - -
Provider::Context* QCA::Algorithm::context ( ) 
-
-
-

For internal use only.

-

The context associated with this algorithm

- -
-
- -
-
- - - - - - - - -
const Provider::Context* QCA::Algorithm::context ( )  const
-
-
-

For internal use only.

-

The context associated with this algorithm

- -
-
- -
-
- - - - - - - - - -
void QCA::Algorithm::change (Provider::Context c ) 
-
-
-

For internal use only.

-

Set the Provider for this algorithm

-
Parameters:
- - -
c the context for the Provider to use
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::Algorithm::change (const QString type,
const QString provider 
)
-
-
-

For internal use only.

-

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
Parameters:
- - - -
type the name of the algorithm to use
provider the name of the preferred provider
-
-
- -
-
- -
-
- - - - - - - - -
Provider::Context* QCA::Algorithm::takeContext ( ) 
-
-
-

For internal use only.

-

Take the Provider from this algorithm

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Algorithm-members.html qca2-2.1.0/apidocs/html/classQCA_1_1Algorithm-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Algorithm-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Algorithm-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::Algorithm Member List

This is the complete list of members for QCA::Algorithm, including all inherited members. - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
operator=(const Algorithm &from)QCA::Algorithm
provider() const QCA::Algorithm
takeContext()QCA::Algorithm
type() const QCA::Algorithm
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Base64__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1Base64__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1Base64__coll__graph.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Base64__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Base64__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1Base64__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1Base64__coll__graph.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Base64__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2c15bf69ed96380dbfb13bd5ed27a439 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1Base64__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1Base64__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Base64.html qca2-2.1.0/apidocs/html/classQCA_1_1Base64.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Base64.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Base64.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,292 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::Base64 Class Reference - - - - - - -
-

QCA::Base64 Class Reference
- -[QCA user API] -

-

Base64 encoding / decoding -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::Base64:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - -

Public Member Functions

 Base64 (Direction dir=Encode)
virtual void clear ()
virtual MemoryRegion final ()
int lineBreaksColumn () const
bool lineBreaksEnabled () const
virtual bool ok () const
void setLineBreaksColumn (int column)
void setLineBreaksEnabled (bool b)
virtual MemoryRegion update (const MemoryRegion &a)
-

Detailed Description

-

Base64 encoding / decoding

-
Examples:
-

base64test.cpp, publickeyexample.cpp, saslclient.cpp, and saslserver.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::Base64::Base64 (Direction  dir = Encode ) 
-
-
- -

Standard constructor.

-
Parameters:
- - -
dir the Direction that should be used.
-
-
-
Note:
The direction can be changed using the setup() call.
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
bool QCA::Base64::lineBreaksEnabled ( )  const
-
-
- -

Returns true if line breaks are enabled.

- -
-
- -
-
- - - - - - - - -
int QCA::Base64::lineBreaksColumn ( )  const
-
-
- -

Returns the line break column.

- -
-
- -
-
- - - - - - - - - -
void QCA::Base64::setLineBreaksEnabled (bool  b ) 
-
-
- -

Sets line break mode.

-

If enabled, linebreaks will be added to encoded output or accepted in encoded input. If disabled, linebreaks in encoded input will cause a failure to decode. The default is disabled.

-
Parameters:
- - -
b whether to enable line breaks (true) or disable line breaks (false)
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::Base64::setLineBreaksColumn (int  column ) 
-
-
- -

Sets the column that linebreaks should be inserted at when encoding.

-
Parameters:
- - -
column the column number that line breaks should be inserted at.
-
-
- -
-
- -
-
- - - - - - - - -
virtual void QCA::Base64::clear ( )  [virtual]
-
-
- -

Reset the internal state.

-

This is useful to reuse an existing Base64 object

- -

Implements QCA::Filter.

- -
-
- -
-
- - - - - - - - - -
virtual MemoryRegion QCA::Base64::update (const MemoryRegion a )  [virtual]
-
-
- -

Process more data, returning the corresponding encoded or decoded (depending on the Direction set in the constructor or setup() call) representation.

-

If you find yourself with code that only calls this method once, you might be better off using encode() or decode(). Similarly, if the data is really a string, you might be better off using arrayToString(), encodeString(), stringToArray() or decodeString().

-
Parameters:
- - -
a the array containing data to process
-
-
- -

Implements QCA::Filter.

- -
-
- -
-
- - - - - - - - -
virtual MemoryRegion QCA::Base64::final ( )  [virtual]
-
-
- -

Complete the algorithm.

-
Returns:
any remaining output. Because of the way Base64 encoding works, you will get either an empty array, or an array containing one or two "=" (equals, 0x3D) characters.
- -

Implements QCA::Filter.

- -
-
- -
-
- - - - - - - - -
virtual bool QCA::Base64::ok ( )  const [virtual]
-
-
- -

Test if an update() or final() call succeeded.

-
Returns:
true if the previous call succeeded
- -

Implements QCA::Filter.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Base64-members.html qca2-2.1.0/apidocs/html/classQCA_1_1Base64-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Base64-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Base64-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::Base64 Member List

This is the complete list of members for QCA::Base64, including all inherited members. - - - - - - - - - - - - - - - - - - - - - -
_dirQCA::TextFilter [protected]
arrayToString(const MemoryRegion &a)QCA::TextFilter
Base64(Direction dir=Encode)QCA::Base64
clear()QCA::Base64 [virtual]
decode(const MemoryRegion &a)QCA::TextFilter
decodeString(const QString &s)QCA::TextFilter
direction() const QCA::TextFilter
encode(const MemoryRegion &a)QCA::TextFilter
encodeString(const QString &s)QCA::TextFilter
final()QCA::Base64 [virtual]
lineBreaksColumn() const QCA::Base64
lineBreaksEnabled() const QCA::Base64
ok() const QCA::Base64 [virtual]
process(const MemoryRegion &a)QCA::Filter
setLineBreaksColumn(int column)QCA::Base64
setLineBreaksEnabled(bool b)QCA::Base64
setup(Direction dir)QCA::TextFilter
stringToArray(const QString &s)QCA::TextFilter
TextFilter(Direction dir)QCA::TextFilter
update(const MemoryRegion &a)QCA::Base64 [virtual]
~Filter() (defined in QCA::Filter)QCA::Filter [virtual]
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1BasicContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1BasicContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1BasicContext__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1BasicContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1BasicContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1BasicContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1BasicContext__coll__graph.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1BasicContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -faff1b39d687415356297b61617015e7 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1BasicContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1BasicContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1BasicContext.html qca2-2.1.0/apidocs/html/classQCA_1_1BasicContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1BasicContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1BasicContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,132 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::BasicContext Class Reference - - - - - - -
-

QCA::BasicContext Class Reference
- -[QCA provider API] -

-

Base class to use for primitive provider contexts. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::BasicContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - -

Protected Member Functions

 BasicContext (const BasicContext &from)
 BasicContext (Provider *parent, const QString &type)
-

Detailed Description

-

Base class to use for primitive provider contexts.

-

For internal use only.

-

This class inherits Provider::Context and calls moveToThread(0) on itself, thereby disabling the event properties of the underlying QObject. Context types that need to be a QObject should inherit from Provider::Context, those that don't should inherit from BasicContext.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::BasicContext::BasicContext (Provider parent,
const QString type 
) [protected]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
parent the parent provider for this context
type the name of the provider context type
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::BasicContext::BasicContext (const BasicContext from )  [protected]
-
-
- -

Copy constructor.

-
Parameters:
- - -
from the Context to copy from
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1BasicContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1BasicContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1BasicContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1BasicContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::BasicContext Member List

This is the complete list of members for QCA::BasicContext, including all inherited members. - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1BigInteger__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1BigInteger__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1BigInteger__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1BigInteger__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1BigInteger__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1BigInteger__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1BigInteger__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1BigInteger__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5b3fe78e6fa1e5f1f9ae4297359c62db \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1BigInteger__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1BigInteger__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1BigInteger.html qca2-2.1.0/apidocs/html/classQCA_1_1BigInteger.html --- qca2-2.0.3/apidocs/html/classQCA_1_1BigInteger.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1BigInteger.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,784 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::BigInteger Class Reference - - - - - - -
-

QCA::BigInteger Class Reference
- -[QCA user API] -

-

Arbitrary precision integer. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::BigInteger:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

 BigInteger (const BigInteger &from)
 BigInteger (const QCA::SecureArray &a)
 BigInteger (const QString &s)
 BigInteger (const char *c)
 BigInteger (int n)
 BigInteger ()
int compare (const BigInteger &n) const
void fromArray (const QCA::SecureArray &a)
bool fromString (const QString &s)
bool operator!= (const BigInteger &other) const
BigIntegeroperator%= (const BigInteger &b)
BigIntegeroperator*= (const BigInteger &b)
BigIntegeroperator+= (const BigInteger &b)
BigIntegeroperator-= (const BigInteger &b)
BigIntegeroperator/= (const BigInteger &b)
bool operator< (const BigInteger &other) const
bool operator<= (const BigInteger &other) const
BigIntegeroperator= (const QString &s)
BigIntegeroperator= (const BigInteger &from)
bool operator== (const BigInteger &other) const
bool operator> (const BigInteger &other) const
bool operator>= (const BigInteger &other) const
QCA::SecureArray toArray () const
QString toString () const

Related Functions

(Note that these are not member functions.)

-

QCA_EXPORT QTextStreamoperator<< (QTextStream &stream, const BigInteger &b)
-

Detailed Description

-

Arbitrary precision integer.

-

BigInteger provides arbitrary precision integers.

-
if ( BigInteger("3499543804349") == 
-        BigInteger("38493290803248") + BigInteger( 343 ) )
-{
-        // do something
-}
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::BigInteger::BigInteger ( ) 
-
-
- -

Constructor.

-

Creates a new BigInteger, initialised to zero.

- -
-
- -
-
- - - - - - - - - -
QCA::BigInteger::BigInteger (int  n ) 
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
Parameters:
- - -
n an alternative integer initialisation value.
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::BigInteger::BigInteger (const char *  c ) 
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
Parameters:
- - -
c an alternative initialisation value, encoded as a character array
-
-
-
BigInteger b ( "9890343" );
-
-
-
- -
-
- - - - - - - - - -
QCA::BigInteger::BigInteger (const QString s ) 
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
Parameters:
- - -
s an alternative initialisation value, encoded as a string
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::BigInteger::BigInteger (const QCA::SecureArray a ) 
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
Parameters:
- - -
a an alternative initialisation value, encoded as SecureArray
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::BigInteger::BigInteger (const BigInteger from ) 
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
Parameters:
- - -
from an alternative initialisation value, encoded as a BigInteger
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
BigInteger& QCA::BigInteger::operator= (const BigInteger from ) 
-
-
- -

Assignment operator.

-
Parameters:
- - -
from the BigInteger to copy from
-
-
-
BigInteger a; // a is zero
-BigInteger b( 500 );
-a = b; // a is now 500
-
-
-
- -
-
- - - - - - - - - -
BigInteger& QCA::BigInteger::operator= (const QString s ) 
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
Parameters:
- - -
s the QString containing an integer representation
-
-
-
See also:
bool fromString(const QString &s)
-
Note:
it is the application's responsibility to make sure that the QString represents a valid integer (ie it only contains numbers and an optional minus sign at the start)
- -
-
- -
-
- - - - - - - - - -
BigInteger& QCA::BigInteger::operator+= (const BigInteger b ) 
-
-
- -

Increment in place operator.

-
Parameters:
- - -
b the amount to increment by
-
-
-
BigInteger a; // a is zero
-BigInteger b( 500 );
-a += b; // a is now 500
-a += b; // a is now 1000
-
-
-
- -
-
- - - - - - - - - -
BigInteger& QCA::BigInteger::operator-= (const BigInteger b ) 
-
-
- -

Decrement in place operator.

-
Parameters:
- - -
b the amount to decrement by
-
-
-
BigInteger a; // a is zero
-BigInteger b( 500 );
-a -= b; // a is now -500
-a -= b; // a is now -1000
-
-
-
- -
-
- - - - - - - - - -
BigInteger& QCA::BigInteger::operator*= (const BigInteger b ) 
-
-
- -

Multiply in place operator.

-
Parameters:
- - -
b the amount to multiply by
-
-
- -
-
- -
-
- - - - - - - - - -
BigInteger& QCA::BigInteger::operator/= (const BigInteger b ) 
-
-
- -

Divide in place operator.

-
Parameters:
- - -
b the amount to divide by
-
-
- -
-
- -
-
- - - - - - - - - -
BigInteger& QCA::BigInteger::operator%= (const BigInteger b ) 
-
-
- -

Modulo in place operator.

-
Parameters:
- - -
b the amount to divide by
-
-
- -
-
- -
-
- - - - - - - - -
QCA::SecureArray QCA::BigInteger::toArray ( )  const
-
-
- -

Output BigInteger as a byte array, useful for storage or transmission.

-

The format is a binary integer in sign-extended network-byte-order.

-
See also:
void fromArray(const SecureArray &a);
- -
-
- -
-
- - - - - - - - - -
void QCA::BigInteger::fromArray (const QCA::SecureArray a ) 
-
-
- -

Assign from an array.

-

The input is expected to be a binary integer in sign-extended network-byte-order.

-
Parameters:
- - -
a a SecureArray that represents an integer
-
-
-
See also:
BigInteger(const SecureArray &a);
-
-SecureArray toArray() const;
- -
-
- -
-
- - - - - - - - -
QString QCA::BigInteger::toString ( )  const
-
-
- -

Convert BigInteger to a QString.

-
QString aString;
-BigInteger aBiggishInteger( 5878990 );
-aString = aBiggishInteger.toString(); // aString is now "5878990"
-
-
-
- -
-
- - - - - - - - - -
bool QCA::BigInteger::fromString (const QString s ) 
-
-
- -

Assign from a QString.

-
Parameters:
- - -
s a QString that represents an integer
-
-
-
Note:
it is the application's responsibility to make sure that the QString represents a valid integer (ie it only contains numbers and an optional minus sign at the start)
-
See also:
BigInteger(const QString &s)
-
-BigInteger & operator=(const QString &s)
- -
-
- -
-
- - - - - - - - - -
int QCA::BigInteger::compare (const BigInteger n )  const
-
-
- -

Compare this value with another BigInteger.

-

Normally it is more readable to use one of the operator overloads, so you don't need to use this method directly.

-
Parameters:
- - -
n the BigInteger to compare with
-
-
-
Returns:
zero if the values are the same, negative if the argument is less than the value of this BigInteger, and positive if the argument value is greater than this BigInteger
-
BigInteger a( "400" );
-BigInteger b( "-400" );
-BigInteger c( " 200 " );
-int result;
-result = a.compare( b );        // return positive 400 > -400
-result = a.compare( c );        // return positive,  400 > 200
-result = b.compare( c );        // return negative, -400 < 200
-
-
-
- -
-
- - - - - - - - - -
bool QCA::BigInteger::operator== (const BigInteger other )  const [inline]
-
-
- -

Equality operator.

-

Returns true if the two BigInteger values are the same, including having the same sign.

-
Parameters:
- - -
other the BigInteger to compare to
-
-
- -
-
- -
-
- - - - - - - - - -
bool QCA::BigInteger::operator!= (const BigInteger other )  const [inline]
-
-
- -

Inequality operator.

-

Returns true if the two BigInteger values are different in magnitude, sign or both.

-
Parameters:
- - -
other the BigInteger to compare to
-
-
- -
-
- -
-
- - - - - - - - - -
bool QCA::BigInteger::operator<= (const BigInteger other )  const [inline]
-
-
- -

Less than or equal operator.

-

Returns true if the BigInteger value on the left hand side is equal to or less than the BigInteger value on the right hand side.

-
Parameters:
- - -
other the BigInteger to compare to
-
-
- -
-
- -
-
- - - - - - - - - -
bool QCA::BigInteger::operator>= (const BigInteger other )  const [inline]
-
-
- -

Greater than or equal operator.

-

Returns true if the BigInteger value on the left hand side is equal to or greater than the BigInteger value on the right hand side.

-
Parameters:
- - -
other the BigInteger to compare to
-
-
- -
-
- -
-
- - - - - - - - - -
bool QCA::BigInteger::operator< (const BigInteger other )  const [inline]
-
-
- -

Less than operator.

-

Returns true if the BigInteger value on the left hand side is less than the BigInteger value on the right hand side.

-
Parameters:
- - -
other the BigInteger to compare to
-
-
- -
-
- -
-
- - - - - - - - - -
bool QCA::BigInteger::operator> (const BigInteger other )  const [inline]
-
-
- -

Greater than operator.

-

Returns true if the BigInteger value on the left hand side is greater than the BigInteger value on the right hand side.

-
Parameters:
- - -
other the BigInteger to compare to
-
-
- -
-
-

Friends And Related Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA_EXPORT QTextStream & operator<< (QTextStream stream,
const BigInteger b 
) [related]
-
-
- -

Stream operator.

-
Parameters:
- - - -
stream the stream to write to
b the integer to write to the stream
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1BigInteger-members.html qca2-2.1.0/apidocs/html/classQCA_1_1BigInteger-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1BigInteger-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1BigInteger-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::BigInteger Member List

This is the complete list of members for QCA::BigInteger, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - -
BigInteger()QCA::BigInteger
BigInteger(int n)QCA::BigInteger
BigInteger(const char *c)QCA::BigInteger
BigInteger(const QString &s)QCA::BigInteger
BigInteger(const QCA::SecureArray &a)QCA::BigInteger
BigInteger(const BigInteger &from)QCA::BigInteger
compare(const BigInteger &n) const QCA::BigInteger
fromArray(const QCA::SecureArray &a)QCA::BigInteger
fromString(const QString &s)QCA::BigInteger
operator!=(const BigInteger &other) const QCA::BigInteger [inline]
operator%=(const BigInteger &b)QCA::BigInteger
operator*=(const BigInteger &b)QCA::BigInteger
operator+=(const BigInteger &b)QCA::BigInteger
operator-=(const BigInteger &b)QCA::BigInteger
operator/=(const BigInteger &b)QCA::BigInteger
operator<(const BigInteger &other) const QCA::BigInteger [inline]
operator<<(QTextStream &stream, const BigInteger &b)QCA::BigInteger [related]
operator<=(const BigInteger &other) const QCA::BigInteger [inline]
operator=(const BigInteger &from)QCA::BigInteger
operator=(const QString &s)QCA::BigInteger
operator==(const BigInteger &other) const QCA::BigInteger [inline]
operator>(const BigInteger &other) const QCA::BigInteger [inline]
operator>=(const BigInteger &other) const QCA::BigInteger [inline]
toArray() const QCA::BigInteger
toString() const QCA::BigInteger
~BigInteger() (defined in QCA::BigInteger)QCA::BigInteger
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1BufferedComputation.html qca2-2.1.0/apidocs/html/classQCA_1_1BufferedComputation.html --- qca2-2.0.3/apidocs/html/classQCA_1_1BufferedComputation.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1BufferedComputation.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,162 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::BufferedComputation Class Reference - - - - - - -
-

QCA::BufferedComputation Class Reference
- -[QCA user API] -

-

General superclass for buffered computation algorithms. -More...

- -

#include <QtCrypto>

- -

List of all members.

- - - - - - -

Public Member Functions

virtual void clear ()=0
virtual MemoryRegion final ()=0
MemoryRegion process (const MemoryRegion &a)
virtual void update (const MemoryRegion &a)=0
-

Detailed Description

-

General superclass for buffered computation algorithms.

-

A buffered computation is characterised by having the algorithm take data in an incremental way, then having the results delivered at the end. Conceptually, the algorithm has some internal state that is modified when you call update() and returned when you call final().

-

Member Function Documentation

- -
-
- - - - - - - - -
virtual void QCA::BufferedComputation::clear ( )  [pure virtual]
-
-
- -

Reset the internal state.

- -

Implemented in QCA::Hash, and QCA::MessageAuthenticationCode.

- -
-
- -
-
- - - - - - - - - -
virtual void QCA::BufferedComputation::update (const MemoryRegion a )  [pure virtual]
-
-
- -

Update the internal state with a byte array.

-
Parameters:
- - -
a the byte array of data that is to be used to update the internal state.
-
-
- -

Implemented in QCA::Hash, and QCA::MessageAuthenticationCode.

- -
-
- -
-
- - - - - - - - -
virtual MemoryRegion QCA::BufferedComputation::final ( )  [pure virtual]
-
-
- -

Complete the algorithm and return the internal state.

- -

Implemented in QCA::Hash, and QCA::MessageAuthenticationCode.

- -
-
- -
-
- - - - - - - - - -
MemoryRegion QCA::BufferedComputation::process (const MemoryRegion a ) 
-
-
- -

Perform an "all in one" update, returning the result.

-

This is appropriate if you have all the data in one array - just call process on that array, and you will get back the results of the computation.

-
Note:
This will invalidate any previous computation using this object.
-
Parameters:
- - -
a the data to process.
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1BufferedComputation-members.html qca2-2.1.0/apidocs/html/classQCA_1_1BufferedComputation-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1BufferedComputation-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1BufferedComputation-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::BufferedComputation Member List

This is the complete list of members for QCA::BufferedComputation, including all inherited members. - - - - - -
clear()=0QCA::BufferedComputation [pure virtual]
final()=0QCA::BufferedComputation [pure virtual]
process(const MemoryRegion &a)QCA::BufferedComputation
update(const MemoryRegion &a)=0QCA::BufferedComputation [pure virtual]
~BufferedComputation() (defined in QCA::BufferedComputation)QCA::BufferedComputation [virtual]
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CAContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CAContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CAContext__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CAContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CAContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CAContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CAContext__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CAContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -d9f1908687efaafa098858f0731257c5 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CAContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CAContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CAContext.html qca2-2.1.0/apidocs/html/classQCA_1_1CAContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CAContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CAContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,304 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CAContext Class Reference - - - - - - -
-

QCA::CAContext Class Reference
- -[QCA provider API] -

-

X.509 certificate authority provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CAContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - -

Public Member Functions

 CAContext (Provider *p)
virtual CertContextcertificate () const =0
virtual CertContextcreateCertificate (const PKeyContext &pub, const CertificateOptions &opts) const =0
virtual CRLContextcreateCRL (const QDateTime &nextUpdate) const =0
virtual void setup (const CertContext &cert, const PKeyContext &priv)=0
virtual CertContextsignRequest (const CSRContext &req, const QDateTime &notValidAfter) const =0
virtual CRLContextupdateCRL (const CRLContext &crl, const QList< CRLEntry > &entries, const QDateTime &nextUpdate) const =0
-

Detailed Description

-

X.509 certificate authority provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want CertificateAuthority instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::CAContext::CAContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the Provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::CAContext::setup (const CertContext cert,
const PKeyContext priv 
) [pure virtual]
-
-
- -

Prepare the object for usage.

-

This must be called before any CA operations are performed.

-
Parameters:
- - - -
cert the certificate of the CA
priv the private key of the CA
-
-
- -
-
- -
-
- - - - - - - - -
virtual CertContext* QCA::CAContext::certificate ( )  const [pure virtual]
-
-
- -

Returns a copy of the CA's certificate.

-

The caller is responsible for deleting it.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual CertContext* QCA::CAContext::signRequest (const CSRContext req,
const QDateTime notValidAfter 
) const [pure virtual]
-
-
- -

Issue a certificate based on a certificate request, and return the certificate.

-

The caller is responsible for deleting it.

-
Parameters:
- - - -
req the certificate request
notValidAfter the expiration date
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual CertContext* QCA::CAContext::createCertificate (const PKeyContext pub,
const CertificateOptions opts 
) const [pure virtual]
-
-
- -

Issue a certificate based on a public key and options, and return the certificate.

-

The caller is responsible for deleting it.

-
Parameters:
- - - -
pub the public key of the certificate
opts the options to use for generation
-
-
- -
-
- -
-
- - - - - - - - - -
virtual CRLContext* QCA::CAContext::createCRL (const QDateTime nextUpdate )  const [pure virtual]
-
-
- -

Create a new CRL and return it.

-

The caller is responsible for deleting it.

-

The CRL has no entries in it.

-
Parameters:
- - -
nextUpdate the expiration date of the CRL
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual CRLContext* QCA::CAContext::updateCRL (const CRLContext crl,
const QList< CRLEntry > &  entries,
const QDateTime nextUpdate 
) const [pure virtual]
-
-
- -

Update an existing CRL, by examining an old one and creating a new one based on it.

-

The new CRL is returned, and the caller is responsible for deleting it.

-
Parameters:
- - - - -
crl an existing CRL issued by this CA
entries the list of revoked entries
nextUpdate the expiration date of the new CRL
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CAContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CAContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CAContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CAContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CAContext Member List

This is the complete list of members for QCA::CAContext, including all inherited members. - - - - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
CAContext(Provider *p)QCA::CAContext [inline]
certificate() const =0QCA::CAContext [pure virtual]
createCertificate(const PKeyContext &pub, const CertificateOptions &opts) const =0QCA::CAContext [pure virtual]
createCRL(const QDateTime &nextUpdate) const =0QCA::CAContext [pure virtual]
setup(const CertContext &cert, const PKeyContext &priv)=0QCA::CAContext [pure virtual]
signRequest(const CSRContext &req, const QDateTime &notValidAfter) const =0QCA::CAContext [pure virtual]
updateCRL(const CRLContext &crl, const QList< CRLEntry > &entries, const QDateTime &nextUpdate) const =0QCA::CAContext [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertBase__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CertBase__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CertBase__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertBase__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertBase__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CertBase__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CertBase__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertBase__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -c0496fc28ebe3d9d9e71de5c57f9e6af \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CertBase__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CertBase__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertBase.html qca2-2.1.0/apidocs/html/classQCA_1_1CertBase.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertBase.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertBase.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,203 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CertBase Class Reference - - - - - - -
-

QCA::CertBase Class Reference
- -[QCA provider API] -

-

X.509 certificate and certificate request provider base. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CertBase:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - -

Public Member Functions

 CertBase (Provider *p, const QString &type)
virtual ConvertResult fromDER (const QByteArray &a)=0
virtual ConvertResult fromPEM (const QString &s)=0
virtual QByteArray toDER () const =0
virtual QString toPEM () const =0
-

Detailed Description

-

X.509 certificate and certificate request provider base.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want Certificate, CertificateRequest, or CRL instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::CertBase::CertBase (Provider p,
const QString type 
) [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
p the provider associated with this context
type the type of certificate-like object provided by this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual QByteArray QCA::CertBase::toDER ( )  const [pure virtual]
-
-
- -

Convert this object to DER format, and return the value.

-

Returns an empty array on error.

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::CertBase::toPEM ( )  const [pure virtual]
-
-
- -

Convert this object to PEM format, and return the value.

-

Returns an empty string on error.

- -
-
- -
-
- - - - - - - - - -
virtual ConvertResult QCA::CertBase::fromDER (const QByteArray a )  [pure virtual]
-
-
- -

Read DER-formatted input and convert it into this object.

-

Returns QCA::ConvertGood if successful, otherwise some error value.

-
Parameters:
- - -
a the input data
-
-
- -
-
- -
-
- - - - - - - - - -
virtual ConvertResult QCA::CertBase::fromPEM (const QString s )  [pure virtual]
-
-
- -

Read PEM-formatted input and convert it into this object.

-

Returns QCA::ConvertGood if successful, otherwise some error value.

-
Parameters:
- - -
s the input data
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertBase-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CertBase-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertBase-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertBase-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CertBase Member List

This is the complete list of members for QCA::CertBase, including all inherited members. - - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
CertBase(Provider *p, const QString &type)QCA::CertBase [inline]
fromDER(const QByteArray &a)=0QCA::CertBase [pure virtual]
fromPEM(const QString &s)=0QCA::CertBase [pure virtual]
toDER() const =0QCA::CertBase [pure virtual]
toPEM() const =0QCA::CertBase [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertCollectionContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CertCollectionContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CertCollectionContext__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertCollectionContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertCollectionContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CertCollectionContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CertCollectionContext__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertCollectionContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -961a8cef6aee5534c73a6e31f33c40f5 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CertCollectionContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CertCollectionContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertCollectionContext.html qca2-2.1.0/apidocs/html/classQCA_1_1CertCollectionContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertCollectionContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertCollectionContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,179 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CertCollectionContext Class Reference - - - - - - -
-

QCA::CertCollectionContext Class Reference
- -[QCA provider API] -

-

X.509 certificate collection provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CertCollectionContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - -

Public Member Functions

 CertCollectionContext (Provider *p)
virtual ConvertResult fromPKCS7 (const QByteArray &a, QList< CertContext * > *certs, QList< CRLContext * > *crls) const =0
virtual QByteArray toPKCS7 (const QList< CertContext * > &certs, const QList< CRLContext * > &crls) const =0
-

Detailed Description

-

X.509 certificate collection provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want CertificateCollection instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::CertCollectionContext::CertCollectionContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
virtual QByteArray QCA::CertCollectionContext::toPKCS7 (const QList< CertContext * > &  certs,
const QList< CRLContext * > &  crls 
) const [pure virtual]
-
-
- -

Create PKCS#7 DER output based on the input certificates and CRLs.

-

Returns an empty array on error.

-
Parameters:
- - - -
certs list of certificates to store in the output
crls list of CRLs to store in the output
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual ConvertResult QCA::CertCollectionContext::fromPKCS7 (const QByteArray a,
QList< CertContext * > *  certs,
QList< CRLContext * > *  crls 
) const [pure virtual]
-
-
- -

Read PKCS#7 DER input and convert it into a list of certificates and CRLs.

-

The caller is responsible for deleting the returned items.

-

Returns QCA::ConvertGood if successful, otherwise some error value.

-
Parameters:
- - - - -
a the input data
certs the destination list for the certificates
crls the destination list for the CRLs
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertCollectionContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CertCollectionContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertCollectionContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertCollectionContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CertCollectionContext Member List

This is the complete list of members for QCA::CertCollectionContext, including all inherited members. - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
CertCollectionContext(Provider *p)QCA::CertCollectionContext [inline]
fromPKCS7(const QByteArray &a, QList< CertContext * > *certs, QList< CRLContext * > *crls) const =0QCA::CertCollectionContext [pure virtual]
toPKCS7(const QList< CertContext * > &certs, const QList< CRLContext * > &crls) const =0QCA::CertCollectionContext [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CertContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CertContext__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CertContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CertContext__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -ed4fb3afc4bb7092aad113f563bc540f \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CertContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CertContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertContext.html qca2-2.1.0/apidocs/html/classQCA_1_1CertContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,348 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CertContext Class Reference - - - - - - -
-

QCA::CertContext Class Reference
- -[QCA provider API] -

-

X.509 certificate provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CertContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - -

Public Member Functions

 CertContext (Provider *p)
virtual bool compare (const CertContext *other) const =0
virtual bool createSelfSigned (const CertificateOptions &opts, const PKeyContext &priv)=0
virtual bool isIssuerOf (const CertContext *other) const =0
virtual const CertContextPropsprops () const =0
virtual PKeyContextsubjectPublicKey () const =0
virtual Validity validate (const QList< CertContext * > &trusted, const QList< CertContext * > &untrusted, const QList< CRLContext * > &crls, UsageMode u, ValidateFlags vf) const =0
virtual Validity validate_chain (const QList< CertContext * > &chain, const QList< CertContext * > &trusted, const QList< CRLContext * > &crls, UsageMode u, ValidateFlags vf) const =0
-

Detailed Description

-

X.509 certificate provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want Certificate instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::CertContext::CertContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
virtual bool QCA::CertContext::createSelfSigned (const CertificateOptions opts,
const PKeyContext priv 
) [pure virtual]
-
-
- -

Create a self-signed certificate based on the given options and private key.

-

Returns true if successful, otherwise false.

-

If successful, this object becomes the self-signed certificate. If unsuccessful, this object is considered to be in an uninitialized state.

-
Parameters:
- - - -
opts the options to set on the certificate
priv the key to be used to sign the certificate
-
-
- -
-
- -
-
- - - - - - - - -
virtual const CertContextProps* QCA::CertContext::props ( )  const [pure virtual]
-
-
- -

Returns a pointer to the properties of this certificate.

- -
-
- -
-
- - - - - - - - - -
virtual bool QCA::CertContext::compare (const CertContext other )  const [pure virtual]
-
-
- -

Returns true if this certificate is equal to another certificate, otherwise false.

-
Parameters:
- - -
other the certificate to compare with
-
-
- -
-
- -
-
- - - - - - - - -
virtual PKeyContext* QCA::CertContext::subjectPublicKey ( )  const [pure virtual]
-
-
- -

Returns a copy of this certificate's public key.

-

The caller is responsible for deleting it.

- -
-
- -
-
- - - - - - - - - -
virtual bool QCA::CertContext::isIssuerOf (const CertContext other )  const [pure virtual]
-
-
- -

Returns true if this certificate is an issuer of another certificate, otherwise false.

-
Parameters:
- - -
other the issued certificate to check
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual Validity QCA::CertContext::validate (const QList< CertContext * > &  trusted,
const QList< CertContext * > &  untrusted,
const QList< CRLContext * > &  crls,
UsageMode  u,
ValidateFlags  vf 
) const [pure virtual]
-
-
- -

Validate this certificate.

-

This function is blocking.

-
Parameters:
- - - - - - -
trusted list of trusted certificates
untrusted list of untrusted certificates (can be empty)
crls list of CRLs (can be empty)
u the desired usage for this certificate
vf validation options
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual Validity QCA::CertContext::validate_chain (const QList< CertContext * > &  chain,
const QList< CertContext * > &  trusted,
const QList< CRLContext * > &  crls,
UsageMode  u,
ValidateFlags  vf 
) const [pure virtual]
-
-
- -

Validate a certificate chain.

-

This function makes no use of the certificate represented by this object, and it can be used even if this object is in an uninitialized state.

-

This function is blocking.

-
Parameters:
- - - - - - -
chain list of certificates in the chain, starting with the user certificate. It is not necessary for the chain to contain the final root certificate.
trusted list of trusted certificates
crls list of CRLs (can be empty)
u the desired usage for the user certificate in the chain
vf validation options
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CertContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CertContext Member List

This is the complete list of members for QCA::CertContext, including all inherited members. - - - - - - - - - - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
CertBase(Provider *p, const QString &type)QCA::CertBase [inline]
CertContext(Provider *p)QCA::CertContext [inline]
compare(const CertContext *other) const =0QCA::CertContext [pure virtual]
createSelfSigned(const CertificateOptions &opts, const PKeyContext &priv)=0QCA::CertContext [pure virtual]
fromDER(const QByteArray &a)=0QCA::CertBase [pure virtual]
fromPEM(const QString &s)=0QCA::CertBase [pure virtual]
isIssuerOf(const CertContext *other) const =0QCA::CertContext [pure virtual]
props() const =0QCA::CertContext [pure virtual]
subjectPublicKey() const =0QCA::CertContext [pure virtual]
toDER() const =0QCA::CertBase [pure virtual]
toPEM() const =0QCA::CertBase [pure virtual]
validate(const QList< CertContext * > &trusted, const QList< CertContext * > &untrusted, const QList< CRLContext * > &crls, UsageMode u, ValidateFlags vf) const =0QCA::CertContext [pure virtual]
validate_chain(const QList< CertContext * > &chain, const QList< CertContext * > &trusted, const QList< CRLContext * > &crls, UsageMode u, ValidateFlags vf) const =0QCA::CertContext [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertContextProps__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CertContextProps__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CertContextProps__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertContextProps__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ - - - - - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertContextProps__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CertContextProps__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CertContextProps__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertContextProps__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -3ef8476c3f26c5e6a7a691855aa9994a \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CertContextProps__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CertContextProps__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertContextProps.html qca2-2.1.0/apidocs/html/classQCA_1_1CertContextProps.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertContextProps.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertContextProps.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,401 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CertContextProps Class Reference - - - - - - -
-

QCA::CertContextProps Class Reference
- -[QCA provider API] -

-

X.509 certificate or certificate request properties. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CertContextProps:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - -

Public Attributes

QString challenge
Constraints constraints
QStringList crlLocations
QDateTime end
CertificateRequestFormat format
bool isCA
bool isSelfSigned
CertificateInfoOrdered issuer
QByteArray issuerId
QStringList issuerLocations
QStringList ocspLocations
int pathLimit
QStringList policies
BigInteger serial
QByteArray sig
SignatureAlgorithm sigalgo
QDateTime start
CertificateInfoOrdered subject
QByteArray subjectId
int version
-

Detailed Description

-

X.509 certificate or certificate request properties.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want Certificate or CertificateRequest instead.
-

Some fields are only for certificates or only for certificate requests, and these fields are noted.

-

Member Data Documentation

- -
- -
- -

The X.509 certificate version, usually 3.

-

This field is for certificates only.

- -
-
- -
- -
- -

The time the certificate becomes valid (often the time of create).

-

This field is for certificates only.

- -
-
- -
- -
- -

The time the certificate expires.

-

This field is for certificates only.

- -
-
- -
- -
- -

The subject information.

- -
-
- -
- -
- -

The issuer information.

-

This field is for certificates only.

- -
-
- -
- -
- -

The constraints.

- -
-
- -
- -
- -

The policies.

- -
-
- -
- -
- -

A list of URIs for CRLs.

-

This field is for certificates only.

- -
-
- -
- -
- -

A list of URIs for issuer certificates.

-

This field is for certificates only.

- -
-
- -
- -
- -

A list of URIs for OCSP services.

-

This field is for certificates only.

- -
-
- -
- -
- -

The certificate serial number.

-

This field is for certificates only.

- -
-
- -
-
- - - - -
bool QCA::CertContextProps::isCA
-
-
- -

True if the certificate is a CA or the certificate request is requesting to be a CA, otherwise false.

- -
-
- -
- -
- -

True if the certificate is self-signed.

-

This field is for certificates only.

- -
-
- -
- -
- -

The path limit.

- -
-
- -
- -
- -

The signature data.

- -
-
- -
- -
- -

The signature algorithm used to create the signature.

- -
-
- -
- -
- -

The subject id.

-

This field is for certificates only.

- -
-
- -
- -
- -

The issuer id.

-

This field is for certificates only.

- -
-
- -
- -
- -

The SPKAC challenge value.

-

This field is for certificate requests only.

- -
-
- -
- -
- -

The format used for the certificate request.

-

This field is for certificate requests only.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertContextProps-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CertContextProps-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertContextProps-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertContextProps-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CertContextProps Member List

This is the complete list of members for QCA::CertContextProps, including all inherited members. - - - - - - - - - - - - - - - - - - - - -
challengeQCA::CertContextProps
constraintsQCA::CertContextProps
crlLocationsQCA::CertContextProps
endQCA::CertContextProps
formatQCA::CertContextProps
isCAQCA::CertContextProps
isSelfSignedQCA::CertContextProps
issuerQCA::CertContextProps
issuerIdQCA::CertContextProps
issuerLocationsQCA::CertContextProps
ocspLocationsQCA::CertContextProps
pathLimitQCA::CertContextProps
policiesQCA::CertContextProps
serialQCA::CertContextProps
sigQCA::CertContextProps
sigalgoQCA::CertContextProps
startQCA::CertContextProps
subjectQCA::CertContextProps
subjectIdQCA::CertContextProps
versionQCA::CertContextProps
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateAuthority__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CertificateAuthority__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateAuthority__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateAuthority__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateAuthority__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CertificateAuthority__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateAuthority__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateAuthority__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -6324c8c038273b510aa9cbd035f1464a \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CertificateAuthority__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CertificateAuthority__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateAuthority.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateAuthority.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateAuthority.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateAuthority.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,333 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CertificateAuthority Class Reference - - - - - - -
-

QCA::CertificateAuthority Class Reference
- -[QCA user API] -

-

A Certificate Authority is used to generate Certificates and Certificate Revocation Lists (CRLs). -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CertificateAuthority:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - -

Public Member Functions

Certificate certificate () const
 CertificateAuthority (const CertificateAuthority &from)
 CertificateAuthority (const Certificate &cert, const PrivateKey &key, const QString &provider)
Certificate createCertificate (const PublicKey &key, const CertificateOptions &opts) const
CRL createCRL (const QDateTime &nextUpdate) const
CertificateAuthorityoperator= (const CertificateAuthority &from)
Certificate signRequest (const CertificateRequest &req, const QDateTime &notValidAfter) const
CRL updateCRL (const CRL &crl, const QList< CRLEntry > &entries, const QDateTime &nextUpdate) const
-

Detailed Description

-

A Certificate Authority is used to generate Certificates and Certificate Revocation Lists (CRLs).

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QCA::CertificateAuthority::CertificateAuthority (const Certificate cert,
const PrivateKey key,
const QString provider 
)
-
-
- -

Create a new Certificate Authority.

-
Parameters:
- - - - -
cert the CA certificate
key the private key associated with the CA certificate
provider the provider to use, if a specific provider is required
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::CertificateAuthority::CertificateAuthority (const CertificateAuthority from ) 
-
-
- -

Copy constructor.

-
Parameters:
- - -
from the CertificateAuthority to copy from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
CertificateAuthority& QCA::CertificateAuthority::operator= (const CertificateAuthority from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the CertificateAuthority to copy from
-
-
- -
-
- -
-
- - - - - - - - -
Certificate QCA::CertificateAuthority::certificate ( )  const
-
-
- -

The Certificate belonging to the CertificateAuthority.

-

This is the Certificate that was passed as an argument to the constructor

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
Certificate QCA::CertificateAuthority::signRequest (const CertificateRequest req,
const QDateTime notValidAfter 
) const
-
-
- -

Create a new Certificate by signing the provider CertificateRequest.

-
Parameters:
- - - -
req the CertificateRequest to sign
notValidAfter the last date that the Certificate will be valid
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
Certificate QCA::CertificateAuthority::createCertificate (const PublicKey key,
const CertificateOptions opts 
) const
-
-
- -

Create a new Certificate.

-
Parameters:
- - - -
key the Public Key to use to create the Certificate
opts the options to use for the new Certificate
-
-
- -
-
- -
-
- - - - - - - - - -
CRL QCA::CertificateAuthority::createCRL (const QDateTime nextUpdate )  const
-
-
- -

Create a new Certificate Revocation List (CRL).

-
Parameters:
- - -
nextUpdate the date that the CRL will be updated
-
-
-
Returns:
an empty CRL
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
CRL QCA::CertificateAuthority::updateCRL (const CRL crl,
const QList< CRLEntry > &  entries,
const QDateTime nextUpdate 
) const
-
-
- -

Update the CRL to include new entries.

-
Parameters:
- - - - -
crl the CRL to update
entries the entries to add to the CRL
nextUpdate the date that this CRL will be updated
-
-
-
Returns:
the update CRL
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateAuthority-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateAuthority-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateAuthority-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateAuthority-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CertificateAuthority Member List

This is the complete list of members for QCA::CertificateAuthority, including all inherited members. - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
certificate() const QCA::CertificateAuthority
CertificateAuthority(const Certificate &cert, const PrivateKey &key, const QString &provider)QCA::CertificateAuthority
CertificateAuthority(const CertificateAuthority &from)QCA::CertificateAuthority
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
createCertificate(const PublicKey &key, const CertificateOptions &opts) const QCA::CertificateAuthority
createCRL(const QDateTime &nextUpdate) const QCA::CertificateAuthority
operator=(const CertificateAuthority &from)QCA::CertificateAuthority
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
provider() const QCA::Algorithm
signRequest(const CertificateRequest &req, const QDateTime &notValidAfter) const QCA::CertificateAuthority
takeContext()QCA::Algorithm
type() const QCA::Algorithm
updateCRL(const CRL &crl, const QList< CRLEntry > &entries, const QDateTime &nextUpdate) const QCA::CertificateAuthority
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~CertificateAuthority() (defined in QCA::CertificateAuthority)QCA::CertificateAuthority
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateChain__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CertificateChain__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateChain__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateChain__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateChain__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CertificateChain__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateChain__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateChain__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -a26febbdaf4f02255fb6d852b518dff3 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CertificateChain__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CertificateChain__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateChain.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateChain.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateChain.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateChain.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,246 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CertificateChain Class Reference - - - - - - -
-

QCA::CertificateChain Class Reference
- -[QCA user API] -

-

A chain of related Certificates. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CertificateChain:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - -

Public Member Functions

 CertificateChain (const Certificate &primary)
 CertificateChain ()
CertificateChain complete (const QList< Certificate > &issuers=QList< Certificate >(), Validity *result=0) const
const Certificateprimary () const
Validity validate (const CertificateCollection &trusted, const QList< CRL > &untrusted_crls=QList< CRL >(), UsageMode u=UsageAny, ValidateFlags vf=ValidateAll) const
-

Detailed Description

-

A chain of related Certificates.

-

CertificateChain is a list (a QList) of certificates that are related by the signature from one to another. If Certificate C signs Certificate B, and Certificate B signs Certificate A, then C, B and A form a chain.

-

The normal use of a CertificateChain is from a end-user Certificate (called the primary, equivalent to QList::first()) through some intermediate Certificates to some other Certificate (QList::last()), which might be a root Certificate Authority, but does not need to be.

-

You can build up the chain using normal QList operations, such as QList::append().

-
See also:
QCA::CertificateCollection for an alternative way to represent a group of Certificates that do not necessarily have a chained relationship.
-
Examples:
-

publickeyexample.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::CertificateChain::CertificateChain ( )  [inline]
-
-
- -

Create an empty certificate chain.

- -

Referenced by complete().

- -
-
- -
-
- - - - - - - - - -
QCA::CertificateChain::CertificateChain (const Certificate primary )  [inline]
-
-
- -

Create a certificate chain, starting at the specified certificate.

-
Parameters:
- - -
primary the end-user certificate that forms one end of the chain
-
-
- -

References QList< Certificate >::append().

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
const Certificate& QCA::CertificateChain::primary ( )  const [inline]
-
-
- -

Return the primary (end-user) Certificate.

- -

References QList< Certificate >::first().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Validity QCA::CertificateChain::validate (const CertificateCollection trusted,
const QList< CRL > &  untrusted_crls = QList<CRL>(),
UsageMode  u = UsageAny,
ValidateFlags  vf = ValidateAll 
) const [inline]
-
-
- -

Check the validity of a certificate chain.

-
Parameters:
- - - - - -
trusted a collection of trusted certificates
untrusted_crls a list of additional CRLs, not necessarily trusted
u the use required for the primary certificate
vf the conditions to validate
-
-
-
Note:
This function may block
-
See also:
Certificate::validate()
- -

References QCA::ErrorValidityUnknown, QList< Certificate >::first(), and QList< Certificate >::isEmpty().

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
CertificateChain QCA::CertificateChain::complete (const QList< Certificate > &  issuers = QList<Certificate>(),
Validity result = 0 
) const [inline]
-
-
- -

Complete a certificate chain for the primary certificate, using the rest of the certificates in the chain object, as well as those in issuers, as possible issuers in the chain.

-

If there are issuers missing, then the chain might be incomplete (at the worst case, if no issuers exist for the primary certificate, then the resulting chain will consist of just the primary certificate). Use the result argument to find out if there was a problem during completion. A result of ValidityGood means the chain was completed successfully.

-

The newly constructed CertificateChain is returned.

-

If the certificate chain is empty, then this will return an empty CertificateChain object.

-
Parameters:
- - - -
issuers a pool of issuers to draw from as necessary
result the result of the completion operation
-
-
-
Note:
This function may block
-
See also:
validate
- -

References CertificateChain(), QList< Certificate >::first(), and QList< Certificate >::isEmpty().

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateChain-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateChain-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateChain-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateChain-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,116 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CertificateChain Member List

This is the complete list of members for QCA::CertificateChain, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
append(const T &value)QList< Certificate >
at(int i)QList< Certificate >
back()QList< Certificate >
back()QList< Certificate >
begin()QList< Certificate >
begin()QList< Certificate >
CertificateChain()QCA::CertificateChain [inline]
CertificateChain(const Certificate &primary)QCA::CertificateChain [inline]
clear()QList< Certificate >
complete(const QList< Certificate > &issuers=QList< Certificate >(), Validity *result=0) const QCA::CertificateChain [inline]
const_pointerQList< Certificate >
const_referenceQList< Certificate >
constBegin()QList< Certificate >
constEnd()QList< Certificate >
ConstIteratorQList< Certificate >
contains(const T &value)QList< Certificate >
count(const T &value)QList< Certificate >
count()QList< Certificate >
empty()QList< Certificate >
end()QList< Certificate >
end()QList< Certificate >
erase(iterator pos)QList< Certificate >
erase(iterator begin, iterator end)QList< Certificate >
first()QList< Certificate >
first()QList< Certificate >
fromSet(const QSet< T > &set)QList< Certificate >
fromStdList(const std::list< T > &list)QList< Certificate >
fromVector(const QVector< T > &vector)QList< Certificate >
front()QList< Certificate >
front()QList< Certificate >
indexOf(const T &value, int from=0)QList< Certificate >
insert(int i, const T &value)QList< Certificate >
insert(iterator before, const T &value)QList< Certificate >
isEmpty()QList< Certificate >
IteratorQList< Certificate >
last()QList< Certificate >
last()QList< Certificate >
lastIndexOf(const T &value, int from=-1)QList< Certificate >
list< T > QList::toStdList()QList< Certificate >
mid(int pos, int length=-1)QList< Certificate >
move(int from, int to)QList< Certificate >
operator!=(const QList &other)QList< Certificate >
operator+(const QList &other)QList< Certificate >
operator+=(const QList &other)QList< Certificate >
operator+=(const T &value)QList< Certificate >
operator<<(const T &value)QList< Certificate >
operator<<(const QList &l)QList< Certificate >
operator=(const QList &other)QList< Certificate >
operator==(const QList &other)QList< Certificate >
operator[](int i)QList< Certificate >
operator[](int i)QList< Certificate >
pointerQList< Certificate >
pop_back()QList< Certificate >
pop_front()QList< Certificate >
prepend(const T &value)QList< Certificate >
primary() const QCA::CertificateChain [inline]
push_back(const T &value)QList< Certificate >
push_front(const T &value)QList< Certificate >
QList()QList< Certificate >
QList(const QList &other)QList< Certificate >
referenceQList< Certificate >
removeAll(const T &value)QList< Certificate >
removeAt(int i)QList< Certificate >
removeFirst()QList< Certificate >
removeLast()QList< Certificate >
replace(int i, const T &value)QList< Certificate >
size()QList< Certificate >
swap(int i, int j)QList< Certificate >
takeAt(int i)QList< Certificate >
takeFirst()QList< Certificate >
takeLast()QList< Certificate >
toSet()QList< Certificate >
toVector()QList< Certificate >
validate(const CertificateCollection &trusted, const QList< CRL > &untrusted_crls=QList< CRL >(), UsageMode u=UsageAny, ValidateFlags vf=ValidateAll) const QCA::CertificateChain [inline]
value(int i)QList< Certificate >
value(int i, const T &defaultValue)QList< Certificate >
value_typeQList< Certificate >
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateCollection__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CertificateCollection__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateCollection__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateCollection__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateCollection__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CertificateCollection__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateCollection__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateCollection__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -1589f77459d8d9404949cf8c384902b2 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CertificateCollection__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CertificateCollection__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateCollection.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateCollection.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateCollection.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateCollection.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,509 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CertificateCollection Class Reference - - - - - - -
-

QCA::CertificateCollection Class Reference
- -[QCA user API] -

-

Bundle of Certificates and CRLs. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CertificateCollection:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - -

Public Member Functions

void addCertificate (const Certificate &cert)
void addCRL (const CRL &crl)
void append (const CertificateCollection &other)
 CertificateCollection (const CertificateCollection &from)
 CertificateCollection ()
QList< Certificatecertificates () const
QList< CRLcrls () const
CertificateCollection operator+ (const CertificateCollection &other) const
CertificateCollectionoperator+= (const CertificateCollection &other)
CertificateCollectionoperator= (const CertificateCollection &from)
bool toFlatTextFile (const QString &fileName)
bool toPKCS7File (const QString &fileName, const QString &provider=QString())

Static Public Member Functions

static bool canUsePKCS7 (const QString &provider=QString())
static CertificateCollection fromFlatTextFile (const QString &fileName, ConvertResult *result=0, const QString &provider=QString())
static CertificateCollection fromPKCS7File (const QString &fileName, ConvertResult *result=0, const QString &provider=QString())
-

Detailed Description

-

Bundle of Certificates and CRLs.

-

CertificateCollection provides a bundle of Certificates and Certificate Revocation Lists (CRLs), not necessarily related.

-
See also:
QCA::CertificateChain for a representation of a chain of Certificates related by signatures.
-
Examples:
-

certtest.cpp, and ssltest.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::CertificateCollection::CertificateCollection ( ) 
-
-
- -

Create an empty Certificate / CRL collection.

- -
-
- -
-
- - - - - - - - - -
QCA::CertificateCollection::CertificateCollection (const CertificateCollection from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the CertificateCollection to copy from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
CertificateCollection& QCA::CertificateCollection::operator= (const CertificateCollection from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the CertificateCollection to copy from
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::CertificateCollection::addCertificate (const Certificate cert ) 
-
-
- -

Append a Certificate to this collection.

-
Parameters:
- - -
cert the Certificate to add to this CertificateCollection
-
-
-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - - -
void QCA::CertificateCollection::addCRL (const CRL crl ) 
-
-
- -

Append a CRL to this collection.

-
Parameters:
- - -
crl the certificate revokation list to add to this CertificateCollection
-
-
- -
-
- -
-
- - - - - - - - -
QList<Certificate> QCA::CertificateCollection::certificates ( )  const
-
-
- -

The Certificates in this collection.

-
Examples:
certtest.cpp.
-
-
-
- -
-
- - - - - - - - -
QList<CRL> QCA::CertificateCollection::crls ( )  const
-
-
- -

The CRLs in this collection.

- -
-
- -
-
- - - - - - - - - -
void QCA::CertificateCollection::append (const CertificateCollection other ) 
-
-
- -

Add another CertificateCollection to this collection.

-
Parameters:
- - -
other the CertificateCollection to add to this collection
-
-
- -
-
- -
-
- - - - - - - - - -
CertificateCollection QCA::CertificateCollection::operator+ (const CertificateCollection other )  const
-
-
- -

Add another CertificateCollection to this collection.

-
Parameters:
- - -
other the CertificateCollection to add to this collection
-
-
- -
-
- -
-
- - - - - - - - - -
CertificateCollection& QCA::CertificateCollection::operator+= (const CertificateCollection other ) 
-
-
- -

Add another CertificateCollection to this collection.

-
Parameters:
- - -
other the CertificateCollection to add to this collection
-
-
- -
-
- -
-
- - - - - - - - - -
static bool QCA::CertificateCollection::canUsePKCS7 (const QString provider = QString() )  [static]
-
-
- -

test if the CertificateCollection can be imported and exported to PKCS#7 format

-
Parameters:
- - -
provider the provider to use, if a specific provider is required
-
-
-
Returns:
true if the CertificateCollection can be imported and exported to PKCS#7 format
- -
-
- -
-
- - - - - - - - - -
bool QCA::CertificateCollection::toFlatTextFile (const QString fileName ) 
-
-
- -

export the CertificateCollection to a plain text file

-
Parameters:
- - -
fileName the name (and path, if required) to write the contents of the CertificateCollection to
-
-
-
Returns:
true if the export succeeded, otherwise false
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool QCA::CertificateCollection::toPKCS7File (const QString fileName,
const QString provider = QString() 
)
-
-
- -

export the CertificateCollection to a PKCS#7 file

-
Parameters:
- - - -
fileName the name (and path, if required) to write the contents of the CertificateCollection to
provider the provider to use, if a specific provider is required
-
-
-
Returns:
true if the export succeeded, otherwise false
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static CertificateCollection QCA::CertificateCollection::fromFlatTextFile (const QString fileName,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

import a CertificateCollection from a text file

-
Parameters:
- - - - -
fileName the name (and path, if required) to read the certificate collection from
result a pointer to a ConvertResult, which if not-null will be set to the conversion status
provider the provider to use, if a specific provider is required
-
-
-
Returns:
the CertificateCollection corresponding to the contents of the file specified in fileName
-
Examples:
certtest.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static CertificateCollection QCA::CertificateCollection::fromPKCS7File (const QString fileName,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

import a CertificateCollection from a PKCS#7 file

-
Parameters:
- - - - -
fileName the name (and path, if required) to read the certificate collection from
result a pointer to a ConvertResult, which if not-null will be set to the conversion status
provider the provider to use, if a specific provider is required
-
-
-
Returns:
the CertificateCollection corresponding to the contents of the file specified in fileName
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateCollection-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateCollection-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateCollection-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateCollection-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CertificateCollection Member List

This is the complete list of members for QCA::CertificateCollection, including all inherited members. - - - - - - - - - - - - - - - - -
addCertificate(const Certificate &cert)QCA::CertificateCollection
addCRL(const CRL &crl)QCA::CertificateCollection
append(const CertificateCollection &other)QCA::CertificateCollection
canUsePKCS7(const QString &provider=QString())QCA::CertificateCollection [static]
CertificateCollection()QCA::CertificateCollection
CertificateCollection(const CertificateCollection &from)QCA::CertificateCollection
certificates() const QCA::CertificateCollection
crls() const QCA::CertificateCollection
fromFlatTextFile(const QString &fileName, ConvertResult *result=0, const QString &provider=QString())QCA::CertificateCollection [static]
fromPKCS7File(const QString &fileName, ConvertResult *result=0, const QString &provider=QString())QCA::CertificateCollection [static]
operator+(const CertificateCollection &other) const QCA::CertificateCollection
operator+=(const CertificateCollection &other)QCA::CertificateCollection
operator=(const CertificateCollection &from)QCA::CertificateCollection
toFlatTextFile(const QString &fileName)QCA::CertificateCollection
toPKCS7File(const QString &fileName, const QString &provider=QString())QCA::CertificateCollection
~CertificateCollection() (defined in QCA::CertificateCollection)QCA::CertificateCollection
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Certificate__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1Certificate__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1Certificate__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Certificate__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Certificate__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1Certificate__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1Certificate__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Certificate__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -b13d2ad7659cb13b94418b51ecf0b8d0 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1Certificate__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1Certificate__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Certificate.html qca2-2.1.0/apidocs/html/classQCA_1_1Certificate.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Certificate.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Certificate.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,1075 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::Certificate Class Reference - - - - - - -
-

QCA::Certificate Class Reference
- -[QCA user API] -

-

Public Key (X.509) certificate. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::Certificate:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

 Certificate (const Certificate &from)
 Certificate (const CertificateOptions &opts, const PrivateKey &key, const QString &provider=QString())
 Certificate (const QString &fileName)
 Certificate ()
void change (CertContext *c)
QString commonName () const
Constraints constraints () const
QStringList crlLocations () const
bool isCA () const
bool isIssuerOf (const Certificate &other) const
bool isNull () const
bool isSelfSigned () const
CertificateInfo issuerInfo () const
CertificateInfoOrdered issuerInfoOrdered () const
QByteArray issuerKeyId () const
QStringList issuerLocations () const
bool matchesHostName (const QString &host) const
QDateTime notValidAfter () const
QDateTime notValidBefore () const
QStringList ocspLocations () const
bool operator!= (const Certificate &other) const
Certificateoperator= (const Certificate &from)
bool operator== (const Certificate &a) const
int pathLimit () const
QStringList policies () const
BigInteger serialNumber () const
SignatureAlgorithm signatureAlgorithm () const
CertificateInfo subjectInfo () const
CertificateInfoOrdered subjectInfoOrdered () const
QByteArray subjectKeyId () const
PublicKey subjectPublicKey () const
QByteArray toDER () const
QString toPEM () const
bool toPEMFile (const QString &fileName) const
Validity validate (const CertificateCollection &trusted, const CertificateCollection &untrusted, UsageMode u=UsageAny, ValidateFlags vf=ValidateAll) const

Static Public Member Functions

static Certificate fromDER (const QByteArray &a, ConvertResult *result=0, const QString &provider=QString())
static Certificate fromPEM (const QString &s, ConvertResult *result=0, const QString &provider=QString())
static Certificate fromPEMFile (const QString &fileName, ConvertResult *result=0, const QString &provider=QString())

Friends

-class CertificateChain
-class Private
-

Detailed Description

-

Public Key (X.509) certificate.

-

This class contains one X.509 certificate

-
Examples:
-

certtest.cpp, publickeyexample.cpp, sslservtest.cpp, and ssltest.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::Certificate::Certificate ( ) 
-
-
- -

Create an empty Certificate.

- -
-
- -
-
- - - - - - - - - -
QCA::Certificate::Certificate (const QString fileName ) 
-
-
- -

Create a Certificate from a PEM encoded file.

-
Parameters:
- - -
fileName the name (and path, if required) of the file that contains the PEM encoded certificate
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QCA::Certificate::Certificate (const CertificateOptions opts,
const PrivateKey key,
const QString provider = QString() 
)
-
-
- -

Create a Certificate with specified options and a specified private key.

-
Parameters:
- - - - -
opts the options to use
key the private key for this certificate
provider the provider to use to create this key, if a particular provider is required
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::Certificate::Certificate (const Certificate from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the certificate to copy from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
Certificate& QCA::Certificate::operator= (const Certificate from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the Certificate to assign from
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::Certificate::isNull ( )  const
-
-
- -

Test if the certificate is empty (null).

-
Returns:
true if the certificate is null
-
Examples:
publickeyexample.cpp.
-
-
-
- -
-
- - - - - - - - -
QDateTime QCA::Certificate::notValidBefore ( )  const
-
-
- -

The earliest date that the certificate is valid.

-
Examples:
certtest.cpp, and ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
QDateTime QCA::Certificate::notValidAfter ( )  const
-
-
- -

The latest date that the certificate is valid.

-
Examples:
certtest.cpp, and ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
CertificateInfo QCA::Certificate::subjectInfo ( )  const
-
-
- -

Properties of the subject of the certificate, as a QMultiMap.

-

This is the method that provides information on the subject organisation, common name, DNS name, and so on. The list of information types (i.e. the key to the multi-map) is a CertificateInfoType. The values are a list of QString.

-

An example of how you can iterate over the list is:

-
foreach( QString dns, info.values(QCA::DNS) )
-{
-        std::cout << "    " << qPrintable(dns) << std::endl;
-}
-
Examples:
certtest.cpp.
-
-
-
- -
-
- - - - - - - - -
CertificateInfoOrdered QCA::Certificate::subjectInfoOrdered ( )  const
-
-
- -

Properties of the subject of the certificate, as an ordered list (QList of CertificateInfoPair).

-

This allows access to the certificate information in the same order as they appear in a certificate. Each pair in the list has a type and a value.

-

For example:

-
CertificateInfoOrdered info = cert.subjectInfoOrdered();
-// info[0].type == CommonName
-// info[0].value == "example.com"
-
See also:
subjectInfo for an unordered version
-
-issuerInfoOrdered for the ordered information on the issuer
-
-CertificateInfoPair for the elements in the list
- -
-
- -
-
- - - - - - - - -
CertificateInfo QCA::Certificate::issuerInfo ( )  const
-
-
- -

Properties of the issuer of the certificate.

-
See also:
subjectInfo for how the return value works.
-
Examples:
certtest.cpp.
-
-
-
- -
-
- - - - - - - - -
CertificateInfoOrdered QCA::Certificate::issuerInfoOrdered ( )  const
-
-
- -

Properties of the issuer of the certificate, as an ordered list (QList of CertificateInfoPair).

-

This allows access to the certificate information in the same order as they appear in a certificate. Each pair in the list has a type and a value.

-
See also:
issuerInfo for an unordered version
-
-subjectInfoOrdered for the ordered information on the subject
-
-CertificateInfoPair for the elements in the list
- -
-
- -
-
- - - - - - - - -
Constraints QCA::Certificate::constraints ( )  const
-
-
- -

The constraints that apply to this certificate.

- -
-
- -
-
- - - - - - - - -
QStringList QCA::Certificate::policies ( )  const
-
-
- -

The policies that apply to this certificate.

-

Policies are specified as strings containing OIDs

- -
-
- -
-
- - - - - - - - -
QStringList QCA::Certificate::crlLocations ( )  const
-
-
- -

List of URI locations for CRL files.

-

Each URI refers to the same CRL file

- -
-
- -
-
- - - - - - - - -
QStringList QCA::Certificate::issuerLocations ( )  const
-
-
- -

List of URI locations for issuer certificate files.

-

Each URI refers to the same issuer file

- -
-
- -
-
- - - - - - - - -
QStringList QCA::Certificate::ocspLocations ( )  const
-
-
- -

List of URI locations for OCSP services.

- -
-
- -
-
- - - - - - - - -
QString QCA::Certificate::commonName ( )  const
-
-
- -

The common name of the subject of the certificate.

-

Common names are normally the name of a person, company or organisation

-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
BigInteger QCA::Certificate::serialNumber ( )  const
-
-
- -

The serial number of the certificate.

-
Examples:
certtest.cpp.
-
-
-
- -
-
- - - - - - - - -
PublicKey QCA::Certificate::subjectPublicKey ( )  const
-
-
- -

The public key associated with the subject of the certificate.

- -
-
- -
-
- - - - - - - - -
bool QCA::Certificate::isCA ( )  const
-
-
- -

Test if the Certificate is valid as a Certificate Authority.

-
Returns:
true if the Certificate is valid as a Certificate Authority
-
Examples:
certtest.cpp.
-
-
-
- -
-
- - - - - - - - -
bool QCA::Certificate::isSelfSigned ( )  const
-
-
- -

Test if the Certificate is self-signed.

-
Returns:
true if the certificate is self-signed
-
Examples:
certtest.cpp.
-
-
-
- -
-
- - - - - - - - - -
bool QCA::Certificate::isIssuerOf (const Certificate other )  const
-
-
- -

Test if the Certificate has signed another Certificate object and is therefore the issuer.

-
Parameters:
- - -
other the certificate to test
-
-
-
Returns:
true if this certificate is the issuer of the argument
- -
-
- -
-
- - - - - - - - -
int QCA::Certificate::pathLimit ( )  const
-
-
- -

The upper bound of the number of links in the certificate chain, if any.

- -
-
- -
-
- - - - - - - - -
SignatureAlgorithm QCA::Certificate::signatureAlgorithm ( )  const
-
-
- -

The signature algorithm used for the signature on this certificate.

- -
-
- -
-
- - - - - - - - -
QByteArray QCA::Certificate::subjectKeyId ( )  const
-
-
- -

The key identifier associated with the subject.

- -
-
- -
-
- - - - - - - - -
QByteArray QCA::Certificate::issuerKeyId ( )  const
-
-
- -

The key identifier associated with the issuer.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Validity QCA::Certificate::validate (const CertificateCollection trusted,
const CertificateCollection untrusted,
UsageMode  u = UsageAny,
ValidateFlags  vf = ValidateAll 
) const
-
-
- -

Check the validity of a certificate.

-
Parameters:
- - - - - -
trusted a collection of trusted certificates
untrusted a collection of additional certificates, not necessarily trusted
u the use required for the certificate
vf the conditions to validate
-
-
-
Note:
This function may block
- -
-
- -
-
- - - - - - - - -
QByteArray QCA::Certificate::toDER ( )  const
-
-
- -

Export the Certificate into a DER format.

- -
-
- -
-
- - - - - - - - -
QString QCA::Certificate::toPEM ( )  const
-
-
- -

Export the Certificate into a PEM format.

-
Examples:
certtest.cpp, and ssltest.cpp.
-
-
-
- -
-
- - - - - - - - - -
bool QCA::Certificate::toPEMFile (const QString fileName )  const
-
-
- -

Export the Certificate into PEM format in a file.

-
Parameters:
- - -
fileName the name of the file to use
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static Certificate QCA::Certificate::fromDER (const QByteArray a,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import the certificate from DER.

-
Parameters:
- - - - -
a the array containing the certificate in DER format
result a pointer to a ConvertResult, which if not-null will be set to the conversion status
provider the provider to use, if a specific provider is required
-
-
-
Returns:
the Certificate corresponding to the certificate in the provided array
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static Certificate QCA::Certificate::fromPEM (const QString s,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import the certificate from PEM format.

-
Parameters:
- - - - -
s the string containing the certificate in PEM format
result a pointer to a ConvertResult, which if not-null will be set to the conversion status
provider the provider to use, if a specific provider is required
-
-
-
Returns:
the Certificate corresponding to the certificate in the provided string
-
Examples:
sslservtest.cpp, and ssltest.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static Certificate QCA::Certificate::fromPEMFile (const QString fileName,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import the certificate from a file.

-
Parameters:
- - - - -
fileName the name (and path, if required) of the file containing the certificate in PEM format
result a pointer to a ConvertResult, which if not-null will be set to the conversion status
provider the provider to use, if a specific provider is required
-
-
-
Returns:
the Certificate corresponding to the certificate in the provided string
- -
-
- -
-
- - - - - - - - - -
bool QCA::Certificate::matchesHostName (const QString host )  const
-
-
- -

Test if the subject of the certificate matches a specified host name.

-

This will return true (indicating a match), if the specified host name meets the RFC 2818 validation rules with this certificate.

-

If the host is an internationalized domain name, then it must be provided in unicode format, not in IDNA ACE/punycode format.

-
Parameters:
- - -
host the name of the host to compare to
-
-
- -
-
- -
-
- - - - - - - - - -
bool QCA::Certificate::operator== (const Certificate a )  const
-
-
- -

Test for equality of two certificates.

-
Parameters:
- - -
a the certificate to compare this certificate with
-
-
-
Returns:
true if the two certificates are the same
- -
-
- -
-
- - - - - - - - - -
bool QCA::Certificate::operator!= (const Certificate other )  const [inline]
-
-
- -

Inequality operator.

-
Parameters:
- - -
other the certificate to compare this certificate with
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::Certificate::change (CertContext c ) 
-
-
-

For internal use only.

-
Parameters:
- - -
c context (internal)
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoOrdered__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoOrdered__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoOrdered__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoOrdered__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoOrdered__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoOrdered__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoOrdered__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoOrdered__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -23596e9b3f54379a20542b1413fdb6fb \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoOrdered__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoOrdered__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoOrdered.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoOrdered.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoOrdered.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoOrdered.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,115 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CertificateInfoOrdered Class Reference - - - - - - -
-

QCA::CertificateInfoOrdered Class Reference
- -[QCA user API] -

-

Ordered certificate properties type. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CertificateInfoOrdered:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - -

Public Member Functions

CertificateInfoOrdered dnOnly () const
QString toString () const
-

Detailed Description

-

Ordered certificate properties type.

-

This container stores the information in the same sequence as the certificate format itself.

-
Examples:
-

ssltest.cpp.

-
-

Member Function Documentation

- -
-
- - - - - - - - -
QString QCA::CertificateInfoOrdered::toString ( )  const [inline]
-
-
- -

Convert to RFC 1779 string format.

-
Examples:
ssltest.cpp.
-
-

References QCA::orderedToDNString().

- -
-
- -
-
- - - - - - - - -
CertificateInfoOrdered QCA::CertificateInfoOrdered::dnOnly ( )  const [inline]
-
-
- -

Return a new CertificateInfoOrdered that only contains the Distinguished Name (DN) types found in this object.

- -

References QCA::orderedDNOnly().

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoOrdered-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoOrdered-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoOrdered-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoOrdered-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,113 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CertificateInfoOrdered Member List

This is the complete list of members for QCA::CertificateInfoOrdered, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
append(const T &value)QList< CertificateInfoPair >
at(int i)QList< CertificateInfoPair >
back()QList< CertificateInfoPair >
back()QList< CertificateInfoPair >
begin()QList< CertificateInfoPair >
begin()QList< CertificateInfoPair >
clear()QList< CertificateInfoPair >
const_pointerQList< CertificateInfoPair >
const_referenceQList< CertificateInfoPair >
constBegin()QList< CertificateInfoPair >
constEnd()QList< CertificateInfoPair >
ConstIteratorQList< CertificateInfoPair >
contains(const T &value)QList< CertificateInfoPair >
count(const T &value)QList< CertificateInfoPair >
count()QList< CertificateInfoPair >
dnOnly() const QCA::CertificateInfoOrdered [inline]
empty()QList< CertificateInfoPair >
end()QList< CertificateInfoPair >
end()QList< CertificateInfoPair >
erase(iterator pos)QList< CertificateInfoPair >
erase(iterator begin, iterator end)QList< CertificateInfoPair >
first()QList< CertificateInfoPair >
first()QList< CertificateInfoPair >
fromSet(const QSet< T > &set)QList< CertificateInfoPair >
fromStdList(const std::list< T > &list)QList< CertificateInfoPair >
fromVector(const QVector< T > &vector)QList< CertificateInfoPair >
front()QList< CertificateInfoPair >
front()QList< CertificateInfoPair >
indexOf(const T &value, int from=0)QList< CertificateInfoPair >
insert(int i, const T &value)QList< CertificateInfoPair >
insert(iterator before, const T &value)QList< CertificateInfoPair >
isEmpty()QList< CertificateInfoPair >
IteratorQList< CertificateInfoPair >
last()QList< CertificateInfoPair >
last()QList< CertificateInfoPair >
lastIndexOf(const T &value, int from=-1)QList< CertificateInfoPair >
list< T > QList::toStdList()QList< CertificateInfoPair >
mid(int pos, int length=-1)QList< CertificateInfoPair >
move(int from, int to)QList< CertificateInfoPair >
operator!=(const QList &other)QList< CertificateInfoPair >
operator+(const QList &other)QList< CertificateInfoPair >
operator+=(const QList &other)QList< CertificateInfoPair >
operator+=(const T &value)QList< CertificateInfoPair >
operator<<(const T &value)QList< CertificateInfoPair >
operator<<(const QList &l)QList< CertificateInfoPair >
operator=(const QList &other)QList< CertificateInfoPair >
operator==(const QList &other)QList< CertificateInfoPair >
operator[](int i)QList< CertificateInfoPair >
operator[](int i)QList< CertificateInfoPair >
pointerQList< CertificateInfoPair >
pop_back()QList< CertificateInfoPair >
pop_front()QList< CertificateInfoPair >
prepend(const T &value)QList< CertificateInfoPair >
push_back(const T &value)QList< CertificateInfoPair >
push_front(const T &value)QList< CertificateInfoPair >
QList()QList< CertificateInfoPair >
QList(const QList &other)QList< CertificateInfoPair >
referenceQList< CertificateInfoPair >
removeAll(const T &value)QList< CertificateInfoPair >
removeAt(int i)QList< CertificateInfoPair >
removeFirst()QList< CertificateInfoPair >
removeLast()QList< CertificateInfoPair >
replace(int i, const T &value)QList< CertificateInfoPair >
size()QList< CertificateInfoPair >
swap(int i, int j)QList< CertificateInfoPair >
takeAt(int i)QList< CertificateInfoPair >
takeFirst()QList< CertificateInfoPair >
takeLast()QList< CertificateInfoPair >
toSet()QList< CertificateInfoPair >
toString() const QCA::CertificateInfoOrdered [inline]
toVector()QList< CertificateInfoPair >
value(int i)QList< CertificateInfoPair >
value(int i, const T &defaultValue)QList< CertificateInfoPair >
value_typeQList< CertificateInfoPair >
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoPair__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoPair__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoPair__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoPair__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoPair__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoPair__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoPair__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoPair__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -0af4d1e54760a68a632f6223b02e6f39 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoPair__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoPair__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoPair.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoPair.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoPair.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoPair.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,272 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CertificateInfoPair Class Reference - - - - - - -
-

QCA::CertificateInfoPair Class Reference
- -[QCA user API] -

-

One entry in a certificate information list. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CertificateInfoPair:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - -

Public Member Functions

 CertificateInfoPair (const CertificateInfoPair &from)
 CertificateInfoPair (const CertificateInfoType &type, const QString &value)
 CertificateInfoPair ()
bool operator!= (const CertificateInfoPair &other) const
CertificateInfoPairoperator= (const CertificateInfoPair &from)
bool operator== (const CertificateInfoPair &other) const
CertificateInfoType type () const
QString value () const
-

Detailed Description

-

One entry in a certificate information list.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::CertificateInfoPair::CertificateInfoPair ( ) 
-
-
- -

Standard constructor.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::CertificateInfoPair::CertificateInfoPair (const CertificateInfoType type,
const QString value 
)
-
-
- -

Construct a new pair.

-
Parameters:
- - - -
type the type of information stored in this pair
value the value of the information to be stored
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::CertificateInfoPair::CertificateInfoPair (const CertificateInfoPair from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the information pair to copy from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
CertificateInfoPair& QCA::CertificateInfoPair::operator= (const CertificateInfoPair from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the information pair to assign from
-
-
- -
-
- -
-
- - - - - - - - -
CertificateInfoType QCA::CertificateInfoPair::type ( )  const
-
-
- -

The type of information stored in the pair.

- -
-
- -
-
- - - - - - - - -
QString QCA::CertificateInfoPair::value ( )  const
-
-
- -

The value of the information stored in the pair.

- -
-
- -
-
- - - - - - - - - -
bool QCA::CertificateInfoPair::operator== (const CertificateInfoPair other )  const
-
-
- -

Comparison operator.

-
Parameters:
- - -
other the certificate information pair to compare with this certificate information pair.
-
-
- -
-
- -
-
- - - - - - - - - -
bool QCA::CertificateInfoPair::operator!= (const CertificateInfoPair other )  const [inline]
-
-
- -

Inequality operator.

-
Parameters:
- - -
other the certificate information pair to compare with this certificate information pair.
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoPair-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoPair-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoPair-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoPair-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CertificateInfoPair Member List

This is the complete list of members for QCA::CertificateInfoPair, including all inherited members. - - - - - - - - - -
CertificateInfoPair()QCA::CertificateInfoPair
CertificateInfoPair(const CertificateInfoType &type, const QString &value)QCA::CertificateInfoPair
CertificateInfoPair(const CertificateInfoPair &from)QCA::CertificateInfoPair
operator!=(const CertificateInfoPair &other) const QCA::CertificateInfoPair [inline]
operator=(const CertificateInfoPair &from)QCA::CertificateInfoPair
operator==(const CertificateInfoPair &other) const QCA::CertificateInfoPair
type() const QCA::CertificateInfoPair
value() const QCA::CertificateInfoPair
~CertificateInfoPair() (defined in QCA::CertificateInfoPair)QCA::CertificateInfoPair
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoType__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoType__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoType__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoType__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoType__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoType__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoType__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoType__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -e8f1aa7d3058a019c655aeba66c55587 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoType__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoType__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoType.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoType.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoType.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoType.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,389 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CertificateInfoType Class Reference - - - - - - -
-

QCA::CertificateInfoType Class Reference
- -[QCA user API] -

-

Certificate information type. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CertificateInfoType:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - -

Public Types

enum  Section { DN, -AlternativeName - }

Public Member Functions

 CertificateInfoType (const CertificateInfoType &from)
 CertificateInfoType (const QString &id, Section section)
 CertificateInfoType (CertificateInfoTypeKnown known)
 CertificateInfoType ()
QString id () const
CertificateInfoTypeKnown known () const
bool operator!= (const CertificateInfoType &other) const
bool operator< (const CertificateInfoType &other) const
CertificateInfoTypeoperator= (const CertificateInfoType &from)
bool operator== (const CertificateInfoType &other) const
Section section () const
-

Detailed Description

-

Certificate information type.

-

This class represents a type of information being stored in a certificate. It can be created either using a known type (from the Known enumerator) or an identifier string (usually an OID). Types created either way are interchangeable.

-

Types also have the notion of a Section. Some types may reside in the Distinguished Name field of a certificate, and some types may reside in the Subject Alternative Name field. This class is capable of representing a type from either section.

-

In the general case, applications will want to use the CertificateInfoTypeKnown enumerator types. These are from RFC3280 (http://www.ietf.org/rfc/rfc3280.txt) except where shown.

-

The entries for IncorporationLocality, IncorporationState and IncorporationCountry are the same as Locality, State and Country respectively, except that the Extended Validation (EV) certificate guidelines (published by the Certificate Authority / Browser Forum, see http://www.cabforum.org) distinguish between the place of where the company does business (which is the Locality / State / Country combination) and the jurisdiction where the company is legally incorporated (the IncorporationLocality / IncorporationState / IncorporationCountry combination).

-
See also:
Certificate::subjectInfo() and Certificate::issuerInfo()
-
-CRL::issuerInfo()
-

Member Enumeration Documentation

- -
- -
- -

Section of the certificate that the information belongs in.

-
Enumerator:
- - -
DN  -

Distinguished name (the primary name).

-
AlternativeName  -

Alternative name.

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::CertificateInfoType::CertificateInfoType ( ) 
-
-
- -

Standard constructor.

- -
-
- -
-
- - - - - - - - - -
QCA::CertificateInfoType::CertificateInfoType (CertificateInfoTypeKnown  known ) 
-
-
- -

Construct a new type.

-

The section will be derived by known.

-
Parameters:
- - -
known the type as part of the CertificateInfoTypeKnown enumerator
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::CertificateInfoType::CertificateInfoType (const QString id,
Section  section 
)
-
-
- -

Construct a new type.

-
Parameters:
- - - -
id the type as an identifier string (OID or internal)
section the section this type belongs in
-
-
-
See also:
id
- -
-
- -
-
- - - - - - - - - -
QCA::CertificateInfoType::CertificateInfoType (const CertificateInfoType from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the certificate information to copy from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
CertificateInfoType& QCA::CertificateInfoType::operator= (const CertificateInfoType from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the certificate information to assign from
-
-
- -
-
- -
-
- - - - - - - - -
Section QCA::CertificateInfoType::section ( )  const
-
-
- -

The section the type is part of.

- -
-
- -
-
- - - - - - - - -
CertificateInfoTypeKnown QCA::CertificateInfoType::known ( )  const
-
-
- -

The type as part of the CertificateInfoTypeKnown enumerator.

-

This function may return a value that does not exist in the enumerator. In that case, you may use id() to determine the type.

- -
-
- -
-
- - - - - - - - -
QString QCA::CertificateInfoType::id ( )  const
-
-
- -

The type as an identifier string.

-

For types that have OIDs, this function returns an OID in string form. For types that do not have OIDs, this function returns an internal identifier string whose first character is not a digit (this allows you to tell the difference between an OID and an internal identifier).

-

It is hereby stated that General Names (of the X.509 Subject Alternative Name) shall use the internal identifier format "GeneralName.[rfc field name]". For example, the rfc822Name field would have the identifier "GeneralName.rfc822Name".

-

Applications should not store, use, or compare against internal identifiers unless the identifiers are explicitly documented (e.g. GeneralName).

- -
-
- -
-
- - - - - - - - - -
bool QCA::CertificateInfoType::operator< (const CertificateInfoType other )  const
-
-
- -

Comparison operator.

-
Parameters:
- - -
other the certificate information to compare with this certificate information.
-
-
- -
-
- -
-
- - - - - - - - - -
bool QCA::CertificateInfoType::operator== (const CertificateInfoType other )  const
-
-
- -

Comparison operator.

-
Parameters:
- - -
other the certificate information to compare with this certificate information.
-
-
- -
-
- -
-
- - - - - - - - - -
bool QCA::CertificateInfoType::operator!= (const CertificateInfoType other )  const [inline]
-
-
- -

Inequality operator.

-
Parameters:
- - -
other the certificate information to compare with this certificate information.
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoType-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoType-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateInfoType-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateInfoType-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CertificateInfoType Member List

This is the complete list of members for QCA::CertificateInfoType, including all inherited members. - - - - - - - - - - - - - - - -
AlternativeName enum valueQCA::CertificateInfoType
CertificateInfoType()QCA::CertificateInfoType
CertificateInfoType(CertificateInfoTypeKnown known)QCA::CertificateInfoType
CertificateInfoType(const QString &id, Section section)QCA::CertificateInfoType
CertificateInfoType(const CertificateInfoType &from)QCA::CertificateInfoType
DN enum valueQCA::CertificateInfoType
id() const QCA::CertificateInfoType
known() const QCA::CertificateInfoType
operator!=(const CertificateInfoType &other) const QCA::CertificateInfoType [inline]
operator<(const CertificateInfoType &other) const QCA::CertificateInfoType
operator=(const CertificateInfoType &from)QCA::CertificateInfoType
operator==(const CertificateInfoType &other) const QCA::CertificateInfoType
section() const QCA::CertificateInfoType
Section enum nameQCA::CertificateInfoType
~CertificateInfoType() (defined in QCA::CertificateInfoType)QCA::CertificateInfoType
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Certificate-members.html qca2-2.1.0/apidocs/html/classQCA_1_1Certificate-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Certificate-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Certificate-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::Certificate Member List

This is the complete list of members for QCA::Certificate, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
Certificate()QCA::Certificate
Certificate(const QString &fileName)QCA::Certificate
Certificate(const CertificateOptions &opts, const PrivateKey &key, const QString &provider=QString())QCA::Certificate
Certificate(const Certificate &from)QCA::Certificate
CertificateChain (defined in QCA::Certificate)QCA::Certificate [friend]
change(CertContext *c)QCA::Certificate
QCA::Algorithm::change(Provider::Context *c)QCA::Algorithm
QCA::Algorithm::change(const QString &type, const QString &provider)QCA::Algorithm
commonName() const QCA::Certificate
constraints() const QCA::Certificate
context()QCA::Algorithm
context() const QCA::Algorithm
crlLocations() const QCA::Certificate
fromDER(const QByteArray &a, ConvertResult *result=0, const QString &provider=QString())QCA::Certificate [static]
fromPEM(const QString &s, ConvertResult *result=0, const QString &provider=QString())QCA::Certificate [static]
fromPEMFile(const QString &fileName, ConvertResult *result=0, const QString &provider=QString())QCA::Certificate [static]
isCA() const QCA::Certificate
isIssuerOf(const Certificate &other) const QCA::Certificate
isNull() const QCA::Certificate
isSelfSigned() const QCA::Certificate
issuerInfo() const QCA::Certificate
issuerInfoOrdered() const QCA::Certificate
issuerKeyId() const QCA::Certificate
issuerLocations() const QCA::Certificate
matchesHostName(const QString &host) const QCA::Certificate
notValidAfter() const QCA::Certificate
notValidBefore() const QCA::Certificate
ocspLocations() const QCA::Certificate
operator!=(const Certificate &other) const QCA::Certificate [inline]
operator=(const Certificate &from)QCA::Certificate
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
operator==(const Certificate &a) const QCA::Certificate
pathLimit() const QCA::Certificate
policies() const QCA::Certificate
Private (defined in QCA::Certificate)QCA::Certificate [friend]
provider() const QCA::Algorithm
serialNumber() const QCA::Certificate
signatureAlgorithm() const QCA::Certificate
subjectInfo() const QCA::Certificate
subjectInfoOrdered() const QCA::Certificate
subjectKeyId() const QCA::Certificate
subjectPublicKey() const QCA::Certificate
takeContext()QCA::Algorithm
toDER() const QCA::Certificate
toPEM() const QCA::Certificate
toPEMFile(const QString &fileName) const QCA::Certificate
type() const QCA::Algorithm
validate(const CertificateCollection &trusted, const CertificateCollection &untrusted, UsageMode u=UsageAny, ValidateFlags vf=ValidateAll) const QCA::Certificate
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~Certificate() (defined in QCA::Certificate)QCA::Certificate
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateOptions__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CertificateOptions__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateOptions__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateOptions__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateOptions__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CertificateOptions__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateOptions__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateOptions__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -4b762d06a594dbcc20ea867cb6873c60 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CertificateOptions__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CertificateOptions__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateOptions.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateOptions.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateOptions.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateOptions.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,822 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CertificateOptions Class Reference - - - - - - -
-

QCA::CertificateOptions Class Reference
- -[QCA user API] -

-

Certificate options -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CertificateOptions:
-
-
Collaboration graph
-
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

 CertificateOptions (const CertificateOptions &from)
 CertificateOptions (CertificateRequestFormat format=PKCS10)
QString challenge () const
Constraints constraints () const
QStringList crlLocations () const
CertificateRequestFormat format () const
CertificateInfo info () const
CertificateInfoOrdered infoOrdered () const
bool isCA () const
QStringList issuerLocations () const
bool isValid () const
QDateTime notValidAfter () const
QDateTime notValidBefore () const
QStringList ocspLocations () const
CertificateOptionsoperator= (const CertificateOptions &from)
int pathLimit () const
QStringList policies () const
BigInteger serialNumber () const
void setAsCA (int pathLimit=8)
void setAsUser ()
void setChallenge (const QString &s)
void setConstraints (const Constraints &constraints)
void setCRLLocations (const QStringList &locations)
void setFormat (CertificateRequestFormat f)
void setInfo (const CertificateInfo &info)
void setInfoOrdered (const CertificateInfoOrdered &info)
void setIssuerLocations (const QStringList &locations)
void setOCSPLocations (const QStringList &locations)
void setPolicies (const QStringList &policies)
void setSerialNumber (const BigInteger &i)
void setValidityPeriod (const QDateTime &start, const QDateTime &end)
-

Detailed Description

-

Certificate options

-
Note:
In SPKAC mode, all options are ignored except for challenge
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::CertificateOptions::CertificateOptions (CertificateRequestFormat  format = PKCS10 ) 
-
-
- -

Create a Certificate options set.

-
Parameters:
- - -
format the format to create the certificate request in
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::CertificateOptions::CertificateOptions (const CertificateOptions from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the Certificate Options to copy into this object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
CertificateOptions& QCA::CertificateOptions::operator= (const CertificateOptions from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the Certificate Options to copy into this object
-
-
- -
-
- -
-
- - - - - - - - -
CertificateRequestFormat QCA::CertificateOptions::format ( )  const
-
-
- -

test the format type for this certificate

- -
-
- -
-
- - - - - - - - - -
void QCA::CertificateOptions::setFormat (CertificateRequestFormat  f ) 
-
-
- -

Specify the format for this certificate.

-
Parameters:
- - -
f the format to use
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::CertificateOptions::isValid ( )  const
-
-
- -

Test if the certificate options object is valid.

-
Returns:
true if the certificate options object is valid
- -
-
- -
-
- - - - - - - - -
QString QCA::CertificateOptions::challenge ( )  const
-
-
- -

The challenge part of the certificate.

-

For CertificateRequest only

-
See also:
setChallenge
- -
-
- -
-
- - - - - - - - -
CertificateInfo QCA::CertificateOptions::info ( )  const
-
-
- -

Information on the subject of the certificate.

-
See also:
setInfo
- -
-
- -
-
- - - - - - - - -
CertificateInfoOrdered QCA::CertificateOptions::infoOrdered ( )  const
-
-
- -

Information on the subject of the certificate, in the exact order the items will be written.

-
See also:
setInfoOrdered
- -
-
- -
-
- - - - - - - - -
Constraints QCA::CertificateOptions::constraints ( )  const
-
-
- -

List the constraints on this certificate.

- -
-
- -
-
- - - - - - - - -
QStringList QCA::CertificateOptions::policies ( )  const
-
-
- -

list the policies on this certificate

- -
-
- -
-
- - - - - - - - -
QStringList QCA::CertificateOptions::crlLocations ( )  const
-
-
- -

list of URI locations for CRL files

-

each URI refers to the same CRL file

-

For Certificate creation only

- -
-
- -
-
- - - - - - - - -
QStringList QCA::CertificateOptions::issuerLocations ( )  const
-
-
- -

list of URI locations for issuer certificate files

-

each URI refers to the same issuer file

-

For Certificate creation only

- -
-
- -
-
- - - - - - - - -
QStringList QCA::CertificateOptions::ocspLocations ( )  const
-
-
- -

list of URI locations for OCSP services

-

For Certificate creation only

- -
-
- -
-
- - - - - - - - -
bool QCA::CertificateOptions::isCA ( )  const
-
-
- -

test if the certificate is a CA cert

-
See also:
setAsCA
-
-setAsUser
- -
-
- -
-
- - - - - - - - -
int QCA::CertificateOptions::pathLimit ( )  const
-
-
- -

return the path limit on this certificate

- -
-
- -
-
- - - - - - - - -
BigInteger QCA::CertificateOptions::serialNumber ( )  const
-
-
- -

The serial number for the certificate.

-

For Certificate creation only

- -
-
- -
-
- - - - - - - - -
QDateTime QCA::CertificateOptions::notValidBefore ( )  const
-
-
- -

the first time the certificate will be valid

-

For Certificate creation only

- -
-
- -
-
- - - - - - - - -
QDateTime QCA::CertificateOptions::notValidAfter ( )  const
-
-
- -

the last time the certificate is valid

-

For Certificate creation only

- -
-
- -
-
- - - - - - - - - -
void QCA::CertificateOptions::setChallenge (const QString s ) 
-
-
- -

Specify the challenge associated with this certificate.

-
Parameters:
- - -
s the challenge string
-
-
-
See also:
challenge()
- -
-
- -
-
- - - - - - - - - -
void QCA::CertificateOptions::setInfo (const CertificateInfo info ) 
-
-
- -

Specify information for the the subject associated with the certificate.

-
Parameters:
- - -
info the information for the subject
-
-
-
See also:
info()
- -
-
- -
-
- - - - - - - - - -
void QCA::CertificateOptions::setInfoOrdered (const CertificateInfoOrdered info ) 
-
-
- -

Specify information for the the subject associated with the certificate.

-
Parameters:
- - -
info the information for the subject
-
-
-
See also:
info()
- -
-
- -
-
- - - - - - - - - -
void QCA::CertificateOptions::setConstraints (const Constraints constraints ) 
-
-
- -

set the constraints on the certificate

-
Parameters:
- - -
constraints the constraints to be used for the certificate
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::CertificateOptions::setPolicies (const QStringList policies ) 
-
-
- -

set the policies on the certificate

-
Parameters:
- - -
policies the policies to be used for the certificate
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::CertificateOptions::setCRLLocations (const QStringList locations ) 
-
-
- -

set the CRL locations of the certificate

-

each location refers to the same CRL.

-
Parameters:
- - -
locations a list of URIs to CRL files
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::CertificateOptions::setIssuerLocations (const QStringList locations ) 
-
-
- -

set the issuer certificate locations of the certificate

-

each location refers to the same issuer file.

-
Parameters:
- - -
locations a list of URIs to issuer certificate files
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::CertificateOptions::setOCSPLocations (const QStringList locations ) 
-
-
- -

set the OCSP service locations of the certificate

-
Parameters:
- - -
locations a list of URIs to OCSP services
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::CertificateOptions::setAsCA (int  pathLimit = 8 ) 
-
-
- -

set the certificate to be a CA cert

-
Parameters:
- - -
pathLimit the number of intermediate certificates allowable
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::CertificateOptions::setAsUser ( ) 
-
-
- -

set the certificate to be a user cert (this is the default)

- -
-
- -
-
- - - - - - - - - -
void QCA::CertificateOptions::setSerialNumber (const BigInteger i ) 
-
-
- -

Set the serial number property on this certificate.

-
Parameters:
- - -
i the serial number to use
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::CertificateOptions::setValidityPeriod (const QDateTime start,
const QDateTime end 
)
-
-
- -

Set the validity period for the certificate.

-
Parameters:
- - - -
start the first time this certificate becomes valid
end the last time this certificate is valid
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateOptions-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateOptions-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateOptions-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateOptions-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CertificateOptions Member List

This is the complete list of members for QCA::CertificateOptions, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CertificateOptions(CertificateRequestFormat format=PKCS10)QCA::CertificateOptions
CertificateOptions(const CertificateOptions &from)QCA::CertificateOptions
challenge() const QCA::CertificateOptions
constraints() const QCA::CertificateOptions
crlLocations() const QCA::CertificateOptions
format() const QCA::CertificateOptions
info() const QCA::CertificateOptions
infoOrdered() const QCA::CertificateOptions
isCA() const QCA::CertificateOptions
issuerLocations() const QCA::CertificateOptions
isValid() const QCA::CertificateOptions
notValidAfter() const QCA::CertificateOptions
notValidBefore() const QCA::CertificateOptions
ocspLocations() const QCA::CertificateOptions
operator=(const CertificateOptions &from)QCA::CertificateOptions
pathLimit() const QCA::CertificateOptions
policies() const QCA::CertificateOptions
serialNumber() const QCA::CertificateOptions
setAsCA(int pathLimit=8)QCA::CertificateOptions
setAsUser()QCA::CertificateOptions
setChallenge(const QString &s)QCA::CertificateOptions
setConstraints(const Constraints &constraints)QCA::CertificateOptions
setCRLLocations(const QStringList &locations)QCA::CertificateOptions
setFormat(CertificateRequestFormat f)QCA::CertificateOptions
setInfo(const CertificateInfo &info)QCA::CertificateOptions
setInfoOrdered(const CertificateInfoOrdered &info)QCA::CertificateOptions
setIssuerLocations(const QStringList &locations)QCA::CertificateOptions
setOCSPLocations(const QStringList &locations)QCA::CertificateOptions
setPolicies(const QStringList &policies)QCA::CertificateOptions
setSerialNumber(const BigInteger &i)QCA::CertificateOptions
setValidityPeriod(const QDateTime &start, const QDateTime &end)QCA::CertificateOptions
~CertificateOptions() (defined in QCA::CertificateOptions)QCA::CertificateOptions
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateRequest__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CertificateRequest__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateRequest__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateRequest__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateRequest__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CertificateRequest__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateRequest__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateRequest__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -93f566f2ab0c0996a898931a51deccf5 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CertificateRequest__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CertificateRequest__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateRequest.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateRequest.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateRequest.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateRequest.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,843 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CertificateRequest Class Reference - - - - - - -
-

QCA::CertificateRequest Class Reference
- -[QCA user API] -

-

Certificate Request -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CertificateRequest:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

 CertificateRequest (const CertificateRequest &from)
 CertificateRequest (const CertificateOptions &opts, const PrivateKey &key, const QString &provider=QString())
 CertificateRequest (const QString &fileName)
 CertificateRequest ()
QString challenge () const
void change (CSRContext *c)
Constraints constraints () const
CertificateRequestFormat format () const
bool isCA () const
bool isNull () const
bool operator!= (const CertificateRequest &other) const
CertificateRequestoperator= (const CertificateRequest &from)
bool operator== (const CertificateRequest &csr) const
int pathLimit () const
QStringList policies () const
SignatureAlgorithm signatureAlgorithm () const
CertificateInfo subjectInfo () const
CertificateInfoOrdered subjectInfoOrdered () const
PublicKey subjectPublicKey () const
QByteArray toDER () const
QString toPEM () const
bool toPEMFile (const QString &fileName) const
QString toString () const

Static Public Member Functions

static bool canUseFormat (CertificateRequestFormat f, const QString &provider=QString())
static CertificateRequest fromDER (const QByteArray &a, ConvertResult *result=0, const QString &provider=QString())
static CertificateRequest fromPEM (const QString &s, ConvertResult *result=0, const QString &provider=QString())
static CertificateRequest fromPEMFile (const QString &fileName, ConvertResult *result=0, const QString &provider=QString())
static CertificateRequest fromString (const QString &s, ConvertResult *result=0, const QString &provider=QString())

Friends

-class Private
-

Detailed Description

-

Certificate Request

-

A CertificateRequest is a unsigned request for a Certificate

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::CertificateRequest::CertificateRequest ( ) 
-
-
- -

Create an empty certificate request.

- -
-
- -
-
- - - - - - - - - -
QCA::CertificateRequest::CertificateRequest (const QString fileName ) 
-
-
- -

Create a certificate request based on the contents of a file.

-
Parameters:
- - -
fileName the file (and path, if necessary) containing a PEM encoded certificate request
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QCA::CertificateRequest::CertificateRequest (const CertificateOptions opts,
const PrivateKey key,
const QString provider = QString() 
)
-
-
- -

Create a certificate request based on specified options.

-
Parameters:
- - - - -
opts the options to use in the certificate request
key the private key that matches the certificate being requested
provider the provider to use, if a specific provider is required
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::CertificateRequest::CertificateRequest (const CertificateRequest from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the request to copy from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
CertificateRequest& QCA::CertificateRequest::operator= (const CertificateRequest from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the request to assign from
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::CertificateRequest::isNull ( )  const
-
-
- -

test if the certificate request is empty

-
Returns:
true if the certificate request is empty, otherwise false
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static bool QCA::CertificateRequest::canUseFormat (CertificateRequestFormat  f,
const QString provider = QString() 
) [static]
-
-
- -

Test if the certificate request can use a specified format.

-
Parameters:
- - - -
f the format to test for
provider the provider to use, if a specific provider is required
-
-
-
Returns:
true if the certificate request can use the specified format
- -
-
- -
-
- - - - - - - - -
CertificateRequestFormat QCA::CertificateRequest::format ( )  const
-
-
- -

the format that this Certificate request is in

- -
-
- -
-
- - - - - - - - -
CertificateInfo QCA::CertificateRequest::subjectInfo ( )  const
-
-
- -

Information on the subject of the certificate being requested.

-
Note:
this only applies to PKCS#10 format certificate requests
-
See also:
subjectInfoOrdered for a version that maintains order in the subject information.
- -
-
- -
-
- - - - - - - - -
CertificateInfoOrdered QCA::CertificateRequest::subjectInfoOrdered ( )  const
-
-
- -

Information on the subject of the certificate being requested, as an ordered list (QList of CertificateInfoPair).

-
Note:
this only applies to PKCS#10 format certificate requests
-
See also:
subjectInfo for a version that does not maintain order, but allows access based on a multimap.
-
-CertificateInfoPair for the elements in the list
- -
-
- -
-
- - - - - - - - -
Constraints QCA::CertificateRequest::constraints ( )  const
-
-
- -

The constraints that apply to this certificate request.

-
Note:
this only applies to PKCS#10 format certificate requests
- -
-
- -
-
- - - - - - - - -
QStringList QCA::CertificateRequest::policies ( )  const
-
-
- -

The policies that apply to this certificate request.

-
Note:
this only applies to PKCS#10 format certificate requests
- -
-
- -
-
- - - - - - - - -
PublicKey QCA::CertificateRequest::subjectPublicKey ( )  const
-
-
- -

The public key belonging to the issuer.

- -
-
- -
-
- - - - - - - - -
bool QCA::CertificateRequest::isCA ( )  const
-
-
- -

Test if this Certificate Request is for a Certificate Authority certificate.

-
Note:
this only applies to PKCS#10 format certificate requests
- -
-
- -
-
- - - - - - - - -
int QCA::CertificateRequest::pathLimit ( )  const
-
-
- -

The path limit for the certificate in this Certificate Request.

-
Note:
this only applies to PKCS#10 format certificate requests
- -
-
- -
-
- - - - - - - - -
QString QCA::CertificateRequest::challenge ( )  const
-
-
- -

The challenge associated with this certificate request.

- -
-
- -
-
- - - - - - - - -
SignatureAlgorithm QCA::CertificateRequest::signatureAlgorithm ( )  const
-
-
- -

The algorithm used to make the signature on this certificate request.

- -
-
- -
-
- - - - - - - - - -
bool QCA::CertificateRequest::operator== (const CertificateRequest csr )  const
-
-
- -

Test for equality of two certificate requests.

-
Parameters:
- - -
csr the certificate request to be compared to this certificate request
-
-
-
Returns:
true if the two certificate requests are the same
- -
-
- -
-
- - - - - - - - - -
bool QCA::CertificateRequest::operator!= (const CertificateRequest other )  const [inline]
-
-
- -

Inequality operator.

-
Parameters:
- - -
other the certificate request to be compared to this certificate request
-
-
- -
-
- -
-
- - - - - - - - -
QByteArray QCA::CertificateRequest::toDER ( )  const
-
-
- -

Export the Certificate Request into a DER format.

-
Note:
this only applies to PKCS#10 format certificate requests
- -
-
- -
-
- - - - - - - - -
QString QCA::CertificateRequest::toPEM ( )  const
-
-
- -

Export the Certificate Request into a PEM format.

-
Note:
this only applies to PKCS#10 format certificate requests
- -
-
- -
-
- - - - - - - - - -
bool QCA::CertificateRequest::toPEMFile (const QString fileName )  const
-
-
- -

Export the Certificate into PEM format in a file.

-
Parameters:
- - -
fileName the name of the file to use
-
-
-
Note:
this only applies to PKCS#10 format certificate requests
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static CertificateRequest QCA::CertificateRequest::fromDER (const QByteArray a,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import the certificate request from DER.

-
Parameters:
- - - - -
a the array containing the certificate request in DER format
result a pointer to a ConvertResult, which if not-null will be set to the conversion status
provider the provider to use, if a specific provider is required
-
-
-
Returns:
the CertificateRequest corresponding to the certificate request in the provided array
-
Note:
this only applies to PKCS#10 format certificate requests
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static CertificateRequest QCA::CertificateRequest::fromPEM (const QString s,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import the certificate request from PEM format.

-
Parameters:
- - - - -
s the string containing the certificate request in PEM format
result a pointer to a ConvertResult, which if not-null will be set to the conversion status
provider the provider to use, if a specific provider is required
-
-
-
Returns:
the CertificateRequest corresponding to the certificate request in the provided string
-
Note:
this only applies to PKCS#10 format certificate requests
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static CertificateRequest QCA::CertificateRequest::fromPEMFile (const QString fileName,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import the certificate request from a file.

-
Parameters:
- - - - -
fileName the name (and path, if required) of the file containing the certificate request in PEM format
result a pointer to a ConvertResult, which if not-null will be set to the conversion status
provider the provider to use, if a specific provider is required
-
-
-
Returns:
the CertificateRequest corresponding to the certificate request in the provided string
-
Note:
this only applies to PKCS#10 format certificate requests
- -
-
- -
-
- - - - - - - - -
QString QCA::CertificateRequest::toString ( )  const
-
-
- -

Export the CertificateRequest to a string.

-
Returns:
the string corresponding to the certificate request
-
Note:
this only applies to SPKAC format certificate requests
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static CertificateRequest QCA::CertificateRequest::fromString (const QString s,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import the CertificateRequest from a string.

-
Parameters:
- - - - -
s the string containing to the certificate request
result a pointer to a ConvertResult, which if not-null will be set to the conversion status
provider the provider to use, if a specific provider is required
-
-
-
Returns:
the CertificateRequest corresponding to the certificate request in the provided string
-
Note:
this only applies to SPKAC format certificate requests
- -
-
- -
-
- - - - - - - - - -
void QCA::CertificateRequest::change (CSRContext c ) 
-
-
-

For internal use only.

-
Parameters:
- - -
c context (internal)
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CertificateRequest-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CertificateRequest-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CertificateRequest-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CertificateRequest-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CertificateRequest Member List

This is the complete list of members for QCA::CertificateRequest, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
canUseFormat(CertificateRequestFormat f, const QString &provider=QString())QCA::CertificateRequest [static]
CertificateRequest()QCA::CertificateRequest
CertificateRequest(const QString &fileName)QCA::CertificateRequest
CertificateRequest(const CertificateOptions &opts, const PrivateKey &key, const QString &provider=QString())QCA::CertificateRequest
CertificateRequest(const CertificateRequest &from)QCA::CertificateRequest
challenge() const QCA::CertificateRequest
change(CSRContext *c)QCA::CertificateRequest
QCA::Algorithm::change(Provider::Context *c)QCA::Algorithm
QCA::Algorithm::change(const QString &type, const QString &provider)QCA::Algorithm
constraints() const QCA::CertificateRequest
context()QCA::Algorithm
context() const QCA::Algorithm
format() const QCA::CertificateRequest
fromDER(const QByteArray &a, ConvertResult *result=0, const QString &provider=QString())QCA::CertificateRequest [static]
fromPEM(const QString &s, ConvertResult *result=0, const QString &provider=QString())QCA::CertificateRequest [static]
fromPEMFile(const QString &fileName, ConvertResult *result=0, const QString &provider=QString())QCA::CertificateRequest [static]
fromString(const QString &s, ConvertResult *result=0, const QString &provider=QString())QCA::CertificateRequest [static]
isCA() const QCA::CertificateRequest
isNull() const QCA::CertificateRequest
operator!=(const CertificateRequest &other) const QCA::CertificateRequest [inline]
operator=(const CertificateRequest &from)QCA::CertificateRequest
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
operator==(const CertificateRequest &csr) const QCA::CertificateRequest
pathLimit() const QCA::CertificateRequest
policies() const QCA::CertificateRequest
Private (defined in QCA::CertificateRequest)QCA::CertificateRequest [friend]
provider() const QCA::Algorithm
signatureAlgorithm() const QCA::CertificateRequest
subjectInfo() const QCA::CertificateRequest
subjectInfoOrdered() const QCA::CertificateRequest
subjectPublicKey() const QCA::CertificateRequest
takeContext()QCA::Algorithm
toDER() const QCA::CertificateRequest
toPEM() const QCA::CertificateRequest
toPEMFile(const QString &fileName) const QCA::CertificateRequest
toString() const QCA::CertificateRequest
type() const QCA::Algorithm
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~CertificateRequest() (defined in QCA::CertificateRequest)QCA::CertificateRequest
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Cipher__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1Cipher__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1Cipher__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Cipher__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Cipher__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1Cipher__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1Cipher__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Cipher__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -413b698505764715bee422b1c55774dd \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1Cipher__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1Cipher__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CipherContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CipherContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CipherContext__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CipherContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CipherContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CipherContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CipherContext__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CipherContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -0a44b50489efbc313dbde1a39169a673 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CipherContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CipherContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CipherContext.html qca2-2.1.0/apidocs/html/classQCA_1_1CipherContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CipherContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CipherContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,256 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CipherContext Class Reference - - - - - - -
-

QCA::CipherContext Class Reference
- -[QCA provider API] -

-

Cipher provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CipherContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - -

Public Member Functions

virtual int blockSize () const =0
 CipherContext (Provider *p, const QString &type)
virtual bool final (SecureArray *out)=0
virtual KeyLength keyLength () const =0
virtual void setup (Direction dir, const SymmetricKey &key, const InitializationVector &iv)=0
virtual bool update (const SecureArray &in, SecureArray *out)=0
-

Detailed Description

-

Cipher provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want Cipher instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::CipherContext::CipherContext (Provider p,
const QString type 
) [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
p the provider associated with this context
type the name of the type of cipher provided by this context
-
-
-
Note:
type includes the name of the cipher (e.g. "aes256"), the operating mode (e.g. "cbc" or "ofb") and the padding type (e.g. "pkcs7") if any.
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual void QCA::CipherContext::setup (Direction  dir,
const SymmetricKey key,
const InitializationVector iv 
) [pure virtual]
-
-
- -

Set up the object for encrypt/decrypt.

-
Parameters:
- - - - -
dir the direction for the cipher (encryption/decryption)
key the symmetric key to use for the cipher
iv the initialization vector to use for the cipher (not used in ECB mode)
-
-
- -
-
- -
-
- - - - - - - - -
virtual KeyLength QCA::CipherContext::keyLength ( )  const [pure virtual]
-
-
- -

Returns the KeyLength for this cipher.

- -
-
- -
-
- - - - - - - - -
virtual int QCA::CipherContext::blockSize ( )  const [pure virtual]
-
-
- -

Returns the block size for this cipher.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual bool QCA::CipherContext::update (const SecureArray in,
SecureArray out 
) [pure virtual]
-
-
- -

Process a chunk of data.

-

Returns true if successful.

-
Parameters:
- - - -
in the input data to process
out pointer to an array that should store the result
-
-
- -
-
- -
-
- - - - - - - - - -
virtual bool QCA::CipherContext::final (SecureArray out )  [pure virtual]
-
-
- -

Finish the cipher processing.

-

Returns true if successful.

-
Parameters:
- - -
out pointer to an array that should store the result
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CipherContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CipherContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CipherContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CipherContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CipherContext Member List

This is the complete list of members for QCA::CipherContext, including all inherited members. - - - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
blockSize() const =0QCA::CipherContext [pure virtual]
CipherContext(Provider *p, const QString &type)QCA::CipherContext [inline]
final(SecureArray *out)=0QCA::CipherContext [pure virtual]
keyLength() const =0QCA::CipherContext [pure virtual]
setup(Direction dir, const SymmetricKey &key, const InitializationVector &iv)=0QCA::CipherContext [pure virtual]
update(const SecureArray &in, SecureArray *out)=0QCA::CipherContext [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Cipher.html qca2-2.1.0/apidocs/html/classQCA_1_1Cipher.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Cipher.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Cipher.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,650 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::Cipher Class Reference - - - - - - -
-

QCA::Cipher Class Reference
- -[QCA user API] -

-

General class for cipher (encryption / decryption) algorithms. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::Cipher:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - -

Public Types

enum  Mode { CBC, -CFB, -ECB, -OFB - }
enum  Padding { DefaultPadding, -NoPadding, -PKCS7 - }

Public Member Functions

int blockSize () const
 Cipher (const Cipher &from)
 Cipher (const QString &type, Mode mode, Padding pad=DefaultPadding, Direction dir=Encode, const SymmetricKey &key=SymmetricKey(), const InitializationVector &iv=InitializationVector(), const QString &provider=QString())
virtual void clear ()
Direction direction () const
virtual MemoryRegion final ()
KeyLength keyLength () const
Mode mode () const
virtual bool ok () const
Cipheroperator= (const Cipher &from)
Padding padding () const
void setup (Direction dir, const SymmetricKey &key, const InitializationVector &iv=InitializationVector())
QString type () const
virtual MemoryRegion update (const MemoryRegion &a)
bool validKeyLength (int n) const

Static Public Member Functions

static QStringList supportedTypes (const QString &provider=QString())
static QString withAlgorithms (const QString &cipherType, Mode modeType, Padding paddingType)
-

Detailed Description

-

General class for cipher (encryption / decryption) algorithms.

-

Cipher is the class for the various algorithms that perform low level encryption and decryption within QCA.

-

AES128, AES192 and AES256 are recommended for new applications.

-

Standard names for ciphers are:

- -

When checking for the availability of a particular kind of cipher operation (e.g. AES128 in CBC mode with PKCS7 padding), you append the mode and padding type (in that example "aes128-cbc-pkcs7"). CFB and OFB modes don't use padding, so they are always just the cipher name followed by the mode (e.g. "blowfish-cfb" or "aes192-ofb"). If you are not using padding with CBC mode (i.e. you are ensuring block size operations yourself), just use the cipher name followed by "-cbc" (e.g. "blowfish-cbc" or "aes256-cbc").

-
Examples:
-

aes-cmac.cpp, and ciphertest.cpp.

-
-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::Cipher::Mode
-
-
- -

Mode settings for cipher algorithms.

-
Note:
ECB is almost never what you want, unless you are trying to implement a Cipher variation that is not supported by QCA.
-
Enumerator:
- - - - -
CBC  -

operate in Cipher Block Chaining mode

-
CFB  -

operate in Cipher FeedBack mode

-
ECB  -

operate in Electronic Code Book mode

-
OFB  -

operate in Output FeedBack Mode

-
-
-
- -
-
- -
-
- - - - -
enum QCA::Cipher::Padding
-
-
- -

Padding variations for cipher algorithms.

-

See the Padding description for more details on padding schemes.

-
Enumerator:
- - - -
DefaultPadding  -

Default for cipher-mode.

-
NoPadding  -

Do not use padding.

-
PKCS7  -

Pad using the scheme in PKCS#7.

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
QCA::Cipher::Cipher (const QString type,
Mode  mode,
Padding  pad = DefaultPadding,
Direction  dir = Encode,
const SymmetricKey key = SymmetricKey(),
const InitializationVector iv = InitializationVector(),
const QString provider = QString() 
)
-
-
- -

Standard constructor.

-
Parameters:
- - - - - - - - -
type the name of the cipher specialisation to use (e.g. "aes128")
mode the operating Mode to use (e.g. QCA::Cipher::CBC)
pad the type of Padding to use
dir the Direction that this Cipher should use (Encode for encryption, Decode for decryption)
key the SymmetricKey array that is the key
iv the InitializationVector to use (not used for ECB mode)
provider the name of the Provider to use
-
-
-
Note:
Padding only applies to CBC and ECB modes. CFB and OFB ciphertext is always the length of the plaintext.
- -
-
- -
-
- - - - - - - - - -
QCA::Cipher::Cipher (const Cipher from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the Cipher to copy state from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
Cipher& QCA::Cipher::operator= (const Cipher from ) 
-
-
- -

Assignment operator.

-
Parameters:
- - -
from the Cipher to copy state from
-
-
- -
-
- -
-
- - - - - - - - - -
static QStringList QCA::Cipher::supportedTypes (const QString provider = QString() )  [static]
-
-
- -

Returns a list of all of the cipher types available.

-
Parameters:
- - -
provider the name of the provider to get a list from, if one provider is required. If not specified, available cipher types from all providers will be returned.
-
-
- -
-
- -
-
- - - - - - - - -
QString QCA::Cipher::type ( )  const
-
-
- -

Return the cipher type.

- -

Reimplemented from QCA::Algorithm.

- -
-
- -
-
- - - - - - - - -
Mode QCA::Cipher::mode ( )  const
-
-
- -

Return the cipher mode.

- -
-
- -
-
- - - - - - - - -
Padding QCA::Cipher::padding ( )  const
-
-
- -

Return the cipher padding type.

- -
-
- -
-
- - - - - - - - -
Direction QCA::Cipher::direction ( )  const
-
-
- -

Return the cipher direction.

- -
-
- -
-
- - - - - - - - -
KeyLength QCA::Cipher::keyLength ( )  const
-
-
- -

Return acceptable key lengths.

- -
-
- -
-
- - - - - - - - - -
bool QCA::Cipher::validKeyLength (int  n )  const
-
-
- -

Test if a key length is valid for the cipher algorithm.

-
Parameters:
- - -
n the key length in bytes
-
-
-
Returns:
true if the key would be valid for the current algorithm
- -
-
- -
-
- - - - - - - - -
int QCA::Cipher::blockSize ( )  const
-
-
- -

return the block size for the cipher object

- -
-
- -
-
- - - - - - - - -
virtual void QCA::Cipher::clear ( )  [virtual]
-
-
- -

reset the cipher object, to allow re-use

- -

Implements QCA::Filter.

- -
-
- -
-
- - - - - - - - - -
virtual MemoryRegion QCA::Cipher::update (const MemoryRegion a )  [virtual]
-
-
- -

pass in a byte array of data, which will be encrypted or decrypted (according to the Direction that was set in the constructor or in setup() ) and returned.

-
Parameters:
- - -
a the array of data to encrypt / decrypt
-
-
- -

Implements QCA::Filter.

-
Examples:
ciphertest.cpp.
-
-
-
- -
-
- - - - - - - - -
virtual MemoryRegion QCA::Cipher::final ( )  [virtual]
-
-
- -

complete the block of data, padding as required, and returning the completed block

- -

Implements QCA::Filter.

-
Examples:
ciphertest.cpp.
-
-
-
- -
-
- - - - - - - - -
virtual bool QCA::Cipher::ok ( )  const [virtual]
-
-
- -

Test if an update() or final() call succeeded.

-
Returns:
true if the previous call succeeded
- -

Implements QCA::Filter.

-
Examples:
ciphertest.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void QCA::Cipher::setup (Direction  dir,
const SymmetricKey key,
const InitializationVector iv = InitializationVector() 
)
-
-
- -

Reset / reconfigure the Cipher.

-

You can use this to re-use an existing Cipher, rather than creating a new object with a slightly different configuration.

-
Parameters:
- - - - -
dir the Direction that this Cipher should use (Encode for encryption, Decode for decryption)
key the SymmetricKey array that is the key
iv the InitializationVector to use (not used for ECB Mode)
-
-
-
Note:
You should not leave iv empty for any Mode except ECB.
-
Examples:
ciphertest.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static QString QCA::Cipher::withAlgorithms (const QString cipherType,
Mode  modeType,
Padding  paddingType 
) [static]
-
-
- -

Construct a Cipher type string.

-
Parameters:
- - - - -
cipherType the name of the algorithm (eg AES128, DES)
modeType the mode to operate the cipher in (eg QCA::CBC, QCA::CFB)
paddingType the padding required (eg QCA::NoPadding, QCA::PCKS7)
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Cipher-members.html qca2-2.1.0/apidocs/html/classQCA_1_1Cipher-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Cipher-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Cipher-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,79 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::Cipher Member List

This is the complete list of members for QCA::Cipher, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
blockSize() const QCA::Cipher
CBC enum valueQCA::Cipher
CFB enum valueQCA::Cipher
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
Cipher(const QString &type, Mode mode, Padding pad=DefaultPadding, Direction dir=Encode, const SymmetricKey &key=SymmetricKey(), const InitializationVector &iv=InitializationVector(), const QString &provider=QString())QCA::Cipher
Cipher(const Cipher &from)QCA::Cipher
clear()QCA::Cipher [virtual]
context()QCA::Algorithm
context() const QCA::Algorithm
DefaultPadding enum valueQCA::Cipher
direction() const QCA::Cipher
ECB enum valueQCA::Cipher
final()QCA::Cipher [virtual]
keyLength() const QCA::Cipher
mode() const QCA::Cipher
Mode enum nameQCA::Cipher
NoPadding enum valueQCA::Cipher
OFB enum valueQCA::Cipher
ok() const QCA::Cipher [virtual]
operator=(const Cipher &from)QCA::Cipher
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
Padding enum nameQCA::Cipher
padding() const QCA::Cipher
PKCS7 enum valueQCA::Cipher
process(const MemoryRegion &a)QCA::Filter
provider() const QCA::Algorithm
setup(Direction dir, const SymmetricKey &key, const InitializationVector &iv=InitializationVector())QCA::Cipher
supportedTypes(const QString &provider=QString())QCA::Cipher [static]
takeContext()QCA::Algorithm
type() const QCA::Cipher
update(const MemoryRegion &a)QCA::Cipher [virtual]
validKeyLength(int n) const QCA::Cipher
withAlgorithms(const QString &cipherType, Mode modeType, Padding paddingType)QCA::Cipher [static]
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~Cipher() (defined in QCA::Cipher)QCA::Cipher
~Filter() (defined in QCA::Filter)QCA::Filter [virtual]
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CMS__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CMS__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CMS__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CMS__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CMS__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CMS__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CMS__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CMS__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -39bba5164c41a75fdb32581aee10e38d \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CMS__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CMS__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CMS.html qca2-2.1.0/apidocs/html/classQCA_1_1CMS.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CMS.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CMS.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,256 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CMS Class Reference - - - - - - -
-

QCA::CMS Class Reference
- -[QCA user API] -

-

Cryptographic Message Syntax messaging system. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CMS:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - -

Public Member Functions

 CMS (QObject *parent=0, const QString &provider=QString())
SecureMessageKeyList privateKeys () const
void setPrivateKeys (const SecureMessageKeyList &keys)
void setTrustedCertificates (const CertificateCollection &trusted)
void setUntrustedCertificates (const CertificateCollection &untrusted)
CertificateCollection trustedCertificates () const
CertificateCollection untrustedCertificates () const
-

Detailed Description

-

Cryptographic Message Syntax messaging system.

-

Cryptographic Message Syntax (CMS) "is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. The CMS describes an encapsulation syntax for data protection. It supports digital signatures and encryption. The syntax allows multiple encapsulations; one encapsulation envelope can be nested inside another. Likewise, one party can digitally sign some previously encapsulated data. It also allows arbitrary attributes, such as signing time, to be signed along with the message content, and provides for other attributes such as countersignatures to be associated with a signature." (from - <a href="http://www.ietf.org/rfc/rfc3852.txt">RFC3852</a> - "Cryptographic Message Syntax")

-
See also:
SecureMessage
-
-SecureMessageKey
-
Examples:
-

publickeyexample.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::CMS::CMS (QObject parent = 0,
const QString provider = QString() 
) [explicit]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
parent the parent object for this object
provider the provider to use, if a specific provider is required
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
CertificateCollection QCA::CMS::trustedCertificates ( )  const
-
-
- -

Return the trusted certificates set for this object.

- -
-
- -
-
- - - - - - - - -
CertificateCollection QCA::CMS::untrustedCertificates ( )  const
-
-
- -

Return the untrusted certificates set for this object.

- -
-
- -
-
- - - - - - - - -
SecureMessageKeyList QCA::CMS::privateKeys ( )  const
-
-
- -

Return the private keys set for this object.

- -
-
- -
-
- - - - - - - - - -
void QCA::CMS::setTrustedCertificates (const CertificateCollection trusted ) 
-
-
- -

Set the trusted certificates to use for the messages built using this CMS object.

-
Parameters:
- - -
trusted the collection of trusted certificates to use
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::CMS::setUntrustedCertificates (const CertificateCollection untrusted ) 
-
-
- -

Set the untrusted certificates to use for the messages built using this CMS object.

-

This function is useful when verifying messages that don't contain the certificates (or intermediate signers) within the CMS blob. In order to verify such messages, you'll have to pass the possible signer certs with this function.

-
Parameters:
- - -
untrusted the collection of untrusted certificates to use
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::CMS::setPrivateKeys (const SecureMessageKeyList keys ) 
-
-
- -

Set the private keys to use for the messages built using this CMS object.

-

Keys are required for decrypting and signing (not for encrypting or verifying).

-
Parameters:
- - -
keys the collection of keys to use
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CMS-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CMS-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CMS-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CMS-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CMS Member List

This is the complete list of members for QCA::CMS, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
blockSignals(bool block)QObject
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
childEvent(QChildEvent *event)QObject
children()QObject
CMS(QObject *parent=0, const QString &provider=QString())QCA::CMS [explicit]
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
context()QCA::Algorithm
context() const QCA::Algorithm
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
operator=(const Algorithm &from)QCA::Algorithm
parent()QObject
privateKeys() const QCA::CMS
property(const char *name)QObject
provider() const QCA::Algorithm
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
SecureMessageSystem(QObject *parent, const QString &type, const QString &provider)QCA::SecureMessageSystem [protected]
sender()QObject
setParent(QObject *parent)QObject
setPrivateKeys(const SecureMessageKeyList &keys)QCA::CMS
setProperty(const char *name, const QVariant &value)QObject
setTrustedCertificates(const CertificateCollection &trusted)QCA::CMS
setUntrustedCertificates(const CertificateCollection &untrusted)QCA::CMS
signalsBlocked()QObject
startTimer(int interval)QObject
takeContext()QCA::Algorithm
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trustedCertificates() const QCA::CMS
trUtf8(const char *sourceText, const char *comment)QObject
type() const QCA::Algorithm
untrustedCertificates() const QCA::CMS
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~CMS() (defined in QCA::CMS)QCA::CMS
~SecureMessageSystem() (defined in QCA::SecureMessageSystem)QCA::SecureMessageSystem
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Console__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1Console__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1Console__coll__graph.map 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Console__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Console__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1Console__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1Console__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Console__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -98cf97e8876869a5909fa34cba3f0da5 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1Console__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1Console__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Console.html qca2-2.1.0/apidocs/html/classQCA_1_1Console.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Console.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Console.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,423 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::Console Class Reference - - - - - - -
-

QCA::Console Class Reference
- -[QCA user API] -

-

QCA Console system -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::Console:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - -

Public Types

enum  ChannelMode { Read, -ReadWrite - }
enum  TerminalMode { Default, -Interactive - }
enum  Type { Tty, -Stdio - }

Public Member Functions

QByteArray bytesLeftToRead ()
QByteArray bytesLeftToWrite ()
ChannelMode channelMode () const
 Console (Type type, ChannelMode cmode, TerminalMode tmode, QObject *parent=0)
void release ()
TerminalMode terminalMode () const
Type type () const

Static Public Member Functions

static bool isStdinRedirected ()
static bool isStdoutRedirected ()
static ConsolestdioInstance ()
static ConsolettyInstance ()

Friends

-class ConsolePrivate
-class ConsoleReference
-

Detailed Description

-

QCA Console system

-

QCA provides an API for asynchronous, event-based access to the console and stdin/stdout, as these facilities are otherwise not portable. The primary use of this system within QCA is for passphrase prompting in command-line applications, using the tty console type.

-

How it works: Create a Console object for the type of console desired, and then use ConsoleReference to act on the console. Only one ConsoleReference may operate on a Console at a time.

-

A Console object takes over either the physical console (Console::Tty type) or stdin/stdout (Console::Stdio type). Only one of each type may be created at a time.

-

Whenever code is written that needs a tty or stdio object, the code should first call one of the static methods (ttyInstance() or stdioInstance()) to see if a console object for the desired type exists already. If the object exists, use it. If it does not exist, the rule is that the relevant code should create the object, use the object, and then destroy the object when the operation is completed.

-

By following the above rule, you can write code that utilizes a console without the application having to create some master console object for you. Of course, if the application has created a console then it will be used.

-

The reason why there is a master console object is that it is not guaranteed that all I/O will survive creation and destruction of a console object. If you are using the Stdio Type, then you probably want a long-lived console object. It is possible to capture unprocessed I/O by calling bytesLeftToRead or bytesLeftToWrite. However, it is not expected that general console-needing code will call these functions when utilizing a temporary console. Thus, an application developer would need to create his own console object, invoke the console-needing code, and then do his own extraction of the unprocessed I/O if necessary. Another reason to extract unprocessed I/O is if you need to switch from Console back to standard functions (e.g. fgets() ).

-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::Console::Type
-
-
- -

The type of console object.

-
Enumerator:
- - -
Tty  -

physical console

-
Stdio  -

stdin/stdout

-
-
-
- -
-
- -
-
- - - - -
enum QCA::Console::ChannelMode
-
-
- -

The type of I/O to use with the console object.

-
Enumerator:
- - -
Read  -

Read only (equivalent to stdin).

-
ReadWrite  -

Read/write (equivalent to stdin and stdout).

-
-
-
- -
-
- -
-
- - - - -
enum QCA::Console::TerminalMode
-
-
- -

The nature of the console operation.

-
Enumerator:
- - -
Default  -

use default terminal settings

-
Interactive  -

char-by-char input, no echo

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
QCA::Console::Console (Type  type,
ChannelMode  cmode,
TerminalMode  tmode,
QObject parent = 0 
)
-
-
- -

Standard constructor.

-

Note that library code should not create a new Console object without checking whether there is already a Console object of the required Type. See the main documentation for Console for the rationale for this.

-
Parameters:
- - - - - -
type the Type of Console object to create
cmode the ChannelMode (I/O type) to use
tmode the TerminalMode to use
parent the parent object for this object
-
-
-
See also:
ttyInstance() and stdioInstance for static methods that allow you to test whether there is already a Console object of the required Type, and if there is, obtain a reference to that object.
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
Type QCA::Console::type ( )  const
-
-
- -

The Type of this Console object.

- -
-
- -
-
- - - - - - - - -
ChannelMode QCA::Console::channelMode ( )  const
-
-
- -

The ChannelMode of this Console object.

- -
-
- -
-
- - - - - - - - -
TerminalMode QCA::Console::terminalMode ( )  const
-
-
- -

The TerminalMode of this Console object.

- -
-
- -
-
- - - - - - - - -
static bool QCA::Console::isStdinRedirected ( )  [static]
-
-
- -

Test whether standard input is redirected.

-
See also:
type() and channelMode()
- -
-
- -
-
- - - - - - - - -
static bool QCA::Console::isStdoutRedirected ( )  [static]
-
-
- -

Test whether standard output is redirected.

-
See also:
type() and channelMode()
- -
-
- -
-
- - - - - - - - -
static Console* QCA::Console::ttyInstance ( )  [static]
-
-
- -

The current terminal-type console object.

-
Returns:
null if there is no current Console of this type, otherwise the Console to use
- -
-
- -
-
- - - - - - - - -
static Console* QCA::Console::stdioInstance ( )  [static]
-
-
- -

The current stdio-type console object.

-
Returns:
null if there is no current Console of this type, otherwise the Console to use
- -
-
- -
-
- - - - - - - - -
void QCA::Console::release ( ) 
-
-
- -

Release the Console.

-

This allows access to buffers containing any remaining data

- -
-
- -
-
- - - - - - - - -
QByteArray QCA::Console::bytesLeftToRead ( ) 
-
-
- -

Obtain remaining data from the Console, awaiting a read operation.

- -
-
- -
-
- - - - - - - - -
QByteArray QCA::Console::bytesLeftToWrite ( ) 
-
-
- -

Obtain remaining data from the Console, awaiting a write operation.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Console-members.html qca2-2.1.0/apidocs/html/classQCA_1_1Console-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Console-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Console-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,102 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::Console Member List

This is the complete list of members for QCA::Console, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
blockSignals(bool block)QObject
bytesLeftToRead()QCA::Console
bytesLeftToWrite()QCA::Console
ChannelMode enum nameQCA::Console
channelMode() const QCA::Console
childEvent(QChildEvent *event)QObject
children()QObject
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
Console(Type type, ChannelMode cmode, TerminalMode tmode, QObject *parent=0)QCA::Console
ConsolePrivate (defined in QCA::Console)QCA::Console [friend]
ConsoleReference (defined in QCA::Console)QCA::Console [friend]
customEvent(QEvent *event)QObject
Default enum valueQCA::Console
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
Interactive enum valueQCA::Console
isStdinRedirected()QCA::Console [static]
isStdoutRedirected()QCA::Console [static]
isWidgetType()QObject
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
parent()QObject
property(const char *name)QObject
QObject(QObject *parent=0)QObject
Read enum valueQCA::Console
ReadWrite enum valueQCA::Console
receivers(const char *signal)QObject
release()QCA::Console
removeEventFilter(QObject *obj)QObject
sender()QObject
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
startTimer(int interval)QObject
Stdio enum valueQCA::Console
stdioInstance()QCA::Console [static]
TerminalMode enum nameQCA::Console
terminalMode() const QCA::Console
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
Tty enum valueQCA::Console
ttyInstance()QCA::Console [static]
Type enum nameQCA::Console
type() const QCA::Console
~Console() (defined in QCA::Console)QCA::Console
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1ConsolePrompt__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1ConsolePrompt__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1ConsolePrompt__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1ConsolePrompt__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1ConsolePrompt__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1ConsolePrompt__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1ConsolePrompt__coll__graph.md5 2010-11-27 21:30:37.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1ConsolePrompt__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -c20e81ccc2aca453a5bb2ab8d61c4971 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1ConsolePrompt__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1ConsolePrompt__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1ConsolePrompt.html qca2-2.1.0/apidocs/html/classQCA_1_1ConsolePrompt.html --- qca2-2.0.3/apidocs/html/classQCA_1_1ConsolePrompt.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1ConsolePrompt.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,245 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::ConsolePrompt Class Reference - - - - - - -
-

QCA::ConsolePrompt Class Reference
- -[QCA user API] -

-

Console prompt handler. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::ConsolePrompt:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - -

Signals

void finished ()

Public Member Functions

 ConsolePrompt (QObject *parent=0)
void getChar ()
void getHidden (const QString &promptStr)
SecureArray result () const
QChar resultChar () const
void waitForFinished ()

Friends

-class Private
-

Detailed Description

-

Console prompt handler.

-

This class provides a convenient way to get user input in a secure way, as shown below:

-
QCA::ConsolePrompt prompt;
-prompt.getHidden("Passphrase");
-prompt.waitForFinished();
-QCA:SecureArray pass = prompt.result();
-
Note:
It is not necessary to use waitForFinished(), because you can just connect the finished() signal to a suitable method, however command line (console) applications often require waitForFinished().
-
Examples:
-

keyloader.cpp, and saslclient.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::ConsolePrompt::ConsolePrompt (QObject parent = 0 ) 
-
-
- -

Standard constructor.

-
Parameters:
- - -
parent the parent object for this object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
void QCA::ConsolePrompt::getHidden (const QString promptStr ) 
-
-
- -

Allow the user to enter data without it being echo'd to the terminal.

-

This is particularly useful for entry of passwords, passphrases and PINs.

-
Parameters:
- - -
promptStr the prompt to display to the user
-
-
-
See also:
result() for how to get the input back.
-
Examples:
keyloader.cpp, and saslclient.cpp.
-
-
-
- -
-
- - - - - - - - -
void QCA::ConsolePrompt::getChar ( ) 
-
-
- -

Obtain one character from the user.

-
See also:
resultChar() for how to get the input back.
- -
-
- -
-
- - - - - - - - -
void QCA::ConsolePrompt::waitForFinished ( ) 
-
-
- -

Block waiting for user input.

-

You may wish to use the finished() signal to avoid blocking.

-
Examples:
keyloader.cpp, and saslclient.cpp.
-
-
-
- -
-
- - - - - - - - -
SecureArray QCA::ConsolePrompt::result ( )  const
-
-
- -

Obtain the result of the user input.

-

This method is usually called to obtain data from the user that was requested by the getHidden() call.

-
Examples:
keyloader.cpp, and saslclient.cpp.
-
-
-
- -
-
- - - - - - - - -
QChar QCA::ConsolePrompt::resultChar ( )  const
-
-
- -

Obtain the result of the user input.

-

This method is usually called to obtain data from the user that was requested by the getChar() call.

- -
-
- -
-
- - - - - - - - -
void QCA::ConsolePrompt::finished ( )  [signal]
-
-
- -

Emitted when the user input activity has been completed.

-

This corresponds to the provision of a string for getHidden() or a single character for getChar().

-
See also:
waitForFinished
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1ConsolePrompt-members.html qca2-2.1.0/apidocs/html/classQCA_1_1ConsolePrompt-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1ConsolePrompt-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1ConsolePrompt-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::ConsolePrompt Member List

This is the complete list of members for QCA::ConsolePrompt, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
blockSignals(bool block)QObject
childEvent(QChildEvent *event)QObject
children()QObject
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
ConsolePrompt(QObject *parent=0)QCA::ConsolePrompt
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
finished()QCA::ConsolePrompt [signal]
getChar()QCA::ConsolePrompt
getHidden(const QString &promptStr)QCA::ConsolePrompt
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
parent()QObject
Private (defined in QCA::ConsolePrompt)QCA::ConsolePrompt [friend]
property(const char *name)QObject
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
result() const QCA::ConsolePrompt
resultChar() const QCA::ConsolePrompt
sender()QObject
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
startTimer(int interval)QObject
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
waitForFinished()QCA::ConsolePrompt
~ConsolePrompt() (defined in QCA::ConsolePrompt)QCA::ConsolePrompt
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1ConsoleReference__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1ConsoleReference__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1ConsoleReference__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1ConsoleReference__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1ConsoleReference__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1ConsoleReference__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1ConsoleReference__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1ConsoleReference__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -50e06e4103fce522e144414d7f743538 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1ConsoleReference__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1ConsoleReference__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1ConsoleReference.html qca2-2.1.0/apidocs/html/classQCA_1_1ConsoleReference.html --- qca2-2.0.3/apidocs/html/classQCA_1_1ConsoleReference.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1ConsoleReference.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,483 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::ConsoleReference Class Reference - - - - - - -
-

QCA::ConsoleReference Class Reference
- -[QCA user API] -

-

Manager for a Console. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::ConsoleReference:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - -

Public Types

enum  SecurityMode { SecurityDisabled, -SecurityEnabled - }

Signals

void bytesWritten (int bytes)
void inputClosed ()
void outputClosed ()
void readyRead ()

Public Member Functions

int bytesAvailable () const
int bytesToWrite () const
void closeOutput ()
Consoleconsole () const
 ConsoleReference (QObject *parent=0)
QByteArray read (int bytes=-1)
SecureArray readSecure (int bytes=-1)
SecurityMode securityMode () const
bool start (Console *console, SecurityMode mode=SecurityDisabled)
void stop ()
void write (const QByteArray &a)
void writeSecure (const SecureArray &a)

Friends

-class Console
-class ConsoleReferencePrivate
-

Detailed Description

-

Manager for a Console.

-
Note:
Only one ConsoleReference object can be active at a time
-

Member Enumeration Documentation

- -
- -
- -

The security setting to use for the Console being managed.

- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::ConsoleReference::ConsoleReference (QObject parent = 0 ) 
-
-
- -

Standard constructor.

-
Parameters:
- - -
parent the parent object for this object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
bool QCA::ConsoleReference::start (Console console,
SecurityMode  mode = SecurityDisabled 
)
-
-
- -

Set the Console object to be managed, and start processing.

-

You typically want to use Console::ttyInstance() or Console::stdioInstance() to obtain the required Console reference.

-
Parameters:
- - - -
console reference to the Console to be managed
mode the SecurityMode to use for this Console.
-
-
-
See also:
QCA::Console for more information on how to handle the console aspects of your application or library code.
- -
-
- -
-
- - - - - - - - -
void QCA::ConsoleReference::stop ( ) 
-
-
- -

Stop processing, and release the Console.

- -
-
- -
-
- - - - - - - - -
Console* QCA::ConsoleReference::console ( )  const
-
-
- -

The Console object managed by this object.

-
See also:
start() to set the Console to be managed
- -
-
- -
-
- - - - - - - - -
SecurityMode QCA::ConsoleReference::securityMode ( )  const
-
-
- -

The security mode setting for the Console object managed by this object.

-
See also:
start() to set the SecurityMode
- -
-
- -
-
- - - - - - - - - -
QByteArray QCA::ConsoleReference::read (int  bytes = -1 ) 
-
-
- -

Read data from the Console.

-
Parameters:
- - -
bytes the number of bytes to read. The default is to read all available bytes
-
-
-
See also:
readSecure() for a method suitable for reading sensitive data.
- -
-
- -
-
- - - - - - - - - -
void QCA::ConsoleReference::write (const QByteArray a ) 
-
-
- -

Write data to the Console.

-
Parameters:
- - -
a the array of data to write to the Console
-
-
-
See also:
writeSecure() for a method suitable for writing sensitive data.
- -
-
- -
-
- - - - - - - - - -
SecureArray QCA::ConsoleReference::readSecure (int  bytes = -1 ) 
-
-
- -

Read secure data from the Console.

-
Parameters:
- - -
bytes the number of bytes to read. The default is to read all available bytes
-
-
-
See also:
read() which is suitable for non-sensitive data
- -
-
- -
-
- - - - - - - - - -
void QCA::ConsoleReference::writeSecure (const SecureArray a ) 
-
-
- -

Write secure data to the Console.

-
Parameters:
- - -
a the array of data to write to the Console
-
-
-
See also:
write() which is suitable for non-sensitive data
- -
-
- -
-
- - - - - - - - -
void QCA::ConsoleReference::closeOutput ( ) 
-
-
- -

Close the write channel.

-

You only need to call this if writing is enabled on the Console being managed.

- -
-
- -
-
- - - - - - - - -
int QCA::ConsoleReference::bytesAvailable ( )  const
-
-
- -

The number of bytes available to read from the Console being managed.

- -
-
- -
-
- - - - - - - - -
int QCA::ConsoleReference::bytesToWrite ( )  const
-
-
- -

The number of bytes remaining to be written to the Console being managed.

- -
-
- -
-
- - - - - - - - -
void QCA::ConsoleReference::readyRead ( )  [signal]
-
-
- -

Emitted when there are bytes available to read from the Console being managed.

- -
-
- -
-
- - - - - - - - - -
void QCA::ConsoleReference::bytesWritten (int  bytes )  [signal]
-
-
- -

Emitted when bytes are written to the Console.

-
Parameters:
- - -
bytes the number of bytes that were written
-
-
-
See also:
bytesAvailable()
- -
-
- -
-
- - - - - - - - -
void QCA::ConsoleReference::inputClosed ( )  [signal]
-
-
- -

Emitted when the console input is closed.

- -
-
- -
-
- - - - - - - - -
void QCA::ConsoleReference::outputClosed ( )  [signal]
-
-
- -

Emitted when the console output is closed.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1ConsoleReference-members.html qca2-2.1.0/apidocs/html/classQCA_1_1ConsoleReference-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1ConsoleReference-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1ConsoleReference-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::ConsoleReference Member List

This is the complete list of members for QCA::ConsoleReference, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
blockSignals(bool block)QObject
bytesAvailable() const QCA::ConsoleReference
bytesToWrite() const QCA::ConsoleReference
bytesWritten(int bytes)QCA::ConsoleReference [signal]
childEvent(QChildEvent *event)QObject
children()QObject
closeOutput()QCA::ConsoleReference
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
Console (defined in QCA::ConsoleReference)QCA::ConsoleReference [friend]
console() const QCA::ConsoleReference
ConsoleReference(QObject *parent=0)QCA::ConsoleReference
ConsoleReferencePrivate (defined in QCA::ConsoleReference)QCA::ConsoleReference [friend]
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
inherits(const char *clname)QObject
inputClosed()QCA::ConsoleReference [signal]
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
outputClosed()QCA::ConsoleReference [signal]
parent()QObject
property(const char *name)QObject
QObject(QObject *parent=0)QObject
read(int bytes=-1)QCA::ConsoleReference
readSecure(int bytes=-1)QCA::ConsoleReference
readyRead()QCA::ConsoleReference [signal]
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
SecurityDisabled enum value (defined in QCA::ConsoleReference)QCA::ConsoleReference
SecurityEnabled enum value (defined in QCA::ConsoleReference)QCA::ConsoleReference
SecurityMode enum nameQCA::ConsoleReference
securityMode() const QCA::ConsoleReference
sender()QObject
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
start(Console *console, SecurityMode mode=SecurityDisabled)QCA::ConsoleReference
startTimer(int interval)QObject
stop()QCA::ConsoleReference
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
write(const QByteArray &a)QCA::ConsoleReference
writeSecure(const SecureArray &a)QCA::ConsoleReference
~ConsoleReference() (defined in QCA::ConsoleReference)QCA::ConsoleReference
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1ConstraintType__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1ConstraintType__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1ConstraintType__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1ConstraintType__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1ConstraintType__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1ConstraintType__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1ConstraintType__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1ConstraintType__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -31315b7ad4ec6946ff7bd9db85e8cae0 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1ConstraintType__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1ConstraintType__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1ConstraintType.html qca2-2.1.0/apidocs/html/classQCA_1_1ConstraintType.html --- qca2-2.0.3/apidocs/html/classQCA_1_1ConstraintType.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1ConstraintType.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,384 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::ConstraintType Class Reference - - - - - - -
-

QCA::ConstraintType Class Reference
- -[QCA user API] -

-

Certificate constraint. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::ConstraintType:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - -

Public Types

enum  Section { KeyUsage, -ExtendedKeyUsage - }

Public Member Functions

 ConstraintType (const ConstraintType &from)
 ConstraintType (const QString &id, Section section)
 ConstraintType (ConstraintTypeKnown known)
 ConstraintType ()
QString id () const
ConstraintTypeKnown known () const
bool operator!= (const ConstraintType &other) const
bool operator< (const ConstraintType &other) const
ConstraintTypeoperator= (const ConstraintType &from)
bool operator== (const ConstraintType &other) const
Section section () const
-

Detailed Description

-

Certificate constraint.

-

X.509 certificates can be constrained in their application - that is, some certificates can only be used for certain purposes. This class is used to identify an approved purpose for a certificate.

-
Note:
It is common for a certificate to have more than one purpose.
-

Member Enumeration Documentation

- -
- -
- -

Section of the certificate that the constraint belongs in.

-
Enumerator:
- - -
KeyUsage  -

Stored in the key usage section.

-
ExtendedKeyUsage  -

Stored in the extended key usage section.

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::ConstraintType::ConstraintType ( ) 
-
-
- -

Standard constructor.

- -
-
- -
-
- - - - - - - - - -
QCA::ConstraintType::ConstraintType (ConstraintTypeKnown  known ) 
-
-
- -

Construct a new constraint.

-

The section will be derived by known.

-
Parameters:
- - -
known the type as part of the ConstraintTypeKnown enumerator
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::ConstraintType::ConstraintType (const QString id,
Section  section 
)
-
-
- -

Construct a new constraint.

-
Parameters:
- - - -
id the type as an identifier string (OID or internal)
section the section this type belongs in
-
-
-
See also:
id
- -
-
- -
-
- - - - - - - - - -
QCA::ConstraintType::ConstraintType (const ConstraintType from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the constraint type to copy from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
ConstraintType& QCA::ConstraintType::operator= (const ConstraintType from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the constraint type to assign from
-
-
- -
-
- -
-
- - - - - - - - -
Section QCA::ConstraintType::section ( )  const
-
-
- -

The section the constraint is part of.

- -
-
- -
-
- - - - - - - - -
ConstraintTypeKnown QCA::ConstraintType::known ( )  const
-
-
- -

The type as part of the ConstraintTypeKnown enumerator.

-

This function may return a value that does not exist in the enumerator. In that case, you may use id() to determine the type.

- -
-
- -
-
- - - - - - - - -
QString QCA::ConstraintType::id ( )  const
-
-
- -

The type as an identifier string.

-

For types that have OIDs, this function returns an OID in string form. For types that do not have OIDs, this function returns an internal identifier string whose first character is not a digit (this allows you to tell the difference between an OID and an internal identifier).

-

It is hereby stated that the KeyUsage bit fields shall use the internal identifier format "KeyUsage.[rfc field name]". For example, the keyEncipherment field would have the identifier "KeyUsage.keyEncipherment".

-

Applications should not store, use, or compare against internal identifiers unless the identifiers are explicitly documented (e.g. KeyUsage).

- -
-
- -
-
- - - - - - - - - -
bool QCA::ConstraintType::operator< (const ConstraintType other )  const
-
-
- -

Comparison operator.

-
Parameters:
- - -
other the constraint type to compare with this constraint
-
-
- -
-
- -
-
- - - - - - - - - -
bool QCA::ConstraintType::operator== (const ConstraintType other )  const
-
-
- -

Comparison operator.

-
Parameters:
- - -
other the constraint type to compare with this constraint
-
-
- -
-
- -
-
- - - - - - - - - -
bool QCA::ConstraintType::operator!= (const ConstraintType other )  const [inline]
-
-
- -

Inequality operator.

-
Parameters:
- - -
other the constraint type to compare with this constraint
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1ConstraintType-members.html qca2-2.1.0/apidocs/html/classQCA_1_1ConstraintType-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1ConstraintType-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1ConstraintType-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::ConstraintType Member List

This is the complete list of members for QCA::ConstraintType, including all inherited members. - - - - - - - - - - - - - - - -
ConstraintType()QCA::ConstraintType
ConstraintType(ConstraintTypeKnown known)QCA::ConstraintType
ConstraintType(const QString &id, Section section)QCA::ConstraintType
ConstraintType(const ConstraintType &from)QCA::ConstraintType
ExtendedKeyUsage enum valueQCA::ConstraintType
id() const QCA::ConstraintType
KeyUsage enum valueQCA::ConstraintType
known() const QCA::ConstraintType
operator!=(const ConstraintType &other) const QCA::ConstraintType [inline]
operator<(const ConstraintType &other) const QCA::ConstraintType
operator=(const ConstraintType &from)QCA::ConstraintType
operator==(const ConstraintType &other) const QCA::ConstraintType
section() const QCA::ConstraintType
Section enum nameQCA::ConstraintType
~ConstraintType() (defined in QCA::ConstraintType)QCA::ConstraintType
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRL__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CRL__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CRL__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRL__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRL__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CRL__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CRL__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRL__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -7828b935cb0ea59699a434340187674b \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CRL__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CRL__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRLContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CRLContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CRLContext__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRLContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRLContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CRLContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CRLContext__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRLContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -0cadb4acffec9bf1c2b4eb7e843e0c08 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CRLContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CRLContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRLContext.html qca2-2.1.0/apidocs/html/classQCA_1_1CRLContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CRLContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRLContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,142 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CRLContext Class Reference - - - - - - -
-

QCA::CRLContext Class Reference
- -[QCA provider API] -

-

X.509 certificate revocation list provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CRLContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - -

Public Member Functions

virtual bool compare (const CRLContext *other) const =0
 CRLContext (Provider *p)
virtual const CRLContextPropsprops () const =0
-

Detailed Description

-

X.509 certificate revocation list provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want CRL instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::CRLContext::CRLContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual const CRLContextProps* QCA::CRLContext::props ( )  const [pure virtual]
-
-
- -

Returns a pointer to the properties of this CRL.

- -
-
- -
-
- - - - - - - - - -
virtual bool QCA::CRLContext::compare (const CRLContext other )  const [pure virtual]
-
-
- -

Returns true if this CRL is equal to another CRL, otherwise false.

-
Parameters:
- - -
other the CRL to compare with
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRLContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CRLContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CRLContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRLContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CRLContext Member List

This is the complete list of members for QCA::CRLContext, including all inherited members. - - - - - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
CertBase(Provider *p, const QString &type)QCA::CertBase [inline]
compare(const CRLContext *other) const =0QCA::CRLContext [pure virtual]
CRLContext(Provider *p)QCA::CRLContext [inline]
fromDER(const QByteArray &a)=0QCA::CertBase [pure virtual]
fromPEM(const QString &s)=0QCA::CertBase [pure virtual]
props() const =0QCA::CRLContext [pure virtual]
toDER() const =0QCA::CertBase [pure virtual]
toPEM() const =0QCA::CertBase [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRLContextProps__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CRLContextProps__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CRLContextProps__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRLContextProps__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRLContextProps__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CRLContextProps__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CRLContextProps__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRLContextProps__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -22b8cb8a848f614a72c7bd9a304bcdb1 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CRLContextProps__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CRLContextProps__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRLContextProps.html qca2-2.1.0/apidocs/html/classQCA_1_1CRLContextProps.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CRLContextProps.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRLContextProps.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,196 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CRLContextProps Class Reference - - - - - - -
-

QCA::CRLContextProps Class Reference
- -[QCA provider API] -

-

X.509 certificate revocation list properties. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CRLContextProps:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - -

Public Attributes

CertificateInfoOrdered issuer
QByteArray issuerId
QDateTime nextUpdate
int number
QList< CRLEntryrevoked
QByteArray sig
SignatureAlgorithm sigalgo
QDateTime thisUpdate
-

Detailed Description

-

X.509 certificate revocation list properties.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want CRL instead.
-

For efficiency and simplicity, the members are directly accessed.

-

Member Data Documentation

- -
- -
- -

The issuer information of the CRL.

- -
-
- -
- -
- -

The CRL number, which increases at each update.

- -
-
- -
- -
- -

The time this CRL was created.

- -
-
- -
- -
- -

The time this CRL expires, and the next CRL should be fetched.

- -
-
- -
- -
- -

The revoked entries.

- -
-
- -
- -
- -

The signature data of the CRL.

- -
-
- -
- -
- -

The signature algorithm used by the issuer to sign the CRL.

- -
-
- -
- -
- -

The issuer id.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRLContextProps-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CRLContextProps-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CRLContextProps-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRLContextProps-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CRLContextProps Member List

This is the complete list of members for QCA::CRLContextProps, including all inherited members. - - - - - - - - -
issuerQCA::CRLContextProps
issuerIdQCA::CRLContextProps
nextUpdateQCA::CRLContextProps
numberQCA::CRLContextProps
revokedQCA::CRLContextProps
sigQCA::CRLContextProps
sigalgoQCA::CRLContextProps
thisUpdateQCA::CRLContextProps
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRLEntry__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CRLEntry__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CRLEntry__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRLEntry__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRLEntry__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CRLEntry__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CRLEntry__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRLEntry__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -e3970c69595856b76be6657e3b740146 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CRLEntry__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CRLEntry__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRLEntry.html qca2-2.1.0/apidocs/html/classQCA_1_1CRLEntry.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CRLEntry.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRLEntry.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,443 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CRLEntry Class Reference - - - - - - -
-

QCA::CRLEntry Class Reference
- -[QCA user API] -

-

Part of a CRL representing a single certificate. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CRLEntry:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - -

Public Types

enum  Reason {
-  Unspecified, -KeyCompromise, -CACompromise, -AffiliationChanged, -
-  Superseded, -CessationOfOperation, -CertificateHold, -RemoveFromCRL, -
-  PrivilegeWithdrawn, -AACompromise -
- }

Public Member Functions

 CRLEntry (const CRLEntry &from)
 CRLEntry (const BigInteger serial, const QDateTime &time, Reason r=Unspecified)
 CRLEntry (const Certificate &c, Reason r=Unspecified)
 CRLEntry ()
bool isNull () const
bool operator!= (const CRLEntry &other) const
bool operator< (const CRLEntry &a) const
CRLEntryoperator= (const CRLEntry &from)
bool operator== (const CRLEntry &a) const
Reason reason () const
BigInteger serialNumber () const
QDateTime time () const
-

Detailed Description

-

Part of a CRL representing a single certificate.

-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::CRLEntry::Reason
-
-
- -

The reason why the certificate has been revoked.

-
Enumerator:
- - - - - - - -
Unspecified  -

reason is unknown

-
KeyCompromise  -

private key has been compromised

-
CACompromise  -

certificate authority has been compromised

-
Superseded  -

certificate has been superseded

-
CertificateHold  -

certificate is on hold

-
RemoveFromCRL  -

certificate was previously in a CRL, but is now valid

-
AACompromise  -

attribute authority has been compromised

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::CRLEntry::CRLEntry ( ) 
-
-
- -

create an empty CRL entry

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::CRLEntry::CRLEntry (const Certificate c,
Reason  r = Unspecified 
) [explicit]
-
-
- -

create a CRL entry

-
Parameters:
- - - -
c the certificate to revoke
r the reason that the certificate is being revoked
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QCA::CRLEntry::CRLEntry (const BigInteger  serial,
const QDateTime time,
Reason  r = Unspecified 
)
-
-
- -

create a CRL entry

-
Parameters:
- - - - -
serial the serial number of the Certificate being revoked
time the time the Certificate was revoked (or will be revoked)
r the reason that the certificate is being revoked
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::CRLEntry::CRLEntry (const CRLEntry from ) 
-
-
- -

Copy constructor.

-
Parameters:
- - -
from the CRLEntry to copy from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
CRLEntry& QCA::CRLEntry::operator= (const CRLEntry from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the CRLEntry to copy from
-
-
- -
-
- -
-
- - - - - - - - -
BigInteger QCA::CRLEntry::serialNumber ( )  const
-
-
- -

The serial number of the certificate that is the subject of this CRL entry.

- -
-
- -
-
- - - - - - - - -
QDateTime QCA::CRLEntry::time ( )  const
-
-
- -

The time this CRL entry was created.

- -
-
- -
-
- - - - - - - - -
bool QCA::CRLEntry::isNull ( )  const
-
-
- -

Test if this CRL entry is empty.

- -
-
- -
-
- - - - - - - - -
Reason QCA::CRLEntry::reason ( )  const
-
-
- -

The reason that this CRL entry was created.

-

Alternatively, you might like to think of this as the reason that the subject certificate has been revoked

- -
-
- -
-
- - - - - - - - - -
bool QCA::CRLEntry::operator< (const CRLEntry a )  const
-
-
- -

Test if one CRL entry is "less than" another.

-

CRL entries are compared based on their serial number

-
Parameters:
- - -
a the CRL entry to be compared to this CRL entry.
-
-
- -
-
- -
-
- - - - - - - - - -
bool QCA::CRLEntry::operator== (const CRLEntry a )  const
-
-
- -

Test for equality of two CRL Entries.

-
Parameters:
- - -
a the CRL entry to be compared to this CRL entry.
-
-
-
Returns:
true if the two certificates are the same
- -
-
- -
-
- - - - - - - - - -
bool QCA::CRLEntry::operator!= (const CRLEntry other )  const [inline]
-
-
- -

Inequality operator.

-
Parameters:
- - -
other the CRL entry to be compared to this CRL entry.
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRLEntry-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CRLEntry-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CRLEntry-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRLEntry-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CRLEntry Member List

This is the complete list of members for QCA::CRLEntry, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - -
AACompromise enum valueQCA::CRLEntry
AffiliationChanged enum value (defined in QCA::CRLEntry)QCA::CRLEntry
CACompromise enum valueQCA::CRLEntry
CertificateHold enum valueQCA::CRLEntry
CessationOfOperation enum value (defined in QCA::CRLEntry)QCA::CRLEntry
CRLEntry()QCA::CRLEntry
CRLEntry(const Certificate &c, Reason r=Unspecified)QCA::CRLEntry [explicit]
CRLEntry(const BigInteger serial, const QDateTime &time, Reason r=Unspecified)QCA::CRLEntry
CRLEntry(const CRLEntry &from)QCA::CRLEntry
isNull() const QCA::CRLEntry
KeyCompromise enum valueQCA::CRLEntry
operator!=(const CRLEntry &other) const QCA::CRLEntry [inline]
operator<(const CRLEntry &a) const QCA::CRLEntry
operator=(const CRLEntry &from)QCA::CRLEntry
operator==(const CRLEntry &a) const QCA::CRLEntry
PrivilegeWithdrawn enum value (defined in QCA::CRLEntry)QCA::CRLEntry
reason() const QCA::CRLEntry
Reason enum nameQCA::CRLEntry
RemoveFromCRL enum valueQCA::CRLEntry
serialNumber() const QCA::CRLEntry
Superseded enum valueQCA::CRLEntry
time() const QCA::CRLEntry
Unspecified enum valueQCA::CRLEntry
~CRLEntry() (defined in QCA::CRLEntry)QCA::CRLEntry
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRL.html qca2-2.1.0/apidocs/html/classQCA_1_1CRL.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CRL.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRL.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,602 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CRL Class Reference - - - - - - -
-

QCA::CRL Class Reference
- -[QCA user API] -

-

Certificate Revocation List -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CRL:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

void change (CRLContext *c)
 CRL (const CRL &from)
bool isNull () const
CertificateInfo issuerInfo () const
CertificateInfoOrdered issuerInfoOrdered () const
QByteArray issuerKeyId () const
QDateTime nextUpdate () const
int number () const
bool operator!= (const CRL &other) const
CRLoperator= (const CRL &from)
bool operator== (const CRL &a) const
QList< CRLEntryrevoked () const
SignatureAlgorithm signatureAlgorithm () const
QDateTime thisUpdate () const
QByteArray toDER () const
QString toPEM () const
bool toPEMFile (const QString &fileName) const

Static Public Member Functions

static CRL fromDER (const QByteArray &a, ConvertResult *result=0, const QString &provider=QString())
static CRL fromPEM (const QString &s, ConvertResult *result=0, const QString &provider=QString())
static CRL fromPEMFile (const QString &fileName, ConvertResult *result=0, const QString &provider=QString())

Friends

-class Private
-

Detailed Description

-

Certificate Revocation List

-

A CRL is a list of certificates that are special in some way. The normal reason for including a certificate on a CRL is that the certificate should no longer be used. For example, if a key is compromised, then the associated certificate may no longer provides appropriate security. There are other reasons why a certificate may be placed on a CRL, as shown in the CRLEntry::Reason enumeration.

-
See also:
CertificateCollection for a way to handle Certificates and CRLs as a single entity.
-
-CRLEntry for the CRL segment representing a single Certificate.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::CRL::CRL (const CRL from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the revocation list to copy from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
CRL& QCA::CRL::operator= (const CRL from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the revocation list to assign from
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::CRL::isNull ( )  const
-
-
- -

Test if the CRL is empty.

-
Returns:
true if the CRL is entry, otherwise return false
- -
-
- -
-
- - - - - - - - -
CertificateInfo QCA::CRL::issuerInfo ( )  const
-
-
- -

Information on the issuer of the CRL as a QMultiMap.

-
See also:
issuerInfoOrdered for a version that maintains the order of information fields as per the underlying CRL.
- -
-
- -
-
- - - - - - - - -
CertificateInfoOrdered QCA::CRL::issuerInfoOrdered ( )  const
-
-
- -

Information on the issuer of the CRL as an ordered list (QList of CertificateInfoPair).

-
See also:
issuerInfo for a version that allows lookup based on a multimap.
-
-CertificateInfoPair for the elements in the list
- -
-
- -
-
- - - - - - - - -
int QCA::CRL::number ( )  const
-
-
- -

The CRL serial number.

-

Note that serial numbers are a CRL extension, and not all certificates have one.

-
Returns:
the CRL serial number, or -1 if there is no serial number
- -
-
- -
-
- - - - - - - - -
QDateTime QCA::CRL::thisUpdate ( )  const
-
-
- -

the time that this CRL became (or becomes) valid

- -
-
- -
-
- - - - - - - - -
QDateTime QCA::CRL::nextUpdate ( )  const
-
-
- -

the time that this CRL will be obsoleted

-

you should obtain an updated CRL at this time

- -
-
- -
-
- - - - - - - - -
QList<CRLEntry> QCA::CRL::revoked ( )  const
-
-
- -

a list of the revoked certificates in this CRL

- -
-
- -
-
- - - - - - - - -
SignatureAlgorithm QCA::CRL::signatureAlgorithm ( )  const
-
-
- -

The signature algorithm used for the signature on this CRL.

- -
-
- -
-
- - - - - - - - -
QByteArray QCA::CRL::issuerKeyId ( )  const
-
-
- -

The key identification of the CRL issuer.

- -
-
- -
-
- - - - - - - - - -
bool QCA::CRL::operator== (const CRL a )  const
-
-
- -

Test for equality of two Certificate Revocation Lists.

-
Parameters:
- - -
a the CRL to be compared to this CRL
-
-
-
Returns:
true if the two CRLs are the same
- -
-
- -
-
- - - - - - - - - -
bool QCA::CRL::operator!= (const CRL other )  const [inline]
-
-
- -

Inequality operator.

-
Parameters:
- - -
other the CRL to be compared to this CRL
-
-
- -
-
- -
-
- - - - - - - - -
QByteArray QCA::CRL::toDER ( )  const
-
-
- -

Export the Certificate Revocation List (CRL) in DER format.

-
Returns:
an array containing the CRL in DER format
- -
-
- -
-
- - - - - - - - -
QString QCA::CRL::toPEM ( )  const
-
-
- -

Export the Certificate Revocation List (CRL) in PEM format.

-
Returns:
a string containing the CRL in PEM format
- -
-
- -
-
- - - - - - - - - -
bool QCA::CRL::toPEMFile (const QString fileName )  const
-
-
- -

Export the Certificate Revocation List (CRL) into PEM format in a file.

-
Parameters:
- - -
fileName the name of the file to use
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static CRL QCA::CRL::fromDER (const QByteArray a,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import a DER encoded Certificate Revocation List (CRL).

-
Parameters:
- - - - -
a the array containing the CRL in DER format
result a pointer to a ConvertResult, which if not-null will be set to the conversion status
provider the provider to use, if a specific provider is required
-
-
-
Returns:
the CRL corresponding to the contents of the array
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static CRL QCA::CRL::fromPEM (const QString s,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import a PEM encoded Certificate Revocation List (CRL).

-
Parameters:
- - - - -
s the string containing the CRL in PEM format
result a pointer to a ConvertResult, which if not-null will be set to the conversion status
provider the provider to use, if a specific provider is required
-
-
-
Returns:
the CRL corresponding to the contents of the string
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static CRL QCA::CRL::fromPEMFile (const QString fileName,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import a PEM encoded Certificate Revocation List (CRL) from a file.

-
Parameters:
- - - - -
fileName the name (and path, if required) of the file containing the certificate in PEM format
result a pointer to a ConvertResult, which if not-null will be set to the conversion status
provider the provider to use, if a specific provider is required
-
-
-
Returns:
the CRL in the file
- -
-
- -
-
- - - - - - - - - -
void QCA::CRL::change (CRLContext c ) 
-
-
-

For internal use only.

-
Parameters:
- - -
c context (internal)
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CRL-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CRL-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CRL-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CRL-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CRL Member List

This is the complete list of members for QCA::CRL, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
change(CRLContext *c)QCA::CRL
QCA::Algorithm::change(Provider::Context *c)QCA::Algorithm
QCA::Algorithm::change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
CRL() (defined in QCA::CRL)QCA::CRL
CRL(const CRL &from)QCA::CRL
fromDER(const QByteArray &a, ConvertResult *result=0, const QString &provider=QString())QCA::CRL [static]
fromPEM(const QString &s, ConvertResult *result=0, const QString &provider=QString())QCA::CRL [static]
fromPEMFile(const QString &fileName, ConvertResult *result=0, const QString &provider=QString())QCA::CRL [static]
isNull() const QCA::CRL
issuerInfo() const QCA::CRL
issuerInfoOrdered() const QCA::CRL
issuerKeyId() const QCA::CRL
nextUpdate() const QCA::CRL
number() const QCA::CRL
operator!=(const CRL &other) const QCA::CRL [inline]
operator=(const CRL &from)QCA::CRL
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
operator==(const CRL &a) const QCA::CRL
Private (defined in QCA::CRL)QCA::CRL [friend]
provider() const QCA::Algorithm
revoked() const QCA::CRL
signatureAlgorithm() const QCA::CRL
takeContext()QCA::Algorithm
thisUpdate() const QCA::CRL
toDER() const QCA::CRL
toPEM() const QCA::CRL
toPEMFile(const QString &fileName) const QCA::CRL
type() const QCA::Algorithm
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~CRL() (defined in QCA::CRL)QCA::CRL
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CSRContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1CSRContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1CSRContext__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CSRContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CSRContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1CSRContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1CSRContext__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CSRContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -380bfdad2609888a13eb64f632cf4672 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1CSRContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1CSRContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CSRContext.html qca2-2.1.0/apidocs/html/classQCA_1_1CSRContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CSRContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CSRContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,278 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::CSRContext Class Reference - - - - - - -
-

QCA::CSRContext Class Reference
- -[QCA provider API] -

-

X.509 certificate request provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::CSRContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - -

Public Member Functions

virtual bool canUseFormat (CertificateRequestFormat f) const =0
virtual bool compare (const CSRContext *other) const =0
virtual bool createRequest (const CertificateOptions &opts, const PKeyContext &priv)=0
 CSRContext (Provider *p)
virtual ConvertResult fromSPKAC (const QString &s)=0
virtual const CertContextPropsprops () const =0
virtual PKeyContextsubjectPublicKey () const =0
virtual QString toSPKAC () const =0
-

Detailed Description

-

X.509 certificate request provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want CertificateRequest instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::CSRContext::CSRContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
virtual bool QCA::CSRContext::canUseFormat (CertificateRequestFormat  f )  const [pure virtual]
-
-
- -

Returns true if the provider of this object supports the specified format, otherwise false.

-
Parameters:
- - -
f the format to test for support for.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual bool QCA::CSRContext::createRequest (const CertificateOptions opts,
const PKeyContext priv 
) [pure virtual]
-
-
- -

Create a certificate request based on the given options and private key.

-

Returns true if successful, otherwise false.

-

If successful, this object becomes the certificate request. If unsuccessful, this object is considered to be in an uninitialized state.

-
Parameters:
- - - -
opts the options to set on the certificate
priv the key to be used to sign the certificate
-
-
- -
-
- -
-
- - - - - - - - -
virtual const CertContextProps* QCA::CSRContext::props ( )  const [pure virtual]
-
-
- -

Returns a pointer to the properties of this certificate request.

- -
-
- -
-
- - - - - - - - - -
virtual bool QCA::CSRContext::compare (const CSRContext other )  const [pure virtual]
-
-
- -

Returns true if this certificate request is equal to another certificate request, otherwise false.

-
Parameters:
- - -
other the certificate request to compare with
-
-
- -
-
- -
-
- - - - - - - - -
virtual PKeyContext* QCA::CSRContext::subjectPublicKey ( )  const [pure virtual]
-
-
- -

Returns a copy of this certificate request's public key.

-

The caller is responsible for deleting it.

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::CSRContext::toSPKAC ( )  const [pure virtual]
-
-
- -

Convert this certificate request to Netscape SPKAC format, and return the value.

-

Returns an empty string on error.

- -
-
- -
-
- - - - - - - - - -
virtual ConvertResult QCA::CSRContext::fromSPKAC (const QString s )  [pure virtual]
-
-
- -

Read Netscape SPKAC input and convert it into a certificate request.

-

Returns QCA::ConvertGood if successful, otherwise some error value.

-
Parameters:
- - -
s the input data
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1CSRContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1CSRContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1CSRContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1CSRContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::CSRContext Member List

This is the complete list of members for QCA::CSRContext, including all inherited members. - - - - - - - - - - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
canUseFormat(CertificateRequestFormat f) const =0QCA::CSRContext [pure virtual]
CertBase(Provider *p, const QString &type)QCA::CertBase [inline]
compare(const CSRContext *other) const =0QCA::CSRContext [pure virtual]
createRequest(const CertificateOptions &opts, const PKeyContext &priv)=0QCA::CSRContext [pure virtual]
CSRContext(Provider *p)QCA::CSRContext [inline]
fromDER(const QByteArray &a)=0QCA::CertBase [pure virtual]
fromPEM(const QString &s)=0QCA::CertBase [pure virtual]
fromSPKAC(const QString &s)=0QCA::CSRContext [pure virtual]
props() const =0QCA::CSRContext [pure virtual]
subjectPublicKey() const =0QCA::CSRContext [pure virtual]
toDER() const =0QCA::CertBase [pure virtual]
toPEM() const =0QCA::CertBase [pure virtual]
toSPKAC() const =0QCA::CSRContext [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DHContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1DHContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1DHContext__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DHContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DHContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1DHContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1DHContext__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DHContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -836de4e2e56ca99b4d3fa32cebdc0fda \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1DHContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1DHContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DHContext.html qca2-2.1.0/apidocs/html/classQCA_1_1DHContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DHContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DHContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,275 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::DHContext Class Reference - - - - - - -
-

QCA::DHContext Class Reference
- -[QCA provider API] -

-

Diffie-Hellman provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::DHContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - -

Public Member Functions

virtual void createPrivate (const DLGroup &domain, const BigInteger &y, const BigInteger &x)=0
virtual void createPrivate (const DLGroup &domain, bool block)=0
virtual void createPublic (const DLGroup &domain, const BigInteger &y)=0
 DHContext (Provider *p)
virtual DLGroup domain () const =0
virtual BigInteger x () const =0
virtual BigInteger y () const =0
-

Detailed Description

-

Diffie-Hellman provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want DHPublicKey or DHPrivateKey instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::DHContext::DHContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::DHContext::createPrivate (const DLGroup domain,
bool  block 
) [pure virtual]
-
-
- -

Generate a Diffie-Hellman private key.

-

If block is true, then this function blocks until completion. Otherwise, this function returns immediately and finished() is emitted when the operation completes.

-

If an error occurs during generation, then the operation will complete and isNull() will return true.

-
Parameters:
- - - -
domain the domain values to use for generation
block whether to use blocking mode
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual void QCA::DHContext::createPrivate (const DLGroup domain,
const BigInteger y,
const BigInteger x 
) [pure virtual]
-
-
- -

Create a Diffie-Hellman private key based on its numeric components.

-
Parameters:
- - - - -
domain the domain values to use for generation
y the public Y component
x the private X component
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::DHContext::createPublic (const DLGroup domain,
const BigInteger y 
) [pure virtual]
-
-
- -

Create a Diffie-Hellman public key based on its numeric components.

-
Parameters:
- - - -
domain the domain values to use for generation
y the public Y component
-
-
- -
-
- -
-
- - - - - - - - -
virtual DLGroup QCA::DHContext::domain ( )  const [pure virtual]
-
-
- -

Returns the public domain component of this Diffie-Hellman key.

- -
-
- -
-
- - - - - - - - -
virtual BigInteger QCA::DHContext::y ( )  const [pure virtual]
-
-
- -

Returns the public Y component of this Diffie-Hellman key.

- -
-
- -
-
- - - - - - - - -
virtual BigInteger QCA::DHContext::x ( )  const [pure virtual]
-
-
- -

Returns the private X component of this Diffie-Hellman key.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DHContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1DHContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DHContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DHContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::DHContext Member List

This is the complete list of members for QCA::DHContext, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
bits() const =0QCA::PKeyBase [pure virtual]
canExport() const =0QCA::PKeyBase [pure virtual]
convertToPublic()=0QCA::PKeyBase [pure virtual]
createPrivate(const DLGroup &domain, bool block)=0QCA::DHContext [pure virtual]
createPrivate(const DLGroup &domain, const BigInteger &y, const BigInteger &x)=0QCA::DHContext [pure virtual]
createPublic(const DLGroup &domain, const BigInteger &y)=0QCA::DHContext [pure virtual]
decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg)QCA::PKeyBase [virtual]
deriveKey(const PKeyBase &theirs)QCA::PKeyBase [virtual]
DHContext(Provider *p)QCA::DHContext [inline]
domain() const =0QCA::DHContext [pure virtual]
encrypt(const SecureArray &in, EncryptionAlgorithm alg)QCA::PKeyBase [virtual]
endSign()QCA::PKeyBase [virtual]
endVerify(const QByteArray &sig)QCA::PKeyBase [virtual]
finished()QCA::PKeyBase [signal]
isNull() const =0QCA::PKeyBase [pure virtual]
isPrivate() const =0QCA::PKeyBase [pure virtual]
maximumEncryptSize(EncryptionAlgorithm alg) const QCA::PKeyBase [virtual]
PKeyBase(Provider *p, const QString &type)QCA::PKeyBase
startSign(SignatureAlgorithm alg, SignatureFormat format)QCA::PKeyBase [virtual]
startVerify(SignatureAlgorithm alg, SignatureFormat format)QCA::PKeyBase [virtual]
type() const =0QCA::PKeyBase [pure virtual]
update(const MemoryRegion &in)QCA::PKeyBase [virtual]
x() const =0QCA::DHContext [pure virtual]
y() const =0QCA::DHContext [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DHPrivateKey__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1DHPrivateKey__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1DHPrivateKey__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DHPrivateKey__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DHPrivateKey__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1DHPrivateKey__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1DHPrivateKey__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DHPrivateKey__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -ad5557b9031e5d360c17460c592e491d \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1DHPrivateKey__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1DHPrivateKey__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DHPrivateKey.html qca2-2.1.0/apidocs/html/classQCA_1_1DHPrivateKey.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DHPrivateKey.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DHPrivateKey.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::DHPrivateKey Class Reference - - - - - - -
-

QCA::DHPrivateKey Class Reference
- -[QCA user API] -

-

Diffie-Hellman Private Key. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::DHPrivateKey:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - -

Public Member Functions

 DHPrivateKey (const DLGroup &domain, const BigInteger &y, const BigInteger &x, const QString &provider=QString())
 DHPrivateKey ()
DLGroup domain () const
BigInteger x () const
BigInteger y () const
-

Detailed Description

-

Diffie-Hellman Private Key.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::DHPrivateKey::DHPrivateKey ( ) 
-
-
- -

Create an empty Diffie-Hellman private key.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
QCA::DHPrivateKey::DHPrivateKey (const DLGroup domain,
const BigInteger y,
const BigInteger x,
const QString provider = QString() 
)
-
-
- -

Create a Diffie-Hellman private key.

-
Parameters:
- - - - - -
domain the discrete logarithm group to use
y the public random value
x the private random value
provider the provider to use, if a particular provider is required
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
DLGroup QCA::DHPrivateKey::domain ( )  const
-
-
- -

The discrete logarithm group that is being used.

- -
-
- -
-
- - - - - - - - -
BigInteger QCA::DHPrivateKey::y ( )  const
-
-
- -

The public random value associated with this key.

- -
-
- -
-
- - - - - - - - -
BigInteger QCA::DHPrivateKey::x ( )  const
-
-
- -

The private random value associated with this key.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DHPrivateKey-members.html qca2-2.1.0/apidocs/html/classQCA_1_1DHPrivateKey-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DHPrivateKey-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DHPrivateKey-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::DHPrivateKey Member List

This is the complete list of members for QCA::DHPrivateKey, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
bitSize() const QCA::PKey
canDecrypt() const QCA::PrivateKey
canExport() const QCA::PKey
canKeyAgree() const QCA::PKey
canSign() const QCA::PrivateKey
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg)QCA::PrivateKey
deriveKey(const PublicKey &theirs)QCA::PrivateKey
DH enum valueQCA::PKey
DHPrivateKey()QCA::DHPrivateKey
DHPrivateKey(const DLGroup &domain, const BigInteger &y, const BigInteger &x, const QString &provider=QString())QCA::DHPrivateKey
domain() const QCA::DHPrivateKey
DSA enum valueQCA::PKey
fromDER(const SecureArray &a, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())QCA::PrivateKey [static]
fromPEM(const QString &s, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())QCA::PrivateKey [static]
fromPEMFile(const QString &fileName, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())QCA::PrivateKey [static]
isDH() const QCA::PKey
isDSA() const QCA::PKey
isNull() const QCA::PKey
isPrivate() const QCA::PKey
isPublic() const QCA::PKey
isRSA() const QCA::PKey
operator!=(const PKey &a) const QCA::PKey
operator=(const PrivateKey &from)QCA::PrivateKey
QCA::PKey::operator=(const PKey &from)QCA::PKey
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
operator==(const PKey &a) const QCA::PKey
PKey()QCA::PKey
PKey(const PKey &from)QCA::PKey
PKey(const QString &type, const QString &provider)QCA::PKey [protected]
PrivateKey()QCA::PrivateKey
PrivateKey(const QString &fileName, const SecureArray &passphrase=SecureArray())QCA::PrivateKey [explicit]
PrivateKey(const PrivateKey &from)QCA::PrivateKey
PrivateKey(const QString &type, const QString &provider)QCA::PrivateKey [protected]
provider() const QCA::Algorithm
RSA enum valueQCA::PKey
set(const PKey &k)QCA::PKey [protected]
signature()QCA::PrivateKey
signMessage(const MemoryRegion &a, SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PrivateKey
startSign(SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PrivateKey
supportedIOTypes(const QString &provider=QString())QCA::PKey [static]
supportedPBEAlgorithms(const QString &provider=QString())QCA::PrivateKey [static]
supportedTypes(const QString &provider=QString())QCA::PKey [static]
takeContext()QCA::Algorithm
toDER(const SecureArray &passphrase=SecureArray(), PBEAlgorithm pbe=PBEDefault) const QCA::PrivateKey
toDH() const QCA::PrivateKey
toDHPrivateKey() const QCA::PKey [protected]
toDHPublicKey() const QCA::PKey [protected]
toDSA() const QCA::PrivateKey
toDSAPrivateKey() const QCA::PKey [protected]
toDSAPublicKey() const QCA::PKey [protected]
toPEM(const SecureArray &passphrase=SecureArray(), PBEAlgorithm pbe=PBEDefault) const QCA::PrivateKey
toPEMFile(const QString &fileName, const SecureArray &passphrase=SecureArray(), PBEAlgorithm pbe=PBEDefault) const QCA::PrivateKey
toPrivateKey() const QCA::PKey
toPublicKey() const QCA::PKey
toRSA() const QCA::PrivateKey
toRSAPrivateKey() const QCA::PKey [protected]
toRSAPublicKey() const QCA::PKey [protected]
Type enum nameQCA::PKey
type() const QCA::PKey
update(const MemoryRegion &a)QCA::PrivateKey
x() const QCA::DHPrivateKey
y() const QCA::DHPrivateKey
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~PKey() (defined in QCA::PKey)QCA::PKey
~PrivateKey() (defined in QCA::PrivateKey)QCA::PrivateKey
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DHPublicKey__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1DHPublicKey__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1DHPublicKey__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DHPublicKey__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DHPublicKey__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1DHPublicKey__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1DHPublicKey__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DHPublicKey__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -b2a4d2f730bc175f309ae4031db59bd4 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1DHPublicKey__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1DHPublicKey__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DHPublicKey.html qca2-2.1.0/apidocs/html/classQCA_1_1DHPublicKey.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DHPublicKey.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DHPublicKey.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::DHPublicKey Class Reference - - - - - - -
-

QCA::DHPublicKey Class Reference
- -[QCA user API] -

-

Diffie-Hellman Public Key. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::DHPublicKey:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - -

Public Member Functions

 DHPublicKey (const DHPrivateKey &k)
 DHPublicKey (const DLGroup &domain, const BigInteger &y, const QString &provider=QString())
 DHPublicKey ()
DLGroup domain () const
BigInteger y () const
-

Detailed Description

-

Diffie-Hellman Public Key.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::DHPublicKey::DHPublicKey ( ) 
-
-
- -

Create an empty Diffie-Hellman public key.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QCA::DHPublicKey::DHPublicKey (const DLGroup domain,
const BigInteger y,
const QString provider = QString() 
)
-
-
- -

Create a Diffie-Hellman public key.

-
Parameters:
- - - - -
domain the discrete logarithm group to use
y the public random value
provider the provider to use, if a specific provider is required
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::DHPublicKey::DHPublicKey (const DHPrivateKey k ) 
-
-
- -

Create a Diffie-Hellman public key from a specified private key.

-
Parameters:
- - -
k the Diffie-Hellman private key to use as the source
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
DLGroup QCA::DHPublicKey::domain ( )  const
-
-
- -

The discrete logarithm group that is being used.

- -
-
- -
-
- - - - - - - - -
BigInteger QCA::DHPublicKey::y ( )  const
-
-
- -

The public random value associated with this key.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DHPublicKey-members.html qca2-2.1.0/apidocs/html/classQCA_1_1DHPublicKey-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DHPublicKey-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DHPublicKey-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::DHPublicKey Member List

This is the complete list of members for QCA::DHPublicKey, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
bitSize() const QCA::PKey
canEncrypt() const QCA::PublicKey
canExport() const QCA::PKey
canKeyAgree() const QCA::PKey
canVerify() const QCA::PublicKey
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
DH enum valueQCA::PKey
DHPublicKey()QCA::DHPublicKey
DHPublicKey(const DLGroup &domain, const BigInteger &y, const QString &provider=QString())QCA::DHPublicKey
DHPublicKey(const DHPrivateKey &k)QCA::DHPublicKey
domain() const QCA::DHPublicKey
DSA enum valueQCA::PKey
encrypt(const SecureArray &a, EncryptionAlgorithm alg)QCA::PublicKey
fromDER(const QByteArray &a, ConvertResult *result=0, const QString &provider=QString())QCA::PublicKey [static]
fromPEM(const QString &s, ConvertResult *result=0, const QString &provider=QString())QCA::PublicKey [static]
fromPEMFile(const QString &fileName, ConvertResult *result=0, const QString &provider=QString())QCA::PublicKey [static]
isDH() const QCA::PKey
isDSA() const QCA::PKey
isNull() const QCA::PKey
isPrivate() const QCA::PKey
isPublic() const QCA::PKey
isRSA() const QCA::PKey
maximumEncryptSize(EncryptionAlgorithm alg) const QCA::PublicKey
operator!=(const PKey &a) const QCA::PKey
operator=(const PublicKey &from)QCA::PublicKey
QCA::PKey::operator=(const PKey &from)QCA::PKey
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
operator==(const PKey &a) const QCA::PKey
PKey()QCA::PKey
PKey(const PKey &from)QCA::PKey
PKey(const QString &type, const QString &provider)QCA::PKey [protected]
provider() const QCA::Algorithm
PublicKey()QCA::PublicKey
PublicKey(const PrivateKey &k)QCA::PublicKey
PublicKey(const QString &fileName)QCA::PublicKey
PublicKey(const PublicKey &from)QCA::PublicKey
PublicKey(const QString &type, const QString &provider)QCA::PublicKey [protected]
RSA enum valueQCA::PKey
set(const PKey &k)QCA::PKey [protected]
startVerify(SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PublicKey
supportedIOTypes(const QString &provider=QString())QCA::PKey [static]
supportedTypes(const QString &provider=QString())QCA::PKey [static]
takeContext()QCA::Algorithm
toDER() const QCA::PublicKey
toDH() const QCA::PublicKey
toDHPrivateKey() const QCA::PKey [protected]
toDHPublicKey() const QCA::PKey [protected]
toDSA() const QCA::PublicKey
toDSAPrivateKey() const QCA::PKey [protected]
toDSAPublicKey() const QCA::PKey [protected]
toPEM() const QCA::PublicKey
toPEMFile(const QString &fileName) const QCA::PublicKey
toPrivateKey() const QCA::PKey
toPublicKey() const QCA::PKey
toRSA() const QCA::PublicKey
toRSAPrivateKey() const QCA::PKey [protected]
toRSAPublicKey() const QCA::PKey [protected]
type() const QCA::PKey
Type enum nameQCA::PKey
update(const MemoryRegion &a)QCA::PublicKey
validSignature(const QByteArray &sig)QCA::PublicKey
verifyMessage(const MemoryRegion &a, const QByteArray &sig, SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PublicKey
y() const QCA::DHPublicKey
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~PKey() (defined in QCA::PKey)QCA::PKey
~PublicKey() (defined in QCA::PublicKey)QCA::PublicKey
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DirWatch__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1DirWatch__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1DirWatch__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DirWatch__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DirWatch__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1DirWatch__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1DirWatch__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DirWatch__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -9894cfdfef06b78c2df5f01e338792b1 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1DirWatch__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1DirWatch__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DirWatch.html qca2-2.1.0/apidocs/html/classQCA_1_1DirWatch.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DirWatch.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DirWatch.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,178 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::DirWatch Class Reference - - - - - - -
-

QCA::DirWatch Class Reference
- -[QCA user API] -

-

Support class to monitor a directory for activity. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::DirWatch:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - -

Signals

void changed ()

Public Member Functions

QString dirName () const
 DirWatch (const QString &dir=QString(), QObject *parent=0)
void setDirName (const QString &dir)

Friends

-class Private
-

Detailed Description

-

Support class to monitor a directory for activity.

-

DirWatch monitors a specified file for any changes. When the directory changes, the changed() signal is emitted.

-
Note:
QFileSystemWatcher has very similar functionality to this class. You should evaluate this class and QFileSystemWatcher to determine which better suits your application needs.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::DirWatch::DirWatch (const QString dir = QString(),
QObject parent = 0 
) [explicit]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
dir the name of the directory to watch. If not set in the constructor, you can set it using setDirName()
parent the parent object for this object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
QString QCA::DirWatch::dirName ( )  const
-
-
- -

The name of the directory that is being monitored.

- -
-
- -
-
- - - - - - - - - -
void QCA::DirWatch::setDirName (const QString dir ) 
-
-
- -

Change the directory being monitored.

-
Parameters:
- - -
dir the name of the directory to monitor
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::DirWatch::changed ( )  [signal]
-
-
- -

The changed signal is emitted when the directory is changed (e.g.

-

modified by addition or deletion of a file within the directory, or the deletion of the directory)

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DirWatch-members.html qca2-2.1.0/apidocs/html/classQCA_1_1DirWatch-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DirWatch-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DirWatch-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,85 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::DirWatch Member List

This is the complete list of members for QCA::DirWatch, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
blockSignals(bool block)QObject
changed()QCA::DirWatch [signal]
childEvent(QChildEvent *event)QObject
children()QObject
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
dirName() const QCA::DirWatch
DirWatch(const QString &dir=QString(), QObject *parent=0)QCA::DirWatch [explicit]
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
parent()QObject
Private (defined in QCA::DirWatch)QCA::DirWatch [friend]
property(const char *name)QObject
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
sender()QObject
setDirName(const QString &dir)QCA::DirWatch
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
startTimer(int interval)QObject
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
~DirWatch() (defined in QCA::DirWatch)QCA::DirWatch
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DLGroup__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1DLGroup__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1DLGroup__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DLGroup__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DLGroup__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1DLGroup__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1DLGroup__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DLGroup__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -632e57c2003f04e4fc20cea04606259c \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1DLGroup__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1DLGroup__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DLGroupContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1DLGroupContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1DLGroupContext__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DLGroupContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DLGroupContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1DLGroupContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1DLGroupContext__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DLGroupContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -161dea68c5faeacf9ed731c0dc093650 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1DLGroupContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1DLGroupContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DLGroupContext.html qca2-2.1.0/apidocs/html/classQCA_1_1DLGroupContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DLGroupContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DLGroupContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,240 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::DLGroupContext Class Reference - - - - - - -
-

QCA::DLGroupContext Class Reference
- -[QCA provider API] -

-

Discrete logarithm provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::DLGroupContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - -

Signals

void finished ()

Public Member Functions

 DLGroupContext (Provider *p)
virtual void fetchGroup (DLGroupSet set, bool block)=0
virtual void getResult (BigInteger *p, BigInteger *q, BigInteger *g) const =0
virtual bool isNull () const =0
virtual QList< DLGroupSetsupportedGroupSets () const =0
-

Detailed Description

-

Discrete logarithm provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want DLGroup instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::DLGroupContext::DLGroupContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual QList<DLGroupSet> QCA::DLGroupContext::supportedGroupSets ( )  const [pure virtual]
-
-
- -

The DLGroupSets supported by this object.

- -
-
- -
-
- - - - - - - - -
virtual bool QCA::DLGroupContext::isNull ( )  const [pure virtual]
-
-
- -

Returns true if there is a result to obtain.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::DLGroupContext::fetchGroup (DLGroupSet  set,
bool  block 
) [pure virtual]
-
-
- -

Attempt to create P, Q, and G values from the specified group set.

-

If block is true, then this function blocks until completion. Otherwise, this function returns immediately and finished() is emitted when the operation completes.

-

If an error occurs during generation, then the operation will complete and isNull() will return true.

-
Parameters:
- - - -
set the group set to generate the key from
block whether to block (true) or not (false)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual void QCA::DLGroupContext::getResult (BigInteger p,
BigInteger q,
BigInteger g 
) const [pure virtual]
-
-
- -

Obtain the result of the operation.

-

Ensure isNull() returns false before calling this function.

-
Parameters:
- - - - -
p the P value
q the Q value
g the G value
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::DLGroupContext::finished ( )  [signal]
-
-
- -

Emitted when the fetchGroup() operation completes in non-blocking mode.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DLGroupContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1DLGroupContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DLGroupContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DLGroupContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::DLGroupContext Member List

This is the complete list of members for QCA::DLGroupContext, including all inherited members. - - - - - - -
DLGroupContext(Provider *p)QCA::DLGroupContext [inline]
fetchGroup(DLGroupSet set, bool block)=0QCA::DLGroupContext [pure virtual]
finished()QCA::DLGroupContext [signal]
getResult(BigInteger *p, BigInteger *q, BigInteger *g) const =0QCA::DLGroupContext [pure virtual]
isNull() const =0QCA::DLGroupContext [pure virtual]
supportedGroupSets() const =0QCA::DLGroupContext [pure virtual]
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DLGroup.html qca2-2.1.0/apidocs/html/classQCA_1_1DLGroup.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DLGroup.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DLGroup.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,308 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::DLGroup Class Reference - - - - - - -
-

QCA::DLGroup Class Reference
- -[QCA user API] -

-

A discrete logarithm group. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::DLGroup:
-
-
Collaboration graph
-
[legend]
- -

List of all members.

- - - - - - - - - - - - -

Public Member Functions

 DLGroup (const DLGroup &from)
 DLGroup (const BigInteger &p, const BigInteger &g)
 DLGroup (const BigInteger &p, const BigInteger &q, const BigInteger &g)
BigInteger g () const
bool isNull () const
DLGroupoperator= (const DLGroup &from)
BigInteger p () const
BigInteger q () const

Static Public Member Functions

static QList< DLGroupSetsupportedGroupSets (const QString &provider=QString())
-

Detailed Description

-

A discrete logarithm group.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QCA::DLGroup::DLGroup (const BigInteger p,
const BigInteger q,
const BigInteger g 
)
-
-
- -

Construct a discrete logarithm group from raw parameters.

-
Parameters:
- - - - -
p the P parameter
q the Q parameter
g the G parameter
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::DLGroup::DLGroup (const BigInteger p,
const BigInteger g 
)
-
-
- -

Construct a discrete logarithm group from raw parameters.

-
Parameters:
- - - -
p the P parameter
g the G parameter
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::DLGroup::DLGroup (const DLGroup from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the group to copy from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
DLGroup& QCA::DLGroup::operator= (const DLGroup from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the DLGroup to copy from
-
-
- -
-
- -
-
- - - - - - - - - -
static QList<DLGroupSet> QCA::DLGroup::supportedGroupSets (const QString provider = QString() )  [static]
-
-
- -

Provide a list of the supported group sets.

-
Parameters:
- - -
provider the provider to report which group sets are available. If not specified, all providers will be checked
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::DLGroup::isNull ( )  const
-
-
- -

Test if the group is empty.

- -
-
- -
-
- - - - - - - - -
BigInteger QCA::DLGroup::p ( )  const
-
-
- -

Provide the p component of the group.

- -
-
- -
-
- - - - - - - - -
BigInteger QCA::DLGroup::q ( )  const
-
-
- -

Provide the q component of the group.

- -
-
- -
-
- - - - - - - - -
BigInteger QCA::DLGroup::g ( )  const
-
-
- -

Provide the g component of the group.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DLGroup-members.html qca2-2.1.0/apidocs/html/classQCA_1_1DLGroup-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DLGroup-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DLGroup-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::DLGroup Member List

This is the complete list of members for QCA::DLGroup, including all inherited members. - - - - - - - - - - - -
DLGroup() (defined in QCA::DLGroup)QCA::DLGroup
DLGroup(const BigInteger &p, const BigInteger &q, const BigInteger &g)QCA::DLGroup
DLGroup(const BigInteger &p, const BigInteger &g)QCA::DLGroup
DLGroup(const DLGroup &from)QCA::DLGroup
g() const QCA::DLGroup
isNull() const QCA::DLGroup
operator=(const DLGroup &from)QCA::DLGroup
p() const QCA::DLGroup
q() const QCA::DLGroup
supportedGroupSets(const QString &provider=QString())QCA::DLGroup [static]
~DLGroup() (defined in QCA::DLGroup)QCA::DLGroup
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DSAContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1DSAContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1DSAContext__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DSAContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DSAContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1DSAContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1DSAContext__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DSAContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -a366735a85b90d904899983ecf283e1b \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1DSAContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1DSAContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DSAContext.html qca2-2.1.0/apidocs/html/classQCA_1_1DSAContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DSAContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DSAContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,275 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::DSAContext Class Reference - - - - - - -
-

QCA::DSAContext Class Reference
- -[QCA provider API] -

-

DSA provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::DSAContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - -

Public Member Functions

virtual void createPrivate (const DLGroup &domain, const BigInteger &y, const BigInteger &x)=0
virtual void createPrivate (const DLGroup &domain, bool block)=0
virtual void createPublic (const DLGroup &domain, const BigInteger &y)=0
virtual DLGroup domain () const =0
 DSAContext (Provider *p)
virtual BigInteger x () const =0
virtual BigInteger y () const =0
-

Detailed Description

-

DSA provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want DSAPublicKey or DSAPrivateKey instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::DSAContext::DSAContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::DSAContext::createPrivate (const DLGroup domain,
bool  block 
) [pure virtual]
-
-
- -

Generate a DSA private key.

-

If block is true, then this function blocks until completion. Otherwise, this function returns immediately and finished() is emitted when the operation completes.

-

If an error occurs during generation, then the operation will complete and isNull() will return true.

-
Parameters:
- - - -
domain the domain values to use for generation
block whether to use blocking mode
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual void QCA::DSAContext::createPrivate (const DLGroup domain,
const BigInteger y,
const BigInteger x 
) [pure virtual]
-
-
- -

Create a DSA private key based on its numeric components.

-
Parameters:
- - - - -
domain the domain values to use for generation
y the public Y component
x the private X component
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::DSAContext::createPublic (const DLGroup domain,
const BigInteger y 
) [pure virtual]
-
-
- -

Create a DSA public key based on its numeric components.

-
Parameters:
- - - -
domain the domain values to use for generation
y the public Y component
-
-
- -
-
- -
-
- - - - - - - - -
virtual DLGroup QCA::DSAContext::domain ( )  const [pure virtual]
-
-
- -

Returns the public domain component of this DSA key.

- -
-
- -
-
- - - - - - - - -
virtual BigInteger QCA::DSAContext::y ( )  const [pure virtual]
-
-
- -

Returns the public Y component of this DSA key.

- -
-
- -
-
- - - - - - - - -
virtual BigInteger QCA::DSAContext::x ( )  const [pure virtual]
-
-
- -

Returns the private X component of this DSA key.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DSAContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1DSAContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DSAContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DSAContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::DSAContext Member List

This is the complete list of members for QCA::DSAContext, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
bits() const =0QCA::PKeyBase [pure virtual]
canExport() const =0QCA::PKeyBase [pure virtual]
convertToPublic()=0QCA::PKeyBase [pure virtual]
createPrivate(const DLGroup &domain, bool block)=0QCA::DSAContext [pure virtual]
createPrivate(const DLGroup &domain, const BigInteger &y, const BigInteger &x)=0QCA::DSAContext [pure virtual]
createPublic(const DLGroup &domain, const BigInteger &y)=0QCA::DSAContext [pure virtual]
decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg)QCA::PKeyBase [virtual]
deriveKey(const PKeyBase &theirs)QCA::PKeyBase [virtual]
domain() const =0QCA::DSAContext [pure virtual]
DSAContext(Provider *p)QCA::DSAContext [inline]
encrypt(const SecureArray &in, EncryptionAlgorithm alg)QCA::PKeyBase [virtual]
endSign()QCA::PKeyBase [virtual]
endVerify(const QByteArray &sig)QCA::PKeyBase [virtual]
finished()QCA::PKeyBase [signal]
isNull() const =0QCA::PKeyBase [pure virtual]
isPrivate() const =0QCA::PKeyBase [pure virtual]
maximumEncryptSize(EncryptionAlgorithm alg) const QCA::PKeyBase [virtual]
PKeyBase(Provider *p, const QString &type)QCA::PKeyBase
startSign(SignatureAlgorithm alg, SignatureFormat format)QCA::PKeyBase [virtual]
startVerify(SignatureAlgorithm alg, SignatureFormat format)QCA::PKeyBase [virtual]
type() const =0QCA::PKeyBase [pure virtual]
update(const MemoryRegion &in)QCA::PKeyBase [virtual]
x() const =0QCA::DSAContext [pure virtual]
y() const =0QCA::DSAContext [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DSAPrivateKey__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1DSAPrivateKey__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1DSAPrivateKey__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DSAPrivateKey__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DSAPrivateKey__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1DSAPrivateKey__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1DSAPrivateKey__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DSAPrivateKey__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -e0e5365b878e0074c1c0a3957a9ca5ae \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1DSAPrivateKey__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1DSAPrivateKey__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DSAPrivateKey.html qca2-2.1.0/apidocs/html/classQCA_1_1DSAPrivateKey.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DSAPrivateKey.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DSAPrivateKey.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::DSAPrivateKey Class Reference - - - - - - -
-

QCA::DSAPrivateKey Class Reference
- -[QCA user API] -

-

Digital Signature Algorithm Private Key. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::DSAPrivateKey:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - -

Public Member Functions

DLGroup domain () const
 DSAPrivateKey (const DLGroup &domain, const BigInteger &y, const BigInteger &x, const QString &provider=QString())
 DSAPrivateKey ()
BigInteger x () const
BigInteger y () const
-

Detailed Description

-

Digital Signature Algorithm Private Key.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::DSAPrivateKey::DSAPrivateKey ( ) 
-
-
- -

Create an empty DSA private key.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
QCA::DSAPrivateKey::DSAPrivateKey (const DLGroup domain,
const BigInteger y,
const BigInteger x,
const QString provider = QString() 
)
-
-
- -

Create a DSA public key.

-
Parameters:
- - - - - -
domain the discrete logarithm group to use
y the public random value
x the private random value
provider the provider to use, if a specific provider is required
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
DLGroup QCA::DSAPrivateKey::domain ( )  const
-
-
- -

The discrete logarithm group that is being used.

- -
-
- -
-
- - - - - - - - -
BigInteger QCA::DSAPrivateKey::y ( )  const
-
-
- -

the public random value

- -
-
- -
-
- - - - - - - - -
BigInteger QCA::DSAPrivateKey::x ( )  const
-
-
- -

the private random value

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DSAPrivateKey-members.html qca2-2.1.0/apidocs/html/classQCA_1_1DSAPrivateKey-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DSAPrivateKey-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DSAPrivateKey-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::DSAPrivateKey Member List

This is the complete list of members for QCA::DSAPrivateKey, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
bitSize() const QCA::PKey
canDecrypt() const QCA::PrivateKey
canExport() const QCA::PKey
canKeyAgree() const QCA::PKey
canSign() const QCA::PrivateKey
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg)QCA::PrivateKey
deriveKey(const PublicKey &theirs)QCA::PrivateKey
DH enum valueQCA::PKey
domain() const QCA::DSAPrivateKey
DSA enum valueQCA::PKey
DSAPrivateKey()QCA::DSAPrivateKey
DSAPrivateKey(const DLGroup &domain, const BigInteger &y, const BigInteger &x, const QString &provider=QString())QCA::DSAPrivateKey
fromDER(const SecureArray &a, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())QCA::PrivateKey [static]
fromPEM(const QString &s, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())QCA::PrivateKey [static]
fromPEMFile(const QString &fileName, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())QCA::PrivateKey [static]
isDH() const QCA::PKey
isDSA() const QCA::PKey
isNull() const QCA::PKey
isPrivate() const QCA::PKey
isPublic() const QCA::PKey
isRSA() const QCA::PKey
operator!=(const PKey &a) const QCA::PKey
operator=(const PrivateKey &from)QCA::PrivateKey
QCA::PKey::operator=(const PKey &from)QCA::PKey
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
operator==(const PKey &a) const QCA::PKey
PKey()QCA::PKey
PKey(const PKey &from)QCA::PKey
PKey(const QString &type, const QString &provider)QCA::PKey [protected]
PrivateKey()QCA::PrivateKey
PrivateKey(const QString &fileName, const SecureArray &passphrase=SecureArray())QCA::PrivateKey [explicit]
PrivateKey(const PrivateKey &from)QCA::PrivateKey
PrivateKey(const QString &type, const QString &provider)QCA::PrivateKey [protected]
provider() const QCA::Algorithm
RSA enum valueQCA::PKey
set(const PKey &k)QCA::PKey [protected]
signature()QCA::PrivateKey
signMessage(const MemoryRegion &a, SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PrivateKey
startSign(SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PrivateKey
supportedIOTypes(const QString &provider=QString())QCA::PKey [static]
supportedPBEAlgorithms(const QString &provider=QString())QCA::PrivateKey [static]
supportedTypes(const QString &provider=QString())QCA::PKey [static]
takeContext()QCA::Algorithm
toDER(const SecureArray &passphrase=SecureArray(), PBEAlgorithm pbe=PBEDefault) const QCA::PrivateKey
toDH() const QCA::PrivateKey
toDHPrivateKey() const QCA::PKey [protected]
toDHPublicKey() const QCA::PKey [protected]
toDSA() const QCA::PrivateKey
toDSAPrivateKey() const QCA::PKey [protected]
toDSAPublicKey() const QCA::PKey [protected]
toPEM(const SecureArray &passphrase=SecureArray(), PBEAlgorithm pbe=PBEDefault) const QCA::PrivateKey
toPEMFile(const QString &fileName, const SecureArray &passphrase=SecureArray(), PBEAlgorithm pbe=PBEDefault) const QCA::PrivateKey
toPrivateKey() const QCA::PKey
toPublicKey() const QCA::PKey
toRSA() const QCA::PrivateKey
toRSAPrivateKey() const QCA::PKey [protected]
toRSAPublicKey() const QCA::PKey [protected]
type() const QCA::PKey
Type enum nameQCA::PKey
update(const MemoryRegion &a)QCA::PrivateKey
x() const QCA::DSAPrivateKey
y() const QCA::DSAPrivateKey
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~PKey() (defined in QCA::PKey)QCA::PKey
~PrivateKey() (defined in QCA::PrivateKey)QCA::PrivateKey
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DSAPublicKey__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1DSAPublicKey__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1DSAPublicKey__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DSAPublicKey__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DSAPublicKey__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1DSAPublicKey__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1DSAPublicKey__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DSAPublicKey__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -acbf02798f646f124a5e7fdaa2b02bdd \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1DSAPublicKey__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1DSAPublicKey__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DSAPublicKey.html qca2-2.1.0/apidocs/html/classQCA_1_1DSAPublicKey.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DSAPublicKey.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DSAPublicKey.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::DSAPublicKey Class Reference - - - - - - -
-

QCA::DSAPublicKey Class Reference
- -[QCA user API] -

-

Digital Signature Algorithm Public Key. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::DSAPublicKey:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - -

Public Member Functions

DLGroup domain () const
 DSAPublicKey (const DSAPrivateKey &k)
 DSAPublicKey (const DLGroup &domain, const BigInteger &y, const QString &provider=QString())
 DSAPublicKey ()
BigInteger y () const
-

Detailed Description

-

Digital Signature Algorithm Public Key.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::DSAPublicKey::DSAPublicKey ( ) 
-
-
- -

Create an empty DSA public key.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QCA::DSAPublicKey::DSAPublicKey (const DLGroup domain,
const BigInteger y,
const QString provider = QString() 
)
-
-
- -

Create a DSA public key.

-
Parameters:
- - - - -
domain the discrete logarithm group to use
y the public random value
provider the provider to use, if a specific provider is required
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::DSAPublicKey::DSAPublicKey (const DSAPrivateKey k ) 
-
-
- -

Create a DSA public key from a specified private key.

-
Parameters:
- - -
k the DSA private key to use as the source
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
DLGroup QCA::DSAPublicKey::domain ( )  const
-
-
- -

The discrete logarithm group that is being used.

- -
-
- -
-
- - - - - - - - -
BigInteger QCA::DSAPublicKey::y ( )  const
-
-
- -

The public random value associated with this key.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1DSAPublicKey-members.html qca2-2.1.0/apidocs/html/classQCA_1_1DSAPublicKey-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1DSAPublicKey-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1DSAPublicKey-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::DSAPublicKey Member List

This is the complete list of members for QCA::DSAPublicKey, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
bitSize() const QCA::PKey
canEncrypt() const QCA::PublicKey
canExport() const QCA::PKey
canKeyAgree() const QCA::PKey
canVerify() const QCA::PublicKey
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
DH enum valueQCA::PKey
domain() const QCA::DSAPublicKey
DSA enum valueQCA::PKey
DSAPublicKey()QCA::DSAPublicKey
DSAPublicKey(const DLGroup &domain, const BigInteger &y, const QString &provider=QString())QCA::DSAPublicKey
DSAPublicKey(const DSAPrivateKey &k)QCA::DSAPublicKey
encrypt(const SecureArray &a, EncryptionAlgorithm alg)QCA::PublicKey
fromDER(const QByteArray &a, ConvertResult *result=0, const QString &provider=QString())QCA::PublicKey [static]
fromPEM(const QString &s, ConvertResult *result=0, const QString &provider=QString())QCA::PublicKey [static]
fromPEMFile(const QString &fileName, ConvertResult *result=0, const QString &provider=QString())QCA::PublicKey [static]
isDH() const QCA::PKey
isDSA() const QCA::PKey
isNull() const QCA::PKey
isPrivate() const QCA::PKey
isPublic() const QCA::PKey
isRSA() const QCA::PKey
maximumEncryptSize(EncryptionAlgorithm alg) const QCA::PublicKey
operator!=(const PKey &a) const QCA::PKey
operator=(const PublicKey &from)QCA::PublicKey
QCA::PKey::operator=(const PKey &from)QCA::PKey
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
operator==(const PKey &a) const QCA::PKey
PKey()QCA::PKey
PKey(const PKey &from)QCA::PKey
PKey(const QString &type, const QString &provider)QCA::PKey [protected]
provider() const QCA::Algorithm
PublicKey()QCA::PublicKey
PublicKey(const PrivateKey &k)QCA::PublicKey
PublicKey(const QString &fileName)QCA::PublicKey
PublicKey(const PublicKey &from)QCA::PublicKey
PublicKey(const QString &type, const QString &provider)QCA::PublicKey [protected]
RSA enum valueQCA::PKey
set(const PKey &k)QCA::PKey [protected]
startVerify(SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PublicKey
supportedIOTypes(const QString &provider=QString())QCA::PKey [static]
supportedTypes(const QString &provider=QString())QCA::PKey [static]
takeContext()QCA::Algorithm
toDER() const QCA::PublicKey
toDH() const QCA::PublicKey
toDHPrivateKey() const QCA::PKey [protected]
toDHPublicKey() const QCA::PKey [protected]
toDSA() const QCA::PublicKey
toDSAPrivateKey() const QCA::PKey [protected]
toDSAPublicKey() const QCA::PKey [protected]
toPEM() const QCA::PublicKey
toPEMFile(const QString &fileName) const QCA::PublicKey
toPrivateKey() const QCA::PKey
toPublicKey() const QCA::PKey
toRSA() const QCA::PublicKey
toRSAPrivateKey() const QCA::PKey [protected]
toRSAPublicKey() const QCA::PKey [protected]
type() const QCA::PKey
Type enum nameQCA::PKey
update(const MemoryRegion &a)QCA::PublicKey
validSignature(const QByteArray &sig)QCA::PublicKey
verifyMessage(const MemoryRegion &a, const QByteArray &sig, SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PublicKey
y() const QCA::DSAPublicKey
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~PKey() (defined in QCA::PKey)QCA::PKey
~PublicKey() (defined in QCA::PublicKey)QCA::PublicKey
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Event__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1Event__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1Event__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Event__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Event__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1Event__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1Event__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Event__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -8d5b23d3ee69a838f88728a851b0de5a \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1Event__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1Event__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1EventHandler__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1EventHandler__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1EventHandler__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1EventHandler__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1EventHandler__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1EventHandler__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1EventHandler__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1EventHandler__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -504cc834d6b67a4d38fe1d518184d92e \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1EventHandler__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1EventHandler__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1EventHandler.html qca2-2.1.0/apidocs/html/classQCA_1_1EventHandler.html --- qca2-2.0.3/apidocs/html/classQCA_1_1EventHandler.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1EventHandler.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,255 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::EventHandler Class Reference - - - - - - -
-

QCA::EventHandler Class Reference
- -[QCA user API] -

-

Interface class for password / passphrase / PIN and token handlers. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::EventHandler:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - -

Signals

void eventReady (int id, const QCA::Event &context)

Public Member Functions

 EventHandler (QObject *parent=0)
void reject (int id)
void start ()
void submitPassword (int id, const SecureArray &password)
void tokenOkay (int id)

Friends

-class Private
-

Detailed Description

-

Interface class for password / passphrase / PIN and token handlers.

-

This class is used on client side applications to handle the provision of passwords, passphrases and PINs by users, and to indicate that tokens have been correctly inserted.

-

The concept behind this class is that the library can raise events (typically using PasswordAsker or TokenAsker), which may (or may not) be handled by the application using a handler object (that has-a EventHandler, or possibly is-a EventHandler) that is connected to the eventReady() signal.

-
Examples:
-

eventhandlerdemo.cpp, and keyloader.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::EventHandler::EventHandler (QObject parent = 0 ) 
-
-
- -

Constructor.

-
Parameters:
- - -
parent the parent object for this object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
void QCA::EventHandler::start ( ) 
-
-
- -

mandatory function to call after connecting the signal to a slot in your application specific password / passphrase / PIN or token handler

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::EventHandler::submitPassword (int  id,
const SecureArray password 
)
-
-
- -

function to call to return the user provided password, passphrase or PIN.

-
Parameters:
- - - -
id the id corresponding to the password request
password the user-provided password, passphrase or PIN.
-
-
-
Note:
the id parameter is the same as that provided in the eventReady() signal.
- -
-
- -
-
- - - - - - - - - -
void QCA::EventHandler::tokenOkay (int  id ) 
-
-
- -

function to call to indicate that the token has been inserted by the user.

-
Parameters:
- - -
id the id corresponding to the password request
-
-
-
Note:
the id parameter is the same as that provided in the eventReady() signal.
- -
-
- -
-
- - - - - - - - - -
void QCA::EventHandler::reject (int  id ) 
-
-
- -

function to call to indicate that the user declined to provide a password, passphrase, PIN or token.

-
Parameters:
- - -
id the id corresponding to the password request
-
-
-
Note:
the id parameter is the same as that provided in the eventReady() signal.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::EventHandler::eventReady (int  id,
const QCA::Event context 
) [signal]
-
-
- -

signal emitted when an Event requires attention.

-

You typically need to connect this signal to a compatible slot in your callback handler

-
Parameters:
- - - -
id the identification number for the event
context information about the type of response required
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1EventHandler-members.html qca2-2.1.0/apidocs/html/classQCA_1_1EventHandler-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1EventHandler-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1EventHandler-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,87 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::EventHandler Member List

This is the complete list of members for QCA::EventHandler, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
blockSignals(bool block)QObject
childEvent(QChildEvent *event)QObject
children()QObject
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
EventHandler(QObject *parent=0)QCA::EventHandler
eventReady(int id, const QCA::Event &context)QCA::EventHandler [signal]
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
parent()QObject
Private (defined in QCA::EventHandler)QCA::EventHandler [friend]
property(const char *name)QObject
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
reject(int id)QCA::EventHandler
removeEventFilter(QObject *obj)QObject
sender()QObject
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
start()QCA::EventHandler
startTimer(int interval)QObject
submitPassword(int id, const SecureArray &password)QCA::EventHandler
thread()QObject
timerEvent(QTimerEvent *event)QObject
tokenOkay(int id)QCA::EventHandler
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
~EventHandler() (defined in QCA::EventHandler)QCA::EventHandler
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Event.html qca2-2.1.0/apidocs/html/classQCA_1_1Event.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Event.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Event.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,577 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::Event Class Reference - - - - - - -
-

QCA::Event Class Reference
- -[QCA user API] -

-

An asynchronous event. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::Event:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - -

Public Types

enum  PasswordStyle { StylePassword, -StylePassphrase, -StylePIN - }
enum  Source { KeyStore, -Data - }
enum  Type { Password, -Token - }

Public Member Functions

 Event (const Event &from)
 Event ()
QString fileName () const
bool isNull () const
KeyStoreEntry keyStoreEntry () const
KeyStoreInfo keyStoreInfo () const
Eventoperator= (const Event &from)
PasswordStyle passwordStyle () const
void * ptr () const
void setPasswordData (PasswordStyle pstyle, const QString &fileName, void *ptr)
void setPasswordKeyStore (PasswordStyle pstyle, const KeyStoreInfo &keyStoreInfo, const KeyStoreEntry &keyStoreEntry, void *ptr)
void setToken (const KeyStoreInfo &keyStoreInfo, const KeyStoreEntry &keyStoreEntry, void *ptr)
Source source () const
Type type () const
 ~Event ()
-

Detailed Description

-

An asynchronous event.

-

Events are produced in response to the library's need for some user intervention, such as entering a pin or password, or inserting a cryptographic token.

-

Event is an abstraction, so you can handle this need in a way that makes sense for your application.

-
Examples:
-

eventhandlerdemo.cpp, and keyloader.cpp.

-
-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::Event::Type
-
-
- -

Type of event

-
See also:
type()
-
Enumerator:
- - -
Password  -

Asking for a password, PIN or passphrase.

-
Token  -

Asking for a token.

-
-
-
- -
-
- -
-
- - - - -
enum QCA::Event::Source
-
-
- -

Source of the event

-

Events are associated with access to a KeyStore, or access to a file (or bytearray/stream or equivalent). This tells you the type of source that caused the Event.

-
See also:
source()
-
-fileName() for the name, if source is Event::Data
-
-keyStoreInfo() and keyStoreEntry() for the keystore and entry, if the source is Event::KeyStore
-
Enumerator:
- - -
KeyStore  -

KeyStore generated the event.

-
Data  -

File or bytearray generated the event.

-
-
-
- -
-
- -
-
- - - - -
enum QCA::Event::PasswordStyle
-
-
- -

password variation

-

If the Type of Event is Password, PasswordStyle tells you whether it is a PIN, passphrase or password.

-
See also:
passwordStyle()
-
Enumerator:
- - - -
StylePassword  -

User should be prompted for a "Password".

-
StylePassphrase  -

User should be prompted for a "Passphrase".

-
StylePIN  -

User should be prompted for a "PIN".

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::Event::Event ( ) 
-
-
- -

Constructor.

- -
-
- -
-
- - - - - - - - - -
QCA::Event::Event (const Event from ) 
-
-
- -

Copy constructor.

-
Parameters:
- - -
from the Event to copy from
-
-
- -
-
- -
-
- - - - - - - - -
QCA::Event::~Event ( ) 
-
-
- -

Destructor.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
Event& QCA::Event::operator= (const Event from ) 
-
-
- -

Assignment operator.

-
Parameters:
- - -
from the Event to copy from
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::Event::isNull ( )  const
-
-
- -

test if this event has been setup correctly

-
Examples:
eventhandlerdemo.cpp.
-
-
-
- -
-
- - - - - - - - -
Type QCA::Event::type ( )  const
-
-
- -

the Type of this event

-
Examples:
eventhandlerdemo.cpp, and keyloader.cpp.
-
-
-
- -
-
- - - - - - - - -
Source QCA::Event::source ( )  const
-
-
- -

the Source of this event

-
Examples:
eventhandlerdemo.cpp.
-
-
-
- -
-
- - - - - - - - -
PasswordStyle QCA::Event::passwordStyle ( )  const
-
-
- -

the style of password required.

-

This is not meaningful unless the Type is Event::Password.

-
See also:
PasswordStyle
-
Examples:
eventhandlerdemo.cpp.
-
-
-
- -
-
- - - - - - - - -
KeyStoreInfo QCA::Event::keyStoreInfo ( )  const
-
-
- -

The info of the KeyStore associated with this event.

-

This is not meaningful unless the Source is KeyStore.

- -
-
- -
-
- - - - - - - - -
KeyStoreEntry QCA::Event::keyStoreEntry ( )  const
-
-
- -

The KeyStoreEntry associated with this event.

-

This is not meaningful unless the Source is KeyStore.

- -
-
- -
-
- - - - - - - - -
QString QCA::Event::fileName ( )  const
-
-
- -

Name or other identifier for the file or byte array associated with this event.

-

This is not meaningful unless the Source is Data.

-
Examples:
eventhandlerdemo.cpp.
-
-
-
- -
-
- - - - - - - - -
void* QCA::Event::ptr ( )  const
-
-
- -

opaque data

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void QCA::Event::setPasswordKeyStore (PasswordStyle  pstyle,
const KeyStoreInfo keyStoreInfo,
const KeyStoreEntry keyStoreEntry,
void *  ptr 
)
-
-
- -

Set the values for this Event.

-

This creates a Password type event, for a keystore.

-
Parameters:
- - - - - -
pstyle the style of information required (e.g. PIN, password or passphrase)
keyStoreInfo info about the keystore that the information is required for
keyStoreEntry the entry in the keystore that the information is required for
ptr opaque data
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void QCA::Event::setPasswordData (PasswordStyle  pstyle,
const QString fileName,
void *  ptr 
)
-
-
- -

Set the values for this Event.

-

This creates a Password type event, for a file.

-
Parameters:
- - - - -
pstyle the style of information required (e.g. PIN, password or passphrase)
fileName the name of the file (or other identifier) that the information is required for
ptr opaque data
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void QCA::Event::setToken (const KeyStoreInfo keyStoreInfo,
const KeyStoreEntry keyStoreEntry,
void *  ptr 
)
-
-
- -

Set the values for this Event.

-

This creates a Token type event.

-
Parameters:
- - - - -
keyStoreInfo info about the keystore that the token is required for
keyStoreEntry the entry in the keystore that the token is required for
ptr opaque data
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Event-members.html qca2-2.1.0/apidocs/html/classQCA_1_1Event-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Event-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Event-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::Event Member List

This is the complete list of members for QCA::Event, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - -
Data enum valueQCA::Event
Event()QCA::Event
Event(const Event &from)QCA::Event
fileName() const QCA::Event
isNull() const QCA::Event
KeyStore enum valueQCA::Event
keyStoreEntry() const QCA::Event
keyStoreInfo() const QCA::Event
operator=(const Event &from)QCA::Event
Password enum valueQCA::Event
passwordStyle() const QCA::Event
PasswordStyle enum nameQCA::Event
ptr() const QCA::Event
setPasswordData(PasswordStyle pstyle, const QString &fileName, void *ptr)QCA::Event
setPasswordKeyStore(PasswordStyle pstyle, const KeyStoreInfo &keyStoreInfo, const KeyStoreEntry &keyStoreEntry, void *ptr)QCA::Event
setToken(const KeyStoreInfo &keyStoreInfo, const KeyStoreEntry &keyStoreEntry, void *ptr)QCA::Event
source() const QCA::Event
Source enum nameQCA::Event
StylePassphrase enum valueQCA::Event
StylePassword enum valueQCA::Event
StylePIN enum valueQCA::Event
Token enum valueQCA::Event
Type enum nameQCA::Event
type() const QCA::Event
~Event()QCA::Event
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1FileWatch__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1FileWatch__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1FileWatch__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1FileWatch__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1FileWatch__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1FileWatch__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1FileWatch__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1FileWatch__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -e1655074bc25ecd53f6ac7ba8defedfd \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1FileWatch__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1FileWatch__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1FileWatch.html qca2-2.1.0/apidocs/html/classQCA_1_1FileWatch.html --- qca2-2.0.3/apidocs/html/classQCA_1_1FileWatch.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1FileWatch.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,178 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::FileWatch Class Reference - - - - - - -
-

QCA::FileWatch Class Reference
- -[QCA user API] -

-

Support class to monitor a file for activity. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::FileWatch:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - -

Signals

void changed ()

Public Member Functions

QString fileName () const
 FileWatch (const QString &file=QString(), QObject *parent=0)
void setFileName (const QString &file)

Friends

-class Private
-

Detailed Description

-

Support class to monitor a file for activity.

-

FileWatch monitors a specified file for any changes. When the file changes, the changed() signal is emitted.

-
Note:
QFileSystemWatcher has very similar functionality to this class. You should evaluate this class and QFileSystemWatcher to determine which better suits your application needs.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::FileWatch::FileWatch (const QString file = QString(),
QObject parent = 0 
) [explicit]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
file the name of the file to watch. If not in this object, you can set it using setFileName()
parent the parent object for this object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
QString QCA::FileWatch::fileName ( )  const
-
-
- -

The name of the file that is being monitored.

- -
-
- -
-
- - - - - - - - - -
void QCA::FileWatch::setFileName (const QString file ) 
-
-
- -

Change the file being monitored.

-
Parameters:
- - -
file the name of the file to monitor
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::FileWatch::changed ( )  [signal]
-
-
- -

The changed signal is emitted when the file is changed (e.g.

-

modified, deleted)

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1FileWatch-members.html qca2-2.1.0/apidocs/html/classQCA_1_1FileWatch-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1FileWatch-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1FileWatch-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,85 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::FileWatch Member List

This is the complete list of members for QCA::FileWatch, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
blockSignals(bool block)QObject
changed()QCA::FileWatch [signal]
childEvent(QChildEvent *event)QObject
children()QObject
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
fileName() const QCA::FileWatch
FileWatch(const QString &file=QString(), QObject *parent=0)QCA::FileWatch [explicit]
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
parent()QObject
Private (defined in QCA::FileWatch)QCA::FileWatch [friend]
property(const char *name)QObject
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
sender()QObject
setFileName(const QString &file)QCA::FileWatch
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
startTimer(int interval)QObject
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
~FileWatch() (defined in QCA::FileWatch)QCA::FileWatch
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Filter.html qca2-2.1.0/apidocs/html/classQCA_1_1Filter.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Filter.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Filter.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,187 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::Filter Class Reference - - - - - - -
-

QCA::Filter Class Reference
- -[QCA user API] -

-

General superclass for filtering transformation algorithms. -More...

- -

#include <QtCrypto>

- -

List of all members.

- - - - - - - -

Public Member Functions

virtual void clear ()=0
virtual MemoryRegion final ()=0
virtual bool ok () const =0
MemoryRegion process (const MemoryRegion &a)
virtual MemoryRegion update (const MemoryRegion &a)=0
-

Detailed Description

-

General superclass for filtering transformation algorithms.

-

A filtering computation is characterised by having the algorithm take input data in an incremental way, with results delivered for each input, or block of input. Some internal state may be managed, with the transformation completed when final() is called.

-

If this seems a big vague, then you might try deriving your class from a subclass with stronger semantics, or if your update() function is always returning null results, and everything comes out at final(), try BufferedComputation.

-

Member Function Documentation

- -
-
- - - - - - - - -
virtual void QCA::Filter::clear ( )  [pure virtual]
-
-
- -

Reset the internal state.

- -

Implemented in QCA::Cipher, QCA::Hex, and QCA::Base64.

- -
-
- -
-
- - - - - - - - - -
virtual MemoryRegion QCA::Filter::update (const MemoryRegion a )  [pure virtual]
-
-
- -

Process more data, returning the corresponding filtered version of the data.

-
Parameters:
- - -
a the array containing data to process
-
-
- -

Implemented in QCA::Cipher, QCA::Hex, and QCA::Base64.

- -
-
- -
-
- - - - - - - - -
virtual MemoryRegion QCA::Filter::final ( )  [pure virtual]
-
-
- -

Complete the algorithm, returning any additional results.

- -

Implemented in QCA::Cipher, QCA::Hex, and QCA::Base64.

- -
-
- -
-
- - - - - - - - -
virtual bool QCA::Filter::ok ( )  const [pure virtual]
-
-
- -

Test if an update() or final() call succeeded.

-
Returns:
true if the previous call succeeded
- -

Implemented in QCA::Cipher, QCA::Hex, and QCA::Base64.

- -
-
- -
-
- - - - - - - - - -
MemoryRegion QCA::Filter::process (const MemoryRegion a ) 
-
-
- -

Perform an "all in one" update, returning the result.

-

This is appropriate if you have all the data in one array - just call process on that array, and you will get back the results of the computation.

-
Note:
This will invalidate any previous computation using this object.
-
Parameters:
- - -
a the data to process in this step
-
-
-
Examples:
aes-cmac.cpp, and ciphertest.cpp.
-
-
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Filter-members.html qca2-2.1.0/apidocs/html/classQCA_1_1Filter-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Filter-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Filter-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::Filter Member List

This is the complete list of members for QCA::Filter, including all inherited members. - - - - - - -
clear()=0QCA::Filter [pure virtual]
final()=0QCA::Filter [pure virtual]
ok() const =0QCA::Filter [pure virtual]
process(const MemoryRegion &a)QCA::Filter
update(const MemoryRegion &a)=0QCA::Filter [pure virtual]
~Filter() (defined in QCA::Filter)QCA::Filter [virtual]
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Hash__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1Hash__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1Hash__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Hash__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Hash__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1Hash__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1Hash__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Hash__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -de7d8e3025784dbd5d20c7f581a7a32f \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1Hash__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1Hash__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1HashContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1HashContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1HashContext__coll__graph.map 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1HashContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1HashContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1HashContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1HashContext__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1HashContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -07c650e37f49088bd3d9816fd7ecb10d \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1HashContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1HashContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1HashContext.html qca2-2.1.0/apidocs/html/classQCA_1_1HashContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1HashContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1HashContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,172 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::HashContext Class Reference - - - - - - -
-

QCA::HashContext Class Reference
- -[QCA provider API] -

-

Hash provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::HashContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - -

Public Member Functions

virtual void clear ()=0
virtual MemoryRegion final ()=0
 HashContext (Provider *p, const QString &type)
virtual void update (const MemoryRegion &a)=0
-

Detailed Description

-

Hash provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want Hash instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::HashContext::HashContext (Provider p,
const QString type 
) [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
p the provider associated with this context
type the name of the type of hash provided by this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual void QCA::HashContext::clear ( )  [pure virtual]
-
-
- -

Reset the object to its initial state.

- -
-
- -
-
- - - - - - - - - -
virtual void QCA::HashContext::update (const MemoryRegion a )  [pure virtual]
-
-
- -

Process a chunk of data.

-
Parameters:
- - -
a the input data to process
-
-
- -
-
- -
-
- - - - - - - - -
virtual MemoryRegion QCA::HashContext::final ( )  [pure virtual]
-
-
- -

Return the computed hash.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1HashContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1HashContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1HashContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1HashContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::HashContext Member List

This is the complete list of members for QCA::HashContext, including all inherited members. - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
clear()=0QCA::HashContext [pure virtual]
final()=0QCA::HashContext [pure virtual]
HashContext(Provider *p, const QString &type)QCA::HashContext [inline]
update(const MemoryRegion &a)=0QCA::HashContext [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Hash.html qca2-2.1.0/apidocs/html/classQCA_1_1Hash.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Hash.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Hash.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,475 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::Hash Class Reference - - - - - - -
-

QCA::Hash Class Reference
- -[QCA user API] -

-

General class for hashing algorithms. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::Hash:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - -

Public Member Functions

virtual void clear ()
virtual MemoryRegion final ()
MemoryRegion hash (const MemoryRegion &array)
 Hash (const Hash &from)
 Hash (const QString &type, const QString &provider=QString())
QString hashToString (const MemoryRegion &array)
Hashoperator= (const Hash &from)
QString type () const
void update (QIODevice *file)
void update (const char *data, int len=-1)
void update (const QByteArray &a)
virtual void update (const MemoryRegion &a)

Static Public Member Functions

static QStringList supportedTypes (const QString &provider=QString())
-

Detailed Description

-

General class for hashing algorithms.

-

Hash is the class for the various hashing algorithms within QCA. SHA256, SHA1 or RIPEMD160 are recommended for new applications, although MD2, MD4, MD5 or SHA0 may be applicable (for interoperability reasons) for some applications.

-

To perform a hash, you create a Hash object, call update() with the data that needs to be hashed, and then call final(), which returns a QByteArray of the hash result. An example (using the SHA1 hash, with 1000 updates of a 1000 byte string) is shown below:

-
if(!QCA::isSupported("sha1"))
-        printf("SHA1 not supported!\n");
-else
-{
-        QByteArray fillerString;
-        fillerString.fill('a', 1000);
-
-        QCA::Hash shaHash("sha1");
-        for (int i=0; i<1000; i++)
-                shaHash.update(fillerString);
-        QByteArray hashResult = shaHash.final();
-        if ( "34aa973cd4c4daa4f61eeb2bdbad27316534016f" == QCA::arrayToHex(hashResult) )
-        {
-                printf("big SHA1 is OK\n");
-        }
-        else
-        {
-                printf("big SHA1 failed\n");
-        }
-}
-

If you only have a simple hash requirement - a single string that is fully available in memory at one time - then you may be better off with one of the convenience methods. So, for example, instead of creating a QCA::Hash object, then doing a single update() and the final() call; you could simply call QCA::Hash("algoName").hash() with the data that you would otherwise have provided to the update() call.

-

For more information on hashing algorithms, see Hashing Algorithms.

-
Examples:
-

hashtest.cpp, and md5crypt.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::Hash::Hash (const QString type,
const QString provider = QString() 
) [explicit]
-
-
- -

Constructor.

-
Parameters:
- - - -
type label for the type of hash to be created (for example, "sha1" or "md2")
provider the name of the provider plugin for the subclass (eg "qca-ossl")
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::Hash::Hash (const Hash from ) 
-
-
- -

Copy constructor.

-
Parameters:
- - -
from the Hash object to copy from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
Hash& QCA::Hash::operator= (const Hash from ) 
-
-
- -

Assignment operator.

-
Parameters:
- - -
from the Hash object to copy state from
-
-
- -
-
- -
-
- - - - - - - - - -
static QStringList QCA::Hash::supportedTypes (const QString provider = QString() )  [static]
-
-
- -

Returns a list of all of the hash types available.

-
Parameters:
- - -
provider the name of the provider to get a list from, if one provider is required. If not specified, available hash types from all providers will be returned.
-
-
- -
-
- -
-
- - - - - - - - -
QString QCA::Hash::type ( )  const
-
-
- -

Return the hash type.

- -

Reimplemented from QCA::Algorithm.

- -
-
- -
-
- - - - - - - - -
virtual void QCA::Hash::clear ( )  [virtual]
-
-
- -

Reset a hash, dumping all previous parts of the message.

-

This method clears (or resets) the hash algorithm, effectively undoing any previous update() calls. You should use this call if you are re-using a Hash sub-class object to calculate additional hashes.

- -

Implements QCA::BufferedComputation.

- -
-
- -
-
- - - - - - - - - -
virtual void QCA::Hash::update (const MemoryRegion a )  [virtual]
-
-
- -

Update a hash, adding more of the message contents to the digest.

-

The whole message needs to be added using this method before you call final().

-

If you find yourself only calling update() once, you may be better off using a convenience method such as hash() or hashToString() instead.

-
Parameters:
- - -
a the byte array to add to the hash
-
-
- -

Implements QCA::BufferedComputation.

- -
-
- -
-
- - - - - - - - - -
void QCA::Hash::update (const QByteArray a ) 
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
Parameters:
- - -
a the QByteArray to add to the hash
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::Hash::update (const char *  data,
int  len = -1 
)
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. This method is provided to assist with code that already exists, and is being ported to QCA.

-

You are better off passing a SecureArray (as shown above) if you are writing new code.

-
Parameters:
- - - -
data pointer to a char array
len the length of the array. If not specified (or specified as a negative number), the length will be determined with strlen(), which may not be what you want if the array contains a null (0x00) character.
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::Hash::update (QIODevice file ) 
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. This allows you to read from a file or other I/O device.

-

Note that the device must be already open for reading

-
Parameters:
- - -
file an I/O device
-
-
-

If you are trying to calculate the hash of a whole file (and it isn't already open), you might want to use code like this:

-
QFile f( "file.dat" );
-if ( f1.open( IO_ReadOnly ) )
-{
-        QCA::Hash hashObj("sha1");
-        hashObj.update( &f1 );
-        QString output = hashObj.final() ) ),
-}
-
-
-
- -
-
- - - - - - - - -
virtual MemoryRegion QCA::Hash::final ( )  [virtual]
-
-
- -

Finalises input and returns the hash result.

-

After calling update() with the required data, the hash results are finalised and produced.

-

Note that it is not possible to add further data (with update()) after calling final(), because of the way the hashing works - null bytes are inserted to pad the results up to a fixed size. If you want to reuse the Hash object, you should call clear() and start to update() again.

- -

Implements QCA::BufferedComputation.

- -
-
- -
-
- - - - - - - - - -
MemoryRegion QCA::Hash::hash (const MemoryRegion array ) 
-
-
- -

Hash a byte array, returning it as another byte array

-

This is a convenience method that returns the hash of a SecureArray.

-
SecureArray sampleArray(3);
-sampleArray.fill('a');
-SecureArray outputArray = QCA::Hash("md2")::hash(sampleArray);
-
Parameters:
- - -
array the QByteArray to hash
-
-
-

If you need more flexibility (e.g. you are constructing a large byte array object just to pass it to hash(), then consider creating an Hash object, and then calling update() and final().

- -
-
- -
-
- - - - - - - - - -
QString QCA::Hash::hashToString (const MemoryRegion array ) 
-
-
- -

Hash a byte array, returning it as a printable string

-

This is a convenience method that returns the hash of a QSeecureArray as a hexadecimal representation encoded in a QString.

-
Parameters:
- - -
array the QByteArray to hash
-
-
-

If you need more flexibility, you can create a Hash object, call Hash::update() as required, then call Hash::final(), before using the static arrayToHex() method.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Hash-members.html qca2-2.1.0/apidocs/html/classQCA_1_1Hash-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Hash-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Hash-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::Hash Member List

This is the complete list of members for QCA::Hash, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
clear()QCA::Hash [virtual]
context()QCA::Algorithm
context() const QCA::Algorithm
final()QCA::Hash [virtual]
Hash(const QString &type, const QString &provider=QString())QCA::Hash [explicit]
Hash(const Hash &from)QCA::Hash
hash(const MemoryRegion &array)QCA::Hash
hashToString(const MemoryRegion &array)QCA::Hash
operator=(const Hash &from)QCA::Hash
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
process(const MemoryRegion &a)QCA::BufferedComputation
provider() const QCA::Algorithm
supportedTypes(const QString &provider=QString())QCA::Hash [static]
takeContext()QCA::Algorithm
type() const QCA::Hash
update(const MemoryRegion &a)QCA::Hash [virtual]
update(const QByteArray &a)QCA::Hash
update(const char *data, int len=-1)QCA::Hash
update(QIODevice *file)QCA::Hash
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~BufferedComputation() (defined in QCA::BufferedComputation)QCA::BufferedComputation [virtual]
~Hash() (defined in QCA::Hash)QCA::Hash
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Hex__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1Hex__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1Hex__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Hex__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Hex__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1Hex__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1Hex__coll__graph.md5 2010-11-27 21:30:38.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Hex__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -b486c107aa0592cf07a33b0d47a2c864 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1Hex__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1Hex__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Hex.html qca2-2.1.0/apidocs/html/classQCA_1_1Hex.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Hex.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Hex.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,197 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::Hex Class Reference - - - - - - -
-

QCA::Hex Class Reference
- -[QCA user API] -

-

Hexadecimal encoding / decoding. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::Hex:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - -

Public Member Functions

virtual void clear ()
virtual MemoryRegion final ()
 Hex (Direction dir=Encode)
virtual bool ok () const
virtual MemoryRegion update (const MemoryRegion &a)
-

Detailed Description

-

Hexadecimal encoding / decoding.

-
Examples:
-

hextest.cpp, and randomtest.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::Hex::Hex (Direction  dir = Encode ) 
-
-
- -

Standard constructor.

-
Parameters:
- - -
dir the Direction that should be used.
-
-
-
Note:
The direction can be changed using the setup() call.
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual void QCA::Hex::clear ( )  [virtual]
-
-
- -

Reset the internal state.

-

This is useful to reuse an existing Hex object

- -

Implements QCA::Filter.

- -
-
- -
-
- - - - - - - - - -
virtual MemoryRegion QCA::Hex::update (const MemoryRegion a )  [virtual]
-
-
- -

Process more data, returning the corresponding encoded or decoded (depending on the Direction set in the constructor or setup() call) representation.

-

If you find yourself with code that only calls this method once, you might be better off using encode() or decode(). Similarly, if the data is really a string, you might be better off using arrayToString(), encodeString(), stringToArray() or decodeString().

-
Parameters:
- - -
a the array containing data to process
-
-
- -

Implements QCA::Filter.

- -
-
- -
-
- - - - - - - - -
virtual MemoryRegion QCA::Hex::final ( )  [virtual]
-
-
- -

Complete the algorithm.

-
Returns:
any remaining output. Because of the way hexadecimal encoding works, this will return a zero length array - any output will have been returned from the update() call.
- -

Implements QCA::Filter.

- -
-
- -
-
- - - - - - - - -
virtual bool QCA::Hex::ok ( )  const [virtual]
-
-
- -

Test if an update() or final() call succeeded.

-
Returns:
true if the previous call succeeded
- -

Implements QCA::Filter.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Hex-members.html qca2-2.1.0/apidocs/html/classQCA_1_1Hex-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Hex-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Hex-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::Hex Member List

This is the complete list of members for QCA::Hex, including all inherited members. - - - - - - - - - - - - - - - - - -
_dirQCA::TextFilter [protected]
arrayToString(const MemoryRegion &a)QCA::TextFilter
clear()QCA::Hex [virtual]
decode(const MemoryRegion &a)QCA::TextFilter
decodeString(const QString &s)QCA::TextFilter
direction() const QCA::TextFilter
encode(const MemoryRegion &a)QCA::TextFilter
encodeString(const QString &s)QCA::TextFilter
final()QCA::Hex [virtual]
Hex(Direction dir=Encode)QCA::Hex
ok() const QCA::Hex [virtual]
process(const MemoryRegion &a)QCA::Filter
setup(Direction dir)QCA::TextFilter
stringToArray(const QString &s)QCA::TextFilter
TextFilter(Direction dir)QCA::TextFilter
update(const MemoryRegion &a)QCA::Hex [virtual]
~Filter() (defined in QCA::Filter)QCA::Filter [virtual]
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1InfoContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1InfoContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1InfoContext__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1InfoContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1InfoContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1InfoContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1InfoContext__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1InfoContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -4d11f1dd4bacc9028a11a64d71745d3a \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1InfoContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1InfoContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1InfoContext.html qca2-2.1.0/apidocs/html/classQCA_1_1InfoContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1InfoContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1InfoContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,155 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::InfoContext Class Reference - - - - - - -
-

QCA::InfoContext Class Reference
- -[QCA provider API] -

-

Extended provider information. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::InfoContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - -

Public Member Functions

 InfoContext (Provider *p)
virtual QStringList supportedCipherTypes () const
virtual QStringList supportedHashTypes () const
virtual QStringList supportedMACTypes () const
-

Detailed Description

-

Extended provider information.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::InfoContext::InfoContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual QStringList QCA::InfoContext::supportedHashTypes ( )  const [virtual]
-
-
- -

The hash algorithms supported by the provider.

- -
-
- -
-
- - - - - - - - -
virtual QStringList QCA::InfoContext::supportedCipherTypes ( )  const [virtual]
-
-
- -

The cipher algorithms supported by the provider.

- -
-
- -
-
- - - - - - - - -
virtual QStringList QCA::InfoContext::supportedMACTypes ( )  const [virtual]
-
-
- -

The mac algorithms supported by the provider.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1InfoContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1InfoContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1InfoContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1InfoContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::InfoContext Member List

This is the complete list of members for QCA::InfoContext, including all inherited members. - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
InfoContext(Provider *p)QCA::InfoContext [inline]
supportedCipherTypes() const QCA::InfoContext [virtual]
supportedHashTypes() const QCA::InfoContext [virtual]
supportedMACTypes() const QCA::InfoContext [virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1InitializationVector__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1InitializationVector__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1InitializationVector__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1InitializationVector__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1InitializationVector__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1InitializationVector__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1InitializationVector__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1InitializationVector__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -063fee1377be1b0efaa7b802a12395a7 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1InitializationVector__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1InitializationVector__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1InitializationVector.html qca2-2.1.0/apidocs/html/classQCA_1_1InitializationVector.html --- qca2-2.0.3/apidocs/html/classQCA_1_1InitializationVector.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1InitializationVector.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,170 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::InitializationVector Class Reference - - - - - - -
-

QCA::InitializationVector Class Reference
- -[QCA user API] -

-

Container for initialisation vectors and nonces. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::InitializationVector:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - -

Public Member Functions

 InitializationVector (const QByteArray &a)
 InitializationVector (const SecureArray &a)
 InitializationVector (int size)
 InitializationVector ()
-

Detailed Description

-

Container for initialisation vectors and nonces.

-
Examples:
-

ciphertest.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::InitializationVector::InitializationVector ( ) 
-
-
- -

Construct an empty (zero length) initisation vector.

- -
-
- -
-
- - - - - - - - - -
QCA::InitializationVector::InitializationVector (int  size ) 
-
-
- -

Construct an initialisation vector of the specified size.

-
Parameters:
- - -
size the length of the initialisation vector, in bytes
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::InitializationVector::InitializationVector (const SecureArray a ) 
-
-
- -

Construct an initialisation vector from a provided byte array.

-
Parameters:
- - -
a the byte array to copy
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::InitializationVector::InitializationVector (const QByteArray a ) 
-
-
- -

Construct an initialisation vector from a provided byte array.

-
Parameters:
- - -
a the byte array to copy
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1InitializationVector-members.html qca2-2.1.0/apidocs/html/classQCA_1_1InitializationVector-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1InitializationVector-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1InitializationVector-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::InitializationVector Member List

This is the complete list of members for QCA::InitializationVector, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
append(const SecureArray &a)QCA::SecureArray
at(int index)QCA::SecureArray
at(int index) const QCA::SecureArray
clear()QCA::SecureArray
constData() const QCA::SecureArray
data()QCA::SecureArray
data() const QCA::SecureArray
fill(char fillChar, int fillToPosition=-1)QCA::SecureArray
InitializationVector()QCA::InitializationVector
InitializationVector(int size)QCA::InitializationVector
InitializationVector(const SecureArray &a)QCA::InitializationVector
InitializationVector(const QByteArray &a)QCA::InitializationVector
isEmpty() const QCA::SecureArray
isNull() const QCA::MemoryRegion
isSecure() const QCA::MemoryRegion
MemoryRegion() (defined in QCA::MemoryRegion)QCA::MemoryRegion
MemoryRegion(const char *str)QCA::MemoryRegion
MemoryRegion(const QByteArray &from)QCA::MemoryRegion
MemoryRegion(const MemoryRegion &from)QCA::MemoryRegion
MemoryRegion(bool secure)QCA::MemoryRegion [protected]
MemoryRegion(int size, bool secure)QCA::MemoryRegion [protected]
MemoryRegion(const QByteArray &from, bool secure)QCA::MemoryRegion [protected]
operator!=(const MemoryRegion &other) const QCA::SecureArray [inline]
operator+=(const SecureArray &a)QCA::SecureArray
operator=(const SecureArray &from)QCA::SecureArray
operator=(const QByteArray &a)QCA::SecureArray
QCA::MemoryRegion::operator=(const MemoryRegion &from)QCA::MemoryRegion
operator==(const MemoryRegion &other) const QCA::SecureArray
operator[](int index)QCA::SecureArray
operator[](int index) const QCA::SecureArray
resize(int size)QCA::SecureArray
SecureArray()QCA::SecureArray
SecureArray(int size, char ch=0)QCA::SecureArray [explicit]
SecureArray(const char *str)QCA::SecureArray
SecureArray(const QByteArray &a)QCA::SecureArray
SecureArray(const MemoryRegion &a)QCA::SecureArray
SecureArray(const SecureArray &from)QCA::SecureArray
set(const SecureArray &from)QCA::SecureArray [protected]
set(const QByteArray &from)QCA::SecureArray [protected]
QCA::MemoryRegion::set(const QByteArray &from, bool secure)QCA::MemoryRegion [protected]
setSecure(bool secure)QCA::MemoryRegion [protected]
size() const QCA::SecureArray
toByteArray() const QCA::SecureArray
~MemoryRegion() (defined in QCA::MemoryRegion)QCA::MemoryRegion
~SecureArray() (defined in QCA::SecureArray)QCA::SecureArray
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Initializer.html qca2-2.1.0/apidocs/html/classQCA_1_1Initializer.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Initializer.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Initializer.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,100 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::Initializer Class Reference - - - - - - -
-

QCA::Initializer Class Reference
- -[QCA user API] -

-

Convenience method for initialising and cleaning up QCA. -More...

- -

#include <QtCrypto>

- -

List of all members.

- - - -

Public Member Functions

 Initializer (MemoryMode m=Practical, int prealloc=64)
-

Detailed Description

-

Convenience method for initialising and cleaning up QCA.

-

To ensure that QCA is properly initialised and cleaned up, it is convenient to create an Initializer object, and let it go out of scope at the end of QCA usage.

-
Examples:
-

aes-cmac.cpp, base64test.cpp, certtest.cpp, ciphertest.cpp, eventhandlerdemo.cpp, hashtest.cpp, hextest.cpp, keyloader.cpp, mactest.cpp, md5crypt.cpp, providertest.cpp, publickeyexample.cpp, randomtest.cpp, rsatest.cpp, saslclient.cpp, saslserver.cpp, sslservtest.cpp, and ssltest.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::Initializer::Initializer (MemoryMode  m = Practical,
int  prealloc = 64 
) [explicit]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
m the MemoryMode to use for secure memory
prealloc the amount of secure memory to pre-allocate, in units of 1024 bytes (1K).
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Initializer-members.html qca2-2.1.0/apidocs/html/classQCA_1_1Initializer-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Initializer-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Initializer-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::Initializer Member List

This is the complete list of members for QCA::Initializer, including all inherited members. - - -
Initializer(MemoryMode m=Practical, int prealloc=64)QCA::Initializer [explicit]
~Initializer() (defined in QCA::Initializer)QCA::Initializer
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KDFContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1KDFContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1KDFContext__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KDFContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KDFContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1KDFContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1KDFContext__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KDFContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -af54b2e1b9907c41f2c259af4e0a2a7d \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1KDFContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1KDFContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KDFContext.html qca2-2.1.0/apidocs/html/classQCA_1_1KDFContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KDFContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KDFContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,156 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::KDFContext Class Reference - - - - - - -
-

QCA::KDFContext Class Reference
- -[QCA provider API] -

-

Key derivation function provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::KDFContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - -

Public Member Functions

 KDFContext (Provider *p, const QString &type)
virtual SymmetricKey makeKey (const SecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount)=0
-

Detailed Description

-

Key derivation function provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want KeyDerivationFunction instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::KDFContext::KDFContext (Provider p,
const QString type 
) [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
p the provider associated with this context
type the name of the KDF provided by this context (including algorithm)
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual SymmetricKey QCA::KDFContext::makeKey (const SecureArray secret,
const InitializationVector salt,
unsigned int  keyLength,
unsigned int  iterationCount 
) [pure virtual]
-
-
- -

Create a key and return it.

-
Parameters:
- - - - - -
secret the secret part (typically password)
salt the salt / initialization vector
keyLength the length of the key to be produced
iterationCount the number of iterations of the derivation algorith,
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KDFContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1KDFContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KDFContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KDFContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::KDFContext Member List

This is the complete list of members for QCA::KDFContext, including all inherited members. - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
KDFContext(Provider *p, const QString &type)QCA::KDFContext [inline]
makeKey(const SecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount)=0QCA::KDFContext [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyBundle__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1KeyBundle__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyBundle__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyBundle__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyBundle__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1KeyBundle__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyBundle__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyBundle__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5da9279f37a6194928c8c33e442e0fb1 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1KeyBundle__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1KeyBundle__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyBundle.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyBundle.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyBundle.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyBundle.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,561 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::KeyBundle Class Reference - - - - - - -
-

QCA::KeyBundle Class Reference
- -[QCA user API] -

-

Certificate chain and private key pair. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::KeyBundle:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - -

Public Member Functions

CertificateChain certificateChain () const
bool isNull () const
 KeyBundle (const KeyBundle &from)
 KeyBundle (const QString &fileName, const SecureArray &passphrase=SecureArray())
 KeyBundle ()
QString name () const
KeyBundleoperator= (const KeyBundle &from)
PrivateKey privateKey () const
void setCertificateChainAndKey (const CertificateChain &c, const PrivateKey &key)
void setName (const QString &s)
QByteArray toArray (const SecureArray &passphrase, const QString &provider=QString()) const
bool toFile (const QString &fileName, const SecureArray &passphrase, const QString &provider=QString()) const

Static Public Member Functions

static KeyBundle fromArray (const QByteArray &a, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())
static KeyBundle fromFile (const QString &fileName, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())
-

Detailed Description

-

Certificate chain and private key pair.

-

KeyBundle is essentially a convience class that holds a certificate chain and an associated private key. This class has a number of methods that make it particularly suitable for accessing a PKCS12 (.p12) format file, however it can be used as just a container for a Certificate, its associated PrivateKey and optionally additional X.509 Certificate that form a chain.

-

For more information on PKCS12 "Personal Information - Exchange Syntax Standard", see ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-12/pkcs-12v1.pdf.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::KeyBundle::KeyBundle ( ) 
-
-
- -

Create an empty KeyBundle.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::KeyBundle::KeyBundle (const QString fileName,
const SecureArray passphrase = SecureArray() 
) [explicit]
-
-
- -

Create a KeyBundle from a PKCS12 (.p12) encoded file.

-

This constructor requires appropriate plugin (provider) support. You must check for the "pkcs12" feature before using this constructor.

-
Parameters:
- - - -
fileName the name of the file to read from
passphrase the passphrase that is applicable to the file
-
-
-
See also:
fromFile for a more flexible version of the same capability.
-
Note:
This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler.
- -
-
- -
-
- - - - - - - - - -
QCA::KeyBundle::KeyBundle (const KeyBundle from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the KeyBundle to use as source
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
KeyBundle& QCA::KeyBundle::operator= (const KeyBundle from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the KeyBundle to use as source
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::KeyBundle::isNull ( )  const
-
-
- -

Test if this key is empty (null).

- -
-
- -
-
- - - - - - - - -
QString QCA::KeyBundle::name ( )  const
-
-
- -

The name associated with this key.

-

This is also known as the "friendly name", and if present, is typically suitable to be displayed to the user.

-
See also:
setName
- -
-
- -
-
- - - - - - - - -
CertificateChain QCA::KeyBundle::certificateChain ( )  const
-
-
- -

The public certificate part of this bundle.

-
See also:
setCertificateChainAndKey
- -
-
- -
-
- - - - - - - - -
PrivateKey QCA::KeyBundle::privateKey ( )  const
-
-
- -

The private key part of this bundle.

-
See also:
setCertificateChainAndKey
- -
-
- -
-
- - - - - - - - - -
void QCA::KeyBundle::setName (const QString s ) 
-
-
- -

Specify the name of this bundle.

-
Parameters:
- - -
s the name to use
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::KeyBundle::setCertificateChainAndKey (const CertificateChain c,
const PrivateKey key 
)
-
-
- -

Set the public certificate and private key.

-
Parameters:
- - - -
c the CertificateChain containing the public part of the Bundle
key the private key part of the Bundle
-
-
-
See also:
privateKey, certificateChain for getters
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QByteArray QCA::KeyBundle::toArray (const SecureArray passphrase,
const QString provider = QString() 
) const
-
-
- -

Export the key bundle to an array in PKCS12 format.

-

This method requires appropriate plugin (provider) support - you must check for the "pkcs12" feature, as shown below.

-
if( QCA::isSupported("pkcs12") )
-{
-        // can use I/O
-        byteArray = bundle.toArray( "pass phrase" );
-}
-else
-{
-        // not possible to use I/O
-}
-
Parameters:
- - - -
passphrase the passphrase to use to protect the bundle
provider the provider to use, if a specific provider is required
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool QCA::KeyBundle::toFile (const QString fileName,
const SecureArray passphrase,
const QString provider = QString() 
) const
-
-
- -

Export the key bundle to a file in PKCS12 (.p12) format.

-

This method requires appropriate plugin (provider) support - you must check for the "pkcs12" feature, as shown below.

-
if( QCA::isSupported("pkcs12") )
-{
-        // can use I/O
-        bool result = bundle.toFile( filename, "pass phrase" );
-}
-else
-{
-        // not possible to use I/O
-}
-
Parameters:
- - - - -
fileName the name of the file to save to
passphrase the passphrase to use to protect the bundle
provider the provider to use, if a specific provider is required
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static KeyBundle QCA::KeyBundle::fromArray (const QByteArray a,
const SecureArray passphrase = SecureArray(),
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import the key bundle from an array in PKCS12 format.

-

This method requires appropriate plugin (provider) support - you must check for the "pkcs12" feature, as shown below.

-
if( QCA::isSupported("pkcs12") )
-{
-        // can use I/O
-        bundle = QCA::KeyBundle::fromArray( array, "pass phrase" );
-}
-else
-{
-        // not possible to use I/O
-}
-
Parameters:
- - - - - -
a the array to import from
passphrase the passphrase for the encoded bundle
result pointer to the result of the import process
provider the provider to use, if a specific provider is required
-
-
-
See also:
QCA::KeyLoader for an asynchronous loader approach.
-
Note:
This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static KeyBundle QCA::KeyBundle::fromFile (const QString fileName,
const SecureArray passphrase = SecureArray(),
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import the key bundle from a file in PKCS12 (.p12) format.

-

This method requires appropriate plugin (provider) support - you must check for the "pkcs12" feature, as shown below.

-
if( QCA::isSupported("pkcs12") )
-{
-        // can use I/O
-        bundle = QCA::KeyBundle::fromFile( filename, "pass phrase" );
-}
-else
-{
-        // not possible to use I/O
-}
-
Parameters:
- - - - - -
fileName the name of the file to read from
passphrase the passphrase for the encoded bundle
result pointer to the result of the import process
provider the provider to use, if a specific provider is required
-
-
-
See also:
QCA::KeyLoader for an asynchronous loader approach.
-
Note:
This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler.
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyBundle-members.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyBundle-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyBundle-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyBundle-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::KeyBundle Member List

This is the complete list of members for QCA::KeyBundle, including all inherited members. - - - - - - - - - - - - - - - -
certificateChain() const QCA::KeyBundle
fromArray(const QByteArray &a, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())QCA::KeyBundle [static]
fromFile(const QString &fileName, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())QCA::KeyBundle [static]
isNull() const QCA::KeyBundle
KeyBundle()QCA::KeyBundle
KeyBundle(const QString &fileName, const SecureArray &passphrase=SecureArray())QCA::KeyBundle [explicit]
KeyBundle(const KeyBundle &from)QCA::KeyBundle
name() const QCA::KeyBundle
operator=(const KeyBundle &from)QCA::KeyBundle
privateKey() const QCA::KeyBundle
setCertificateChainAndKey(const CertificateChain &c, const PrivateKey &key)QCA::KeyBundle
setName(const QString &s)QCA::KeyBundle
toArray(const SecureArray &passphrase, const QString &provider=QString()) const QCA::KeyBundle
toFile(const QString &fileName, const SecureArray &passphrase, const QString &provider=QString()) const QCA::KeyBundle
~KeyBundle() (defined in QCA::KeyBundle)QCA::KeyBundle
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyDerivationFunction__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1KeyDerivationFunction__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyDerivationFunction__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyDerivationFunction__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyDerivationFunction__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1KeyDerivationFunction__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyDerivationFunction__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyDerivationFunction__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -dda2254a4c3fcbb4c78a838508a76f28 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1KeyDerivationFunction__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1KeyDerivationFunction__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyDerivationFunction.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyDerivationFunction.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyDerivationFunction.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyDerivationFunction.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,254 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::KeyDerivationFunction Class Reference - - - - - - -
-

QCA::KeyDerivationFunction Class Reference
- -[QCA user API] -

-

General superclass for key derivation algorithms. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::KeyDerivationFunction:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - -

Public Member Functions

 KeyDerivationFunction (const KeyDerivationFunction &from)
SymmetricKey makeKey (const SecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount)
KeyDerivationFunctionoperator= (const KeyDerivationFunction &from)

Static Public Member Functions

static QString withAlgorithm (const QString &kdfType, const QString &algType)

Protected Member Functions

 KeyDerivationFunction (const QString &type, const QString &provider)
-

Detailed Description

-

General superclass for key derivation algorithms.

-

KeyDerivationFunction is a superclass for the various key derivation function algorithms within QCA. You should not need to use it directly unless you are adding another key derivation capability to QCA - you should be using a sub-class. PBKDF2 using SHA1 is recommended for new applications.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::KeyDerivationFunction::KeyDerivationFunction (const KeyDerivationFunction from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the KeyDerivationFunction to copy from
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::KeyDerivationFunction::KeyDerivationFunction (const QString type,
const QString provider 
) [protected]
-
-
- -

Special constructor for subclass initialisation.

-
Parameters:
- - - -
type the algorithm to create
provider the name of the provider to create the key derivation function in.
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
KeyDerivationFunction& QCA::KeyDerivationFunction::operator= (const KeyDerivationFunction from ) 
-
-
- -

Assignment operator.

-

Copies the state (including key) from one KeyDerivationFunction to another

-
Parameters:
- - -
from the KeyDerivationFunction to assign from
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SymmetricKey QCA::KeyDerivationFunction::makeKey (const SecureArray secret,
const InitializationVector salt,
unsigned int  keyLength,
unsigned int  iterationCount 
)
-
-
- -

Generate the key from a specified secret and salt value.

-
Note:
key length is ignored for some functions
-
Parameters:
- - - - - -
secret the secret (password or passphrase)
salt the salt to use
keyLength the length of key to return
iterationCount the number of iterations to perform
-
-
-
Returns:
the derived key
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
static QString QCA::KeyDerivationFunction::withAlgorithm (const QString kdfType,
const QString algType 
) [static]
-
-
- -

Construct the name of the algorithm.

-

You can use this to build a standard name string. You probably only need this method if you are creating a new subclass.

-
Parameters:
- - - -
kdfType the type of key derivation function
algType the name of the algorithm to use with the key derivation function
-
-
-
Returns:
the name of the KDF/algorithm pair
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyDerivationFunction-members.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyDerivationFunction-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyDerivationFunction-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyDerivationFunction-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::KeyDerivationFunction Member List

This is the complete list of members for QCA::KeyDerivationFunction, including all inherited members. - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
KeyDerivationFunction(const KeyDerivationFunction &from)QCA::KeyDerivationFunction
KeyDerivationFunction(const QString &type, const QString &provider)QCA::KeyDerivationFunction [protected]
makeKey(const SecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount)QCA::KeyDerivationFunction
operator=(const KeyDerivationFunction &from)QCA::KeyDerivationFunction
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
provider() const QCA::Algorithm
takeContext()QCA::Algorithm
type() const QCA::Algorithm
withAlgorithm(const QString &kdfType, const QString &algType)QCA::KeyDerivationFunction [static]
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~KeyDerivationFunction() (defined in QCA::KeyDerivationFunction)QCA::KeyDerivationFunction
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyGenerator__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1KeyGenerator__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyGenerator__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyGenerator__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyGenerator__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1KeyGenerator__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyGenerator__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyGenerator__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -ed82a65a5e5989ec757c5e38fc406819 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1KeyGenerator__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1KeyGenerator__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyGenerator.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyGenerator.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyGenerator.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyGenerator.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,396 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::KeyGenerator Class Reference - - - - - - -
-

QCA::KeyGenerator Class Reference
- -[QCA user API] -

-

Class for generating asymmetric key pairs. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::KeyGenerator:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - -

Signals

void finished ()

Public Member Functions

bool blockingEnabled () const
PrivateKey createDH (const DLGroup &domain, const QString &provider=QString())
DLGroup createDLGroup (QCA::DLGroupSet set, const QString &provider=QString())
PrivateKey createDSA (const DLGroup &domain, const QString &provider=QString())
PrivateKey createRSA (int bits, int exp=65537, const QString &provider=QString())
DLGroup dlGroup () const
bool isBusy () const
PrivateKey key () const
 KeyGenerator (QObject *parent=0)
void setBlockingEnabled (bool b)

Friends

-class Private
-

Detailed Description

-

Class for generating asymmetric key pairs.

-

This class is used for generating asymmetric keys (public/private key pairs).

-
Examples:
-

rsatest.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::KeyGenerator::KeyGenerator (QObject parent = 0 ) 
-
-
- -

Create a new key generator.

-
Parameters:
- - -
parent the parent object, if applicable
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
bool QCA::KeyGenerator::blockingEnabled ( )  const
-
-
- -

Test whether the key generator is set to operate in blocking mode, or not.

-
Returns:
true if the key generator is in blocking mode
-
See also:
setBlockingEnabled
- -
-
- -
-
- - - - - - - - - -
void QCA::KeyGenerator::setBlockingEnabled (bool  b ) 
-
-
- -

Set whether the key generator is in blocking mode, nor not.

-
Parameters:
- - -
b if true, the key generator will be set to operate in blocking mode, otherwise it will operate in non-blocking mode
-
-
-
See also:
blockingEnabled()
- -
-
- -
-
- - - - - - - - -
bool QCA::KeyGenerator::isBusy ( )  const
-
-
- -

Test if the key generator is currently busy, or not.

-
Returns:
true if the key generator is busy generating a key already
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
PrivateKey QCA::KeyGenerator::createRSA (int  bits,
int  exp = 65537,
const QString provider = QString() 
)
-
-
- -

Generate an RSA key of the specified length.

-

This method creates both the public key and corresponding private key. You almost certainly want to extract the public key part out - see PKey::toPublicKey for an easy way.

-

Key length is a tricky judgment - using less than 2048 is probably being too liberal for long term use. Don't use less than 1024 without serious analysis.

-
Parameters:
- - - - -
bits the length of key that is required
exp the exponent - typically 3, 17 or 65537
provider the name of the provider to use, if a particular provider is required
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
PrivateKey QCA::KeyGenerator::createDSA (const DLGroup domain,
const QString provider = QString() 
)
-
-
- -

Generate a DSA key.

-

This method creates both the public key and corresponding private key. You almost certainly want to extract the public key part out - see PKey::toPublicKey for an easy way.

-
Parameters:
- - - -
domain the discrete logarithm group that this key should be generated from
provider the name of the provider to use, if a particular provider is required
-
-
-
Note:
Not every DLGroup makes sense for DSA. You should use one of DSA_512, DSA_768 and DSA_1024.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
PrivateKey QCA::KeyGenerator::createDH (const DLGroup domain,
const QString provider = QString() 
)
-
-
- -

Generate a Diffie-Hellman key.

-

This method creates both the public key and corresponding private key. You almost certainly want to extract the public key part out - see PKey::toPublicKey for an easy way.

-
Parameters:
- - - -
domain the discrete logarithm group that this key should be generated from
provider the name of the provider to use, if a particular provider is required
-
-
-
Note:
For compatibility, you should use one of the IETF_ groupsets as the domain argument.
- -
-
- -
-
- - - - - - - - -
PrivateKey QCA::KeyGenerator::key ( )  const
-
-
- -

Return the last generated key.

-

This is really only useful when you are working with non-blocking key generation

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
DLGroup QCA::KeyGenerator::createDLGroup (QCA::DLGroupSet  set,
const QString provider = QString() 
)
-
-
- -

Create a new discrete logarithm group.

-
Parameters:
- - - -
set the set of discrete logarithm parameters to generate from
provider the name of the provider to use, if a particular provider is required.
-
-
- -
-
- -
-
- - - - - - - - -
DLGroup QCA::KeyGenerator::dlGroup ( )  const
-
-
- -

The current discrete logarithm group.

- -
-
- -
-
- - - - - - - - -
void QCA::KeyGenerator::finished ( )  [signal]
-
-
- -

Emitted when the key generation is complete.

-

This is only used in non-blocking mode

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyGenerator-members.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyGenerator-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyGenerator-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyGenerator-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::KeyGenerator Member List

This is the complete list of members for QCA::KeyGenerator, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
blockingEnabled() const QCA::KeyGenerator
blockSignals(bool block)QObject
childEvent(QChildEvent *event)QObject
children()QObject
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
createDH(const DLGroup &domain, const QString &provider=QString())QCA::KeyGenerator
createDLGroup(QCA::DLGroupSet set, const QString &provider=QString())QCA::KeyGenerator
createDSA(const DLGroup &domain, const QString &provider=QString())QCA::KeyGenerator
createRSA(int bits, int exp=65537, const QString &provider=QString())QCA::KeyGenerator
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dlGroup() const QCA::KeyGenerator
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
finished()QCA::KeyGenerator [signal]
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isBusy() const QCA::KeyGenerator
isWidgetType()QObject
key() const QCA::KeyGenerator
KeyGenerator(QObject *parent=0)QCA::KeyGenerator
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
parent()QObject
Private (defined in QCA::KeyGenerator)QCA::KeyGenerator [friend]
property(const char *name)QObject
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
sender()QObject
setBlockingEnabled(bool b)QCA::KeyGenerator
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
startTimer(int interval)QObject
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
~KeyGenerator() (defined in QCA::KeyGenerator)QCA::KeyGenerator
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyLength__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1KeyLength__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyLength__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyLength__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyLength__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1KeyLength__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyLength__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyLength__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5350183f0316efc022db35ee924a795e \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1KeyLength__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1KeyLength__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyLength.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyLength.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyLength.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyLength.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,179 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::KeyLength Class Reference - - - - - - -
-

QCA::KeyLength Class Reference
- -[QCA user API] -

-

Simple container for acceptable key lengths. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::KeyLength:
-
-
Collaboration graph
-
[legend]
- -

List of all members.

- - - - - - -

Public Member Functions

 KeyLength (int min, int max, int multiple)
int maximum () const
int minimum () const
int multiple () const
-

Detailed Description

-

Simple container for acceptable key lengths.

-

The KeyLength specifies the minimum and maximum byte sizes allowed for a key, as well as a "multiple" which the key size must evenly divide into.

-

As an example, if the key can be 4, 8 or 12 bytes, you can express this as

-
KeyLength keyLen( 4, 12, 4 );
-

If you want to express a KeyLength that takes any number of bytes (including zero), you may want to use

-
#include<limits>
-KeyLength( 0, std::numeric_limits<int>::max(), 1 );
-
Examples:
-

aes-cmac.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QCA::KeyLength::KeyLength (int  min,
int  max,
int  multiple 
) [inline]
-
-
- -

Construct a KeyLength object.

-
Parameters:
- - - - -
min the minimum length of the key, in bytes
max the maximum length of the key, in bytes
multiple the number of bytes that the key must be a multiple of.
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
int QCA::KeyLength::minimum ( )  const [inline]
-
-
- -

Obtain the minimum length for the key, in bytes.

- -
-
- -
-
- - - - - - - - -
int QCA::KeyLength::maximum ( )  const [inline]
-
-
- -

Obtain the maximum length for the key, in bytes.

- -
-
- -
-
- - - - - - - - -
int QCA::KeyLength::multiple ( )  const [inline]
-
-
- -

Return the number of bytes that the key must be a multiple of.

-

If this is one, then anything between minimum and maximum (inclusive) is acceptable.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyLength-members.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyLength-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyLength-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyLength-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::KeyLength Member List

This is the complete list of members for QCA::KeyLength, including all inherited members. - - - - -
KeyLength(int min, int max, int multiple)QCA::KeyLength [inline]
maximum() const QCA::KeyLength [inline]
minimum() const QCA::KeyLength [inline]
multiple() const QCA::KeyLength [inline]
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyLoader__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1KeyLoader__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyLoader__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyLoader__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyLoader__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1KeyLoader__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyLoader__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyLoader__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -c5b135a62e0b5963f74c766e0561d104 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1KeyLoader__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1KeyLoader__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyLoader.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyLoader.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyLoader.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyLoader.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,331 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::KeyLoader Class Reference - - - - - - -
-

QCA::KeyLoader Class Reference
- -[QCA user API] -

-

Asynchronous private key loader. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::KeyLoader:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - -

Signals

void finished ()

Public Member Functions

ConvertResult convertResult () const
KeyBundle keyBundle () const
 KeyLoader (QObject *parent=0)
void loadKeyBundleFromArray (const QByteArray &a)
void loadKeyBundleFromFile (const QString &fileName)
void loadPrivateKeyFromDER (const SecureArray &a)
void loadPrivateKeyFromPEM (const QString &s)
void loadPrivateKeyFromPEMFile (const QString &fileName)
PrivateKey privateKey () const

Friends

-class Private
-

Detailed Description

-

Asynchronous private key loader.

-

GUI applications generally must use KeyLoader to load private keys. This is because the synchronous private key loading functions, for example QCA::PrivateKey::fromPEMFile(), cannot be used within the same thread as an EventHandler, and most GUI applications will use EventHandler from the main thread. KeyLoader does not have this problem. It can be used from any thread, including the same thread as EventHandler.

-

The KeyLoader class allows you to asynchronously load stand-alone private keys (QCA::PrivateKey) or private keys with a certificate (QCA::KeyBundle) with a signal that advises of completion.

-

To use this class to load a PrivateKey, you create a KeyLoader object then use one of the loadPrivateKeyFrom...() functions, depending on the format for your key. These functions return immediately. When you get the finished() signal, you can check that the loading operation succeeded (using convertResult()) and then obtain the PrivateKey using the privateKey() function.

-

The same process applies for loading a KeyBundle, except that you use either loadKeyBundleFromFile() or loadKeyBundleFromArray() instead of the loadPrivateKeyFrom...() function, and use keyBundle() instead of privateKey().

-

The loader may need a passphrase to complete the loading of the key or key bundle. You should use the QCA::EventHandler class to ensure that you deal with this correctly.

-
Note:
QCA also provides synchronous private key loading using QCA::PrivateKey::fromPEMFile(), QCA::PrivateKey::fromPEM() and QCA::PrivateKey::fromDER(). QCA provides synchronous key bundle loading using QCA::KeyBundle::fromArray() and QCA::KeyBundle::fromFile().
-
Examples:
-

keyloader.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::KeyLoader::KeyLoader (QObject parent = 0 ) 
-
-
- -

Create a KeyLoader object.

-
Parameters:
- - -
parent the parent object for this object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
void QCA::KeyLoader::loadPrivateKeyFromPEMFile (const QString fileName ) 
-
-
- -

Initiate an asynchronous loading of a PrivateKey from a PEM format file.

-

This function will return immediately.

-
Parameters:
- - -
fileName the name of the file (and path, if necessary) to load the key from
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::KeyLoader::loadPrivateKeyFromPEM (const QString s ) 
-
-
- -

Initiate an asynchronous loading of a PrivateKey from a PEM format string.

-

This function will return immediately.

-
Parameters:
- - -
s the string containing the PEM formatted key
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::KeyLoader::loadPrivateKeyFromDER (const SecureArray a ) 
-
-
- -

Initiate an asynchronous loading of a PrivateKey from a DER format array.

-

This function will return immediately.

-
Parameters:
- - -
a the array containing the DER formatted key
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::KeyLoader::loadKeyBundleFromFile (const QString fileName ) 
-
-
- -

Initiate an asynchronous loading of a KeyBundle from a file.

-

This function will return immediately.

-
Parameters:
- - -
fileName the name of the file (and path, if necessary) to load the key bundle from
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::KeyLoader::loadKeyBundleFromArray (const QByteArray a ) 
-
-
- -

Initiate an asynchronous loading of a KeyBundle from an array.

-

This function will return immediately.

-
Parameters:
- - -
a the array containing the key bundle
-
-
- -
-
- -
-
- - - - - - - - -
ConvertResult QCA::KeyLoader::convertResult ( )  const
-
-
- -

The result of the loading process.

-

This is not valid until the finished() signal has been emitted.

- -
-
- -
-
- - - - - - - - -
PrivateKey QCA::KeyLoader::privateKey ( )  const
-
-
- -

The private key that has been loaded.

-

This is only valid if loadPrivateKeyFromPEMFile(), loadPrivateKeyFromPEM() or loadPrivateKeyFromDER() has been used, the load has completed (that is, finished() has been emitted), and the conversion succeeded (that is, convertResult() returned ConvertGood).

- -
-
- -
-
- - - - - - - - -
KeyBundle QCA::KeyLoader::keyBundle ( )  const
-
-
- -

The key bundle that has been loaded.

-

This is only valid if loadKeyBundleFromFile() or loadKeyBundleFromArray() has been used, the load has completed (that is, finished() has been emitted), and the conversion succeeded (that is, convertResult() returned ConvertGood).

- -
-
- -
-
- - - - - - - - -
void QCA::KeyLoader::finished ( )  [signal]
-
-
- -

Signal that is emitted when the load process has completed.

-
Note:
The load process may not have completed successfully - check the result of convertResult() to confirm this before using the privateKey() or keyBundle() results.
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyLoader-members.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyLoader-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyLoader-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyLoader-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::KeyLoader Member List

This is the complete list of members for QCA::KeyLoader, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
blockSignals(bool block)QObject
childEvent(QChildEvent *event)QObject
children()QObject
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
convertResult() const QCA::KeyLoader
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
finished()QCA::KeyLoader [signal]
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
keyBundle() const QCA::KeyLoader
KeyLoader(QObject *parent=0)QCA::KeyLoader
killTimer(int id)QObject
loadKeyBundleFromArray(const QByteArray &a)QCA::KeyLoader
loadKeyBundleFromFile(const QString &fileName)QCA::KeyLoader
loadPrivateKeyFromDER(const SecureArray &a)QCA::KeyLoader
loadPrivateKeyFromPEM(const QString &s)QCA::KeyLoader
loadPrivateKeyFromPEMFile(const QString &fileName)QCA::KeyLoader
metaObject()QObject
moveToThread(QThread *targetThread)QObject
parent()QObject
Private (defined in QCA::KeyLoader)QCA::KeyLoader [friend]
privateKey() const QCA::KeyLoader
property(const char *name)QObject
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
sender()QObject
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
startTimer(int interval)QObject
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
~KeyLoader() (defined in QCA::KeyLoader)QCA::KeyLoader
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStore__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1KeyStore__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStore__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStore__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStore__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1KeyStore__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStore__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStore__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -a896e3044e814c1b10fe501b174e8557 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1KeyStore__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1KeyStore__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntry__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntry__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntry__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntry__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntry__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntry__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntry__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntry__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -dc57135e4dfe02df94011a4a36be47f6 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntry__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntry__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryContext__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryContext__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -3402e269fe6159908bf3f128cd33dfc4 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryContext.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,360 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::KeyStoreEntryContext Class Reference - - - - - - -
-

QCA::KeyStoreEntryContext Class Reference
- -[QCA provider API] -

-

KeyStoreEntry provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::KeyStoreEntryContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - -

Public Member Functions

virtual Certificate certificate () const
virtual CRL crl () const
virtual bool ensureAccess ()
virtual QString id () const =0
virtual bool isAvailable () const
virtual KeyBundle keyBundle () const
 KeyStoreEntryContext (Provider *p)
virtual QString name () const =0
virtual PGPKey pgpPublicKey () const
virtual PGPKey pgpSecretKey () const
virtual QString serialize () const =0
virtual QString storeId () const =0
virtual QString storeName () const =0
virtual KeyStoreEntry::Type type () const =0
-

Detailed Description

-

KeyStoreEntry provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want KeyStoreEntry instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::KeyStoreEntryContext::KeyStoreEntryContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the Provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual KeyStoreEntry::Type QCA::KeyStoreEntryContext::type ( )  const [pure virtual]
-
-
- -

Returns the entry type.

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::KeyStoreEntryContext::id ( )  const [pure virtual]
-
-
- -

Returns the entry id.

-

This id must be unique among all other entries in the same store.

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::KeyStoreEntryContext::name ( )  const [pure virtual]
-
-
- -

Returns the name of this entry.

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::KeyStoreEntryContext::storeId ( )  const [pure virtual]
-
-
- -

Returns the id of the store that contains this entry.

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::KeyStoreEntryContext::storeName ( )  const [pure virtual]
-
-
- -

Returns the name of the store that contains this entry.

- -
-
- -
-
- - - - - - - - -
virtual bool QCA::KeyStoreEntryContext::isAvailable ( )  const [virtual]
-
-
- -

Returns true if the private key of this entry is present for use.

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::KeyStoreEntryContext::serialize ( )  const [pure virtual]
-
-
- -

Serialize the information about this entry.

-

This allows the entry object to be restored later, even if the store that contains it is not present.

-
See also:
KeyStoreListContext::entryPassive()
- -
-
- -
-
- - - - - - - - -
virtual KeyBundle QCA::KeyStoreEntryContext::keyBundle ( )  const [virtual]
-
-
- -

If this entry is of type KeyStoreEntry::TypeKeyBundle, this function returns the KeyBundle of the entry.

- -
-
- -
-
- - - - - - - - -
virtual Certificate QCA::KeyStoreEntryContext::certificate ( )  const [virtual]
-
-
- -

If this entry is of type KeyStoreEntry::TypeCertificate, this function returns the Certificate of the entry.

- -
-
- -
-
- - - - - - - - -
virtual CRL QCA::KeyStoreEntryContext::crl ( )  const [virtual]
-
-
- -

If this entry is of type KeyStoreEntry::TypeCRL, this function returns the CRL of the entry.

- -
-
- -
-
- - - - - - - - -
virtual PGPKey QCA::KeyStoreEntryContext::pgpSecretKey ( )  const [virtual]
-
-
- -

If this entry is of type KeyStoreEntry::TypePGPSecretKey, this function returns the secret PGPKey of the entry.

- -
-
- -
-
- - - - - - - - -
virtual PGPKey QCA::KeyStoreEntryContext::pgpPublicKey ( )  const [virtual]
-
-
- -

If this entry is of type KeyStoreEntry::TypePGPPublicKey or KeyStoreEntry::TypePGPSecretKey, this function returns the public PGPKey of the entry.

- -
-
- -
-
- - - - - - - - -
virtual bool QCA::KeyStoreEntryContext::ensureAccess ( )  [virtual]
-
-
- -

Attempt to ensure the private key of this entry is usable and accessible, potentially prompting the user and/or performing a login to a token device.

-

Returns true if the entry is now accessible, or false if the entry cannot be made accessible.

-

This function is blocking.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::KeyStoreEntryContext Member List

This is the complete list of members for QCA::KeyStoreEntryContext, including all inherited members. - - - - - - - - - - - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
certificate() const QCA::KeyStoreEntryContext [virtual]
crl() const QCA::KeyStoreEntryContext [virtual]
ensureAccess()QCA::KeyStoreEntryContext [virtual]
id() const =0QCA::KeyStoreEntryContext [pure virtual]
isAvailable() const QCA::KeyStoreEntryContext [virtual]
keyBundle() const QCA::KeyStoreEntryContext [virtual]
KeyStoreEntryContext(Provider *p)QCA::KeyStoreEntryContext [inline]
name() const =0QCA::KeyStoreEntryContext [pure virtual]
pgpPublicKey() const QCA::KeyStoreEntryContext [virtual]
pgpSecretKey() const QCA::KeyStoreEntryContext [virtual]
serialize() const =0QCA::KeyStoreEntryContext [pure virtual]
storeId() const =0QCA::KeyStoreEntryContext [pure virtual]
storeName() const =0QCA::KeyStoreEntryContext [pure virtual]
type() const =0QCA::KeyStoreEntryContext [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntry.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntry.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntry.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntry.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,611 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::KeyStoreEntry Class Reference - - - - - - -
-

QCA::KeyStoreEntry Class Reference
- -[QCA user API] -

-

Single entry in a KeyStore. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::KeyStoreEntry:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Types

enum  Type {
-  TypeKeyBundle, -TypeCertificate, -TypeCRL, -TypePGPSecretKey, -
-  TypePGPPublicKey -
- }

Public Member Functions

Certificate certificate () const
CRL crl () const
bool ensureAccess ()
bool ensureAvailable ()
QString id () const
bool isAccessible () const
bool isAvailable () const
bool isNull () const
KeyBundle keyBundle () const
 KeyStoreEntry (const KeyStoreEntry &from)
 KeyStoreEntry (const QString &serialized)
 KeyStoreEntry ()
QString name () const
KeyStoreEntryoperator= (const KeyStoreEntry &from)
PGPKey pgpPublicKey () const
PGPKey pgpSecretKey () const
QString storeId () const
QString storeName () const
QString toString () const
Type type () const

Static Public Member Functions

static KeyStoreEntry fromString (const QString &serialized)

Friends

-class KeyStoreTracker
-

Detailed Description

-

Single entry in a KeyStore.

-

This is a container for any kind of object in a KeyStore (such as PGP keys, or X.509 certificates / private keys).

-

KeyStoreEntry objects are obtained through KeyStore or loaded from a serialized string format. The latter method requires a KeyStoreEntry obtained through KeyStore to be serialized for future loading. For example:

-
QString str = someKeyStoreEntry.toString();
-[ app saves str to disk ]
-[ app quits ]
-...
-[ app launches ]
-[ app reads str from disk ]
-KeyStoreEntry entry(str);
-printf("Entry name: [%s]\n", qPrintable(entry.name()));
-

KeyStoreEntry objects may or may not be available. An entry is unavailable if it has a private content that is not present. The private content might exist on external hardware. To determine if an entry is available, call isAvailable(). To ensure an entry is available before performing a private key operation, call ensureAvailable. For example:

-
if(entry.ensureAvailable())
-{
-   entry.keyBundle().privateKey().signMessage(...);
-   ...
-}
-

ensureAvailable() blocks and may cause hardware access, but if it completes successfully then you may use the entry's private content. It also means, in the case of a Smart Card token, that it is probably inserted.

-

To watch this entry asynchronously, you would do:

-
KeyStoreEntryWatcher *watcher = new KeyStoreEntryWatcher(entry);
-connect(watcher, SIGNAL(available()), SLOT(entry_available()));
-...
-void entry_available()
-{
-   // entry now available
-   watcher->entry().keyBundle().privateKey().signMessage(...);
-}
-

Unlike private content, public content is always usable even if the entry is not available. Serialized entry data contains all of the metadata necessary to reconstruct the public content.

-

Now, even though an entry may be available, it does not mean you have access to use it for operations. For example, even though a KeyBundle entry offered by a Smart Card may be available, as soon as you try to use the PrivateKey object for a signing operation, a PIN might be asked for. You can call ensureAccess() if you want to synchronously provide the PIN early on:

-
if(entry.ensureAccess())
-{
-   // do private key stuff
-   ...
-}
-

Note that you don't have to call ensureAvailable() before ensureAccess(). Calling the latter is enough to imply both.

-

After an application is configured to use a particular key, it is expected that its usual running procedure will be:

-

1) Construct KeyStoreEntry from the serialized data. 2) If the content object is not available, wait for it (with either ensureAvailable() or KeyStoreEntryWatcher). 3) Pass the content object(s) to a high level operation like TLS.

-

In this case, any PIN prompting and private key operations would be caused/handled from the TLS object. Omit step 2 and the private key operations might cause token prompting.

-
Examples:
-

eventhandlerdemo.cpp.

-
-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::KeyStoreEntry::Type
-
-
- -

The type of entry in the KeyStore.

- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::KeyStoreEntry::KeyStoreEntry ( ) 
-
-
- -

Create an empty KeyStoreEntry.

- -
-
- -
-
- - - - - - - - - -
QCA::KeyStoreEntry::KeyStoreEntry (const QString serialized ) 
-
-
- -

Create a passive KeyStoreEntry based on a serialized string.

-
Parameters:
- - -
serialized the string containing the keystore entry information
-
-
-
See also:
fromString
- -
-
- -
-
- - - - - - - - - -
QCA::KeyStoreEntry::KeyStoreEntry (const KeyStoreEntry from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the source entry
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
KeyStoreEntry& QCA::KeyStoreEntry::operator= (const KeyStoreEntry from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the source entry
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::KeyStoreEntry::isNull ( )  const
-
-
- -

Test if this key is empty (null).

- -
-
- -
-
- - - - - - - - -
bool QCA::KeyStoreEntry::isAvailable ( )  const
-
-
- -

Test if the key is available for use.

-

A key is considered available if the key's private content is present.

-
See also:
ensureAvailable
-
-isAccessible
- -
-
- -
-
- - - - - - - - -
bool QCA::KeyStoreEntry::isAccessible ( )  const
-
-
- -

Test if the key is currently accessible.

-

This means that the private key part can be used at this time. For a smartcard, this means that all required operations (e.g. login / PIN entry) are completed.

-

If isAccessible() is true, then the key is necessarily available (i.e. isAvailable() is also true).

-
See also:
ensureAccessible
-
-isAvailable
- -
-
- -
-
- - - - - - - - -
Type QCA::KeyStoreEntry::type ( )  const
-
-
- -

Determine the type of key stored in this object.

- -

Reimplemented from QCA::Algorithm.

- -
-
- -
-
- - - - - - - - -
QString QCA::KeyStoreEntry::name ( )  const
-
-
- -

The name associated with the key stored in this object.

- -
-
- -
-
- - - - - - - - -
QString QCA::KeyStoreEntry::id ( )  const
-
-
- -

The ID associated with the key stored in this object.

- -
-
- -
-
- - - - - - - - -
QString QCA::KeyStoreEntry::storeName ( )  const
-
-
- -

The name of the KeyStore for this key object.

- -
-
- -
-
- - - - - - - - -
QString QCA::KeyStoreEntry::storeId ( )  const
-
-
- -

The id of the KeyStore for this key object.

-
See also:
KeyStore::id()
- -
-
- -
-
- - - - - - - - -
QString QCA::KeyStoreEntry::toString ( )  const
-
-
- -

Serialize into a string for use as a passive entry.

- -
-
- -
-
- - - - - - - - - -
static KeyStoreEntry QCA::KeyStoreEntry::fromString (const QString serialized )  [static]
-
-
- -

Load a passive entry by using a serialized string as input.

-
Parameters:
- - -
serialized the string containing the keystore entry information
-
-
-
Returns:
the newly created KeyStoreEntry
- -
-
- -
-
- - - - - - - - -
KeyBundle QCA::KeyStoreEntry::keyBundle ( )  const
-
-
- -

If a KeyBundle is stored in this object, return that bundle.

- -
-
- -
-
- - - - - - - - -
Certificate QCA::KeyStoreEntry::certificate ( )  const
-
-
- -

If a Certificate is stored in this object, return that certificate.

- -
-
- -
-
- - - - - - - - -
CRL QCA::KeyStoreEntry::crl ( )  const
-
-
- -

If a CRL is stored in this object, return the value of the CRL.

- -
-
- -
-
- - - - - - - - -
PGPKey QCA::KeyStoreEntry::pgpSecretKey ( )  const
-
-
- -

If the key stored in this object is a private PGP key, return the contents of that key.

- -
-
- -
-
- - - - - - - - -
PGPKey QCA::KeyStoreEntry::pgpPublicKey ( )  const
-
-
- -

If the key stored in this object is either an public or private PGP key, extract the public key part of that PGP key.

- -
-
- -
-
- - - - - - - - -
bool QCA::KeyStoreEntry::ensureAvailable ( ) 
-
-
- -

Returns true if the entry is available, otherwise false.

-

Available means that any private content for this entry is present and ready for use. In the case of a smart card, this will ensure the card is inserted, and may invoke a token prompt.

-

Calling this function on an already available entry may cause the entry to be refreshed.

-
See also:
isAvailable
-
-ensureAccess
-
Note:
This function is blocking.
-
-This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler.
- -
-
- -
-
- - - - - - - - -
bool QCA::KeyStoreEntry::ensureAccess ( ) 
-
-
- -

Like ensureAvailable, but will also ensure that the PIN is provided if needed.

-
See also:
isAccessible
-
-ensureAvailable
-
Note:
This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler.
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntry-members.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntry-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntry-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntry-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,79 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::KeyStoreEntry Member List

This is the complete list of members for QCA::KeyStoreEntry, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
certificate() const QCA::KeyStoreEntry
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
crl() const QCA::KeyStoreEntry
ensureAccess()QCA::KeyStoreEntry
ensureAvailable()QCA::KeyStoreEntry
fromString(const QString &serialized)QCA::KeyStoreEntry [static]
id() const QCA::KeyStoreEntry
isAccessible() const QCA::KeyStoreEntry
isAvailable() const QCA::KeyStoreEntry
isNull() const QCA::KeyStoreEntry
keyBundle() const QCA::KeyStoreEntry
KeyStoreEntry()QCA::KeyStoreEntry
KeyStoreEntry(const QString &serialized)QCA::KeyStoreEntry
KeyStoreEntry(const KeyStoreEntry &from)QCA::KeyStoreEntry
KeyStoreTracker (defined in QCA::KeyStoreEntry)QCA::KeyStoreEntry [friend]
name() const QCA::KeyStoreEntry
operator=(const KeyStoreEntry &from)QCA::KeyStoreEntry
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
pgpPublicKey() const QCA::KeyStoreEntry
pgpSecretKey() const QCA::KeyStoreEntry
provider() const QCA::Algorithm
storeId() const QCA::KeyStoreEntry
storeName() const QCA::KeyStoreEntry
takeContext()QCA::Algorithm
toString() const QCA::KeyStoreEntry
Type enum nameQCA::KeyStoreEntry
type() const QCA::KeyStoreEntry
TypeCertificate enum value (defined in QCA::KeyStoreEntry)QCA::KeyStoreEntry
TypeCRL enum value (defined in QCA::KeyStoreEntry)QCA::KeyStoreEntry
TypeKeyBundle enum value (defined in QCA::KeyStoreEntry)QCA::KeyStoreEntry
TypePGPPublicKey enum value (defined in QCA::KeyStoreEntry)QCA::KeyStoreEntry
TypePGPSecretKey enum value (defined in QCA::KeyStoreEntry)QCA::KeyStoreEntry
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~KeyStoreEntry() (defined in QCA::KeyStoreEntry)QCA::KeyStoreEntry
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryWatcher__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryWatcher__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryWatcher__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryWatcher__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryWatcher__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryWatcher__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryWatcher__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryWatcher__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -4d75951c53293e2266f2aae515bd327a \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryWatcher__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryWatcher__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryWatcher.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryWatcher.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryWatcher.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryWatcher.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,172 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::KeyStoreEntryWatcher Class Reference - - - - - - -
-

QCA::KeyStoreEntryWatcher Class Reference
- -[QCA user API] -

-

Class to monitor the availability of a KeyStoreEntry. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::KeyStoreEntryWatcher:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - -

Signals

void available ()
void unavailable ()

Public Member Functions

KeyStoreEntry entry () const
 KeyStoreEntryWatcher (const KeyStoreEntry &e, QObject *parent=0)

Friends

-class Private
-

Detailed Description

-

Class to monitor the availability of a KeyStoreEntry.

-

Some KeyStore types have the concept of an entry that can be available only part of the time (for example, a smart card that can be removed). This class allows you to identify when a KeyStoreEntry becomes available / unavailable.

-
Note:
You can also monitor availability of a whole KeyStore, using KeyStoreManager::keyStoreAvailable() signal, and the KeyStore::unavailable() signal.
-
See also:
KeyStore for more discussion on availability of keys and related objects.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::KeyStoreEntryWatcher::KeyStoreEntryWatcher (const KeyStoreEntry e,
QObject parent = 0 
) [explicit]
-
-
- -

Standard constructor.

-

This creates an object that monitors the specified KeyStore entry, emitting available() and unavailable() as the entry becomes available and unavailable respectively.

-
Parameters:
- - - -
e the KeyStoreEntry to monitor
parent the parent object for this object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
KeyStoreEntry QCA::KeyStoreEntryWatcher::entry ( )  const
-
-
- -

The KeyStoreEntry that is being monitored.

- -
-
- -
-
- - - - - - - - -
void QCA::KeyStoreEntryWatcher::available ( )  [signal]
-
-
- -

This signal is emitted when the entry that is being monitored becomes available.

- -
-
- -
-
- - - - - - - - -
void QCA::KeyStoreEntryWatcher::unavailable ( )  [signal]
-
-
- -

This signal is emitted when the entry that is being monitored becomes unavailble.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryWatcher-members.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryWatcher-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreEntryWatcher-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreEntryWatcher-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,85 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::KeyStoreEntryWatcher Member List

This is the complete list of members for QCA::KeyStoreEntryWatcher, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
available()QCA::KeyStoreEntryWatcher [signal]
blockSignals(bool block)QObject
childEvent(QChildEvent *event)QObject
children()QObject
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
entry() const QCA::KeyStoreEntryWatcher
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
KeyStoreEntryWatcher(const KeyStoreEntry &e, QObject *parent=0)QCA::KeyStoreEntryWatcher [explicit]
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
parent()QObject
Private (defined in QCA::KeyStoreEntryWatcher)QCA::KeyStoreEntryWatcher [friend]
property(const char *name)QObject
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
sender()QObject
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
startTimer(int interval)QObject
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
unavailable()QCA::KeyStoreEntryWatcher [signal]
~KeyStoreEntryWatcher() (defined in QCA::KeyStoreEntryWatcher)QCA::KeyStoreEntryWatcher
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStore.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyStore.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStore.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStore.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,611 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::KeyStore Class Reference - - - - - - -
-

QCA::KeyStore Class Reference
- -[QCA user API] -

-

General purpose key storage object. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::KeyStore:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Types

enum  Type {
-  System, -User, -Application, -SmartCard, -
-  PGPKeyring -
- }

Signals

void entryRemoved (bool success)
void entryWritten (const QString &entryId)
void unavailable ()
void updated ()

Public Member Functions

QList< KeyStoreEntryentryList () const
bool holdsIdentities () const
bool holdsPGPPublicKeys () const
bool holdsTrustedCertificates () const
QString id () const
bool isReadOnly () const
bool isValid () const
 KeyStore (const QString &id, KeyStoreManager *keyStoreManager)
QString name () const
bool removeEntry (const QString &id)
void startAsynchronousMode ()
Type type () const
QString writeEntry (const PGPKey &key)
QString writeEntry (const CRL &crl)
QString writeEntry (const Certificate &cert)
QString writeEntry (const KeyBundle &kb)

Friends

-class KeyStoreManagerPrivate
-class KeyStorePrivate
-

Detailed Description

-

General purpose key storage object.

-

Examples of use of this are:

- -
Note:
    -
  • there can be multiple KeyStore objects referring to the same id
  • -
  • when a KeyStore is constructed, it refers to a given id (deviceId) and internal contextId. if the context goes away, the KeyStore becomes invalid (isValid() == false), and unavailable() is emitted. even if the device later reappears, the KeyStore remains invalid. a new KeyStore will have to be created to use the device again.
  • -
-
-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::KeyStore::Type
-
-
- -

The type of keystore.

-
Enumerator:
- - - - - -
System  -

objects such as root certificates

-
User  -

objects such as Apple Keychain, KDE Wallet

-
Application  -

for caching accepted self-signed certificates

-
SmartCard  -

for smartcards

-
PGPKeyring  -

for a PGP keyring

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::KeyStore::KeyStore (const QString id,
KeyStoreManager keyStoreManager 
)
-
-
- -

Obtain a specific KeyStore.

-
Parameters:
- - - -
id the identification for the key store
keyStoreManager the parent manager for this keystore
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
bool QCA::KeyStore::isValid ( )  const
-
-
- -

Check if this KeyStore is valid.

-
Returns:
true if the KeyStore is valid
- -
-
- -
-
- - - - - - - - -
Type QCA::KeyStore::type ( )  const
-
-
- -

The KeyStore Type.

- -

Reimplemented from QCA::Algorithm.

- -
-
- -
-
- - - - - - - - -
QString QCA::KeyStore::name ( )  const
-
-
- -

The name associated with the KeyStore.

- -
-
- -
-
- - - - - - - - -
QString QCA::KeyStore::id ( )  const
-
-
- -

The ID associated with the KeyStore.

- -
-
- -
-
- - - - - - - - -
bool QCA::KeyStore::isReadOnly ( )  const
-
-
- -

Test if the KeyStore is writeable or not.

-
Returns:
true if the KeyStore is read-only
- -
-
- -
-
- - - - - - - - -
void QCA::KeyStore::startAsynchronousMode ( ) 
-
-
- -

Turns on asynchronous mode for this KeyStore instance.

-

Normally, entryList() and writeEntry() are blocking calls. However, if startAsynchronousMode() is called, then these functions will return immediately. entryList() will return with the latest known entries, or an empty list if none are known yet (in this mode, updated() will be emitted once the initial entries are known, even if the store has not actually been altered). writeEntry() will always return an empty string, and the entryWritten() signal indicates the result of a write.

- -
-
- -
-
- - - - - - - - -
QList<KeyStoreEntry> QCA::KeyStore::entryList ( )  const
-
-
- -

A list of the KeyStoreEntry objects in this store.

-
Note:
This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler (this is not a concern if asynchronous mode is enabled).
-
See also:
startAsynchronousMode
- -
-
- -
-
- - - - - - - - -
bool QCA::KeyStore::holdsTrustedCertificates ( )  const
-
-
- -

test if the KeyStore holds trusted certificates (and CRLs)

- -
-
- -
-
- - - - - - - - -
bool QCA::KeyStore::holdsIdentities ( )  const
-
-
- -

test if the KeyStore holds identities (eg KeyBundle or PGPSecretKey)

- -
-
- -
-
- - - - - - - - -
bool QCA::KeyStore::holdsPGPPublicKeys ( )  const
-
-
- -

test if the KeyStore holds PGPPublicKey objects

- -
-
- -
-
- - - - - - - - - -
QString QCA::KeyStore::writeEntry (const KeyBundle kb ) 
-
-
- -

Add a entry to the KeyStore.

-

Returns the entryId of the written entry or an empty string on failure.

-
Parameters:
- - -
kb the KeyBundle to add to the KeyStore
-
-
-
Note:
This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler (this is not a concern if asynchronous mode is enabled).
-
See also:
startAsynchronousMode
- -
-
- -
-
- - - - - - - - - -
QString QCA::KeyStore::writeEntry (const Certificate cert ) 
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
Parameters:
- - -
cert the Certificate to add to the KeyStore
-
-
- -
-
- -
-
- - - - - - - - - -
QString QCA::KeyStore::writeEntry (const CRL crl ) 
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
Parameters:
- - -
crl the CRL to add to the KeyStore
-
-
- -
-
- -
-
- - - - - - - - - -
QString QCA::KeyStore::writeEntry (const PGPKey key ) 
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
Parameters:
- - -
key the PGPKey to add to the KeyStore
-
-
-
Returns:
a ref to the key in the keyring
- -
-
- -
-
- - - - - - - - - -
bool QCA::KeyStore::removeEntry (const QString id ) 
-
-
- -

Delete the a specified KeyStoreEntry from this KeyStore.

-
Parameters:
- - -
id the ID for the entry to be deleted
-
-
-
Note:
This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler (this is not a concern if asynchronous mode is enabled).
-
See also:
startAsynchronousMode
- -
-
- -
-
- - - - - - - - -
void QCA::KeyStore::updated ( )  [signal]
-
-
- -

Emitted when the KeyStore is changed.

-

This occurs if entries are added, removed, or changed in this KeyStore, including changes in entry availability.

- -
-
- -
-
- - - - - - - - -
void QCA::KeyStore::unavailable ( )  [signal]
-
-
- -

Emitted when the KeyStore becomes unavailable.

- -
-
- -
-
- - - - - - - - - -
void QCA::KeyStore::entryWritten (const QString entryId )  [signal]
-
-
- -

Emitted when an entry has been written, in asynchronous mode.

-
Parameters:
- - -
entryId is the newly written entry id on success, or an empty string if the write failed.
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::KeyStore::entryRemoved (bool  success )  [signal]
-
-
- -

Emitted when an entry has been removed, in asynchronous mode.

-
Parameters:
- - -
success indicates if the removal succeeded (true) or not (false).
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreInfo__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreInfo__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreInfo__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreInfo__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreInfo__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreInfo__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreInfo__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreInfo__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -d2be617f5686861ced90821c33757bbe \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreInfo__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreInfo__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreInfo.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreInfo.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreInfo.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreInfo.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,273 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::KeyStoreInfo Class Reference - - - - - - -
-

QCA::KeyStoreInfo Class Reference
- -[QCA user API] -

-

Key store information, outside of a KeyStore object. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::KeyStoreInfo:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - -

Public Member Functions

QString id () const
bool isNull () const
 KeyStoreInfo (const KeyStoreInfo &from)
 KeyStoreInfo (KeyStore::Type type, const QString &id, const QString &name)
 KeyStoreInfo ()
QString name () const
KeyStoreInfooperator= (const KeyStoreInfo &from)
KeyStore::Type type () const
-

Detailed Description

-

Key store information, outside of a KeyStore object.

-

This class is used in conjunction with the Event class, and related classes such as PasswordAsker and TokenAsker, to describe the key store source of the Event.

-

Each KeyStoreInfo represents a single KeyStore, and describes the type of store (e.g. smartcard or PGP keyring - see KeyStore::Type), and a couple of names. The id() of a KeyStore is used to reference it, and is typically of the form "qca-mystorename". The name() of a KeyStore is used to describe it (i.e. this is the "pretty" name to show the user), and is typically of the form "My Store Name".

-
Examples:
-

eventhandlerdemo.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::KeyStoreInfo::KeyStoreInfo ( ) 
-
-
- -

Constructor.

-
Note:
This form of constructor for KeyStoreInfo produces an object that does not describe any KeyStore, and isNull() will return true.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QCA::KeyStoreInfo::KeyStoreInfo (KeyStore::Type  type,
const QString id,
const QString name 
)
-
-
- -

Standard constructor.

-

This builds a KeyStoreInfo object that descibes a KeyStore.

-
Parameters:
- - - - -
type the type of KeyStore
id the identification of the KeyStore
name the descriptive name of the KeyStore
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::KeyStoreInfo::KeyStoreInfo (const KeyStoreInfo from ) 
-
-
- -

Copy constructor.

-
Parameters:
- - -
from the KeyStoreInfo to copy from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
KeyStoreInfo& QCA::KeyStoreInfo::operator= (const KeyStoreInfo from ) 
-
-
- -

Assignment operator.

-
Parameters:
- - -
from the KeyStoreInfo to copy from
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::KeyStoreInfo::isNull ( )  const
-
-
- -

Test if this object is valid.

-
Returns:
true if the object is not valid
- -
-
- -
-
- - - - - - - - -
KeyStore::Type QCA::KeyStoreInfo::type ( )  const
-
-
- -

The Type of KeyStore that this KeyStoreInfo object describes.

- -
-
- -
-
- - - - - - - - -
QString QCA::KeyStoreInfo::id ( )  const
-
-
- -

The unique identification of the KeyStore that this KeyStoreInfo object describes.

- -
-
- -
-
- - - - - - - - -
QString QCA::KeyStoreInfo::name ( )  const
-
-
- -

The descriptive name of the KeyStore that this KeyStoreInfo object describes.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreInfo-members.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreInfo-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreInfo-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreInfo-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::KeyStoreInfo Member List

This is the complete list of members for QCA::KeyStoreInfo, including all inherited members. - - - - - - - - - -
id() const QCA::KeyStoreInfo
isNull() const QCA::KeyStoreInfo
KeyStoreInfo()QCA::KeyStoreInfo
KeyStoreInfo(KeyStore::Type type, const QString &id, const QString &name)QCA::KeyStoreInfo
KeyStoreInfo(const KeyStoreInfo &from)QCA::KeyStoreInfo
name() const QCA::KeyStoreInfo
operator=(const KeyStoreInfo &from)QCA::KeyStoreInfo
type() const QCA::KeyStoreInfo
~KeyStoreInfo() (defined in QCA::KeyStoreInfo)QCA::KeyStoreInfo
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreListContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreListContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreListContext__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreListContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreListContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreListContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreListContext__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreListContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -160febba664978cd896f91223a5d378f \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreListContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreListContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreListContext.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreListContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreListContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreListContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,710 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::KeyStoreListContext Class Reference - - - - - - -
-

QCA::KeyStoreListContext Class Reference
- -[QCA provider API] -

-

KeyStore provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::KeyStoreListContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - -

Signals

void busyEnd ()
void busyStart ()
void diagnosticText (const QString &str)
void storeUpdated (int id)
void updated ()

Public Member Functions

virtual KeyStoreEntryContextentry (int id, const QString &entryId)
virtual QList
-< KeyStoreEntryContext * > 
entryList (int id)=0
virtual KeyStoreEntryContextentryPassive (const QString &serialized)
virtual QList
-< KeyStoreEntry::Type
entryTypes (int id) const =0
virtual bool isReadOnly (int id) const
 KeyStoreListContext (Provider *p)
virtual QList< int > keyStores ()=0
virtual QString name (int id) const =0
virtual bool removeEntry (int id, const QString &entryId)
virtual void setUpdatesEnabled (bool enabled)
virtual void start ()
virtual QString storeId (int id) const =0
virtual KeyStore::Type type (int id) const =0
virtual QString writeEntry (int id, const PGPKey &key)
virtual QString writeEntry (int id, const CRL &crl)
virtual QString writeEntry (int id, const Certificate &cert)
virtual QString writeEntry (int id, const KeyBundle &kb)
-

Detailed Description

-

KeyStore provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want KeyStore instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::KeyStoreListContext::KeyStoreListContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the Provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual void QCA::KeyStoreListContext::start ( )  [virtual]
-
-
- -

Starts the keystore provider.

- -
-
- -
-
- - - - - - - - - -
virtual void QCA::KeyStoreListContext::setUpdatesEnabled (bool  enabled )  [virtual]
-
-
- -

Enables or disables update events.

-

The updated() and storeUpdated() signals might not be emitted if updates are not enabled.

-
Parameters:
- - -
enabled whether update notifications are enabled (true) or disabled (false)
-
-
- -
-
- -
-
- - - - - - - - -
virtual QList<int> QCA::KeyStoreListContext::keyStores ( )  [pure virtual]
-
-
- -

Returns a list of integer context ids, each representing a keystore instance.

-

If a keystore becomes unavailable and then later becomes available again (for example, if a smart card is removed and then the same one is inserted again), the integer context id must be different than last time.

- -
-
- -
-
- - - - - - - - - -
virtual KeyStore::Type QCA::KeyStoreListContext::type (int  id )  const [pure virtual]
-
-
- -

Returns the type of the specified store, or -1 if the integer context id is invalid.

-
Parameters:
- - -
id the id for the store context
-
-
- -
-
- -
-
- - - - - - - - - -
virtual QString QCA::KeyStoreListContext::storeId (int  id )  const [pure virtual]
-
-
- -

Returns the string id of the store, or an empty string if the integer context id is invalid.

-

The string id of the store should be unique to a single store, and it should persist between availability/unavailability. For example, a smart card that is removed and inserted again should have the same string id (despite having a new integer context id).

-
Parameters:
- - -
id the id for the store context
-
-
- -
-
- -
-
- - - - - - - - - -
virtual QString QCA::KeyStoreListContext::name (int  id )  const [pure virtual]
-
-
- -

Returns the friendly name of the store, or an empty string if the integer context id is invalid.

-
Parameters:
- - -
id the id for the store context
-
-
- -
-
- -
-
- - - - - - - - - -
virtual bool QCA::KeyStoreListContext::isReadOnly (int  id )  const [virtual]
-
-
- -

Returns true if the store is read-only.

-

If the integer context id is invalid, this function should return true.

-
Parameters:
- - -
id the id for the store context
-
-
- -
-
- -
-
- - - - - - - - - -
virtual QList<KeyStoreEntry::Type> QCA::KeyStoreListContext::entryTypes (int  id )  const [pure virtual]
-
-
- -

Returns the types supported by the store, or an empty list if the integer context id is invalid.

-

This function should return all supported types, even if the store doesn't actually contain entries for all of the types.

-
Parameters:
- - -
id the id for the store context
-
-
- -
-
- -
-
- - - - - - - - - -
virtual QList<KeyStoreEntryContext*> QCA::KeyStoreListContext::entryList (int  id )  [pure virtual]
-
-
- -

Returns the entries of the store, or an empty list if the integer context id is invalid.

-

The caller is responsible for deleting the returned entry objects.

-
Parameters:
- - -
id the id for the store context
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual KeyStoreEntryContext* QCA::KeyStoreListContext::entry (int  id,
const QString entryId 
) [virtual]
-
-
- -

Returns a single entry in the store, if the entry id is already known.

-

If the entry does not exist, the function returns 0.

-

The caller is responsible for deleting the returned entry object.

-
Parameters:
- - - -
id the id for the store context
entryId the entry to retrieve
-
-
- -
-
- -
-
- - - - - - - - - -
virtual KeyStoreEntryContext* QCA::KeyStoreListContext::entryPassive (const QString serialized )  [virtual]
-
-
- -

Returns a single entry, created from the serialization string of a previous entry (using KeyStoreEntryContext::serialize()).

-

If the serialization string cannot be parsed by this provider, or the entry cannot otherwise be created, the function returns 0.

-

The caller is responsible for deleting the returned entry object.

-

This function must be thread-safe.

-
Parameters:
- - -
serialized the serialized data to create the entry from
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual QString QCA::KeyStoreListContext::writeEntry (int  id,
const KeyBundle kb 
) [virtual]
-
-
- -

Write a KeyBundle to the store.

-

Returns the entry id of the new item, or an empty string if there was an error writing the item.

-
Parameters:
- - - -
id the id for the store context
kb the key bundle to add to the store
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual QString QCA::KeyStoreListContext::writeEntry (int  id,
const Certificate cert 
) [virtual]
-
-
- -

Write a Certificate to the store.

-

Returns the entry id of the new item, or an empty string if there was an error writing the item.

-
Parameters:
- - - -
id the id for the store context
cert the certificate to add to the store
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual QString QCA::KeyStoreListContext::writeEntry (int  id,
const CRL crl 
) [virtual]
-
-
- -

Write a CRL to the store.

-

Returns the entry id of the new item, or an empty string if there was an error writing the item.

-
Parameters:
- - - -
id the id for the store context
crl the revocation list to add to the store
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual QString QCA::KeyStoreListContext::writeEntry (int  id,
const PGPKey key 
) [virtual]
-
-
- -

Write a PGPKey to the store.

-

Returns the entry id of the new item, or an empty string if there was an error writing the item.

-
Parameters:
- - - -
id the id for the store context
key the PGP key to add to the store
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual bool QCA::KeyStoreListContext::removeEntry (int  id,
const QString entryId 
) [virtual]
-
-
- -

Remove an entry from the store.

-

Returns true if the entry is successfully removed, otherwise false.

-
Parameters:
- - - -
id the id for the store context
entryId the entry to remove from the store
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::KeyStoreListContext::busyStart ( )  [signal]
-
-
- -

Emit this when the provider is busy looking for keystores.

-

The provider goes into a busy state when it has reason to believe there are keystores present, but it still needs to check or query some devices to see for sure.

-

For example, if a smart card is inserted, then the provider may immediately go into a busy state upon detecting the insert. However, it may take some seconds before the smart card information can be queried and reported by the provider. Once the card is queried successfully, the provider would leave the busy state and report the new keystore.

-

When this object is first started with start(), it is assumed to be in the busy state, so there is no need to emit this signal at the beginning.

- -
-
- -
-
- - - - - - - - -
void QCA::KeyStoreListContext::busyEnd ( )  [signal]
-
-
- -

Emit this to leave the busy state.

-

When this object is first started with start(), it is assumed to be in the busy state. You must emit busyEnd() at some point, or QCA will never ask you about keystores.

- -
-
- -
-
- - - - - - - - -
void QCA::KeyStoreListContext::updated ( )  [signal]
-
-
- -

Indicates the list of keystores has changed, and that QCA should call keyStores() to obtain the latest list.

- -
-
- -
-
- - - - - - - - - -
void QCA::KeyStoreListContext::diagnosticText (const QString str )  [signal]
-
-
- -

Emitted when there is diagnostic text to report.

-
Parameters:
- - -
str the diagnostic text
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::KeyStoreListContext::storeUpdated (int  id )  [signal]
-
-
- -

Indicates that the entry list of a keystore has changed (entries added, removed, or modified).

-
Parameters:
- - -
id the id of the key store that has changed
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreListContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreListContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreListContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreListContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::KeyStoreListContext Member List

This is the complete list of members for QCA::KeyStoreListContext, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - -
busyEnd()QCA::KeyStoreListContext [signal]
busyStart()QCA::KeyStoreListContext [signal]
diagnosticText(const QString &str)QCA::KeyStoreListContext [signal]
entry(int id, const QString &entryId)QCA::KeyStoreListContext [virtual]
entryList(int id)=0QCA::KeyStoreListContext [pure virtual]
entryPassive(const QString &serialized)QCA::KeyStoreListContext [virtual]
entryTypes(int id) const =0QCA::KeyStoreListContext [pure virtual]
isReadOnly(int id) const QCA::KeyStoreListContext [virtual]
KeyStoreListContext(Provider *p)QCA::KeyStoreListContext [inline]
keyStores()=0QCA::KeyStoreListContext [pure virtual]
name(int id) const =0QCA::KeyStoreListContext [pure virtual]
removeEntry(int id, const QString &entryId)QCA::KeyStoreListContext [virtual]
setUpdatesEnabled(bool enabled)QCA::KeyStoreListContext [virtual]
start()QCA::KeyStoreListContext [virtual]
storeId(int id) const =0QCA::KeyStoreListContext [pure virtual]
storeUpdated(int id)QCA::KeyStoreListContext [signal]
type(int id) const =0QCA::KeyStoreListContext [pure virtual]
updated()QCA::KeyStoreListContext [signal]
writeEntry(int id, const KeyBundle &kb)QCA::KeyStoreListContext [virtual]
writeEntry(int id, const Certificate &cert)QCA::KeyStoreListContext [virtual]
writeEntry(int id, const CRL &crl)QCA::KeyStoreListContext [virtual]
writeEntry(int id, const PGPKey &key)QCA::KeyStoreListContext [virtual]
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreManager__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreManager__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreManager__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreManager__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreManager__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreManager__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreManager__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreManager__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5ad638af02f37326f8dde151fe6f7983 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreManager__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreManager__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreManager.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreManager.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreManager.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreManager.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,339 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::KeyStoreManager Class Reference - - - - - - -
-

QCA::KeyStoreManager Class Reference
- -[QCA user API] -

-

Access keystores, and monitor keystores for changes. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::KeyStoreManager:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - -

Signals

void busyFinished ()
void busyStarted ()
void keyStoreAvailable (const QString &id)

Public Member Functions

bool isBusy () const
 KeyStoreManager (QObject *parent=0)
QStringList keyStores () const
void sync ()
void waitForBusyFinished ()

Static Public Member Functions

static void clearDiagnosticText ()
static QString diagnosticText ()
static void start (const QString &provider)
static void start ()

Friends

-class Global
-class KeyStoreManagerPrivate
-class KeyStorePrivate
-

Detailed Description

-

Access keystores, and monitor keystores for changes.

-

Before you can access a KeyStore, you must create a KeyStoreManager. You then need to start() the KeyStoreManager, and either wait for the busyFinished() signal, or block using waitForBusyFinished().

-

If you know the KeyStoreEntry that you need, you can use KeyStore passively, as described in the KeyStoreEntry documentation.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::KeyStoreManager::KeyStoreManager (QObject parent = 0 ) 
-
-
- -

Create a new KeyStoreManager.

-
Parameters:
- - -
parent the parent for this object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
static void QCA::KeyStoreManager::start ( )  [static]
-
-
- -

Initialize all key store providers.

- -
-
- -
-
- - - - - - - - - -
static void QCA::KeyStoreManager::start (const QString provider )  [static]
-
-
- -

Initialize a specific key store provider.

-
Parameters:
- - -
provider the name of the provider to start
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::KeyStoreManager::isBusy ( )  const
-
-
- -

Indicates if the manager is busy looking for key stores.

- -
-
- -
-
- - - - - - - - -
void QCA::KeyStoreManager::waitForBusyFinished ( ) 
-
-
- -

Blocks until the manager is done looking for key stores.

- -
-
- -
-
- - - - - - - - -
QStringList QCA::KeyStoreManager::keyStores ( )  const
-
-
- -

A list of all the key stores.

- -
-
- -
-
- - - - - - - - -
static QString QCA::KeyStoreManager::diagnosticText ( )  [static]
-
-
- -

The diagnostic result of key store operations, such as warnings and errors.

- -
-
- -
-
- - - - - - - - -
static void QCA::KeyStoreManager::clearDiagnosticText ( )  [static]
-
-
- -

Clears the diagnostic result log.

- -
-
- -
-
- - - - - - - - -
void QCA::KeyStoreManager::sync ( ) 
-
-
- -

If you are not using the eventloop, call this to update the object state to the present.

- -
-
- -
-
- - - - - - - - -
void QCA::KeyStoreManager::busyStarted ( )  [signal]
-
-
- -

emitted when the manager has started looking for key stores

- -
-
- -
-
- - - - - - - - -
void QCA::KeyStoreManager::busyFinished ( )  [signal]
-
-
- -

emitted when the manager has finished looking for key stores

- -
-
- -
-
- - - - - - - - - -
void QCA::KeyStoreManager::keyStoreAvailable (const QString id )  [signal]
-
-
- -

emitted when a new key store becomes available

-
Parameters:
- - -
id the name of the key store that has become available
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreManager-members.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreManager-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStoreManager-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStoreManager-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::KeyStoreManager Member List

This is the complete list of members for QCA::KeyStoreManager, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
blockSignals(bool block)QObject
busyFinished()QCA::KeyStoreManager [signal]
busyStarted()QCA::KeyStoreManager [signal]
childEvent(QChildEvent *event)QObject
children()QObject
clearDiagnosticText()QCA::KeyStoreManager [static]
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
diagnosticText()QCA::KeyStoreManager [static]
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
Global (defined in QCA::KeyStoreManager)QCA::KeyStoreManager [friend]
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isBusy() const QCA::KeyStoreManager
isWidgetType()QObject
keyStoreAvailable(const QString &id)QCA::KeyStoreManager [signal]
KeyStoreManager(QObject *parent=0)QCA::KeyStoreManager
KeyStoreManagerPrivate (defined in QCA::KeyStoreManager)QCA::KeyStoreManager [friend]
KeyStorePrivate (defined in QCA::KeyStoreManager)QCA::KeyStoreManager [friend]
keyStores() const QCA::KeyStoreManager
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
parent()QObject
property(const char *name)QObject
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
sender()QObject
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
start()QCA::KeyStoreManager [static]
start(const QString &provider)QCA::KeyStoreManager [static]
startTimer(int interval)QObject
sync()QCA::KeyStoreManager
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
waitForBusyFinished()QCA::KeyStoreManager
~KeyStoreManager() (defined in QCA::KeyStoreManager)QCA::KeyStoreManager
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1KeyStore-members.html qca2-2.1.0/apidocs/html/classQCA_1_1KeyStore-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1KeyStore-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1KeyStore-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,119 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::KeyStore Member List

This is the complete list of members for QCA::KeyStore, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
Application enum valueQCA::KeyStore
blockSignals(bool block)QObject
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
childEvent(QChildEvent *event)QObject
children()QObject
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
context()QCA::Algorithm
context() const QCA::Algorithm
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
entryList() const QCA::KeyStore
entryRemoved(bool success)QCA::KeyStore [signal]
entryWritten(const QString &entryId)QCA::KeyStore [signal]
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
holdsIdentities() const QCA::KeyStore
holdsPGPPublicKeys() const QCA::KeyStore
holdsTrustedCertificates() const QCA::KeyStore
id() const QCA::KeyStore
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isReadOnly() const QCA::KeyStore
isValid() const QCA::KeyStore
isWidgetType()QObject
KeyStore(const QString &id, KeyStoreManager *keyStoreManager)QCA::KeyStore
KeyStoreManagerPrivate (defined in QCA::KeyStore)QCA::KeyStore [friend]
KeyStorePrivate (defined in QCA::KeyStore)QCA::KeyStore [friend]
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
name() const QCA::KeyStore
operator=(const Algorithm &from)QCA::Algorithm
parent()QObject
PGPKeyring enum valueQCA::KeyStore
property(const char *name)QObject
provider() const QCA::Algorithm
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
removeEntry(const QString &id)QCA::KeyStore
removeEventFilter(QObject *obj)QObject
sender()QObject
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
SmartCard enum valueQCA::KeyStore
startAsynchronousMode()QCA::KeyStore
startTimer(int interval)QObject
System enum valueQCA::KeyStore
takeContext()QCA::Algorithm
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
type() const QCA::KeyStore
Type enum nameQCA::KeyStore
unavailable()QCA::KeyStore [signal]
updated()QCA::KeyStore [signal]
User enum valueQCA::KeyStore
writeEntry(const KeyBundle &kb)QCA::KeyStore
writeEntry(const Certificate &cert)QCA::KeyStore
writeEntry(const CRL &crl)QCA::KeyStore
writeEntry(const PGPKey &key)QCA::KeyStore
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~KeyStore() (defined in QCA::KeyStore)QCA::KeyStore
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Logger__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1Logger__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1Logger__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Logger__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Logger__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1Logger__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1Logger__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Logger__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -da4a2951de2d1b20dacf10aec5fc3133 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1Logger__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1Logger__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Logger.html qca2-2.1.0/apidocs/html/classQCA_1_1Logger.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Logger.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Logger.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,332 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::Logger Class Reference - - - - - - -
-

QCA::Logger Class Reference
- -[QCA user API] -

-

A simple logging system. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::Logger:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - -

Public Types

enum  Severity {
-  Quiet = 0, -Emergency = 1, -Alert = 2, -Critical = 3, -
-  Error = 4, -Warning = 5, -Notice = 6, -Information = 7, -
-  Debug = 8 -
- }

Public Member Functions

QStringList currentLogDevices () const
Severity level () const
void logBinaryMessage (const QByteArray &blob, Severity=Information)
void logTextMessage (const QString &message, Severity=Information)
void registerLogDevice (AbstractLogDevice *logger)
void setLevel (Severity level)
void unregisterLogDevice (const QString &loggerName)

Friends

-class Global
-

Detailed Description

-

A simple logging system.

-

This class provides a simple but flexible approach to logging information that may be used for debugging or system operation diagnostics.

-

There is a single Logger for each application that uses QCA. You do not need to create this Logger yourself - QCA automatically creates it on startup. You can get access to the Logger using the global QCA::logger() method.

-

By default the Logger just accepts all messages (binary and text). If you want to get access to those messages, you need to subclass AbstractLogDevice, and register your subclass (using registerLogDevice()). You can then take whatever action is appropriate (e.g. show to the user using the GUI, log to a file or send to standard error).

-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::Logger::Severity
-
-
- -

The severity of the message.

-

This information may be used by the log device to determine what the appropriate action is.

-
Enumerator:
- - - - - - - - - -
Quiet  -

Quiet: turn of logging.

-
Emergency  -

Emergency: system is unusable.

-
Alert  -

Alert: action must be taken immediately.

-
Critical  -

Critical: critical conditions.

-
Error  -

Error: error conditions.

-
Warning  -

Warning: warning conditions.

-
Notice  -

Notice: normal but significant condition.

-
Information  -

Informational: informational messages.

-
Debug  -

Debug: debug-level messages.

-
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
Severity QCA::Logger::level ( )  const [inline]
-
-
- -

Get the current logging level.

-
Returns:
Current level
- -
-
- -
-
- - - - - - - - - -
void QCA::Logger::setLevel (Severity  level ) 
-
-
- -

Set the current logging level.

-
Parameters:
- - -
level new logging level
-
-
-

Only severities less or equal than the log level one will be logged

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::Logger::logTextMessage (const QString message,
Severity  = Information 
)
-
-
- -

Log a message to all available log devices.

-
Parameters:
- - -
message the text to log
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::Logger::logBinaryMessage (const QByteArray blob,
Severity  = Information 
)
-
-
- -

Log a binary blob to all available log devices.

-
Parameters:
- - -
blob the information to log
-
-
-
Note:
how this is handled is quite logger specific. For example, it might be logged as a binary, or it might be encoded in some way
- -
-
- -
-
- - - - - - - - - -
void QCA::Logger::registerLogDevice (AbstractLogDevice logger ) 
-
-
- -

Add an AbstractLogDevice subclass to the existing list of loggers.

-
Parameters:
- - -
logger the LogDevice to add
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::Logger::unregisterLogDevice (const QString loggerName ) 
-
-
- -

Remove an AbstractLogDevice subclass from the existing list of loggers.

-
Parameters:
- - -
loggerName the name of the LogDevice to remove
-
-
-
Note:
If there are several log devices with the same name, all will be removed.
- -
-
- -
-
- - - - - - - - -
QStringList QCA::Logger::currentLogDevices ( )  const
-
-
- -

Get a list of the names of all registered log devices.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Logger-members.html qca2-2.1.0/apidocs/html/classQCA_1_1Logger-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Logger-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Logger-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::Logger Member List

This is the complete list of members for QCA::Logger, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Alert enum valueQCA::Logger
blockSignals(bool block)QObject
childEvent(QChildEvent *event)QObject
children()QObject
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
Critical enum valueQCA::Logger
currentLogDevices() const QCA::Logger
customEvent(QEvent *event)QObject
Debug enum valueQCA::Logger
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
Emergency enum valueQCA::Logger
Error enum valueQCA::Logger
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
Global (defined in QCA::Logger)QCA::Logger [friend]
Information enum valueQCA::Logger
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
killTimer(int id)QObject
level() const QCA::Logger [inline]
logBinaryMessage(const QByteArray &blob, Severity=Information)QCA::Logger
logTextMessage(const QString &message, Severity=Information)QCA::Logger
metaObject()QObject
moveToThread(QThread *targetThread)QObject
Notice enum valueQCA::Logger
parent()QObject
property(const char *name)QObject
QObject(QObject *parent=0)QObject
Quiet enum valueQCA::Logger
receivers(const char *signal)QObject
registerLogDevice(AbstractLogDevice *logger)QCA::Logger
removeEventFilter(QObject *obj)QObject
sender()QObject
setLevel(Severity level)QCA::Logger
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
Severity enum nameQCA::Logger
signalsBlocked()QObject
startTimer(int interval)QObject
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
unregisterLogDevice(const QString &loggerName)QCA::Logger
Warning enum valueQCA::Logger
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MACContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1MACContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1MACContext__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MACContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MACContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1MACContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1MACContext__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MACContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -321c819fd96365347f3ba83be5b2b67e \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1MACContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1MACContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MACContext.html qca2-2.1.0/apidocs/html/classQCA_1_1MACContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1MACContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MACContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,230 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::MACContext Class Reference - - - - - - -
-

QCA::MACContext Class Reference
- -[QCA provider API] -

-

Message authentication code provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::MACContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - -

Public Member Functions

virtual void final (MemoryRegion *out)=0
virtual KeyLength keyLength () const =0
 MACContext (Provider *p, const QString &type)
virtual void setup (const SymmetricKey &key)=0
virtual void update (const MemoryRegion &in)=0

Protected Member Functions

KeyLength anyKeyLength () const
-

Detailed Description

-

Message authentication code provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want MessageAuthenticationCode instead.
-
Examples:
-

aes-cmac.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::MACContext::MACContext (Provider p,
const QString type 
) [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
p the provider associated with this context
type the name of the type of MAC algorithm provided by this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
virtual void QCA::MACContext::setup (const SymmetricKey key )  [pure virtual]
-
-
- -

Set up the object for hashing.

-
Parameters:
- - -
key the key to use with the MAC.
-
-
- -
-
- -
-
- - - - - - - - -
virtual KeyLength QCA::MACContext::keyLength ( )  const [pure virtual]
-
-
- -

Returns the KeyLength for this MAC algorithm.

- -
-
- -
-
- - - - - - - - - -
virtual void QCA::MACContext::update (const MemoryRegion in )  [pure virtual]
-
-
- -

Process a chunk of data.

-
Parameters:
- - -
in the input data to process
-
-
- -
-
- -
-
- - - - - - - - - -
virtual void QCA::MACContext::final (MemoryRegion out )  [pure virtual]
-
-
- -

Compute the result after processing all data.

-
Parameters:
- - -
out pointer to an array that should store the result
-
-
- -
-
- -
-
- - - - - - - - -
KeyLength QCA::MACContext::anyKeyLength ( )  const [inline, protected]
-
-
- -

Returns a KeyLength that supports any length.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MACContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1MACContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1MACContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MACContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::MACContext Member List

This is the complete list of members for QCA::MACContext, including all inherited members. - - - - - - - - - -
anyKeyLength() const QCA::MACContext [inline, protected]
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
final(MemoryRegion *out)=0QCA::MACContext [pure virtual]
keyLength() const =0QCA::MACContext [pure virtual]
MACContext(Provider *p, const QString &type)QCA::MACContext [inline]
setup(const SymmetricKey &key)=0QCA::MACContext [pure virtual]
update(const MemoryRegion &in)=0QCA::MACContext [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MemoryRegion__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1MemoryRegion__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1MemoryRegion__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MemoryRegion__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MemoryRegion__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1MemoryRegion__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1MemoryRegion__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MemoryRegion__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -20988b24ee7b9df7a7d831f73794d941 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1MemoryRegion__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1MemoryRegion__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MemoryRegion.html qca2-2.1.0/apidocs/html/classQCA_1_1MemoryRegion.html --- qca2-2.0.3/apidocs/html/classQCA_1_1MemoryRegion.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MemoryRegion.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,655 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::MemoryRegion Class Reference - - - - - - -
-

QCA::MemoryRegion Class Reference
- -[QCA user API] -

-

Array of bytes that may be optionally secured. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::MemoryRegion:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

const char & at (int index) const
const char * constData () const
const char * data () const
bool isEmpty () const
bool isNull () const
bool isSecure () const
 MemoryRegion (const MemoryRegion &from)
 MemoryRegion (const QByteArray &from)
 MemoryRegion (const char *str)
MemoryRegionoperator= (const QByteArray &from)
MemoryRegionoperator= (const MemoryRegion &from)
int size () const
QByteArray toByteArray () const

Protected Member Functions

char & at (int index)
char * data ()
 MemoryRegion (const QByteArray &from, bool secure)
 MemoryRegion (int size, bool secure)
 MemoryRegion (bool secure)
bool resize (int size)
void set (const QByteArray &from, bool secure)
void setSecure (bool secure)
-

Detailed Description

-

Array of bytes that may be optionally secured.

-

This class is mostly unusable on its own. Either use it as a SecureArray subclass or call toByteArray() to convert to QByteArray.

-

Note that this class is implicitly shared (that is, copy on write).

-
Examples:
-

aes-cmac.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::MemoryRegion::MemoryRegion (const char *  str ) 
-
-
- -

Constructs a new Memory Region from a null terminated character array.

-
Parameters:
- - -
str pointer to the array of data to copy
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::MemoryRegion::MemoryRegion (const QByteArray from ) 
-
-
- -

Constructs a new MemoryRegion from the data in a byte array.

-
Parameters:
- - -
from the QByteArray to copy from
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::MemoryRegion::MemoryRegion (const MemoryRegion from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the MemoryRegion to copy from
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::MemoryRegion::MemoryRegion (bool  secure )  [protected]
-
-
- -

Create a memory region, optionally using secure storage.

-
Parameters:
- - -
secure if this is true, the memory region will use secure storage.
-
-
-
Note:
This will create a memory region without any content (i.e. both isNull() and isEmpty() will return true.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::MemoryRegion::MemoryRegion (int  size,
bool  secure 
) [protected]
-
-
- -

Create a memory region, optionally using secure storage.

-
Parameters:
- - - -
size the number of bytes in the memory region.
secure if this is true, the memory region will use secure storage.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::MemoryRegion::MemoryRegion (const QByteArray from,
bool  secure 
) [protected]
-
-
- -

Create a memory region, optionally using secure storage.

-

This constructor variant allows you to initialize the memory region from an existing array.

-
Parameters:
- - - -
from the byte array to copy from.
secure if this is true, the memory region will use secure storage.
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
MemoryRegion& QCA::MemoryRegion::operator= (const MemoryRegion from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the MemoryRegion to copy from
-
-
- -
-
- -
-
- - - - - - - - - -
MemoryRegion& QCA::MemoryRegion::operator= (const QByteArray from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the QByteArray to copy from
-
-
- -

Reimplemented in QCA::SecureArray.

- -
-
- -
-
- - - - - - - - -
bool QCA::MemoryRegion::isNull ( )  const
-
-
- -

Test if the MemoryRegion is null (i.e.

-

was created as a null array, and hasn't been resized).

-

This is probably not what you are trying to do. If you are trying to determine whether there are any bytes in the array, use isEmpty() instead.

- -
-
- -
-
- - - - - - - - -
bool QCA::MemoryRegion::isSecure ( )  const
-
-
- -

Test if the MemoryRegion is using secure memory, or not.

-

In this context, memory is secure if it will not be paged out to disk.

-
Returns:
true if the memory region is secure
- -
-
- -
-
- - - - - - - - -
QByteArray QCA::MemoryRegion::toByteArray ( )  const
-
-
- -

Convert this memory region to a byte array.

-
Note:
For secure data, this will make it insecure
-
See also:
data() and constData() for other ways to convert to an "accessible" format.
- -

Reimplemented in QCA::SecureArray.

- -
-
- -
-
- - - - - - - - -
bool QCA::MemoryRegion::isEmpty ( )  const
-
-
- -

Returns true if the size of the memory region is zero.

- -

Reimplemented in QCA::SecureArray.

- -
-
- -
-
- - - - - - - - -
int QCA::MemoryRegion::size ( )  const
-
-
- -

Returns the number of bytes in the memory region.

- -

Reimplemented in QCA::SecureArray.

- -
-
- -
-
- - - - - - - - -
const char* QCA::MemoryRegion::data ( )  const
-
-
- -

Convert the contents of the memory region to a C-compatible character array.

-

This consists of size() bytes, followed by a null terminator.

-
See also:
toByteArray for an alternative approach.
-
-constData, which is equivalent to this method, but avoids the possibility that the compiler picks the wrong version.
- -

Reimplemented in QCA::SecureArray.

- -
-
- -
-
- - - - - - - - -
const char* QCA::MemoryRegion::constData ( )  const
-
-
- -

Convert the contents of the memory region to a C-compatible character array.

-

This consists of size() bytes, followed by a null terminator.

-
See also:
toByteArray for an alternative approach.
-
-data which is equivalent to this method
- -

Reimplemented in QCA::SecureArray.

- -
-
- -
-
- - - - - - - - - -
const char& QCA::MemoryRegion::at (int  index )  const
-
-
- -

Obtain the value of the memory location at the specified position.

-
Parameters:
- - -
index the offset into the memory region.
-
-
-
Note:
The contents of a memory region are between 0 and size()-1. The content at position size() is always a null terminator.
- -

Reimplemented in QCA::SecureArray.

- -
-
- -
-
- - - - - - - - -
char* QCA::MemoryRegion::data ( )  [protected]
-
-
- -

Convert the contents of the memory region to a C-compatible character array.

-

This consists of size() bytes, followed by a null terminator.

- -

Reimplemented in QCA::SecureArray.

- -
-
- -
-
- - - - - - - - - -
char& QCA::MemoryRegion::at (int  index )  [protected]
-
-
- -

Obtain the value of the memory location at the specified position.

-
Parameters:
- - -
index the offset into the memory region.
-
-
-
Note:
The contents of a memory region are between 0 and size()-1. The content at position size() is always a null terminator.
- -

Reimplemented in QCA::SecureArray.

- -
-
- -
-
- - - - - - - - - -
bool QCA::MemoryRegion::resize (int  size )  [protected]
-
-
- -

Resize the memory region to the specified size.

-
Parameters:
- - -
size the new size of the region.
-
-
- -

Reimplemented in QCA::SecureArray.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::MemoryRegion::set (const QByteArray from,
bool  secure 
) [protected]
-
-
- -

Modify the memory region to match a specified byte array.

-

This resizes the memory region as required to match the byte array size.

-
Parameters:
- - - -
from the byte array to copy from.
secure if this is true, the memory region will use secure storage.
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::MemoryRegion::setSecure (bool  secure )  [protected]
-
-
- -

Convert the memory region to use the specified memory type.

-

This may involve copying data from secure to insecure storage, or from insecure to secure storage.

-
Parameters:
- - -
secure if true, use secure memory; otherwise use insecure memory.
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MemoryRegion-members.html qca2-2.1.0/apidocs/html/classQCA_1_1MemoryRegion-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1MemoryRegion-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MemoryRegion-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::MemoryRegion Member List

This is the complete list of members for QCA::MemoryRegion, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - -
at(int index) const QCA::MemoryRegion
at(int index)QCA::MemoryRegion [protected]
constData() const QCA::MemoryRegion
data() const QCA::MemoryRegion
data()QCA::MemoryRegion [protected]
isEmpty() const QCA::MemoryRegion
isNull() const QCA::MemoryRegion
isSecure() const QCA::MemoryRegion
MemoryRegion() (defined in QCA::MemoryRegion)QCA::MemoryRegion
MemoryRegion(const char *str)QCA::MemoryRegion
MemoryRegion(const QByteArray &from)QCA::MemoryRegion
MemoryRegion(const MemoryRegion &from)QCA::MemoryRegion
MemoryRegion(bool secure)QCA::MemoryRegion [protected]
MemoryRegion(int size, bool secure)QCA::MemoryRegion [protected]
MemoryRegion(const QByteArray &from, bool secure)QCA::MemoryRegion [protected]
operator=(const MemoryRegion &from)QCA::MemoryRegion
operator=(const QByteArray &from)QCA::MemoryRegion
resize(int size)QCA::MemoryRegion [protected]
set(const QByteArray &from, bool secure)QCA::MemoryRegion [protected]
setSecure(bool secure)QCA::MemoryRegion [protected]
size() const QCA::MemoryRegion
toByteArray() const QCA::MemoryRegion
~MemoryRegion() (defined in QCA::MemoryRegion)QCA::MemoryRegion
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MessageAuthenticationCode__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1MessageAuthenticationCode__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1MessageAuthenticationCode__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MessageAuthenticationCode__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MessageAuthenticationCode__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1MessageAuthenticationCode__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1MessageAuthenticationCode__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MessageAuthenticationCode__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -d6c06e40b147a4cf69a810212e238fbb \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1MessageAuthenticationCode__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1MessageAuthenticationCode__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MessageAuthenticationCode.html qca2-2.1.0/apidocs/html/classQCA_1_1MessageAuthenticationCode.html --- qca2-2.0.3/apidocs/html/classQCA_1_1MessageAuthenticationCode.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MessageAuthenticationCode.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,379 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::MessageAuthenticationCode Class Reference - - - - - - -
-

QCA::MessageAuthenticationCode Class Reference
- -[QCA user API] -

-

General class for message authentication code (MAC) algorithms. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::MessageAuthenticationCode:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - -

Public Member Functions

virtual void clear ()
virtual MemoryRegion final ()
KeyLength keyLength () const
 MessageAuthenticationCode (const MessageAuthenticationCode &from)
 MessageAuthenticationCode (const QString &type, const SymmetricKey &key, const QString &provider=QString())
MessageAuthenticationCodeoperator= (const MessageAuthenticationCode &from)
void setup (const SymmetricKey &key)
QString type () const
virtual void update (const MemoryRegion &array)
bool validKeyLength (int n) const

Static Public Member Functions

static QStringList supportedTypes (const QString &provider=QString())
-

Detailed Description

-

General class for message authentication code (MAC) algorithms.

-

MessageAuthenticationCode is a class for accessing the various message authentication code algorithms within QCA. HMAC using SHA1 ("hmac(sha1)") or HMAC using SHA256 ("hmac(sha256)") is recommended for new applications.

-

Note that if your application is potentially susceptable to "replay - attacks" where the message is sent more than once, you should include a counter in the message that is covered by the MAC, and check that the counter is always incremented every time you receive a message and MAC.

-

For more information on HMAC, see H. Krawczyk et al. RFC2104 "HMAC: Keyed-Hashing for Message Authentication"

-
Examples:
-

mactest.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QCA::MessageAuthenticationCode::MessageAuthenticationCode (const QString type,
const SymmetricKey key,
const QString provider = QString() 
)
-
-
- -

Standard constructor.

-
Parameters:
- - - - -
type the name of the MAC (and algorithm, if applicable) to use
key the shared key
provider the provider to use, if a particular provider is required
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::MessageAuthenticationCode::MessageAuthenticationCode (const MessageAuthenticationCode from ) 
-
-
- -

Standard copy constructor.

-

Copies the state (including key) from one MessageAuthenticationCode to another

-
Parameters:
- - -
from the MessageAuthenticationCode to copy state from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
MessageAuthenticationCode& QCA::MessageAuthenticationCode::operator= (const MessageAuthenticationCode from ) 
-
-
- -

Assignment operator.

-

Copies the state (including key) from one MessageAuthenticationCode to another

-
Parameters:
- - -
from the MessageAuthenticationCode to assign from.
-
-
- -
-
- -
-
- - - - - - - - - -
static QStringList QCA::MessageAuthenticationCode::supportedTypes (const QString provider = QString() )  [static]
-
-
- -

Returns a list of all of the message authentication code types available.

-
Parameters:
- - -
provider the name of the provider to get a list from, if one provider is required. If not specified, available message authentication codes types from all providers will be returned.
-
-
- -
-
- -
-
- - - - - - - - -
QString QCA::MessageAuthenticationCode::type ( )  const
-
-
- -

Return the MAC type.

- -

Reimplemented from QCA::Algorithm.

- -
-
- -
-
- - - - - - - - -
KeyLength QCA::MessageAuthenticationCode::keyLength ( )  const
-
-
- -

Return acceptable key lengths.

- -
-
- -
-
- - - - - - - - - -
bool QCA::MessageAuthenticationCode::validKeyLength (int  n )  const
-
-
- -

Test if a key length is valid for the MAC algorithm.

-
Parameters:
- - -
n the key length in bytes
-
-
-
Returns:
true if the key would be valid for the current algorithm
- -
-
- -
-
- - - - - - - - -
virtual void QCA::MessageAuthenticationCode::clear ( )  [virtual]
-
-
- -

Reset a MessageAuthenticationCode, dumping all previous parts of the message.

-

This method clears (or resets) the algorithm, effectively undoing any previous update() calls. You should use this call if you are re-using a MessageAuthenticationCode sub-class object to calculate additional MACs. Note that if the key doesn't need to be changed, you don't need to call setup() again, since the key can just be reused.

- -

Implements QCA::BufferedComputation.

- -
-
- -
-
- - - - - - - - - -
virtual void QCA::MessageAuthenticationCode::update (const MemoryRegion array )  [virtual]
-
-
- -

Update the MAC, adding more of the message contents to the digest.

-

The whole message needs to be added using this method before you call final().

-
Parameters:
- - -
array the message contents
-
-
- -

Implements QCA::BufferedComputation.

-
Examples:
mactest.cpp.
-
-
-
- -
-
- - - - - - - - -
virtual MemoryRegion QCA::MessageAuthenticationCode::final ( )  [virtual]
-
-
- -

Finalises input and returns the MAC result.

-

After calling update() with the required data, the hash results are finalised and produced.

-

Note that it is not possible to add further data (with update()) after calling final(). If you want to reuse the MessageAuthenticationCode object, you should call clear() and start to update() again.

- -

Implements QCA::BufferedComputation.

-
Examples:
mactest.cpp.
-
-
-
- -
-
- - - - - - - - - -
void QCA::MessageAuthenticationCode::setup (const SymmetricKey key ) 
-
-
- -

Initialise the MAC algorithm.

-
Parameters:
- - -
key the key to use for the algorithm
-
-
-
Examples:
mactest.cpp.
-
-
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MessageAuthenticationCode-members.html qca2-2.1.0/apidocs/html/classQCA_1_1MessageAuthenticationCode-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1MessageAuthenticationCode-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MessageAuthenticationCode-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::MessageAuthenticationCode Member List

This is the complete list of members for QCA::MessageAuthenticationCode, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
clear()QCA::MessageAuthenticationCode [virtual]
context()QCA::Algorithm
context() const QCA::Algorithm
final()QCA::MessageAuthenticationCode [virtual]
keyLength() const QCA::MessageAuthenticationCode
MessageAuthenticationCode(const QString &type, const SymmetricKey &key, const QString &provider=QString())QCA::MessageAuthenticationCode
MessageAuthenticationCode(const MessageAuthenticationCode &from)QCA::MessageAuthenticationCode
operator=(const MessageAuthenticationCode &from)QCA::MessageAuthenticationCode
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
process(const MemoryRegion &a)QCA::BufferedComputation
provider() const QCA::Algorithm
setup(const SymmetricKey &key)QCA::MessageAuthenticationCode
supportedTypes(const QString &provider=QString())QCA::MessageAuthenticationCode [static]
takeContext()QCA::Algorithm
type() const QCA::MessageAuthenticationCode
update(const MemoryRegion &array)QCA::MessageAuthenticationCode [virtual]
validKeyLength(int n) const QCA::MessageAuthenticationCode
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~BufferedComputation() (defined in QCA::BufferedComputation)QCA::BufferedComputation [virtual]
~MessageAuthenticationCode() (defined in QCA::MessageAuthenticationCode)QCA::MessageAuthenticationCode
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MessageContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1MessageContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1MessageContext__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MessageContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MessageContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1MessageContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1MessageContext__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MessageContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2379ff84efec46cbe6bad7a35460e001 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1MessageContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1MessageContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MessageContext.html qca2-2.1.0/apidocs/html/classQCA_1_1MessageContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1MessageContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MessageContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,639 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::MessageContext Class Reference - - - - - - -
-

QCA::MessageContext Class Reference
- -[QCA provider API] -

-

SecureMessage provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::MessageContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Types

enum  Operation {
-  Encrypt, -Decrypt, -Sign, -Verify, -
-  SignAndEncrypt -
- }

Signals

void updated ()

Public Member Functions

virtual bool canSignMultiple () const =0
virtual QString diagnosticText () const
virtual void end ()=0
virtual SecureMessage::Error errorCode () const =0
virtual bool finished () const =0
virtual QString hashName () const =0
 MessageContext (Provider *p, const QString &type)
virtual QByteArray read ()=0
virtual void reset ()=0
virtual void setupEncrypt (const SecureMessageKeyList &keys)=0
virtual void setupSign (const SecureMessageKeyList &keys, SecureMessage::SignMode m, bool bundleSigner, bool smime)=0
virtual void setupVerify (const QByteArray &detachedSig)=0
virtual QByteArray signature () const =0
virtual SecureMessageSignatureList signers () const =0
virtual void start (SecureMessage::Format f, Operation op)=0
virtual bool success () const =0
virtual SecureMessage::Type type () const =0
virtual void update (const QByteArray &in)=0
virtual bool waitForFinished (int msecs)=0
virtual int written ()=0
-

Detailed Description

-

SecureMessage provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want SecureMessage instead.
-

Member Enumeration Documentation

- -
- -
- -

The type of operation being performed.

-
Enumerator:
- - - - - -
Encrypt  -

Encrypt operation.

-
Decrypt  -

Decrypt (or Decrypt and Verify) operation.

-
Sign  -

Sign operation.

-
Verify  -

Verify operation.

-
SignAndEncrypt  -

Sign and Encrypt operation.

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::MessageContext::MessageContext (Provider p,
const QString type 
) [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
p the Provider associated with this context
type the name of the type of secure message to be created
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual bool QCA::MessageContext::canSignMultiple ( )  const [pure virtual]
-
-
- -

Returns true if the provider supports multiple signers for signature creation or signature verification.

- -
-
- -
-
- - - - - - - - -
virtual SecureMessage::Type QCA::MessageContext::type ( )  const [pure virtual]
-
-
- -

The type of secure message (e.g.

-

PGP or CMS)

- -
-
- -
-
- - - - - - - - -
virtual void QCA::MessageContext::reset ( )  [pure virtual]
-
-
- -

Reset the object to its initial state.

- -
-
- -
-
- - - - - - - - - -
virtual void QCA::MessageContext::setupEncrypt (const SecureMessageKeyList keys )  [pure virtual]
-
-
- -

Configure a new encrypting operation.

-
Parameters:
- - -
keys the keys to be used for encryption.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual void QCA::MessageContext::setupSign (const SecureMessageKeyList keys,
SecureMessage::SignMode  m,
bool  bundleSigner,
bool  smime 
) [pure virtual]
-
-
- -

Configure a new signing operation.

-
Parameters:
- - - - - -
keys the keys to use for signing
m the mode to sign in
bundleSigner whether to bundle the signing keys (true) or not (false)
smime whether to use smime format (true) or not (false)
-
-
- -
-
- -
-
- - - - - - - - - -
virtual void QCA::MessageContext::setupVerify (const QByteArray detachedSig )  [pure virtual]
-
-
- -

Configure a new verify operation.

-
Parameters:
- - -
detachedSig the detached signature to use (if applicable) for verification
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::MessageContext::start (SecureMessage::Format  f,
Operation  op 
) [pure virtual]
-
-
- -

Begins the secure message operation.

-

This function returns immediately.

-

If there is input data, update() will be called (potentially repeatedly) afterwards. Emit updated() if there is data to read, if input data has been accepted, or if the operation has finished.

-
Parameters:
- - - -
f the format of the message to be produced
op the operation to be performed
-
-
- -
-
- -
-
- - - - - - - - - -
virtual void QCA::MessageContext::update (const QByteArray in )  [pure virtual]
-
-
- -

Provide input to the message operation.

-
Parameters:
- - -
in the data to use for the message operation
-
-
- -
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::MessageContext::read ( )  [pure virtual]
-
-
- -

Extract output from the message operation.

- -
-
- -
-
- - - - - - - - -
virtual int QCA::MessageContext::written ( )  [pure virtual]
-
-
- -

Returns the number of input bytes accepted since the last call to update().

- -
-
- -
-
- - - - - - - - -
virtual void QCA::MessageContext::end ( )  [pure virtual]
-
-
- -

Indicates the end of input.

- -
-
- -
-
- - - - - - - - -
virtual bool QCA::MessageContext::finished ( )  const [pure virtual]
-
-
- -

Returns true if the operation has finished, otherwise false.

- -
-
- -
-
- - - - - - - - - -
virtual bool QCA::MessageContext::waitForFinished (int  msecs )  [pure virtual]
-
-
- -

Waits for the secure message operation to complete.

-

In this case, the updated() signal is not emitted. Returns true if the operation completed or false if this function times out.

-

This function is blocking.

-
Parameters:
- - -
msecs number of milliseconds to wait (-1 to wait forever)
-
-
- -
-
- -
-
- - - - - - - - -
virtual bool QCA::MessageContext::success ( )  const [pure virtual]
-
-
- -

Returns true if the operation was successful.

-

This is only valid if the operation has finished.

- -
-
- -
-
- - - - - - - - -
virtual SecureMessage::Error QCA::MessageContext::errorCode ( )  const [pure virtual]
-
-
- -

Returns the reason for failure, if the operation was not successful.

-

This is only valid if the operation has finished.

- -
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::MessageContext::signature ( )  const [pure virtual]
-
-
- -

Returns the signature, in the case of a detached signature operation.

-

This is only valid if the operation has finished.

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::MessageContext::hashName ( )  const [pure virtual]
-
-
- -

Returns the name of the hash used to generate the signature, in the case of a signature operation.

-

This is only valid if the operation has finished.

- -
-
- -
-
- - - - - - - - -
virtual SecureMessageSignatureList QCA::MessageContext::signers ( )  const [pure virtual]
-
-
- -

Returns a list of signatures, in the case of a verify or decrypt and verify operation.

-

This is only valid if the operation has finished.

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::MessageContext::diagnosticText ( )  const [virtual]
-
-
- -

Returns any diagnostic text for the operation, potentially useful to show the user in the event the operation is unsuccessful.

-

For example, this could be the stderr output of gpg.

-

This is only valid if the operation has finished.

- -
-
- -
-
- - - - - - - - -
void QCA::MessageContext::updated ( )  [signal]
-
-
- -

Emitted when there is data to read, if input data has been accepted, or if the operation has finished.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1MessageContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1MessageContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1MessageContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1MessageContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::MessageContext Member List

This is the complete list of members for QCA::MessageContext, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - -
canSignMultiple() const =0QCA::MessageContext [pure virtual]
Decrypt enum valueQCA::MessageContext
diagnosticText() const QCA::MessageContext [virtual]
Encrypt enum valueQCA::MessageContext
end()=0QCA::MessageContext [pure virtual]
errorCode() const =0QCA::MessageContext [pure virtual]
finished() const =0QCA::MessageContext [pure virtual]
hashName() const =0QCA::MessageContext [pure virtual]
MessageContext(Provider *p, const QString &type)QCA::MessageContext [inline]
Operation enum nameQCA::MessageContext
read()=0QCA::MessageContext [pure virtual]
reset()=0QCA::MessageContext [pure virtual]
setupEncrypt(const SecureMessageKeyList &keys)=0QCA::MessageContext [pure virtual]
setupSign(const SecureMessageKeyList &keys, SecureMessage::SignMode m, bool bundleSigner, bool smime)=0QCA::MessageContext [pure virtual]
setupVerify(const QByteArray &detachedSig)=0QCA::MessageContext [pure virtual]
Sign enum valueQCA::MessageContext
SignAndEncrypt enum valueQCA::MessageContext
signature() const =0QCA::MessageContext [pure virtual]
signers() const =0QCA::MessageContext [pure virtual]
start(SecureMessage::Format f, Operation op)=0QCA::MessageContext [pure virtual]
success() const =0QCA::MessageContext [pure virtual]
type() const =0QCA::MessageContext [pure virtual]
update(const QByteArray &in)=0QCA::MessageContext [pure virtual]
updated()QCA::MessageContext [signal]
Verify enum valueQCA::MessageContext
waitForFinished(int msecs)=0QCA::MessageContext [pure virtual]
written()=0QCA::MessageContext [pure virtual]
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1OpenPGP__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1OpenPGP__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1OpenPGP__coll__graph.map 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1OpenPGP__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1OpenPGP__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1OpenPGP__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1OpenPGP__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1OpenPGP__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -65756ae2c23bd93fd6da0f016f5d541c \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1OpenPGP__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1OpenPGP__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1OpenPGP.html qca2-2.1.0/apidocs/html/classQCA_1_1OpenPGP.html --- qca2-2.0.3/apidocs/html/classQCA_1_1OpenPGP.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1OpenPGP.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,106 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::OpenPGP Class Reference - - - - - - -
-

QCA::OpenPGP Class Reference
- -[QCA user API] -

-

Pretty Good Privacy messaging system. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::OpenPGP:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - -

Public Member Functions

 OpenPGP (QObject *parent=0, const QString &provider=QString())
-

Detailed Description

-

Pretty Good Privacy messaging system.

-
See also:
SecureMessage
-
-SecureMessageKey
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::OpenPGP::OpenPGP (QObject parent = 0,
const QString provider = QString() 
) [explicit]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
parent the parent object for this object
provider the provider to use, if a specific provider is required
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1OpenPGP-members.html qca2-2.1.0/apidocs/html/classQCA_1_1OpenPGP-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1OpenPGP-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1OpenPGP-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::OpenPGP Member List

This is the complete list of members for QCA::OpenPGP, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
blockSignals(bool block)QObject
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
childEvent(QChildEvent *event)QObject
children()QObject
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
context()QCA::Algorithm
context() const QCA::Algorithm
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
OpenPGP(QObject *parent=0, const QString &provider=QString())QCA::OpenPGP [explicit]
operator=(const Algorithm &from)QCA::Algorithm
parent()QObject
property(const char *name)QObject
provider() const QCA::Algorithm
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
SecureMessageSystem(QObject *parent, const QString &type, const QString &provider)QCA::SecureMessageSystem [protected]
sender()QObject
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
startTimer(int interval)QObject
takeContext()QCA::Algorithm
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
type() const QCA::Algorithm
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~OpenPGP() (defined in QCA::OpenPGP)QCA::OpenPGP
~SecureMessageSystem() (defined in QCA::SecureMessageSystem)QCA::SecureMessageSystem
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PasswordAsker__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1PasswordAsker__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1PasswordAsker__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PasswordAsker__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PasswordAsker__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1PasswordAsker__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1PasswordAsker__coll__graph.md5 2010-11-27 21:30:39.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PasswordAsker__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2eae92a4861d1cb42cdba9ba51a65447 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1PasswordAsker__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1PasswordAsker__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PasswordAsker.html qca2-2.1.0/apidocs/html/classQCA_1_1PasswordAsker.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PasswordAsker.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PasswordAsker.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,304 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::PasswordAsker Class Reference - - - - - - -
-

QCA::PasswordAsker Class Reference
- -[QCA user API] -

-

User password / passphrase / PIN handler. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::PasswordAsker:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - -

Signals

void responseReady ()

Public Member Functions

bool accepted () const
void ask (Event::PasswordStyle pstyle, const QString &fileName, void *ptr)
void ask (Event::PasswordStyle pstyle, const KeyStoreInfo &keyStoreInfo, const KeyStoreEntry &keyStoreEntry, void *ptr)
void cancel ()
SecureArray password () const
 PasswordAsker (QObject *parent=0)
void waitForResponse ()

Friends

-class Private
-

Detailed Description

-

User password / passphrase / PIN handler.

-

This class is used to obtain a password from a user.

-
Examples:
-

eventhandlerdemo.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::PasswordAsker::PasswordAsker (QObject parent = 0 ) 
-
-
- -

Construct a new asker.

-
Parameters:
- - -
parent the parent object for this QObject
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void QCA::PasswordAsker::ask (Event::PasswordStyle  pstyle,
const KeyStoreInfo keyStoreInfo,
const KeyStoreEntry keyStoreEntry,
void *  ptr 
)
-
-
- -

queue a password / passphrase request associated with a key store

-
Parameters:
- - - - - -
pstyle the type of information required (e.g. PIN, passphrase or password)
keyStoreInfo info of the key store that the information is required for
keyStoreEntry the item in the key store that the information is required for (if applicable)
ptr opaque data
-
-
-
Examples:
eventhandlerdemo.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void QCA::PasswordAsker::ask (Event::PasswordStyle  pstyle,
const QString fileName,
void *  ptr 
)
-
-
- -

queue a password / passphrase request associated with a file

-
Parameters:
- - - - -
pstyle the type of information required (e.g. PIN, passphrase or password)
fileName the name of the file that the information is required for
ptr opaque data
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::PasswordAsker::cancel ( ) 
-
-
- -

Cancel the pending password / passphrase request.

- -
-
- -
-
- - - - - - - - -
void QCA::PasswordAsker::waitForResponse ( ) 
-
-
- -

Block until the password / passphrase request is completed.

-

You can use the responseReady signal instead of blocking, if appropriate.

-
Examples:
eventhandlerdemo.cpp.
-
-
-
- -
-
- - - - - - - - -
bool QCA::PasswordAsker::accepted ( )  const
-
-
- -

Determine whether the password / passphrase was accepted or not.

-

In this context, returning true is indicative of the user clicking "Ok" or equivalent; and returning false indicates that either the user clicked "Cancel" or equivalent, or that the cancel() function was called, or that the request is still pending.

- -
-
- -
-
- - - - - - - - -
SecureArray QCA::PasswordAsker::password ( )  const
-
-
- -

The password / passphrase / PIN provided by the user in response to the asker request.

-

This may be empty.

-
Examples:
eventhandlerdemo.cpp.
-
-
-
- -
-
- - - - - - - - -
void QCA::PasswordAsker::responseReady ( )  [signal]
-
-
- -

Emitted when the asker process has been completed.

-

You should check whether the user accepted() the response prior to relying on the password().

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PasswordAsker-members.html qca2-2.1.0/apidocs/html/classQCA_1_1PasswordAsker-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PasswordAsker-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PasswordAsker-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::PasswordAsker Member List

This is the complete list of members for QCA::PasswordAsker, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
accepted() const QCA::PasswordAsker
ask(Event::PasswordStyle pstyle, const KeyStoreInfo &keyStoreInfo, const KeyStoreEntry &keyStoreEntry, void *ptr)QCA::PasswordAsker
ask(Event::PasswordStyle pstyle, const QString &fileName, void *ptr)QCA::PasswordAsker
blockSignals(bool block)QObject
cancel()QCA::PasswordAsker
childEvent(QChildEvent *event)QObject
children()QObject
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
parent()QObject
password() const QCA::PasswordAsker
PasswordAsker(QObject *parent=0)QCA::PasswordAsker
Private (defined in QCA::PasswordAsker)QCA::PasswordAsker [friend]
property(const char *name)QObject
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
responseReady()QCA::PasswordAsker [signal]
sender()QObject
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
startTimer(int interval)QObject
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
waitForResponse()QCA::PasswordAsker
~PasswordAsker() (defined in QCA::PasswordAsker)QCA::PasswordAsker
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF1__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF1__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF1__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF1__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF1__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF1__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF1__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF1__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -44541a2385ac61131f3b043fcc6e5562 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF1__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF1__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF1.html qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF1.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF1.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF1.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,104 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::PBKDF1 Class Reference - - - - - - -
-

QCA::PBKDF1 Class Reference
- -[QCA user API] -

-

Password based key derivation function version 1. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::PBKDF1:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - -

Public Member Functions

 PBKDF1 (const QString &algorithm="sha1", const QString &provider=QString())
-

Detailed Description

-

Password based key derivation function version 1.

-

This class implements Password Based Key Derivation Function version 1, as specified in RFC2898, and also in PKCS#5.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::PBKDF1::PBKDF1 (const QString algorithm = "sha1",
const QString provider = QString() 
) [inline, explicit]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
algorithm the name of the hashing algorithm to use
provider the name of the provider to use, if available
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF1-members.html qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF1-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF1-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF1-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::PBKDF1 Member List

This is the complete list of members for QCA::PBKDF1, including all inherited members. - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
KeyDerivationFunction(const KeyDerivationFunction &from)QCA::KeyDerivationFunction
KeyDerivationFunction(const QString &type, const QString &provider)QCA::KeyDerivationFunction [protected]
makeKey(const SecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount)QCA::KeyDerivationFunction
operator=(const KeyDerivationFunction &from)QCA::KeyDerivationFunction
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
PBKDF1(const QString &algorithm="sha1", const QString &provider=QString())QCA::PBKDF1 [inline, explicit]
provider() const QCA::Algorithm
takeContext()QCA::Algorithm
type() const QCA::Algorithm
withAlgorithm(const QString &kdfType, const QString &algType)QCA::KeyDerivationFunction [static]
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~KeyDerivationFunction() (defined in QCA::KeyDerivationFunction)QCA::KeyDerivationFunction
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF2__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF2__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF2__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF2__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF2__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF2__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF2__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF2__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -12ce223aa056d50673ec3cd6de0ff677 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF2__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF2__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF2.html qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF2.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF2.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF2.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,104 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::PBKDF2 Class Reference - - - - - - -
-

QCA::PBKDF2 Class Reference
- -[QCA user API] -

-

Password based key derivation function version 2. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::PBKDF2:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - -

Public Member Functions

 PBKDF2 (const QString &algorithm="sha1", const QString &provider=QString())
-

Detailed Description

-

Password based key derivation function version 2.

-

This class implements Password Based Key Derivation Function version 2, as specified in RFC2898, and also in PKCS#5.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::PBKDF2::PBKDF2 (const QString algorithm = "sha1",
const QString provider = QString() 
) [inline, explicit]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
algorithm the name of the hashing algorithm to use
provider the name of the provider to use, if available
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF2-members.html qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF2-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PBKDF2-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PBKDF2-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::PBKDF2 Member List

This is the complete list of members for QCA::PBKDF2, including all inherited members. - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
KeyDerivationFunction(const KeyDerivationFunction &from)QCA::KeyDerivationFunction
KeyDerivationFunction(const QString &type, const QString &provider)QCA::KeyDerivationFunction [protected]
makeKey(const SecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount)QCA::KeyDerivationFunction
operator=(const KeyDerivationFunction &from)QCA::KeyDerivationFunction
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
PBKDF2(const QString &algorithm="sha1", const QString &provider=QString())QCA::PBKDF2 [inline, explicit]
provider() const QCA::Algorithm
takeContext()QCA::Algorithm
type() const QCA::Algorithm
withAlgorithm(const QString &kdfType, const QString &algType)QCA::KeyDerivationFunction [static]
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~KeyDerivationFunction() (defined in QCA::KeyDerivationFunction)QCA::KeyDerivationFunction
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PGPKey__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1PGPKey__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1PGPKey__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PGPKey__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PGPKey__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1PGPKey__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1PGPKey__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PGPKey__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -883002479cd9749fa962745e7273d66f \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1PGPKey__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1PGPKey__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContext__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContext__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -095ce5512d4586f7ce0a1de729f1f7f6 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContext.html qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,211 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::PGPKeyContext Class Reference - - - - - - -
-

QCA::PGPKeyContext Class Reference
- -[QCA provider API] -

-

OpenPGP key provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::PGPKeyContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - -

Public Member Functions

virtual ConvertResult fromAscii (const QString &s)=0
virtual ConvertResult fromBinary (const QByteArray &a)=0
 PGPKeyContext (Provider *p)
virtual const PGPKeyContextPropsprops () const =0
virtual QString toAscii () const =0
virtual QByteArray toBinary () const =0
-

Detailed Description

-

OpenPGP key provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want PGPKey instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::PGPKeyContext::PGPKeyContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the Provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual const PGPKeyContextProps* QCA::PGPKeyContext::props ( )  const [pure virtual]
-
-
- -

Returns a pointer to the properties of this key.

- -
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::PGPKeyContext::toBinary ( )  const [pure virtual]
-
-
- -

Convert the key to binary format, and return the value.

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::PGPKeyContext::toAscii ( )  const [pure virtual]
-
-
- -

Convert the key to ascii-armored format, and return the value.

- -
-
- -
-
- - - - - - - - - -
virtual ConvertResult QCA::PGPKeyContext::fromBinary (const QByteArray a )  [pure virtual]
-
-
- -

Read binary input and convert it into a key.

-

Returns QCA::ConvertGood if successful, otherwise some error value.

-
Parameters:
- - -
a the input data
-
-
- -
-
- -
-
- - - - - - - - - -
virtual ConvertResult QCA::PGPKeyContext::fromAscii (const QString s )  [pure virtual]
-
-
- -

Read ascii-armored input and convert it into a key.

-

Returns QCA::ConvertGood if successful, otherwise some error value.

-
Parameters:
- - -
s the input data
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::PGPKeyContext Member List

This is the complete list of members for QCA::PGPKeyContext, including all inherited members. - - - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
fromAscii(const QString &s)=0QCA::PGPKeyContext [pure virtual]
fromBinary(const QByteArray &a)=0QCA::PGPKeyContext [pure virtual]
PGPKeyContext(Provider *p)QCA::PGPKeyContext [inline]
props() const =0QCA::PGPKeyContext [pure virtual]
toAscii() const =0QCA::PGPKeyContext [pure virtual]
toBinary() const =0QCA::PGPKeyContext [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContextProps__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContextProps__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContextProps__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContextProps__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContextProps__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContextProps__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContextProps__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContextProps__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -e622a2276722db93cc49fbb7964c76b9 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContextProps__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContextProps__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContextProps.html qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContextProps.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContextProps.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContextProps.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::PGPKeyContextProps Class Reference - - - - - - -
-

QCA::PGPKeyContextProps Class Reference
- -[QCA provider API] -

-

OpenPGP key properties. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::PGPKeyContextProps:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - -

Public Attributes

QDateTime creationDate
QDateTime expirationDate
QString fingerprint
bool inKeyring
bool isSecret
bool isTrusted
QString keyId
QStringList userIds
-

Detailed Description

-

OpenPGP key properties.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want PGPKey instead.
-

For efficiency and simplicity, the members are directly accessed.

-

Member Data Documentation

- -
- -
- -

The key id.

- -
-
- -
- -
- -

List of user id strings for the key, the first one being the primary user id.

- -
-
- -
- -
- -

True if this key is a secret key, otherwise false.

- -
-
- -
- -
- -

The time the key was created.

- -
-
- -
- -
- -

The time the key expires.

- -
-
- -
- -
- -

The hex fingerprint of the key.

-

The format is all lowercase with no spaces.

- -
-
- -
- -
- -

True if this key is in a keyring (and thus usable), otherwise false.

- -
-
- -
- -
- -

True if this key is trusted (e.g.

-

signed by the keyring owner or via some web-of-trust), otherwise false

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContextProps-members.html qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContextProps-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PGPKeyContextProps-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PGPKeyContextProps-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::PGPKeyContextProps Member List

This is the complete list of members for QCA::PGPKeyContextProps, including all inherited members. - - - - - - - - -
creationDateQCA::PGPKeyContextProps
expirationDateQCA::PGPKeyContextProps
fingerprintQCA::PGPKeyContextProps
inKeyringQCA::PGPKeyContextProps
isSecretQCA::PGPKeyContextProps
isTrustedQCA::PGPKeyContextProps
keyIdQCA::PGPKeyContextProps
userIdsQCA::PGPKeyContextProps
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PGPKey.html qca2-2.1.0/apidocs/html/classQCA_1_1PGPKey.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PGPKey.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PGPKey.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,587 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::PGPKey Class Reference - - - - - - -
-

QCA::PGPKey Class Reference
- -[QCA user API] -

-

Pretty Good Privacy key. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::PGPKey:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

QDateTime creationDate () const
QDateTime expirationDate () const
QString fingerprint () const
bool inKeyring () const
bool isNull () const
bool isSecret () const
bool isTrusted () const
QString keyId () const
PGPKeyoperator= (const PGPKey &from)
 PGPKey (const PGPKey &from)
 PGPKey (const QString &fileName)
 PGPKey ()
QString primaryUserId () const
QByteArray toArray () const
bool toFile (const QString &fileName) const
QString toString () const
QStringList userIds () const

Static Public Member Functions

static PGPKey fromArray (const QByteArray &a, ConvertResult *result=0, const QString &provider=QString())
static PGPKey fromFile (const QString &fileName, ConvertResult *result=0, const QString &provider=QString())
static PGPKey fromString (const QString &s, ConvertResult *result=0, const QString &provider=QString())
-

Detailed Description

-

Pretty Good Privacy key.

-

This holds either a reference to an item in a real PGP keyring, or a standalone item created using the from*() functions.

-

Note that with the latter method, the key is of no use besides being informational. The key must be in a keyring (that is, inKeyring() == true) to actually do crypto with it.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::PGPKey::PGPKey ( ) 
-
-
- -

Create an empty PGP key.

- -
-
- -
-
- - - - - - - - - -
QCA::PGPKey::PGPKey (const QString fileName ) 
-
-
- -

Create a PGP key from an encoded file.

-
Parameters:
- - -
fileName the name (and path, if required) of the file that the PGP key is to be loaded from.
-
-
-
See also:
fromFile for a version that allows better error checking / validation
-
-toFile for a method to write out the key.
- -
-
- -
-
- - - - - - - - - -
QCA::PGPKey::PGPKey (const PGPKey from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the PGPKey to use as the source
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
PGPKey& QCA::PGPKey::operator= (const PGPKey from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the PGPKey to use as the source
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::PGPKey::isNull ( )  const
-
-
- -

Test if the PGP key is empty (null).

-
Returns:
true if the PGP key is null
- -
-
- -
-
- - - - - - - - -
QString QCA::PGPKey::keyId ( )  const
-
-
- -

The Key identification for the PGP key.

- -
-
- -
-
- - - - - - - - -
QString QCA::PGPKey::primaryUserId ( )  const
-
-
- -

The primary user identification for the key.

- -
-
- -
-
- - - - - - - - -
QStringList QCA::PGPKey::userIds ( )  const
-
-
- -

The list of all user identifications associated with the key.

- -
-
- -
-
- - - - - - - - -
bool QCA::PGPKey::isSecret ( )  const
-
-
- -

Test if the PGP key is the secret key.

-
Returns:
true if the PGP key is the secret key
- -
-
- -
-
- - - - - - - - -
QDateTime QCA::PGPKey::creationDate ( )  const
-
-
- -

The creation date for the key.

- -
-
- -
-
- - - - - - - - -
QDateTime QCA::PGPKey::expirationDate ( )  const
-
-
- -

The expiration date for the key.

- -
-
- -
-
- - - - - - - - -
QString QCA::PGPKey::fingerprint ( )  const
-
-
- -

The key fingerpint.

-

This will return the PGP fingerprint as a string. It comprises 40 hex digits, without spaces.

- -
-
- -
-
- - - - - - - - -
bool QCA::PGPKey::inKeyring ( )  const
-
-
- -

Test if this key is in a keyring.

-
Returns:
true if the key is in a keyring
-
Note:
keys that are not in a keyring cannot be used for encryption, decryption, signing or verification
- -
-
- -
-
- - - - - - - - -
bool QCA::PGPKey::isTrusted ( )  const
-
-
- -

Test if the key is trusted.

-
Returns:
true if the key is trusted
- -
-
- -
-
- - - - - - - - -
QByteArray QCA::PGPKey::toArray ( )  const
-
-
- -

Export the key to an array.

-

This will export the key in a binary format (that is, not in an "ascii armoured" form).

-
See also:
fromArray for a static import method.
-
-toString for an "ascii armoured" export method.
- -
-
- -
-
- - - - - - - - -
QString QCA::PGPKey::toString ( )  const
-
-
- -

Export the key to a string.

-

This will export the key in an "ascii armoured" form.

-
See also:
fromString for a static import method.
-
-toArray for a binary format export method.
- -
-
- -
-
- - - - - - - - - -
bool QCA::PGPKey::toFile (const QString fileName )  const
-
-
- -

Export the key to a file.

-
Parameters:
- - -
fileName the name of the file to save the key to
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static PGPKey QCA::PGPKey::fromArray (const QByteArray a,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import the key from an array.

-
Parameters:
- - - - -
a the array to import from
result if not null, this will be set to the result of the import process
provider the provider to use, if a particular provider is required
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static PGPKey QCA::PGPKey::fromString (const QString s,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import the key from a string.

-
Parameters:
- - - - -
s the string to import from
result if not null, this will be set to the result of the import process
provider the provider to use, if a particular provider is required
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static PGPKey QCA::PGPKey::fromFile (const QString fileName,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import the key from a file.

-
Parameters:
- - - - -
fileName string containing the name of the file to import from
result if not null, this will be set to the result of the import process
provider the provider to use, if a particular provider is required
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PGPKey-members.html qca2-2.1.0/apidocs/html/classQCA_1_1PGPKey-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PGPKey-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PGPKey-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::PGPKey Member List

This is the complete list of members for QCA::PGPKey, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
creationDate() const QCA::PGPKey
expirationDate() const QCA::PGPKey
fingerprint() const QCA::PGPKey
fromArray(const QByteArray &a, ConvertResult *result=0, const QString &provider=QString())QCA::PGPKey [static]
fromFile(const QString &fileName, ConvertResult *result=0, const QString &provider=QString())QCA::PGPKey [static]
fromString(const QString &s, ConvertResult *result=0, const QString &provider=QString())QCA::PGPKey [static]
inKeyring() const QCA::PGPKey
isNull() const QCA::PGPKey
isSecret() const QCA::PGPKey
isTrusted() const QCA::PGPKey
keyId() const QCA::PGPKey
operator=(const PGPKey &from)QCA::PGPKey
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
PGPKey()QCA::PGPKey
PGPKey(const QString &fileName)QCA::PGPKey
PGPKey(const PGPKey &from)QCA::PGPKey
primaryUserId() const QCA::PGPKey
provider() const QCA::Algorithm
takeContext()QCA::Algorithm
toArray() const QCA::PGPKey
toFile(const QString &fileName) const QCA::PGPKey
toString() const QCA::PGPKey
type() const QCA::Algorithm
userIds() const QCA::PGPKey
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~PGPKey() (defined in QCA::PGPKey)QCA::PGPKey
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKCS12Context__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1PKCS12Context__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1PKCS12Context__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKCS12Context__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKCS12Context__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1PKCS12Context__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1PKCS12Context__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKCS12Context__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2cbc0add1271568c601112df9dc28242 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1PKCS12Context__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1PKCS12Context__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKCS12Context.html qca2-2.1.0/apidocs/html/classQCA_1_1PKCS12Context.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PKCS12Context.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKCS12Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,207 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::PKCS12Context Class Reference - - - - - - -
-

QCA::PKCS12Context Class Reference
- -[QCA provider API] -

-

PKCS#12 provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::PKCS12Context:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - -

Public Member Functions

virtual ConvertResult fromPKCS12 (const QByteArray &in, const SecureArray &passphrase, QString *name, QList< CertContext * > *chain, PKeyContext **priv) const =0
 PKCS12Context (Provider *p)
virtual QByteArray toPKCS12 (const QString &name, const QList< const CertContext * > &chain, const PKeyContext &priv, const SecureArray &passphrase) const =0
-

Detailed Description

-

PKCS#12 provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want KeyBundle instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::PKCS12Context::PKCS12Context (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the Provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual QByteArray QCA::PKCS12Context::toPKCS12 (const QString name,
const QList< const CertContext * > &  chain,
const PKeyContext priv,
const SecureArray passphrase 
) const [pure virtual]
-
-
- -

Create PKCS#12 DER output based on a set of input items.

-

Returns an empty array on error.

-
Parameters:
- - - - - -
name the friendly name of the data
chain the certificate chain to store
priv the private key to store
passphrase the passphrase to encrypt the PKCS#12 data with
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual ConvertResult QCA::PKCS12Context::fromPKCS12 (const QByteArray in,
const SecureArray passphrase,
QString name,
QList< CertContext * > *  chain,
PKeyContext **  priv 
) const [pure virtual]
-
-
- -

Read PKCS#12 DER input and convert it into a set of output items.

-

The caller is responsible for deleting the returned items.

-

Returns QCA::ConvertGood if successful, otherwise some error value.

-
Parameters:
- - - - - - -
in the input data
passphrase the passphrase needed to decrypt the input data
name the destination string for the friendly name
chain the destination list for the certificate chain
priv address of a pointer to accept the private key
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKCS12Context-members.html qca2-2.1.0/apidocs/html/classQCA_1_1PKCS12Context-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PKCS12Context-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKCS12Context-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::PKCS12Context Member List

This is the complete list of members for QCA::PKCS12Context, including all inherited members. - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
fromPKCS12(const QByteArray &in, const SecureArray &passphrase, QString *name, QList< CertContext * > *chain, PKeyContext **priv) const =0QCA::PKCS12Context [pure virtual]
PKCS12Context(Provider *p)QCA::PKCS12Context [inline]
toPKCS12(const QString &name, const QList< const CertContext * > &chain, const PKeyContext &priv, const SecureArray &passphrase) const =0QCA::PKCS12Context [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKeyBase__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1PKeyBase__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1PKeyBase__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKeyBase__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKeyBase__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1PKeyBase__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1PKeyBase__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKeyBase__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -e0babdce303ecc99a661c480f67f4c2b \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1PKeyBase__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1PKeyBase__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKeyBase.html qca2-2.1.0/apidocs/html/classQCA_1_1PKeyBase.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PKeyBase.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKeyBase.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,536 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::PKeyBase Class Reference - - - - - - -
-

QCA::PKeyBase Class Reference
- -[QCA provider API] -

-

Public key implementation provider base. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::PKeyBase:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - -

Signals

void finished ()

Public Member Functions

virtual int bits () const =0
virtual bool canExport () const =0
virtual void convertToPublic ()=0
virtual bool decrypt (const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg)
virtual SymmetricKey deriveKey (const PKeyBase &theirs)
virtual SecureArray encrypt (const SecureArray &in, EncryptionAlgorithm alg)
virtual QByteArray endSign ()
virtual bool endVerify (const QByteArray &sig)
virtual bool isNull () const =0
virtual bool isPrivate () const =0
virtual int maximumEncryptSize (EncryptionAlgorithm alg) const
 PKeyBase (Provider *p, const QString &type)
virtual void startSign (SignatureAlgorithm alg, SignatureFormat format)
virtual void startVerify (SignatureAlgorithm alg, SignatureFormat format)
virtual PKey::Type type () const =0
virtual void update (const MemoryRegion &in)
-

Detailed Description

-

Public key implementation provider base.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want PKey, PublicKey, or PrivateKey instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::PKeyBase::PKeyBase (Provider p,
const QString type 
)
-
-
- -

Standard constructor.

-
Parameters:
- - - -
p the Provider associated with this context
type type of key provided by this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual bool QCA::PKeyBase::isNull ( )  const [pure virtual]
-
-
- -

Returns true if this object is not valid.

-

This is the default state, and the object may also become this state if a conversion or generation function fails.

- -
-
- -
-
- - - - - - - - -
virtual PKey::Type QCA::PKeyBase::type ( )  const [pure virtual]
-
-
- -

Returns the type of public key.

- -
-
- -
-
- - - - - - - - -
virtual bool QCA::PKeyBase::isPrivate ( )  const [pure virtual]
-
-
- -

Returns true if this is a private key, otherwise false.

- -
-
- -
-
- - - - - - - - -
virtual bool QCA::PKeyBase::canExport ( )  const [pure virtual]
-
-
- -

Returns true if the components of this key are accessible and whether it can be serialized into an output format.

-

Private keys from a smart card device will often not be exportable.

- -
-
- -
-
- - - - - - - - -
virtual void QCA::PKeyBase::convertToPublic ( )  [pure virtual]
-
-
- -

If the key is a private key, this function will convert it into a public key (all private key data includes the public data as well, which is why this is possible).

-

If the key is already a public key, then this function has no effect.

- -
-
- -
-
- - - - - - - - -
virtual int QCA::PKeyBase::bits ( )  const [pure virtual]
-
-
- -

Returns the number of bits in the key.

- -
-
- -
-
- - - - - - - - - -
virtual int QCA::PKeyBase::maximumEncryptSize (EncryptionAlgorithm  alg )  const [virtual]
-
-
- -

Returns the maximum number of bytes that can be encrypted by this key.

-
Parameters:
- - -
alg the algorithm to be used for encryption
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual SecureArray QCA::PKeyBase::encrypt (const SecureArray in,
EncryptionAlgorithm  alg 
) [virtual]
-
-
- -

Encrypt data.

-
Parameters:
- - - -
in the input data to encrypt
alg the encryption algorithm to use
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual bool QCA::PKeyBase::decrypt (const SecureArray in,
SecureArray out,
EncryptionAlgorithm  alg 
) [virtual]
-
-
- -

Decrypt data.

-
Parameters:
- - - - -
in the input data to decrypt
out pointer to an array to store the plaintext result
alg the encryption algorithm used to generate the input data
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::PKeyBase::startSign (SignatureAlgorithm  alg,
SignatureFormat  format 
) [virtual]
-
-
- -

Begin a signing operation.

-
Parameters:
- - - -
alg the signature algorithm to use
format the signature format to use
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::PKeyBase::startVerify (SignatureAlgorithm  alg,
SignatureFormat  format 
) [virtual]
-
-
- -

Begin a verify operation.

-
Parameters:
- - - -
alg the signature algorithm used by the input signature
format the signature format used by the input signature
-
-
- -
-
- -
-
- - - - - - - - - -
virtual void QCA::PKeyBase::update (const MemoryRegion in )  [virtual]
-
-
- -

Process the plaintext input data for either signing or verifying, whichever operation is active.

-
Parameters:
- - -
in the input data to process
-
-
- -
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::PKeyBase::endSign ( )  [virtual]
-
-
- -

Complete a signing operation, and return the signature value.

-

If there is an error signing, an empty array is returned.

- -
-
- -
-
- - - - - - - - - -
virtual bool QCA::PKeyBase::endVerify (const QByteArray sig )  [virtual]
-
-
- -

Complete a verify operation, and return true if successful.

-

If there is an error verifying, this function returns false.

-
Parameters:
- - -
sig the signature to verify with the input data
-
-
- -
-
- -
-
- - - - - - - - - -
virtual SymmetricKey QCA::PKeyBase::deriveKey (const PKeyBase theirs )  [virtual]
-
-
- -

Compute a symmetric key based on this private key and some other public key.

-

Essentially for Diffie-Hellman only.

-
Parameters:
- - -
theirs the other side (public key) to be used for key generation.
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::PKeyBase::finished ( )  [signal]
-
-
- -

Emitted when an asynchronous operation completes on this key.

-

Such operations will be documented that they emit this signal.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKeyBase-members.html qca2-2.1.0/apidocs/html/classQCA_1_1PKeyBase-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PKeyBase-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKeyBase-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::PKeyBase Member List

This is the complete list of members for QCA::PKeyBase, including all inherited members. - - - - - - - - - - - - - - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
bits() const =0QCA::PKeyBase [pure virtual]
canExport() const =0QCA::PKeyBase [pure virtual]
convertToPublic()=0QCA::PKeyBase [pure virtual]
decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg)QCA::PKeyBase [virtual]
deriveKey(const PKeyBase &theirs)QCA::PKeyBase [virtual]
encrypt(const SecureArray &in, EncryptionAlgorithm alg)QCA::PKeyBase [virtual]
endSign()QCA::PKeyBase [virtual]
endVerify(const QByteArray &sig)QCA::PKeyBase [virtual]
finished()QCA::PKeyBase [signal]
isNull() const =0QCA::PKeyBase [pure virtual]
isPrivate() const =0QCA::PKeyBase [pure virtual]
maximumEncryptSize(EncryptionAlgorithm alg) const QCA::PKeyBase [virtual]
PKeyBase(Provider *p, const QString &type)QCA::PKeyBase
startSign(SignatureAlgorithm alg, SignatureFormat format)QCA::PKeyBase [virtual]
startVerify(SignatureAlgorithm alg, SignatureFormat format)QCA::PKeyBase [virtual]
type() const =0QCA::PKeyBase [pure virtual]
update(const MemoryRegion &in)QCA::PKeyBase [virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKey__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1PKey__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1PKey__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKey__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKey__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1PKey__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1PKey__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKey__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -623c7782175a92a402256885e45e5b48 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1PKey__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1PKey__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKeyContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1PKeyContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1PKeyContext__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKeyContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKeyContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1PKeyContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1PKeyContext__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKeyContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -9a8109af9197f147ee112976c4b02755 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1PKeyContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1PKeyContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKeyContext.html qca2-2.1.0/apidocs/html/classQCA_1_1PKeyContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PKeyContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKeyContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,503 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::PKeyContext Class Reference - - - - - - -
-

QCA::PKeyContext Class Reference
- -[QCA provider API] -

-

Public key container provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::PKeyContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - -

Public Member Functions

virtual bool importKey (const PKeyBase *key)=0
virtual const PKeyBasekey () const =0
virtual PKeyBasekey ()=0
 PKeyContext (Provider *p)
virtual ConvertResult privateFromDER (const SecureArray &a, const SecureArray &passphrase)
virtual ConvertResult privateFromPEM (const QString &s, const SecureArray &passphrase)
virtual SecureArray privateToDER (const SecureArray &passphrase, PBEAlgorithm pbe) const
virtual QString privateToPEM (const SecureArray &passphrase, PBEAlgorithm pbe) const
virtual ConvertResult publicFromDER (const QByteArray &a)
virtual ConvertResult publicFromPEM (const QString &s)
virtual QByteArray publicToDER () const
virtual QString publicToPEM () const
virtual void setKey (PKeyBase *key)=0
virtual QList< PKey::TypesupportedIOTypes () const =0
virtual QList< PBEAlgorithmsupportedPBEAlgorithms () const =0
virtual QList< PKey::TypesupportedTypes () const =0
-

Detailed Description

-

Public key container provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want PKey, PublicKey, or PrivateKey instead.
-

This object "holds" a public key object. By default it contains no key (key() returns 0), but you can put a key into it with setKey(), or you can call an import function such as publicFromDER().

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::PKeyContext::PKeyContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual QList<PKey::Type> QCA::PKeyContext::supportedTypes ( )  const [pure virtual]
-
-
- -

Returns a list of supported public key types.

- -
-
- -
-
- - - - - - - - -
virtual QList<PKey::Type> QCA::PKeyContext::supportedIOTypes ( )  const [pure virtual]
-
-
- -

Returns a list of public key types that can be serialized and deserialized into DER and PEM format.

- -
-
- -
-
- - - - - - - - -
virtual QList<PBEAlgorithm> QCA::PKeyContext::supportedPBEAlgorithms ( )  const [pure virtual]
-
-
- -

Returns a list of password-based encryption algorithms that are supported for private key serialization and deserialization.

- -
-
- -
-
- - - - - - - - -
virtual PKeyBase* QCA::PKeyContext::key ( )  [pure virtual]
-
-
- -

Returns the key held by this object, or 0 if there is no key.

- -
-
- -
-
- - - - - - - - -
virtual const PKeyBase* QCA::PKeyContext::key ( )  const [pure virtual]
-
-
- -

Returns the key held by this object, or 0 if there is no key.

- -
-
- -
-
- - - - - - - - - -
virtual void QCA::PKeyContext::setKey (PKeyBase key )  [pure virtual]
-
-
- -

Sets the key for this object.

-

If this object already had a key, then the old one is destructed. This object takes ownership of the key.

-
Parameters:
- - -
key the key to be set for this object
-
-
- -
-
- -
-
- - - - - - - - - -
virtual bool QCA::PKeyContext::importKey (const PKeyBase key )  [pure virtual]
-
-
- -

Attempt to import a key from another provider.

-

Returns true if successful, otherwise false.

-

Generally this function is used if the specified key's provider does not support serialization, but your provider does. The call to this function would then be followed by an export function, such as publicToDER().

-
Parameters:
- - -
key the key to be imported
-
-
- -
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::PKeyContext::publicToDER ( )  const [virtual]
-
-
- -

Convert a public key to DER format, and return the value.

-

Returns an empty array on error.

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::PKeyContext::publicToPEM ( )  const [virtual]
-
-
- -

Convert a public key to PEM format, and return the value.

-

Returns an empty string on error.

- -
-
- -
-
- - - - - - - - - -
virtual ConvertResult QCA::PKeyContext::publicFromDER (const QByteArray a )  [virtual]
-
-
- -

Read DER-formatted input and convert it into a public key.

-

Returns QCA::ConvertGood if successful, otherwise some error value.

-
Parameters:
- - -
a the input data
-
-
- -
-
- -
-
- - - - - - - - - -
virtual ConvertResult QCA::PKeyContext::publicFromPEM (const QString s )  [virtual]
-
-
- -

Read PEM-formatted input and convert it into a public key.

-

Returns QCA::ConvertGood if successful, otherwise some error value.

-
Parameters:
- - -
s the input data
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual SecureArray QCA::PKeyContext::privateToDER (const SecureArray passphrase,
PBEAlgorithm  pbe 
) const [virtual]
-
-
- -

Convert a private key to DER format, and return the value.

-

Returns an empty array on error.

-
Parameters:
- - - -
passphrase the passphrase to encode the result with, or an empty array if no encryption is desired
pbe the encryption algorithm to use, if applicable
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual QString QCA::PKeyContext::privateToPEM (const SecureArray passphrase,
PBEAlgorithm  pbe 
) const [virtual]
-
-
- -

Convert a private key to PEM format, and return the value.

-

Returns an empty string on error.

-
Parameters:
- - - -
passphrase the passphrase to encode the result with, or an empty array if no encryption is desired
pbe the encryption algorithm to use, if applicable
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual ConvertResult QCA::PKeyContext::privateFromDER (const SecureArray a,
const SecureArray passphrase 
) [virtual]
-
-
- -

Read DER-formatted input and convert it into a private key.

-

Returns QCA::ConvertGood if successful, otherwise some error value.

-
Parameters:
- - - -
a the input data
passphrase the passphrase needed to decrypt, if applicable
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual ConvertResult QCA::PKeyContext::privateFromPEM (const QString s,
const SecureArray passphrase 
) [virtual]
-
-
- -

Read PEM-formatted input and convert it into a private key.

-

Returns QCA::ConvertGood if successful, otherwise some error value.

-
Parameters:
- - - -
s the input data
passphrase the passphrase needed to decrypt, if applicable
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKeyContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1PKeyContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PKeyContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKeyContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::PKeyContext Member List

This is the complete list of members for QCA::PKeyContext, including all inherited members. - - - - - - - - - - - - - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
importKey(const PKeyBase *key)=0QCA::PKeyContext [pure virtual]
key()=0QCA::PKeyContext [pure virtual]
key() const =0QCA::PKeyContext [pure virtual]
PKeyContext(Provider *p)QCA::PKeyContext [inline]
privateFromDER(const SecureArray &a, const SecureArray &passphrase)QCA::PKeyContext [virtual]
privateFromPEM(const QString &s, const SecureArray &passphrase)QCA::PKeyContext [virtual]
privateToDER(const SecureArray &passphrase, PBEAlgorithm pbe) const QCA::PKeyContext [virtual]
privateToPEM(const SecureArray &passphrase, PBEAlgorithm pbe) const QCA::PKeyContext [virtual]
publicFromDER(const QByteArray &a)QCA::PKeyContext [virtual]
publicFromPEM(const QString &s)QCA::PKeyContext [virtual]
publicToDER() const QCA::PKeyContext [virtual]
publicToPEM() const QCA::PKeyContext [virtual]
setKey(PKeyBase *key)=0QCA::PKeyContext [pure virtual]
supportedIOTypes() const =0QCA::PKeyContext [pure virtual]
supportedPBEAlgorithms() const =0QCA::PKeyContext [pure virtual]
supportedTypes() const =0QCA::PKeyContext [pure virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKey.html qca2-2.1.0/apidocs/html/classQCA_1_1PKey.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PKey.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKey.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,755 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::PKey Class Reference - - - - - - -
-

QCA::PKey Class Reference
- -[QCA user API] -

-

General superclass for public (PublicKey) and private (PrivateKey) keys used with asymmetric encryption techniques. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::PKey:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Types

enum  Type { RSA, -DSA, -DH - }

Public Member Functions

int bitSize () const
bool canExport () const
bool canKeyAgree () const
bool isDH () const
bool isDSA () const
bool isNull () const
bool isPrivate () const
bool isPublic () const
bool isRSA () const
bool operator!= (const PKey &a) const
PKeyoperator= (const PKey &from)
bool operator== (const PKey &a) const
 PKey (const PKey &from)
 PKey ()
PrivateKey toPrivateKey () const
PublicKey toPublicKey () const
Type type () const

Static Public Member Functions

static QList< TypesupportedIOTypes (const QString &provider=QString())
static QList< TypesupportedTypes (const QString &provider=QString())

Protected Member Functions

 PKey (const QString &type, const QString &provider)
void set (const PKey &k)
DHPrivateKey toDHPrivateKey () const
DHPublicKey toDHPublicKey () const
DSAPrivateKey toDSAPrivateKey () const
DSAPublicKey toDSAPublicKey () const
RSAPrivateKey toRSAPrivateKey () const
RSAPublicKey toRSAPublicKey () const
-

Detailed Description

-

General superclass for public (PublicKey) and private (PrivateKey) keys used with asymmetric encryption techniques.

-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::PKey::Type
-
-
- -

Types of public key cryptography keys supported by QCA.

-
Enumerator:
- - - -
RSA  -

RSA key.

-
DSA  -

DSA key.

-
DH  -

Diffie Hellman key.

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::PKey::PKey ( ) 
-
-
- -

Standard constructor.

- -
-
- -
-
- - - - - - - - - -
QCA::PKey::PKey (const PKey from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the key to copy from
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::PKey::PKey (const QString type,
const QString provider 
) [protected]
-
-
- -

Create a key of the specified type.

-
Parameters:
- - - -
type the name of the type of key to create
provider the name of the provider to create the key in
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
PKey& QCA::PKey::operator= (const PKey from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the PKey to copy from
-
-
- -
-
- -
-
- - - - - - - - - -
static QList<Type> QCA::PKey::supportedTypes (const QString provider = QString() )  [static]
-
-
- -

Test what types of keys are supported.

-

Normally you would just test if the capability is present, however for PKey, you also need to test which types of keys are available. So if you want to figure out if RSA keys are supported, you need to do something like:

-
if(!QCA::isSupported("pkey") ||
-        !QCA::PKey::supportedTypes().contains(QCA::PKey::RSA))
-{
-        // then there is no RSA key support
-}
-else
-{
-        // there is RSA key support
-}
-

To make things a bit more complex, supportedTypes() only checks for basic functionality. If you want to check that you can do operations with PEM or DER (eg toPEM(), fromPEM(), and the equivalent DER and PEMfile operations, plus anything else that uses them, including the constructor form that takes a fileName), then you need to check for supportedIOTypes() instead.

-
Parameters:
- - -
provider the name of the provider to use, if a particular provider is required.
-
-
-
See also:
supportedIOTypes()
- -
-
- -
-
- - - - - - - - - -
static QList<Type> QCA::PKey::supportedIOTypes (const QString provider = QString() )  [static]
-
-
- -

Test what types of keys are supported for IO operations.

-

If you are using PKey DER or PEM operations, then you need to check for appropriate support using this method. For example, if you want to check if you can export or import an RSA key, then you need to do something like:

-
if(!QCA::isSupported("pkey") ||
-        !QCA::PKey::supportedIOTypes().contains(QCA::PKey::RSA))
-{
-        // then there is no RSA key IO support
-}
-else
-{
-        // there is RSA key IO support
-}
-

Note that if you only want to check for basic functionality (ie not PEM or DER import/export), then you can use supportedTypes(). There is no need to use both - if the key type is supported for IO, then is also supported for basic operations.

-
Parameters:
- - -
provider the name of the provider to use, if a particular provider is required.
-
-
-
See also:
supportedTypes()
-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - -
bool QCA::PKey::isNull ( )  const
-
-
- -

Test if the key is null (empty).

-
Returns:
true if the key is null
-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - -
Type QCA::PKey::type ( )  const
-
-
- -

Report the Type of key (eg RSA, DSA or Diffie Hellman).

-
See also:
isRSA, isDSA and isDH for boolean tests.
- -

Reimplemented from QCA::Algorithm.

- -
-
- -
-
- - - - - - - - -
int QCA::PKey::bitSize ( )  const
-
-
- -

Report the number of bits in the key.

-
Examples:
keyloader.cpp.
-
-
-
- -
-
- - - - - - - - -
bool QCA::PKey::isRSA ( )  const
-
-
- -

Test if the key is an RSA key.

- -
-
- -
-
- - - - - - - - -
bool QCA::PKey::isDSA ( )  const
-
-
- -

Test if the key is a DSA key.

- -
-
- -
-
- - - - - - - - -
bool QCA::PKey::isDH ( )  const
-
-
- -

Test if the key is a Diffie Hellman key.

- -
-
- -
-
- - - - - - - - -
bool QCA::PKey::isPublic ( )  const
-
-
- -

Test if the key is a public key.

- -
-
- -
-
- - - - - - - - -
bool QCA::PKey::isPrivate ( )  const
-
-
- -

Test if the key is a private key.

- -
-
- -
-
- - - - - - - - -
bool QCA::PKey::canExport ( )  const
-
-
- -

Test if the key data can be exported.

-

If the key resides on a smart card or other such device, this will likely return false.

- -
-
- -
-
- - - - - - - - -
bool QCA::PKey::canKeyAgree ( )  const
-
-
- -

Test if the key can be used for key agreement.

- -
-
- -
-
- - - - - - - - -
PublicKey QCA::PKey::toPublicKey ( )  const
-
-
- -

Interpret this key as a PublicKey.

-
See also:
toRSAPublicKey(), toDSAPublicKey() and toDHPublicKey() for protected forms of this call.
-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - -
PrivateKey QCA::PKey::toPrivateKey ( )  const
-
-
- -

Interpret this key as a PrivateKey.

- -
-
- -
-
- - - - - - - - - -
bool QCA::PKey::operator== (const PKey a )  const
-
-
- -

test if two keys are equal

-
Parameters:
- - -
a the key to compare with this key
-
-
- -
-
- -
-
- - - - - - - - - -
bool QCA::PKey::operator!= (const PKey a )  const
-
-
- -

test if two keys are not equal

-
Parameters:
- - -
a the key to compare with this key
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::PKey::set (const PKey k )  [protected]
-
-
- -

Set the key.

-
Parameters:
- - -
k the key to assign from
-
-
- -
-
- -
-
- - - - - - - - -
RSAPublicKey QCA::PKey::toRSAPublicKey ( )  const [protected]
-
-
- -

Interpret this key as an RSAPublicKey.

-
Note:
This function is essentially a convenience cast - if the key was created as a DSA key, this function cannot turn it into an RSA key.
-
See also:
toPublicKey() for the public version of this method
- -
-
- -
-
- - - - - - - - -
RSAPrivateKey QCA::PKey::toRSAPrivateKey ( )  const [protected]
-
-
- -

Interpret this key as an RSAPrivateKey.

-
Note:
This function is essentially a convenience cast - if the key was created as a DSA key, this function cannot turn it into a RSA key.
-
See also:
toPrivateKey() for the public version of this method
- -
-
- -
-
- - - - - - - - -
DSAPublicKey QCA::PKey::toDSAPublicKey ( )  const [protected]
-
-
- -

Interpret this key as an DSAPublicKey.

-
Note:
This function is essentially a convenience cast - if the key was created as an RSA key, this function cannot turn it into a DSA key.
-
See also:
toPublicKey() for the public version of this method
- -
-
- -
-
- - - - - - - - -
DSAPrivateKey QCA::PKey::toDSAPrivateKey ( )  const [protected]
-
-
- -

Interpret this key as a DSAPrivateKey.

-
Note:
This function is essentially a convenience cast - if the key was created as an RSA key, this function cannot turn it into a DSA key.
-
See also:
toPrivateKey() for the public version of this method
- -
-
- -
-
- - - - - - - - -
DHPublicKey QCA::PKey::toDHPublicKey ( )  const [protected]
-
-
- -

Interpret this key as an DHPublicKey.

-
Note:
This function is essentially a convenience cast - if the key was created as a DSA key, this function cannot turn it into a DH key.
-
See also:
toPublicKey() for the public version of this method
- -
-
- -
-
- - - - - - - - -
DHPrivateKey QCA::PKey::toDHPrivateKey ( )  const [protected]
-
-
- -

Interpret this key as a DHPrivateKey.

-
Note:
This function is essentially a convenience cast - if the key was created as a DSA key, this function cannot turn it into a DH key.
-
See also:
toPrivateKey() for the public version of this method
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PKey-members.html qca2-2.1.0/apidocs/html/classQCA_1_1PKey-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PKey-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PKey-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::PKey Member List

This is the complete list of members for QCA::PKey, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
bitSize() const QCA::PKey
canExport() const QCA::PKey
canKeyAgree() const QCA::PKey
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
DH enum valueQCA::PKey
DSA enum valueQCA::PKey
isDH() const QCA::PKey
isDSA() const QCA::PKey
isNull() const QCA::PKey
isPrivate() const QCA::PKey
isPublic() const QCA::PKey
isRSA() const QCA::PKey
operator!=(const PKey &a) const QCA::PKey
operator=(const PKey &from)QCA::PKey
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
operator==(const PKey &a) const QCA::PKey
PKey()QCA::PKey
PKey(const PKey &from)QCA::PKey
PKey(const QString &type, const QString &provider)QCA::PKey [protected]
provider() const QCA::Algorithm
RSA enum valueQCA::PKey
set(const PKey &k)QCA::PKey [protected]
supportedIOTypes(const QString &provider=QString())QCA::PKey [static]
supportedTypes(const QString &provider=QString())QCA::PKey [static]
takeContext()QCA::Algorithm
toDHPrivateKey() const QCA::PKey [protected]
toDHPublicKey() const QCA::PKey [protected]
toDSAPrivateKey() const QCA::PKey [protected]
toDSAPublicKey() const QCA::PKey [protected]
toPrivateKey() const QCA::PKey
toPublicKey() const QCA::PKey
toRSAPrivateKey() const QCA::PKey [protected]
toRSAPublicKey() const QCA::PKey [protected]
Type enum nameQCA::PKey
type() const QCA::PKey
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~PKey() (defined in QCA::PKey)QCA::PKey
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PrivateKey__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1PrivateKey__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1PrivateKey__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PrivateKey__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PrivateKey__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1PrivateKey__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1PrivateKey__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PrivateKey__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2a2f724af91c07ccc0ae7d186b52987c \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1PrivateKey__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1PrivateKey__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PrivateKey.html qca2-2.1.0/apidocs/html/classQCA_1_1PrivateKey.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PrivateKey.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PrivateKey.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,860 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::PrivateKey Class Reference - - - - - - -
-

QCA::PrivateKey Class Reference
- -[QCA user API] -

-

Generic private key. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::PrivateKey:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

bool canDecrypt () const
bool canSign () const
bool decrypt (const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg)
SymmetricKey deriveKey (const PublicKey &theirs)
PrivateKeyoperator= (const PrivateKey &from)
 PrivateKey (const PrivateKey &from)
 PrivateKey (const QString &fileName, const SecureArray &passphrase=SecureArray())
 PrivateKey ()
QByteArray signature ()
QByteArray signMessage (const MemoryRegion &a, SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)
void startSign (SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)
SecureArray toDER (const SecureArray &passphrase=SecureArray(), PBEAlgorithm pbe=PBEDefault) const
DHPrivateKey toDH () const
DSAPrivateKey toDSA () const
QString toPEM (const SecureArray &passphrase=SecureArray(), PBEAlgorithm pbe=PBEDefault) const
bool toPEMFile (const QString &fileName, const SecureArray &passphrase=SecureArray(), PBEAlgorithm pbe=PBEDefault) const
RSAPrivateKey toRSA () const
void update (const MemoryRegion &a)

Static Public Member Functions

static PrivateKey fromDER (const SecureArray &a, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())
static PrivateKey fromPEM (const QString &s, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())
static PrivateKey fromPEMFile (const QString &fileName, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())
static QList< PBEAlgorithmsupportedPBEAlgorithms (const QString &provider=QString())

Protected Member Functions

 PrivateKey (const QString &type, const QString &provider)
-

Detailed Description

-

Generic private key.

-
Examples:
-

keyloader.cpp, publickeyexample.cpp, rsatest.cpp, and sslservtest.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::PrivateKey::PrivateKey ( ) 
-
-
- -

Create an empty private key.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::PrivateKey::PrivateKey (const QString fileName,
const SecureArray passphrase = SecureArray() 
) [explicit]
-
-
- -

Import a private key from a PEM representation in a file.

-
Parameters:
- - - -
fileName the name of the file containing the private key
passphrase the pass phrase for the private key
-
-
-
See also:
fromPEMFile for an alternative method
-
Note:
This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler.
- -
-
- -
-
- - - - - - - - - -
QCA::PrivateKey::PrivateKey (const PrivateKey from ) 
-
-
- -

Copy constructor.

-
Parameters:
- - -
from the PrivateKey to copy from
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::PrivateKey::PrivateKey (const QString type,
const QString provider 
) [protected]
-
-
- -

Create a new private key.

-
Parameters:
- - - -
type the type of key to create
provider the provider to use, if a specific provider is required.
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
PrivateKey& QCA::PrivateKey::operator= (const PrivateKey from ) 
-
-
- -

Assignment operator.

-
Parameters:
- - -
from the PrivateKey to copy from
-
-
- -
-
- -
-
- - - - - - - - -
RSAPrivateKey QCA::PrivateKey::toRSA ( )  const
-
-
- -

Interpret / convert the key to an RSA key.

- -
-
- -
-
- - - - - - - - -
DSAPrivateKey QCA::PrivateKey::toDSA ( )  const
-
-
- -

Interpret / convert the key to a DSA key.

- -
-
- -
-
- - - - - - - - -
DHPrivateKey QCA::PrivateKey::toDH ( )  const
-
-
- -

Interpret / convert the key to a Diffie-Hellman key.

- -
-
- -
-
- - - - - - - - -
bool QCA::PrivateKey::canDecrypt ( )  const
-
-
- -

Test if this key can be used for decryption.

-
Returns:
true if the key can be used for decryption
-
Examples:
publickeyexample.cpp.
-
-
-
- -
-
- - - - - - - - -
bool QCA::PrivateKey::canSign ( )  const
-
-
- -

Test if this key can be used for signing.

-
Returns:
true if the key can be used to make a signature
-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool QCA::PrivateKey::decrypt (const SecureArray in,
SecureArray out,
EncryptionAlgorithm  alg 
)
-
-
- -

Decrypt the message.

-
Parameters:
- - - - -
in the cipher (encrypted) data
out the plain text data
alg the algorithm to use
-
-
-
Note:
This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler.
-
Examples:
publickeyexample.cpp, and rsatest.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::PrivateKey::startSign (SignatureAlgorithm  alg,
SignatureFormat  format = DefaultFormat 
)
-
-
- -

Initialise the message signature process.

-
Parameters:
- - - -
alg the algorithm to use for the message signature process
format the signature format to use, for DSA
-
-
-
Note:
This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler.
-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - - -
void QCA::PrivateKey::update (const MemoryRegion a ) 
-
-
- -

Update the signature process.

-
Parameters:
- - -
a the message to use to update the signature
-
-
-
Note:
This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler.
-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - -
QByteArray QCA::PrivateKey::signature ( ) 
-
-
- -

The resulting signature.

-
Note:
This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler.
-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QByteArray QCA::PrivateKey::signMessage (const MemoryRegion a,
SignatureAlgorithm  alg,
SignatureFormat  format = DefaultFormat 
)
-
-
- -

One step signature process.

-
Parameters:
- - - - -
a the message to sign
alg the algorithm to use for the signature
format the signature format to use, for DSA
-
-
-
Returns:
the signature
-
Note:
This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler.
- -
-
- -
-
- - - - - - - - - -
SymmetricKey QCA::PrivateKey::deriveKey (const PublicKey theirs ) 
-
-
- -

Derive a shared secret key from a public key.

-
Parameters:
- - -
theirs the public key to derive from
-
-
- -
-
- -
-
- - - - - - - - - -
static QList<PBEAlgorithm> QCA::PrivateKey::supportedPBEAlgorithms (const QString provider = QString() )  [static]
-
-
- -

List the supported Password Based Encryption Algorithms that can be used to protect the key.

-
Parameters:
- - -
provider the provider to use, if a particular provider is required
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
SecureArray QCA::PrivateKey::toDER (const SecureArray passphrase = SecureArray(),
PBEAlgorithm  pbe = PBEDefault 
) const
-
-
- -

Export the key in Distinguished Encoding Rules (DER) format.

-
Parameters:
- - - -
passphrase the pass phrase to use to protect the key
pbe the symmetric encryption algorithm to use to protect the key
-
-
-
See also:
fromDER provides an inverse of toDER, converting the DER encoded key back to a PrivateKey
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QString QCA::PrivateKey::toPEM (const SecureArray passphrase = SecureArray(),
PBEAlgorithm  pbe = PBEDefault 
) const
-
-
- -

Export the key in Privacy Enhanced Mail (PEM) format.

-
Parameters:
- - - -
passphrase the pass phrase to use to protect the key
pbe the symmetric encryption algorithm to use to protect the key
-
-
-
See also:
toPEMFile provides a convenient way to save the PEM encoded key to a file
-
-fromPEM provides an inverse of toPEM, converting the PEM encoded key back to a PrivateKey
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool QCA::PrivateKey::toPEMFile (const QString fileName,
const SecureArray passphrase = SecureArray(),
PBEAlgorithm  pbe = PBEDefault 
) const
-
-
- -

Export the key in Privacy Enhanced Mail (PEM) format to a file.

-
Parameters:
- - - - -
fileName the name (and path, if required) that the key should be exported to.
passphrase the pass phrase to use to protect the key
pbe the symmetric encryption algorithm to use to protect the key
-
-
-
Returns:
true if the export succeeds
-
See also:
toPEM provides a convenient way to save the PEM encoded key to a file
-
-fromPEM provides an inverse of toPEM, converting the PEM encoded key back to a PrivateKey
-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static PrivateKey QCA::PrivateKey::fromDER (const SecureArray a,
const SecureArray passphrase = SecureArray(),
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import the key from Distinguished Encoding Rules (DER) format.

-
Parameters:
- - - - - -
a the array containing the DER representation of the key
passphrase the pass phrase that is used to protect the key
result a pointer to a ConvertResult, that if specified, will be set to reflect the result of the import
provider the provider to use, if a particular provider is required
-
-
-
See also:
toDER provides an inverse of fromDER, exporting the key to an array
-
-QCA::KeyLoader for an asynchronous loader approach.
-
Note:
This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static PrivateKey QCA::PrivateKey::fromPEM (const QString s,
const SecureArray passphrase = SecureArray(),
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import the key from Privacy Enhanced Mail (PEM) format.

-
Parameters:
- - - - - -
s the string containing the PEM representation of the key
passphrase the pass phrase that is used to protect the key
result a pointer to a ConvertResult, that if specified, will be set to reflect the result of the import
provider the provider to use, if a particular provider is required
-
-
-
See also:
toPEM provides an inverse of fromPEM, exporting the key to a string in PEM encoding.
-
-QCA::KeyLoader for an asynchronous loader approach.
-
Note:
This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler.
-
Examples:
sslservtest.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static PrivateKey QCA::PrivateKey::fromPEMFile (const QString fileName,
const SecureArray passphrase = SecureArray(),
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import the key in Privacy Enhanced Mail (PEM) format from a file.

-
Parameters:
- - - - - -
fileName the name (and path, if required) of the file containing the PEM representation of the key
passphrase the pass phrase that is used to protect the key
result a pointer to a ConvertResult, that if specified, will be set to reflect the result of the import
provider the provider to use, if a particular provider is required
-
-
-
See also:
toPEMFile provides an inverse of fromPEMFile
-
-fromPEM which allows import from a string
-
-QCA::KeyLoader for an asynchronous loader approach.
-
Note:
there is also a constructor form, that allows you to create the key directly
-
-This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler.
-
Examples:
publickeyexample.cpp, and rsatest.cpp.
-
-
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PrivateKey-members.html qca2-2.1.0/apidocs/html/classQCA_1_1PrivateKey-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PrivateKey-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PrivateKey-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,106 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::PrivateKey Member List

This is the complete list of members for QCA::PrivateKey, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
bitSize() const QCA::PKey
canDecrypt() const QCA::PrivateKey
canExport() const QCA::PKey
canKeyAgree() const QCA::PKey
canSign() const QCA::PrivateKey
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg)QCA::PrivateKey
deriveKey(const PublicKey &theirs)QCA::PrivateKey
DH enum valueQCA::PKey
DSA enum valueQCA::PKey
fromDER(const SecureArray &a, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())QCA::PrivateKey [static]
fromPEM(const QString &s, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())QCA::PrivateKey [static]
fromPEMFile(const QString &fileName, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())QCA::PrivateKey [static]
isDH() const QCA::PKey
isDSA() const QCA::PKey
isNull() const QCA::PKey
isPrivate() const QCA::PKey
isPublic() const QCA::PKey
isRSA() const QCA::PKey
operator!=(const PKey &a) const QCA::PKey
operator=(const PrivateKey &from)QCA::PrivateKey
QCA::PKey::operator=(const PKey &from)QCA::PKey
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
operator==(const PKey &a) const QCA::PKey
PKey()QCA::PKey
PKey(const PKey &from)QCA::PKey
PKey(const QString &type, const QString &provider)QCA::PKey [protected]
PrivateKey()QCA::PrivateKey
PrivateKey(const QString &fileName, const SecureArray &passphrase=SecureArray())QCA::PrivateKey [explicit]
PrivateKey(const PrivateKey &from)QCA::PrivateKey
PrivateKey(const QString &type, const QString &provider)QCA::PrivateKey [protected]
provider() const QCA::Algorithm
RSA enum valueQCA::PKey
set(const PKey &k)QCA::PKey [protected]
signature()QCA::PrivateKey
signMessage(const MemoryRegion &a, SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PrivateKey
startSign(SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PrivateKey
supportedIOTypes(const QString &provider=QString())QCA::PKey [static]
supportedPBEAlgorithms(const QString &provider=QString())QCA::PrivateKey [static]
supportedTypes(const QString &provider=QString())QCA::PKey [static]
takeContext()QCA::Algorithm
toDER(const SecureArray &passphrase=SecureArray(), PBEAlgorithm pbe=PBEDefault) const QCA::PrivateKey
toDH() const QCA::PrivateKey
toDHPrivateKey() const QCA::PKey [protected]
toDHPublicKey() const QCA::PKey [protected]
toDSA() const QCA::PrivateKey
toDSAPrivateKey() const QCA::PKey [protected]
toDSAPublicKey() const QCA::PKey [protected]
toPEM(const SecureArray &passphrase=SecureArray(), PBEAlgorithm pbe=PBEDefault) const QCA::PrivateKey
toPEMFile(const QString &fileName, const SecureArray &passphrase=SecureArray(), PBEAlgorithm pbe=PBEDefault) const QCA::PrivateKey
toPrivateKey() const QCA::PKey
toPublicKey() const QCA::PKey
toRSA() const QCA::PrivateKey
toRSAPrivateKey() const QCA::PKey [protected]
toRSAPublicKey() const QCA::PKey [protected]
type() const QCA::PKey
Type enum nameQCA::PKey
update(const MemoryRegion &a)QCA::PrivateKey
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~PKey() (defined in QCA::PKey)QCA::PKey
~PrivateKey() (defined in QCA::PrivateKey)QCA::PrivateKey
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Provider_1_1Context.html qca2-2.1.0/apidocs/html/classQCA_1_1Provider_1_1Context.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Provider_1_1Context.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Provider_1_1Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::Provider::Context Class Reference - - - - - - -
-

QCA::Provider::Context Class Reference
- -[QCA provider API] -

-

Internal context class used for the plugin. -More...

- -

#include <QtCrypto>

- -
-

Detailed Description

-

Internal context class used for the plugin.

-

For internal use only.

-
Examples:
-

aes-cmac.cpp.

-
-

The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Provider__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1Provider__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1Provider__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Provider__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Provider__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1Provider__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1Provider__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Provider__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -6072118a7ebc259c7ea4ae45f016a978 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1Provider__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1Provider__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Provider.html qca2-2.1.0/apidocs/html/classQCA_1_1Provider.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Provider.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Provider.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,487 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::Provider Class Reference - - - - - - -
-

QCA::Provider Class Reference
- -[QCA provider API] -

-

Algorithm provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::Provider:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - -

Classes

class  Context
 Internal context class used for the plugin. More...

Public Member Functions

virtual Contextclone () const =0
virtual void configChanged (const QVariantMap &config)
virtual ContextcreateContext (const QString &type)=0
virtual QString credit () const
virtual QVariantMap defaultConfig () const
virtual void deinit ()
virtual QStringList features () const =0
virtual void init ()
virtual QString name () const =0
Providerprovider () const
virtual int qcaVersion () const =0
bool sameProvider (const Context *c) const
QString type () const
virtual int version () const

Protected Member Functions

 Context (const Context &from)
 Context (Provider *parent, const QString &type)
-

Detailed Description

-

Algorithm provider.

-

Provider represents a plugin provider (or as a special case, the built-in provider). This is the class you need to inherit from to create your own plugin. You don't normally need to worry about this class if you are just using existing QCA capabilities and plugins, however there is nothing stopping you from using it to obtain information about specific plugins, as shown in the example below.

-
Examples:
-

aes-cmac.cpp.

-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual void QCA::Provider::init ( )  [virtual]
-
-
- -

Initialisation routine.

-

This routine will be called when your plugin is loaded, so this is a good place to do any one-off initialisation tasks. If you don't need any initialisation, just implement it as an empty routine.

- -
-
- -
-
- - - - - - - - -
virtual void QCA::Provider::deinit ( )  [virtual]
-
-
- -

Deinitialisation routine.

-

This routine will be called just before provider destruction. Notably, during QCA shutdown, deinit() will be called on all providers before any of the providers are destructed. Use this opportunity to free any resources that may be used by other providers.

- -
-
- -
-
- - - - - - - - -
virtual int QCA::Provider::version ( )  const [virtual]
-
-
- -

Version number of the plugin.

-

The format is the same as QCA itself. Version 1.2.3 would be represented as 0x010203.

-

The default returns 0 (version 0.0.0).

- -
-
- -
-
- - - - - - - - -
virtual int QCA::Provider::qcaVersion ( )  const [pure virtual]
-
-
- -

Target QCA version for the provider.

-

This is used to verify compatibility between the provider and QCA. For a provider to be used, it must supply major and minor version numbers here that are less-than or equal to the actual QCA version (the patch version number is ignored). This means an older provider may be used with a newer QCA, but a newer provider cannot be used with an older QCA.

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::Provider::name ( )  const [pure virtual]
-
-
- -

The name of the provider.

-

Typically you just return a string containing a convenient name.

-
QString name() const
-{
-        return "qca-myplugin";
-}
-
Note:
The name is used to tell if a provider is already loaded, so you need to make sure it is unique amongst the various plugins.
- -
-
- -
-
- - - - - - - - -
virtual QStringList QCA::Provider::features ( )  const [pure virtual]
-
-
- -

The capabilities (algorithms) of the provider.

-

Typically you just return a fixed QStringList:

-
QStringList features() const
-{
-        QStringList list;
-        list += "sha1";
-        list += "sha256";
-        list += "hmac(sha1)";
-        return list;
-}
-
-
-
- -
-
- - - - - - - - -
virtual QString QCA::Provider::credit ( )  const [virtual]
-
-
- -

Optional credit text for the provider.

-

You might display this information in a credits or "About" dialog. Returns an empty string if the provider has no credit text. Only report credit text when absolutely required (for example, an "advertisement - clause" related to licensing). Do not use it for reporting general author information.

- -
-
- -
-
- - - - - - - - - -
virtual Context* QCA::Provider::createContext (const QString type )  [pure virtual]
-
-
- -

Routine to create a plugin context.

-

You need to return a pointer to an algorithm Context that corresponds with the algorithm name specified.

-
Parameters:
- - -
type the name of the algorithm required
-
-
-
Context *createContext(const QString &type)
-{
-        if ( type == "sha1" )
-                return new SHA1Context( this );
-        else if ( type == "sha256" )
-                return new SHA0256Context( this );
-        else if ( type == "hmac(sha1)" )
-                return new HMACSHA1Context( this );
-        else
-                return 0;
-}
-

Naturally you also need to implement the specified Context subclasses as well.

- -
-
- -
-
- - - - - - - - -
virtual QVariantMap QCA::Provider::defaultConfig ( )  const [virtual]
-
-
- -

Method to set up the default configuration options.

-

If your provider needs some configuration options, this method allows you to establish default options. The user can then change the configuration options as required, and set them using configChanged().

-

You need to return a QVariantMap that has configuration options as the keys, and the default configuration as the values, as shown below:

-
QVariantMap defaultConfig() const
-{
-        QVariantMap myConfig;
-        myConfig[ "firstOption" ] = QString("firstOptionValue");
-        myConfig[ "secondOption" ] = true;
-        myConfig[ "thirdOpt" ] = 1243;
-        return myConfig;
-}
-
See also:
configChanged for how to set the configuration;
- -
-
- -
-
- - - - - - - - - -
virtual void QCA::Provider::configChanged (const QVariantMap &  config )  [virtual]
-
-
- -

Method to set the configuration options.

-

If your provider supports configuration options, you will be advised of user changes to the configuration when this method is called.

-
Parameters:
- - -
config the new configuration to be used by the provider
-
-
- -
-
- -
-
- - - - - - - - -
Provider* QCA::Provider::provider ( )  const
-
-
- -

The Provider associated with this Context.

- -
-
- -
-
- - - - - - - - -
QString QCA::Provider::type ( )  const
-
-
- -

The type of context, as passed to the constructor.

- -
-
- -
-
- - - - - - - - -
virtual Context* QCA::Provider::clone ( )  const [pure virtual]
-
-
- -

Create a duplicate of this Context.

- -
-
- -
-
- - - - - - - - - -
bool QCA::Provider::sameProvider (const Context c )  const
-
-
- -

Test if two Contexts have the same Provider.

-
Parameters:
- - -
c pointer to the Context to compare to
-
-
-
Returns:
true if the argument and this Context have the same provider.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::Provider::Context (Provider parent,
const QString type 
) [protected]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
parent the parent provider for this context
type the name of the provider context type
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::Provider::Context (const Context from )  [protected]
-
-
- -

Copy constructor.

-
Parameters:
- - -
from the Context to copy from
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Provider-members.html qca2-2.1.0/apidocs/html/classQCA_1_1Provider-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Provider-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Provider-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::Provider Member List

This is the complete list of members for QCA::Provider, including all inherited members. - - - - - - - - - - - - - - - - - - -
clone() const =0QCA::Provider [pure virtual]
configChanged(const QVariantMap &config)QCA::Provider [virtual]
Context(Provider *parent, const QString &type)QCA::Provider [protected]
Context(const Context &from)QCA::Provider [protected]
createContext(const QString &type)=0QCA::Provider [pure virtual]
credit() const QCA::Provider [virtual]
defaultConfig() const QCA::Provider [virtual]
deinit()QCA::Provider [virtual]
features() const =0QCA::Provider [pure virtual]
init()QCA::Provider [virtual]
name() const =0QCA::Provider [pure virtual]
provider() const QCA::Provider
qcaVersion() const =0QCA::Provider [pure virtual]
sameProvider(const Context *c) const QCA::Provider
type() const QCA::Provider
version() const QCA::Provider [virtual]
~Context() (defined in QCA::Provider)QCA::Provider [virtual]
~Provider() (defined in QCA::Provider)QCA::Provider [virtual]
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PublicKey__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1PublicKey__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1PublicKey__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PublicKey__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PublicKey__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1PublicKey__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1PublicKey__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PublicKey__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -74ed4b73818760ba0c70b950a06b0458 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1PublicKey__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1PublicKey__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PublicKey.html qca2-2.1.0/apidocs/html/classQCA_1_1PublicKey.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PublicKey.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PublicKey.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,807 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::PublicKey Class Reference - - - - - - -
-

QCA::PublicKey Class Reference
- -[QCA user API] -

-

Generic public key. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::PublicKey:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

bool canEncrypt () const
bool canVerify () const
SecureArray encrypt (const SecureArray &a, EncryptionAlgorithm alg)
int maximumEncryptSize (EncryptionAlgorithm alg) const
PublicKeyoperator= (const PublicKey &from)
 PublicKey (const PublicKey &from)
 PublicKey (const QString &fileName)
 PublicKey (const PrivateKey &k)
 PublicKey ()
void startVerify (SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)
QByteArray toDER () const
DHPublicKey toDH () const
DSAPublicKey toDSA () const
QString toPEM () const
bool toPEMFile (const QString &fileName) const
RSAPublicKey toRSA () const
void update (const MemoryRegion &a)
bool validSignature (const QByteArray &sig)
bool verifyMessage (const MemoryRegion &a, const QByteArray &sig, SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)

Static Public Member Functions

static PublicKey fromDER (const QByteArray &a, ConvertResult *result=0, const QString &provider=QString())
static PublicKey fromPEM (const QString &s, ConvertResult *result=0, const QString &provider=QString())
static PublicKey fromPEMFile (const QString &fileName, ConvertResult *result=0, const QString &provider=QString())

Protected Member Functions

 PublicKey (const QString &type, const QString &provider)
-

Detailed Description

-

Generic public key.

-
Examples:
-

rsatest.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::PublicKey::PublicKey ( ) 
-
-
- -

Create an empty (null) public key.

- -
-
- -
-
- - - - - - - - - -
QCA::PublicKey::PublicKey (const PrivateKey k ) 
-
-
- -

Create a public key based on a specified private key.

-
Parameters:
- - -
k the private key to extract the public key parts from
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::PublicKey::PublicKey (const QString fileName ) 
-
-
- -

Import a public key from a PEM representation in a file.

-
Parameters:
- - -
fileName the name of the file containing the public key
-
-
-
See also:
fromPEMFile for an alternative method
- -
-
- -
-
- - - - - - - - - -
QCA::PublicKey::PublicKey (const PublicKey from ) 
-
-
- -

Copy constructor.

-
Parameters:
- - -
from the PublicKey to copy from
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::PublicKey::PublicKey (const QString type,
const QString provider 
) [protected]
-
-
- -

Create a new key of a specified type.

-
Parameters:
- - - -
type the type of key to create
provider the provider to use, if required
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
PublicKey& QCA::PublicKey::operator= (const PublicKey from ) 
-
-
- -

Assignment operator.

-
Parameters:
- - -
from the PublicKey to copy from
-
-
- -
-
- -
-
- - - - - - - - -
RSAPublicKey QCA::PublicKey::toRSA ( )  const
-
-
- -

Convenience method to convert this key to an RSAPublicKey.

-

Note that if the key is not an RSA key (eg it is DSA or DH), then this will produce a null key.

- -
-
- -
-
- - - - - - - - -
DSAPublicKey QCA::PublicKey::toDSA ( )  const
-
-
- -

Convenience method to convert this key to a DSAPublicKey.

-

Note that if the key is not an DSA key (eg it is RSA or DH), then this will produce a null key.

- -
-
- -
-
- - - - - - - - -
DHPublicKey QCA::PublicKey::toDH ( )  const
-
-
- -

Convenience method to convert this key to a DHPublicKey.

-

Note that if the key is not an DH key (eg it is DSA or RSA), then this will produce a null key.

- -
-
- -
-
- - - - - - - - -
bool QCA::PublicKey::canEncrypt ( )  const
-
-
- -

Test if this key can be used for encryption.

-
Returns:
true if the key can be used for encryption
-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - -
bool QCA::PublicKey::canVerify ( )  const
-
-
- -

Test if the key can be used for verifying signatures.

-
Returns:
true of the key can be used for verification
-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - - -
int QCA::PublicKey::maximumEncryptSize (EncryptionAlgorithm  alg )  const
-
-
- -

The maximum message size that can be encrypted with a specified algorithm.

-
Parameters:
- - -
alg the algorithm to check
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
SecureArray QCA::PublicKey::encrypt (const SecureArray a,
EncryptionAlgorithm  alg 
)
-
-
- -

Encrypt a message using a specified algorithm.

-
Parameters:
- - - -
a the message to encrypt
alg the algorithm to use
-
-
-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::PublicKey::startVerify (SignatureAlgorithm  alg,
SignatureFormat  format = DefaultFormat 
)
-
-
- -

Initialise the signature verification process.

-
Parameters:
- - - -
alg the algorithm to use for signing
format the specific format to use, for DSA
-
-
-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - - -
void QCA::PublicKey::update (const MemoryRegion a ) 
-
-
- -

Update the signature verification process with more data.

-
Parameters:
- - -
a the array containing the data that should be added to the signature
-
-
-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - - -
bool QCA::PublicKey::validSignature (const QByteArray sig ) 
-
-
- -

Check the signature is valid for the message.

-

The process to check that a signature is correct is shown below:

-
// note that pubkey is a PublicKey
-if( pubkey.canVerify() )
-{
-        pubkey.startVerify( QCA::EMSA3_MD5 );
-        pubkey.update( theMessage ); // might be called multiple times
-        if ( pubkey.validSignature( theSignature ) )
-        {
-                // then signature is valid
-        }
-        else
-        {
-                // then signature is invalid
-        }
-}
-
Parameters:
- - -
sig the signature to check
-
-
-
Returns:
true if the signature is correct
-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool QCA::PublicKey::verifyMessage (const MemoryRegion a,
const QByteArray sig,
SignatureAlgorithm  alg,
SignatureFormat  format = DefaultFormat 
)
-
-
- -

Single step message verification.

-

If you have the whole message to be verified, then this offers a more convenient approach to verification.

-
Parameters:
- - - - - -
a the message to check the signature on
sig the signature to be checked
alg the algorithm to use
format the signature format to use, for DSA
-
-
-
Returns:
true if the signature is valid for the message
-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - -
QByteArray QCA::PublicKey::toDER ( )  const
-
-
- -

Export the key in Distinguished Encoding Rules (DER) format.

- -
-
- -
-
- - - - - - - - -
QString QCA::PublicKey::toPEM ( )  const
-
-
- -

Export the key in Privacy Enhanced Mail (PEM) format.

-
See also:
toPEMFile provides a convenient way to save the PEM encoded key to a file
-
-fromPEM provides an inverse of toPEM, converting the PEM encoded key back to a PublicKey
- -
-
- -
-
- - - - - - - - - -
bool QCA::PublicKey::toPEMFile (const QString fileName )  const
-
-
- -

Export the key in Privacy Enhanced Mail (PEM) to a file.

-
Parameters:
- - -
fileName the name (and path, if necessary) of the file to save the PEM encoded key to.
-
-
-
See also:
toPEM for a version that exports to a QString, which may be useful if you need to do more sophisticated handling
-
-fromPEMFile provides an inverse of toPEMFile, reading a PEM encoded key from a file
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static PublicKey QCA::PublicKey::fromDER (const QByteArray a,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import a key in Distinguished Encoding Rules (DER) format.

-

This function takes a binary array, which is assumed to contain a public key in DER encoding, and returns the key. Unless you don't care whether the import succeeded, you should test the result, as shown below.

-
QCA::ConvertResult conversionResult;
-QCA::PublicKey publicKey = QCA::PublicKey::fromDER(keyArray, &conversionResult);
-if (! QCA::ConvertGood == conversionResult)
-{
-        std::cout << "Public key read failed" << std::endl;
-}
-
Parameters:
- - - - -
a the array containing a DER encoded key
result pointer to a variable, which returns whether the conversion succeeded (ConvertGood) or not
provider the name of the provider to use for the import.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static PublicKey QCA::PublicKey::fromPEM (const QString s,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import a key in Privacy Enhanced Mail (PEM) format.

-

This function takes a string, which is assumed to contain a public key in PEM encoding, and returns that key. Unless you don't care whether the import succeeded, you should test the result, as shown below.

-
QCA::ConvertResult conversionResult;
-QCA::PublicKey publicKey = QCA::PublicKey::fromPEM(keyAsString, &conversionResult);
-if (! QCA::ConvertGood == conversionResult)
-{
-        std::cout << "Public key read failed" << std::endl;
-}
-
Parameters:
- - - - -
s the string containing a PEM encoded key
result pointer to a variable, which returns whether the conversion succeeded (ConvertGood) or not
provider the name of the provider to use for the import.
-
-
-
See also:
toPEM, which provides an inverse of fromPEM()
-
-fromPEMFile, which provides an import direct from a file.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
static PublicKey QCA::PublicKey::fromPEMFile (const QString fileName,
ConvertResult result = 0,
const QString provider = QString() 
) [static]
-
-
- -

Import a key in Privacy Enhanced Mail (PEM) format from a file.

-

This function takes the name of a file, which is assumed to contain a public key in PEM encoding, and returns that key. Unless you don't care whether the import succeeded, you should test the result, as shown below.

-
QCA::ConvertResult conversionResult;
-QCA::PublicKey publicKey = QCA::PublicKey::fromPEMFile(fileName, &conversionResult);
-if (! QCA::ConvertGood == conversionResult)
-{
-        std::cout << "Public key read failed" << std::endl;
-}
-
Parameters:
- - - - -
fileName a string containing the name of the file
result pointer to a variable, which returns whether the conversion succeeded (ConvertGood) or not
provider the name of the provider to use for the import.
-
-
-
See also:
toPEMFile, which provides an inverse of fromPEMFile()
-
-fromPEM, which provides an import from a string
-
Note:
there is also a constructor form that can import from a file
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1PublicKey-members.html qca2-2.1.0/apidocs/html/classQCA_1_1PublicKey-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1PublicKey-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1PublicKey-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,106 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::PublicKey Member List

This is the complete list of members for QCA::PublicKey, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
bitSize() const QCA::PKey
canEncrypt() const QCA::PublicKey
canExport() const QCA::PKey
canKeyAgree() const QCA::PKey
canVerify() const QCA::PublicKey
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
DH enum valueQCA::PKey
DSA enum valueQCA::PKey
encrypt(const SecureArray &a, EncryptionAlgorithm alg)QCA::PublicKey
fromDER(const QByteArray &a, ConvertResult *result=0, const QString &provider=QString())QCA::PublicKey [static]
fromPEM(const QString &s, ConvertResult *result=0, const QString &provider=QString())QCA::PublicKey [static]
fromPEMFile(const QString &fileName, ConvertResult *result=0, const QString &provider=QString())QCA::PublicKey [static]
isDH() const QCA::PKey
isDSA() const QCA::PKey
isNull() const QCA::PKey
isPrivate() const QCA::PKey
isPublic() const QCA::PKey
isRSA() const QCA::PKey
maximumEncryptSize(EncryptionAlgorithm alg) const QCA::PublicKey
operator!=(const PKey &a) const QCA::PKey
operator=(const PublicKey &from)QCA::PublicKey
QCA::PKey::operator=(const PKey &from)QCA::PKey
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
operator==(const PKey &a) const QCA::PKey
PKey()QCA::PKey
PKey(const PKey &from)QCA::PKey
PKey(const QString &type, const QString &provider)QCA::PKey [protected]
provider() const QCA::Algorithm
PublicKey()QCA::PublicKey
PublicKey(const PrivateKey &k)QCA::PublicKey
PublicKey(const QString &fileName)QCA::PublicKey
PublicKey(const PublicKey &from)QCA::PublicKey
PublicKey(const QString &type, const QString &provider)QCA::PublicKey [protected]
RSA enum valueQCA::PKey
set(const PKey &k)QCA::PKey [protected]
startVerify(SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PublicKey
supportedIOTypes(const QString &provider=QString())QCA::PKey [static]
supportedTypes(const QString &provider=QString())QCA::PKey [static]
takeContext()QCA::Algorithm
toDER() const QCA::PublicKey
toDH() const QCA::PublicKey
toDHPrivateKey() const QCA::PKey [protected]
toDHPublicKey() const QCA::PKey [protected]
toDSA() const QCA::PublicKey
toDSAPrivateKey() const QCA::PKey [protected]
toDSAPublicKey() const QCA::PKey [protected]
toPEM() const QCA::PublicKey
toPEMFile(const QString &fileName) const QCA::PublicKey
toPrivateKey() const QCA::PKey
toPublicKey() const QCA::PKey
toRSA() const QCA::PublicKey
toRSAPrivateKey() const QCA::PKey [protected]
toRSAPublicKey() const QCA::PKey [protected]
Type enum nameQCA::PKey
type() const QCA::PKey
update(const MemoryRegion &a)QCA::PublicKey
validSignature(const QByteArray &sig)QCA::PublicKey
verifyMessage(const MemoryRegion &a, const QByteArray &sig, SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PublicKey
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~PKey() (defined in QCA::PKey)QCA::PKey
~PublicKey() (defined in QCA::PublicKey)QCA::PublicKey
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1QPipe__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1QPipe__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1QPipe__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1QPipe__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1QPipe__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1QPipe__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1QPipe__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1QPipe__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -09ef6a3adfca0baeeec2b4a9f33cb63c \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1QPipe__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1QPipe__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1QPipeDevice__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1QPipeDevice__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1QPipeDevice__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1QPipeDevice__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1QPipeDevice__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1QPipeDevice__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1QPipeDevice__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1QPipeDevice__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -8f85c987c80d74b59978f15fedd89140 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1QPipeDevice__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1QPipeDevice__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1QPipeDevice.html qca2-2.1.0/apidocs/html/classQCA_1_1QPipeDevice.html --- qca2-2.0.3/apidocs/html/classQCA_1_1QPipeDevice.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1QPipeDevice.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,484 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::QPipeDevice Class Reference - - - - - - -
-

QCA::QPipeDevice Class Reference
- -[QCA user API] -

-

Unbuffered direct pipe. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::QPipeDevice:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - -

Public Types

enum  Type { Read, -Write - }

Signals

void notify ()

Public Member Functions

int bytesAvailable () const
void close ()
void enable ()
Q_PIPE_ID id () const
int idAsInt () const
bool isValid () const
 QPipeDevice (QObject *parent=0)
int read (char *data, int maxsize)
void release ()
bool setInheritable (bool enabled)
void take (Q_PIPE_ID id, Type t)
Type type () const
int write (const char *data, int size)
int writeResult (int *written) const

Friends

-class Private
-

Detailed Description

-

Unbuffered direct pipe.

-

This class is not usually required except for very low level operations. You should use QPipe and QPipeEnd for most applications.

-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::QPipeDevice::Type
-
-
- -

The type of device.

-
Enumerator:
- - -
Read  -

The pipe end can be read from.

-
Write  -

The pipe end can be written to.

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::QPipeDevice::QPipeDevice (QObject parent = 0 ) 
-
-
- -

Standard constructor.

-
Parameters:
- - -
parent the parent object to this object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
Type QCA::QPipeDevice::type ( )  const
-
-
- -

The Type of the pipe device (that is, read or write).

- -
-
- -
-
- - - - - - - - -
bool QCA::QPipeDevice::isValid ( )  const
-
-
- -

Test whether this object corresponds to a valid pipe.

- -
-
- -
-
- - - - - - - - -
Q_PIPE_ID QCA::QPipeDevice::id ( )  const
-
-
- -

The low level identification for this pipe.

-

On Windows, this is a HANDLE. On Unix, this is a file descriptor (i.e. integer).

-

Code using this method should be carefully tested for portability.

-
See also:
idAsInt
- -
-
- -
-
- - - - - - - - -
int QCA::QPipeDevice::idAsInt ( )  const
-
-
- -

The low level identification for this pipe, returned as an integer.

-

Code using this method should be carefully tested for portability.

-
See also:
id().
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::QPipeDevice::take (Q_PIPE_ID  id,
Type  t 
)
-
-
- -

Take over an existing pipe id, closing the old pipe if any.

-
Parameters:
- - - -
id the identification of the pipe end to take over.
t the type of pipe end (read or write).
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::QPipeDevice::enable ( ) 
-
-
- -

Enable the pipe for reading or writing (depending on Type).

- -
-
- -
-
- - - - - - - - -
void QCA::QPipeDevice::close ( ) 
-
-
- -

Close the pipe end.

- -
-
- -
-
- - - - - - - - -
void QCA::QPipeDevice::release ( ) 
-
-
- -

Release the pipe end, but do not close it.

- -
-
- -
-
- - - - - - - - - -
bool QCA::QPipeDevice::setInheritable (bool  enabled ) 
-
-
- -

Set the pipe end to be inheritable.

-
Note:
On Windows, this operation changes the pipe end id value.
-
Parameters:
- - -
enabled whether the pipe is inheritable (true) or not (false)
-
-
- -
-
- -
-
- - - - - - - - -
int QCA::QPipeDevice::bytesAvailable ( )  const
-
-
- -

Obtain the number of bytes available to be read.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int QCA::QPipeDevice::read (char *  data,
int  maxsize 
)
-
-
- -

Read from the pipe end.

-
Parameters:
- - - -
data where to put the data that has been read
maxsize the maximum number of bytes to be read.
-
-
-
Returns:
the actual number of bytes read, 0 on end-of-file, or -1 on error.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
int QCA::QPipeDevice::write (const char *  data,
int  size 
)
-
-
- -

Write to the pipe end.

-
Parameters:
- - - -
data the source of the data to be written
size the number of bytes in the data to be written
-
-
-
Note:
the data source must remain valid
-
Returns:
the number of bytes written, or -1 on error.
- -
-
- -
-
- - - - - - - - - -
int QCA::QPipeDevice::writeResult (int *  written )  const
-
-
- -

The result of a write operation.

-
Parameters:
- - -
written if not null, this will be set to the number of bytes written in the last operation.
-
-
-
Returns:
0 on success (all data written), or -1 on error
- -
-
- -
-
- - - - - - - - -
void QCA::QPipeDevice::notify ( )  [signal]
-
-
- -

Emitted when the pipe end can be read from or written to (depending on its Type).

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1QPipeDevice-members.html qca2-2.1.0/apidocs/html/classQCA_1_1QPipeDevice-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1QPipeDevice-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1QPipeDevice-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,99 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::QPipeDevice Member List

This is the complete list of members for QCA::QPipeDevice, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
blockSignals(bool block)QObject
bytesAvailable() const QCA::QPipeDevice
childEvent(QChildEvent *event)QObject
children()QObject
close()QCA::QPipeDevice
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
enable()QCA::QPipeDevice
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
id() const QCA::QPipeDevice
idAsInt() const QCA::QPipeDevice
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isValid() const QCA::QPipeDevice
isWidgetType()QObject
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
notify()QCA::QPipeDevice [signal]
parent()QObject
Private (defined in QCA::QPipeDevice)QCA::QPipeDevice [friend]
property(const char *name)QObject
QObject(QObject *parent=0)QObject
QPipeDevice(QObject *parent=0)QCA::QPipeDevice
Read enum valueQCA::QPipeDevice
read(char *data, int maxsize)QCA::QPipeDevice
receivers(const char *signal)QObject
release()QCA::QPipeDevice
removeEventFilter(QObject *obj)QObject
sender()QObject
setInheritable(bool enabled)QCA::QPipeDevice
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
startTimer(int interval)QObject
take(Q_PIPE_ID id, Type t)QCA::QPipeDevice
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
type() const QCA::QPipeDevice
Type enum nameQCA::QPipeDevice
Write enum valueQCA::QPipeDevice
write(const char *data, int size)QCA::QPipeDevice
writeResult(int *written) const QCA::QPipeDevice
~QPipeDevice() (defined in QCA::QPipeDevice)QCA::QPipeDevice
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1QPipeEnd__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1QPipeEnd__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1QPipeEnd__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1QPipeEnd__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1QPipeEnd__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1QPipeEnd__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1QPipeEnd__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1QPipeEnd__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -a7335eb9385a1ce27007a140eef23c0f \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1QPipeEnd__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1QPipeEnd__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1QPipeEnd.html qca2-2.1.0/apidocs/html/classQCA_1_1QPipeEnd.html --- qca2-2.0.3/apidocs/html/classQCA_1_1QPipeEnd.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1QPipeEnd.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,725 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::QPipeEnd Class Reference - - - - - - -
-

QCA::QPipeEnd Class Reference
- -[QCA user API] -

-

A buffered higher-level pipe end. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::QPipeEnd:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Types

enum  Error { ErrorEOF, -ErrorBroken - }

Signals

void bytesWritten (int bytes)
void closed ()
void error (QCA::QPipeEnd::Error e)
void readyRead ()

Public Member Functions

int bytesAvailable () const
int bytesToWrite () const
void close ()
void enable ()
void finalize ()
void finalizeAndRelease ()
Q_PIPE_ID id () const
int idAsInt () const
bool isValid () const
 QPipeEnd (QObject *parent=0)
QByteArray read (int bytes=-1)
SecureArray readSecure (int bytes=-1)
void release ()
void reset ()
bool setInheritable (bool enabled)
void setSecurityEnabled (bool secure)
void take (Q_PIPE_ID id, QPipeDevice::Type t)
QByteArray takeBytesToWrite ()
SecureArray takeBytesToWriteSecure ()
QPipeDevice::Type type () const
void write (const QByteArray &a)
void writeSecure (const SecureArray &a)

Friends

-class Private
-

Detailed Description

-

A buffered higher-level pipe end.

-

This is either the read end or write end of a QPipe.

-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::QPipeEnd::Error
-
-
- -

The type of error.

-
Enumerator:
- - -
ErrorEOF  -

End of file error.

-
ErrorBroken  -

Broken pipe error.

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::QPipeEnd::QPipeEnd (QObject parent = 0 ) 
-
-
- -

Standard constructor.

-
Parameters:
- - -
parent the parent object for this object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
void QCA::QPipeEnd::reset ( ) 
-
-
- -

Reset the pipe end to an inactive state.

- -
-
- -
-
- - - - - - - - -
QPipeDevice::Type QCA::QPipeEnd::type ( )  const
-
-
- -

The type of pipe end (either read or write).

- -
-
- -
-
- - - - - - - - -
bool QCA::QPipeEnd::isValid ( )  const
-
-
- -

Determine whether the pipe end is valid.

-
Note:
This does not mean the pipe is ready to be used - you may need to call enable() first
- -
-
- -
-
- - - - - - - - -
Q_PIPE_ID QCA::QPipeEnd::id ( )  const
-
-
- -

Pipe identification.

- -
-
- -
-
- - - - - - - - -
int QCA::QPipeEnd::idAsInt ( )  const
-
-
- -

Pipe identification.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::QPipeEnd::take (Q_PIPE_ID  id,
QPipeDevice::Type  t 
)
-
-
- -

Take over an existing pipe handle.

-
Parameters:
- - - -
id the pipe handle
t the type of the pipe (read or write)
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::QPipeEnd::setSecurityEnabled (bool  secure ) 
-
-
- -

Sets whether the pipe uses secure memory for read/write.

-

Enabling this may reduce performance, and it should only be used if sensitive data is being transmitted (such as a passphrase).

-
Parameters:
- - -
secure whether the pipe uses secure memory (true) or not (false).
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::QPipeEnd::enable ( ) 
-
-
- -

Enable the endpoint for the pipe.

-

When an endpoint is created, it is not able to be used until it is enabled.

- -
-
- -
-
- - - - - - - - -
void QCA::QPipeEnd::close ( ) 
-
-
- -

Close the end of the pipe.

-
See also:
closed()
- -
-
- -
-
- - - - - - - - -
void QCA::QPipeEnd::release ( ) 
-
-
- -

Let go of the active pipe handle, but don't close it.

-

Use this before destructing QPipeEnd, if you don't want the pipe to automatically close.

- -
-
- -
-
- - - - - - - - - -
bool QCA::QPipeEnd::setInheritable (bool  enabled ) 
-
-
- -

Sets whether the pipe should be inheritable to child processes.

-

Returns true if inheritability was successfully changed, otherwise false.

-
Parameters:
- - -
enabled whether the pipe is inheritable (true) or not (false).
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::QPipeEnd::finalize ( ) 
-
-
- -

Clear the contents of the pipe, and invalidate the pipe.

- -
-
- -
-
- - - - - - - - -
void QCA::QPipeEnd::finalizeAndRelease ( ) 
-
-
- -

Clear the contents of the pipe, and release the pipe.

- -
-
- -
-
- - - - - - - - -
int QCA::QPipeEnd::bytesAvailable ( )  const
-
-
- -

Determine how many bytes are available to be read.

-

This only makes sense at the read end of the pipe

-
See also:
readyRead() for a signal that can be used to determine when there are bytes available to read.
- -
-
- -
-
- - - - - - - - -
int QCA::QPipeEnd::bytesToWrite ( )  const
-
-
- -

Returns the number of bytes pending to write.

-

This only makes sense at the write end of the pipe

-
See also:
bytesWritten() for a signal that can be used to determine when bytes have been written
- -
-
- -
-
- - - - - - - - - -
QByteArray QCA::QPipeEnd::read (int  bytes = -1 ) 
-
-
- -

Read bytes from the pipe.

-

You can only call this on the read end of the pipe

-

If the pipe is using secure memory, you should use readSecure()

-
Parameters:
- - -
bytes the number of bytes to read (-1 for all content).
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::QPipeEnd::write (const QByteArray a ) 
-
-
- -

Write bytes to the pipe.

-

You can only call this on the write end of the pipe.

-

If the pipe is using secure memory, you should use writeSecure().

-
Parameters:
- - -
a the array to write to the pipe
-
-
- -
-
- -
-
- - - - - - - - - -
SecureArray QCA::QPipeEnd::readSecure (int  bytes = -1 ) 
-
-
- -

Read bytes from the pipe.

-

You can only call this on the read end of the pipe

-

If the pipe is using insecure memory, you should use read()

-
Parameters:
- - -
bytes the number of bytes to read (-1 for all content).
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::QPipeEnd::writeSecure (const SecureArray a ) 
-
-
- -

Write bytes to the pipe.

-

You can only call this on the write end of the pipe.

-

If the pipe is using insecure memory, you should use write().

-
Parameters:
- - -
a the array to write to the pipe
-
-
- -
-
- -
-
- - - - - - - - -
QByteArray QCA::QPipeEnd::takeBytesToWrite ( ) 
-
-
- -

Returns any unsent bytes queued for writing.

-

If the pipe is using secure memory, you should use takeBytesToWriteSecure().

- -
-
- -
-
- - - - - - - - -
SecureArray QCA::QPipeEnd::takeBytesToWriteSecure ( ) 
-
-
- -

Returns any unsent bytes queued for writing.

-

If the pipe is using insecure memory, you should use takeBytesToWrite().

- -
-
- -
-
- - - - - - - - -
void QCA::QPipeEnd::readyRead ( )  [signal]
-
-
- -

Emitted when there are bytes available to be read from the read end of the pipe.

-
See also:
bytesAvailable()
- -
-
- -
-
- - - - - - - - - -
void QCA::QPipeEnd::bytesWritten (int  bytes )  [signal]
-
-
- -

Emitted when bytes have been written to the write end of the pipe.

-
Parameters:
- - -
bytes the number of bytes written
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::QPipeEnd::closed ( )  [signal]
-
-
- -

Emitted when this end of the pipe is closed as a result of calling close().

-

If this is the write end of the pipe and there is data still pending to write, this signal will be emitted once all of the data has been written.

-

To be notified if the other end of the pipe has been closed, see error().

- -
-
- -
-
- - - - - - - - - -
void QCA::QPipeEnd::error (QCA::QPipeEnd::Error  e )  [signal]
-
-
- -

Emitted when the pipe encounters an error trying to read or write, or if the other end of the pipe has been closed.

-
Parameters:
- - -
e the reason for error
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1QPipeEnd-members.html qca2-2.1.0/apidocs/html/classQCA_1_1QPipeEnd-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1QPipeEnd-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1QPipeEnd-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,110 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::QPipeEnd Member List

This is the complete list of members for QCA::QPipeEnd, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
blockSignals(bool block)QObject
bytesAvailable() const QCA::QPipeEnd
bytesToWrite() const QCA::QPipeEnd
bytesWritten(int bytes)QCA::QPipeEnd [signal]
childEvent(QChildEvent *event)QObject
children()QObject
close()QCA::QPipeEnd
closed()QCA::QPipeEnd [signal]
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
enable()QCA::QPipeEnd
error(QCA::QPipeEnd::Error e)QCA::QPipeEnd [signal]
Error enum nameQCA::QPipeEnd
ErrorBroken enum valueQCA::QPipeEnd
ErrorEOF enum valueQCA::QPipeEnd
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
finalize()QCA::QPipeEnd
finalizeAndRelease()QCA::QPipeEnd
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
id() const QCA::QPipeEnd
idAsInt() const QCA::QPipeEnd
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isValid() const QCA::QPipeEnd
isWidgetType()QObject
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
parent()QObject
Private (defined in QCA::QPipeEnd)QCA::QPipeEnd [friend]
property(const char *name)QObject
QObject(QObject *parent=0)QObject
QPipeEnd(QObject *parent=0)QCA::QPipeEnd
read(int bytes=-1)QCA::QPipeEnd
readSecure(int bytes=-1)QCA::QPipeEnd
readyRead()QCA::QPipeEnd [signal]
receivers(const char *signal)QObject
release()QCA::QPipeEnd
removeEventFilter(QObject *obj)QObject
reset()QCA::QPipeEnd
sender()QObject
setInheritable(bool enabled)QCA::QPipeEnd
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
setSecurityEnabled(bool secure)QCA::QPipeEnd
signalsBlocked()QObject
startTimer(int interval)QObject
take(Q_PIPE_ID id, QPipeDevice::Type t)QCA::QPipeEnd
takeBytesToWrite()QCA::QPipeEnd
takeBytesToWriteSecure()QCA::QPipeEnd
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
type() const QCA::QPipeEnd
write(const QByteArray &a)QCA::QPipeEnd
writeSecure(const SecureArray &a)QCA::QPipeEnd
~QPipeEnd() (defined in QCA::QPipeEnd)QCA::QPipeEnd
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1QPipe.html qca2-2.1.0/apidocs/html/classQCA_1_1QPipe.html --- qca2-2.0.3/apidocs/html/classQCA_1_1QPipe.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1QPipe.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,185 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::QPipe Class Reference - - - - - - -
-

QCA::QPipe Class Reference
- -[QCA user API] -

-

A FIFO buffer (named pipe) abstraction. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::QPipe:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - -

Public Member Functions

bool create (bool secure=false)
 QPipe (QObject *parent=0)
QPipeEndreadEnd ()
void reset ()
QPipeEndwriteEnd ()
-

Detailed Description

-

A FIFO buffer (named pipe) abstraction.

-

This class creates a full buffer, consisting of two ends (QPipeEnd). You can obtain each end (after calling create()) using readEnd() and writeEnd(), however you must call enable() on each end before using the pipe.

-

By default, the pipe ends are not inheritable by child processes. On Windows, the pipe is created with inheritability disabled. On Unix, the FD_CLOEXEC flag is set on each end's file descriptor.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::QPipe::QPipe (QObject parent = 0 ) 
-
-
- -

Standard constructor.

-
Note:
You must call create() before using the pipe ends.
-
Parameters:
- - -
parent the parent object for this object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
void QCA::QPipe::reset ( ) 
-
-
- -

Reset the pipe.

-

At this point, the readEnd() and writeEnd() calls will no longer be valid.

- -
-
- -
-
- - - - - - - - - -
bool QCA::QPipe::create (bool  secure = false ) 
-
-
- -

Create the pipe.

-
Parameters:
- - -
secure whether to use secure memory (true) or not (false)
-
-
- -
-
- -
-
- - - - - - - - -
QPipeEnd& QCA::QPipe::readEnd ( )  [inline]
-
-
- -

The read end of the pipe.

- -
-
- -
-
- - - - - - - - -
QPipeEnd& QCA::QPipe::writeEnd ( )  [inline]
-
-
- -

The write end of the pipe.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1QPipe-members.html qca2-2.1.0/apidocs/html/classQCA_1_1QPipe-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1QPipe-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1QPipe-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::QPipe Member List

This is the complete list of members for QCA::QPipe, including all inherited members. - - - - - - -
create(bool secure=false)QCA::QPipe
QPipe(QObject *parent=0)QCA::QPipe
readEnd()QCA::QPipe [inline]
reset()QCA::QPipe
writeEnd()QCA::QPipe [inline]
~QPipe() (defined in QCA::QPipe)QCA::QPipe
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Random__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1Random__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1Random__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Random__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Random__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1Random__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1Random__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Random__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -b07282af40522d7fc07811d46b6d9f08 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1Random__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1Random__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RandomContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1RandomContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1RandomContext__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RandomContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RandomContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1RandomContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1RandomContext__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RandomContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -65905d600be1d1e09571b2bde23c7d00 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1RandomContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1RandomContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RandomContext.html qca2-2.1.0/apidocs/html/classQCA_1_1RandomContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1RandomContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RandomContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,122 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::RandomContext Class Reference - - - - - - -
-

QCA::RandomContext Class Reference
- -[QCA provider API] -

-

Random provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::RandomContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - -

Public Member Functions

virtual SecureArray nextBytes (int size)=0
 RandomContext (Provider *p)
-

Detailed Description

-

Random provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want Random instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::RandomContext::RandomContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
virtual SecureArray QCA::RandomContext::nextBytes (int  size )  [pure virtual]
-
-
- -

Return an array of random bytes.

-
Parameters:
- - -
size the number of random bytes to return
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RandomContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1RandomContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1RandomContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RandomContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::RandomContext Member List

This is the complete list of members for QCA::RandomContext, including all inherited members. - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
nextBytes(int size)=0QCA::RandomContext [pure virtual]
RandomContext(Provider *p)QCA::RandomContext [inline]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Random.html qca2-2.1.0/apidocs/html/classQCA_1_1Random.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Random.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Random.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,284 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::Random Class Reference - - - - - - -
-

QCA::Random Class Reference
- -[QCA user API] -

-

Source of random numbers. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::Random:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - -

Public Member Functions

uchar nextByte ()
SecureArray nextBytes (int size)
Randomoperator= (const Random &from)
 Random (const Random &from)
 Random (const QString &provider=QString())

Static Public Member Functions

static SecureArray randomArray (int size)
static uchar randomChar ()
static int randomInt ()
-

Detailed Description

-

Source of random numbers.

-

QCA provides a built in source of random numbers, which can be accessed through this class. You can also use an alternative random number source, by implementing another provider.

-

The normal use of this class is expected to be through the static members - randomChar(), randomInt() and randomArray().

-
Examples:
-

randomtest.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::Random::Random (const QString provider = QString() ) 
-
-
- -

Standard Constructor.

-
Parameters:
- - -
provider the name of the provider library for the random number generation
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::Random::Random (const Random from ) 
-
-
- -

Copy constructor.

-
Parameters:
- - -
from the Random object to copy from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
Random& QCA::Random::operator= (const Random from ) 
-
-
- -

Assignment operator.

-
Parameters:
- - -
from the Random object to copy state from
-
-
- -
-
- -
-
- - - - - - - - -
uchar QCA::Random::nextByte ( ) 
-
-
- -

Provide a random byte.

-

This method isn't normally required - you should use the static randomChar() method instead.

-
See also:
randomChar
-
Examples:
randomtest.cpp.
-
-
-
- -
-
- - - - - - - - - -
SecureArray QCA::Random::nextBytes (int  size ) 
-
-
- -

Provide a specified number of random bytes.

-

This method isn't normally required - you should use the static randomArray() method instead.

-
Parameters:
- - -
size the number of bytes to provide
-
-
-
See also:
randomArray
-
Examples:
randomtest.cpp.
-
-
-
- -
-
- - - - - - - - -
static uchar QCA::Random::randomChar ( )  [static]
-
-
- -

Provide a random character (byte).

-

This is the normal way of obtaining a single random char (ie. 8 bit byte), as shown below:

-
myRandomChar = QCA::Random::randomChar();
-

If you need a number of bytes, perhaps randomArray() may be of use.

-
Examples:
randomtest.cpp.
-
-
-
- -
-
- - - - - - - - -
static int QCA::Random::randomInt ( )  [static]
-
-
- -

Provide a random integer.

-

This is the normal way of obtaining a single random integer, as shown below:

-
myRandomInt = QCA::Random::randomInt();
-
Examples:
randomtest.cpp.
-
-
-
- -
-
- - - - - - - - - -
static SecureArray QCA::Random::randomArray (int  size )  [static]
-
-
- -

Provide a specified number of random bytes.

-
// build a 30 byte secure array.
-SecureArray arry = QCA::Random::randomArray(30);
-
Parameters:
- - -
size the number of bytes to provide
-
-
-
Examples:
randomtest.cpp.
-
-
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Random-members.html qca2-2.1.0/apidocs/html/classQCA_1_1Random-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Random-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Random-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::Random Member List

This is the complete list of members for QCA::Random, including all inherited members. - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
nextByte()QCA::Random
nextBytes(int size)QCA::Random
operator=(const Random &from)QCA::Random
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
provider() const QCA::Algorithm
Random(const QString &provider=QString())QCA::Random
Random(const Random &from)QCA::Random
randomArray(int size)QCA::Random [static]
randomChar()QCA::Random [static]
randomInt()QCA::Random [static]
takeContext()QCA::Algorithm
type() const QCA::Algorithm
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~Random() (defined in QCA::Random)QCA::Random
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RSAContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1RSAContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1RSAContext__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RSAContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RSAContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1RSAContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1RSAContext__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RSAContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -043d5ba4af61486e67ea4244b79889b2 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1RSAContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1RSAContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RSAContext.html qca2-2.1.0/apidocs/html/classQCA_1_1RSAContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1RSAContext.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RSAContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,336 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::RSAContext Class Reference - - - - - - -
-

QCA::RSAContext Class Reference
- -[QCA provider API] -

-

RSA provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::RSAContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - -

Public Member Functions

virtual void createPrivate (const BigInteger &n, const BigInteger &e, const BigInteger &p, const BigInteger &q, const BigInteger &d)=0
virtual void createPrivate (int bits, int exp, bool block)=0
virtual void createPublic (const BigInteger &n, const BigInteger &e)=0
virtual BigInteger d () const =0
virtual BigInteger e () const =0
virtual BigInteger n () const =0
virtual BigInteger p () const =0
virtual BigInteger q () const =0
 RSAContext (Provider *p)
-

Detailed Description

-

RSA provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want RSAPublicKey or RSAPrivateKey instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::RSAContext::RSAContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual void QCA::RSAContext::createPrivate (int  bits,
int  exp,
bool  block 
) [pure virtual]
-
-
- -

Generate an RSA private key.

-

If block is true, then this function blocks until completion. Otherwise, this function returns immediately and finished() is emitted when the operation completes.

-

If an error occurs during generation, then the operation will complete and isNull() will return true.

-
Parameters:
- - - - -
bits the length of the key to generate, in bits
exp the exponent to use for generation
block whether to use blocking mode
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual void QCA::RSAContext::createPrivate (const BigInteger n,
const BigInteger e,
const BigInteger p,
const BigInteger q,
const BigInteger d 
) [pure virtual]
-
-
- -

Create an RSA private key based on the five components.

-
Parameters:
- - - - - - -
n the N parameter
e the public exponent
p the P parameter
q the Q parameter
d the D parameter
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::RSAContext::createPublic (const BigInteger n,
const BigInteger e 
) [pure virtual]
-
-
- -

Create an RSA public key based on the two public components.

-
Parameters:
- - - -
n the N parameter
e the public exponent
-
-
- -
-
- -
-
- - - - - - - - -
virtual BigInteger QCA::RSAContext::n ( )  const [pure virtual]
-
-
- -

Returns the public N component of this RSA key.

- -
-
- -
-
- - - - - - - - -
virtual BigInteger QCA::RSAContext::e ( )  const [pure virtual]
-
-
- -

Returns the public E component of this RSA key.

- -
-
- -
-
- - - - - - - - -
virtual BigInteger QCA::RSAContext::p ( )  const [pure virtual]
-
-
- -

Returns the private P component of this RSA key.

- -
-
- -
-
- - - - - - - - -
virtual BigInteger QCA::RSAContext::q ( )  const [pure virtual]
-
-
- -

Returns the private Q component of this RSA key.

- -
-
- -
-
- - - - - - - - -
virtual BigInteger QCA::RSAContext::d ( )  const [pure virtual]
-
-
- -

Returns the private D component of this RSA key.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RSAContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1RSAContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1RSAContext-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RSAContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::RSAContext Member List

This is the complete list of members for QCA::RSAContext, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
bits() const =0QCA::PKeyBase [pure virtual]
canExport() const =0QCA::PKeyBase [pure virtual]
convertToPublic()=0QCA::PKeyBase [pure virtual]
createPrivate(int bits, int exp, bool block)=0QCA::RSAContext [pure virtual]
createPrivate(const BigInteger &n, const BigInteger &e, const BigInteger &p, const BigInteger &q, const BigInteger &d)=0QCA::RSAContext [pure virtual]
createPublic(const BigInteger &n, const BigInteger &e)=0QCA::RSAContext [pure virtual]
d() const =0QCA::RSAContext [pure virtual]
decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg)QCA::PKeyBase [virtual]
deriveKey(const PKeyBase &theirs)QCA::PKeyBase [virtual]
e() const =0QCA::RSAContext [pure virtual]
encrypt(const SecureArray &in, EncryptionAlgorithm alg)QCA::PKeyBase [virtual]
endSign()QCA::PKeyBase [virtual]
endVerify(const QByteArray &sig)QCA::PKeyBase [virtual]
finished()QCA::PKeyBase [signal]
isNull() const =0QCA::PKeyBase [pure virtual]
isPrivate() const =0QCA::PKeyBase [pure virtual]
maximumEncryptSize(EncryptionAlgorithm alg) const QCA::PKeyBase [virtual]
n() const =0QCA::RSAContext [pure virtual]
p() const =0QCA::RSAContext [pure virtual]
PKeyBase(Provider *p, const QString &type)QCA::PKeyBase
q() const =0QCA::RSAContext [pure virtual]
RSAContext(Provider *p)QCA::RSAContext [inline]
startSign(SignatureAlgorithm alg, SignatureFormat format)QCA::PKeyBase [virtual]
startVerify(SignatureAlgorithm alg, SignatureFormat format)QCA::PKeyBase [virtual]
type() const =0QCA::PKeyBase [pure virtual]
update(const MemoryRegion &in)QCA::PKeyBase [virtual]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RSAPrivateKey__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1RSAPrivateKey__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1RSAPrivateKey__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RSAPrivateKey__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RSAPrivateKey__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1RSAPrivateKey__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1RSAPrivateKey__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RSAPrivateKey__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -0d4baaf2cefd3027df1bc187f930df12 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1RSAPrivateKey__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1RSAPrivateKey__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RSAPrivateKey.html qca2-2.1.0/apidocs/html/classQCA_1_1RSAPrivateKey.html --- qca2-2.0.3/apidocs/html/classQCA_1_1RSAPrivateKey.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RSAPrivateKey.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,254 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::RSAPrivateKey Class Reference - - - - - - -
-

QCA::RSAPrivateKey Class Reference
- -[QCA user API] -

-

RSA Private Key. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::RSAPrivateKey:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - -

Public Member Functions

BigInteger d () const
BigInteger e () const
BigInteger n () const
BigInteger p () const
BigInteger q () const
 RSAPrivateKey (const BigInteger &n, const BigInteger &e, const BigInteger &p, const BigInteger &q, const BigInteger &d, const QString &provider=QString())
 RSAPrivateKey ()
-

Detailed Description

-

RSA Private Key.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::RSAPrivateKey::RSAPrivateKey ( ) 
-
-
- -

Generate an empty RSA private key.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
QCA::RSAPrivateKey::RSAPrivateKey (const BigInteger n,
const BigInteger e,
const BigInteger p,
const BigInteger q,
const BigInteger d,
const QString provider = QString() 
)
-
-
- -

Generate an RSA private key from specified parameters.

-
Parameters:
- - - - - - - -
n the public key value
e the public key exponent
p one of the two chosen primes
q the other of the two chosen primes
d inverse of the exponent, modulo (p-1)(q-1)
provider the provider to use, if a particular provider is required
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
BigInteger QCA::RSAPrivateKey::n ( )  const
-
-
- -

The public key value.

-

This value is the actual public key value (the product of p and q, the random prime numbers used to generate the RSA key), also known as the public modulus.

- -
-
- -
-
- - - - - - - - -
BigInteger QCA::RSAPrivateKey::e ( )  const
-
-
- -

The public key exponent.

-

This value is the exponent chosen in the original key generator step

- -
-
- -
-
- - - - - - - - -
BigInteger QCA::RSAPrivateKey::p ( )  const
-
-
- -

One of the two random primes used to generate the private key.

- -
-
- -
-
- - - - - - - - -
BigInteger QCA::RSAPrivateKey::q ( )  const
-
-
- -

The second of the two random primes used to generate the private key.

- -
-
- -
-
- - - - - - - - -
BigInteger QCA::RSAPrivateKey::d ( )  const
-
-
- -

The inverse of the exponent, module (p-1)(q-1).

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RSAPrivateKey-members.html qca2-2.1.0/apidocs/html/classQCA_1_1RSAPrivateKey-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1RSAPrivateKey-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RSAPrivateKey-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,113 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::RSAPrivateKey Member List

This is the complete list of members for QCA::RSAPrivateKey, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
bitSize() const QCA::PKey
canDecrypt() const QCA::PrivateKey
canExport() const QCA::PKey
canKeyAgree() const QCA::PKey
canSign() const QCA::PrivateKey
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
d() const QCA::RSAPrivateKey
decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg)QCA::PrivateKey
deriveKey(const PublicKey &theirs)QCA::PrivateKey
DH enum valueQCA::PKey
DSA enum valueQCA::PKey
e() const QCA::RSAPrivateKey
fromDER(const SecureArray &a, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())QCA::PrivateKey [static]
fromPEM(const QString &s, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())QCA::PrivateKey [static]
fromPEMFile(const QString &fileName, const SecureArray &passphrase=SecureArray(), ConvertResult *result=0, const QString &provider=QString())QCA::PrivateKey [static]
isDH() const QCA::PKey
isDSA() const QCA::PKey
isNull() const QCA::PKey
isPrivate() const QCA::PKey
isPublic() const QCA::PKey
isRSA() const QCA::PKey
n() const QCA::RSAPrivateKey
operator!=(const PKey &a) const QCA::PKey
operator=(const PrivateKey &from)QCA::PrivateKey
QCA::PKey::operator=(const PKey &from)QCA::PKey
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
operator==(const PKey &a) const QCA::PKey
p() const QCA::RSAPrivateKey
PKey()QCA::PKey
PKey(const PKey &from)QCA::PKey
PKey(const QString &type, const QString &provider)QCA::PKey [protected]
PrivateKey()QCA::PrivateKey
PrivateKey(const QString &fileName, const SecureArray &passphrase=SecureArray())QCA::PrivateKey [explicit]
PrivateKey(const PrivateKey &from)QCA::PrivateKey
PrivateKey(const QString &type, const QString &provider)QCA::PrivateKey [protected]
provider() const QCA::Algorithm
q() const QCA::RSAPrivateKey
RSA enum valueQCA::PKey
RSAPrivateKey()QCA::RSAPrivateKey
RSAPrivateKey(const BigInteger &n, const BigInteger &e, const BigInteger &p, const BigInteger &q, const BigInteger &d, const QString &provider=QString())QCA::RSAPrivateKey
set(const PKey &k)QCA::PKey [protected]
signature()QCA::PrivateKey
signMessage(const MemoryRegion &a, SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PrivateKey
startSign(SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PrivateKey
supportedIOTypes(const QString &provider=QString())QCA::PKey [static]
supportedPBEAlgorithms(const QString &provider=QString())QCA::PrivateKey [static]
supportedTypes(const QString &provider=QString())QCA::PKey [static]
takeContext()QCA::Algorithm
toDER(const SecureArray &passphrase=SecureArray(), PBEAlgorithm pbe=PBEDefault) const QCA::PrivateKey
toDH() const QCA::PrivateKey
toDHPrivateKey() const QCA::PKey [protected]
toDHPublicKey() const QCA::PKey [protected]
toDSA() const QCA::PrivateKey
toDSAPrivateKey() const QCA::PKey [protected]
toDSAPublicKey() const QCA::PKey [protected]
toPEM(const SecureArray &passphrase=SecureArray(), PBEAlgorithm pbe=PBEDefault) const QCA::PrivateKey
toPEMFile(const QString &fileName, const SecureArray &passphrase=SecureArray(), PBEAlgorithm pbe=PBEDefault) const QCA::PrivateKey
toPrivateKey() const QCA::PKey
toPublicKey() const QCA::PKey
toRSA() const QCA::PrivateKey
toRSAPrivateKey() const QCA::PKey [protected]
toRSAPublicKey() const QCA::PKey [protected]
Type enum nameQCA::PKey
type() const QCA::PKey
update(const MemoryRegion &a)QCA::PrivateKey
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~PKey() (defined in QCA::PKey)QCA::PKey
~PrivateKey() (defined in QCA::PrivateKey)QCA::PrivateKey
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RSAPublicKey__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1RSAPublicKey__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1RSAPublicKey__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RSAPublicKey__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RSAPublicKey__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1RSAPublicKey__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1RSAPublicKey__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RSAPublicKey__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -fcc495738ce19b9a3fc9872dbb0cee38 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1RSAPublicKey__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1RSAPublicKey__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RSAPublicKey.html qca2-2.1.0/apidocs/html/classQCA_1_1RSAPublicKey.html --- qca2-2.0.3/apidocs/html/classQCA_1_1RSAPublicKey.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RSAPublicKey.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,200 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::RSAPublicKey Class Reference - - - - - - -
-

QCA::RSAPublicKey Class Reference
- -[QCA user API] -

-

RSA Public Key. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::RSAPublicKey:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - -

Public Member Functions

BigInteger e () const
BigInteger n () const
 RSAPublicKey (const RSAPrivateKey &k)
 RSAPublicKey (const BigInteger &n, const BigInteger &e, const QString &provider=QString())
 RSAPublicKey ()
-

Detailed Description

-

RSA Public Key.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::RSAPublicKey::RSAPublicKey ( ) 
-
-
- -

Generate an empty RSA public key.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QCA::RSAPublicKey::RSAPublicKey (const BigInteger n,
const BigInteger e,
const QString provider = QString() 
)
-
-
- -

Generate an RSA public key from specified parameters.

-
Parameters:
- - - - -
n the public key value
e the public key exponent
provider the provider to use, if a particular provider is required
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::RSAPublicKey::RSAPublicKey (const RSAPrivateKey k ) 
-
-
- -

Extract the public key components from an RSA private key.

-
Parameters:
- - -
k the private key to use as the basis for the public key
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
BigInteger QCA::RSAPublicKey::n ( )  const
-
-
- -

The public key value.

-

This value is the actual public key value (the product of p and q, the random prime numbers used to generate the RSA key), also known as the public modulus.

- -
-
- -
-
- - - - - - - - -
BigInteger QCA::RSAPublicKey::e ( )  const
-
-
- -

The public key exponent.

-

This value is the exponent chosen in the original key generator step

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1RSAPublicKey-members.html qca2-2.1.0/apidocs/html/classQCA_1_1RSAPublicKey-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1RSAPublicKey-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1RSAPublicKey-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::RSAPublicKey Member List

This is the complete list of members for QCA::RSAPublicKey, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
bitSize() const QCA::PKey
canEncrypt() const QCA::PublicKey
canExport() const QCA::PKey
canKeyAgree() const QCA::PKey
canVerify() const QCA::PublicKey
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
DH enum valueQCA::PKey
DSA enum valueQCA::PKey
e() const QCA::RSAPublicKey
encrypt(const SecureArray &a, EncryptionAlgorithm alg)QCA::PublicKey
fromDER(const QByteArray &a, ConvertResult *result=0, const QString &provider=QString())QCA::PublicKey [static]
fromPEM(const QString &s, ConvertResult *result=0, const QString &provider=QString())QCA::PublicKey [static]
fromPEMFile(const QString &fileName, ConvertResult *result=0, const QString &provider=QString())QCA::PublicKey [static]
isDH() const QCA::PKey
isDSA() const QCA::PKey
isNull() const QCA::PKey
isPrivate() const QCA::PKey
isPublic() const QCA::PKey
isRSA() const QCA::PKey
maximumEncryptSize(EncryptionAlgorithm alg) const QCA::PublicKey
n() const QCA::RSAPublicKey
operator!=(const PKey &a) const QCA::PKey
operator=(const PublicKey &from)QCA::PublicKey
QCA::PKey::operator=(const PKey &from)QCA::PKey
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
operator==(const PKey &a) const QCA::PKey
PKey()QCA::PKey
PKey(const PKey &from)QCA::PKey
PKey(const QString &type, const QString &provider)QCA::PKey [protected]
provider() const QCA::Algorithm
PublicKey()QCA::PublicKey
PublicKey(const PrivateKey &k)QCA::PublicKey
PublicKey(const QString &fileName)QCA::PublicKey
PublicKey(const PublicKey &from)QCA::PublicKey
PublicKey(const QString &type, const QString &provider)QCA::PublicKey [protected]
RSA enum valueQCA::PKey
RSAPublicKey()QCA::RSAPublicKey
RSAPublicKey(const BigInteger &n, const BigInteger &e, const QString &provider=QString())QCA::RSAPublicKey
RSAPublicKey(const RSAPrivateKey &k)QCA::RSAPublicKey
set(const PKey &k)QCA::PKey [protected]
startVerify(SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PublicKey
supportedIOTypes(const QString &provider=QString())QCA::PKey [static]
supportedTypes(const QString &provider=QString())QCA::PKey [static]
takeContext()QCA::Algorithm
toDER() const QCA::PublicKey
toDH() const QCA::PublicKey
toDHPrivateKey() const QCA::PKey [protected]
toDHPublicKey() const QCA::PKey [protected]
toDSA() const QCA::PublicKey
toDSAPrivateKey() const QCA::PKey [protected]
toDSAPublicKey() const QCA::PKey [protected]
toPEM() const QCA::PublicKey
toPEMFile(const QString &fileName) const QCA::PublicKey
toPrivateKey() const QCA::PKey
toPublicKey() const QCA::PKey
toRSA() const QCA::PublicKey
toRSAPrivateKey() const QCA::PKey [protected]
toRSAPublicKey() const QCA::PKey [protected]
Type enum nameQCA::PKey
type() const QCA::PKey
update(const MemoryRegion &a)QCA::PublicKey
validSignature(const QByteArray &sig)QCA::PublicKey
verifyMessage(const MemoryRegion &a, const QByteArray &sig, SignatureAlgorithm alg, SignatureFormat format=DefaultFormat)QCA::PublicKey
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~PKey() (defined in QCA::PKey)QCA::PKey
~PublicKey() (defined in QCA::PublicKey)QCA::PublicKey
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASL_1_1Params__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1SASL_1_1Params__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1SASL_1_1Params__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASL_1_1Params__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASL_1_1Params__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1SASL_1_1Params__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1SASL_1_1Params__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASL_1_1Params__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -4637017ed1b6a1789c86edc711c97bb6 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1SASL_1_1Params__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1SASL_1_1Params__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASL_1_1Params.html qca2-2.1.0/apidocs/html/classQCA_1_1SASL_1_1Params.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SASL_1_1Params.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASL_1_1Params.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,259 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::SASL::Params Class Reference - - - - - - -
-

QCA::SASL::Params Class Reference
- -[QCA user API] -

-

Parameter flags for the SASL authentication. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::SASL::Params:
-
-
Collaboration graph
-
[legend]
- -

List of all members.

- - - - - - - - - -

Public Member Functions

bool canSendAuthzid () const
bool canSendRealm () const
bool needPassword () const
bool needUsername () const
Paramsoperator= (const Params &from)
 Params (const Params &from)
 Params (bool user, bool authzid, bool pass, bool realm)
-

Detailed Description

-

Parameter flags for the SASL authentication.

-

This is used to indicate which parameters are needed by SASL in order to complete the authentication process.

-
Examples:
-

saslclient.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
QCA::SASL::Params::Params (bool  user,
bool  authzid,
bool  pass,
bool  realm 
)
-
-
- -

Standard constructor.

-

The concept behind this is that you set each of the flags depending on which parameters are needed.

-
Parameters:
- - - - - -
user the username is required
authzid the authorization identity is required
pass the password is required
realm the realm is required
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::SASL::Params::Params (const Params from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the Params object to copy
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
Params& QCA::SASL::Params::operator= (const Params from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the Params object to assign from
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::SASL::Params::needUsername ( )  const
-
-
- -

User is needed.

-
Examples:
saslclient.cpp.
-
-
-
- -
-
- - - - - - - - -
bool QCA::SASL::Params::canSendAuthzid ( )  const
-
-
- -

An Authorization ID can be sent if desired.

-
Examples:
saslclient.cpp.
-
-
-
- -
-
- - - - - - - - -
bool QCA::SASL::Params::needPassword ( )  const
-
-
- -

Password is needed.

-
Examples:
saslclient.cpp.
-
-
-
- -
-
- - - - - - - - -
bool QCA::SASL::Params::canSendRealm ( )  const
-
-
- -

A Realm can be sent if desired.

-
Examples:
saslclient.cpp.
-
-
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASL_1_1Params-members.html qca2-2.1.0/apidocs/html/classQCA_1_1SASL_1_1Params-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SASL_1_1Params-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASL_1_1Params-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::SASL::Params Member List

This is the complete list of members for QCA::SASL::Params, including all inherited members. - - - - - - - - - -
canSendAuthzid() const QCA::SASL::Params
canSendRealm() const QCA::SASL::Params
needPassword() const QCA::SASL::Params
needUsername() const QCA::SASL::Params
operator=(const Params &from)QCA::SASL::Params
Params() (defined in QCA::SASL::Params)QCA::SASL::Params
Params(bool user, bool authzid, bool pass, bool realm)QCA::SASL::Params
Params(const Params &from)QCA::SASL::Params
~Params() (defined in QCA::SASL::Params)QCA::SASL::Params
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASL__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1SASL__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1SASL__coll__graph.map 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASL__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASL__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1SASL__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1SASL__coll__graph.md5 2010-11-27 21:30:40.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASL__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -d04b705bd0396c7d6efd31fa10e42f2a \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1SASL__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1SASL__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext_1_1HostPort__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext_1_1HostPort__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext_1_1HostPort__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext_1_1HostPort__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext_1_1HostPort__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext_1_1HostPort__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext_1_1HostPort__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext_1_1HostPort__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -869661f8ae506395d5f9e6eb0b49dc62 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext_1_1HostPort__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext_1_1HostPort__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext_1_1HostPort.html qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext_1_1HostPort.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext_1_1HostPort.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext_1_1HostPort.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,99 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::SASLContext::HostPort Class Reference - - - - - - -
-

QCA::SASLContext::HostPort Class Reference
- -[QCA provider API] -

-

Convenience class to hold an IP address and an associated port. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::SASLContext::HostPort:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - -

Public Attributes

QString addr
quint16 port
-

Detailed Description

-

Convenience class to hold an IP address and an associated port.

-

For efficiency and simplicity, the members are directly accessed.

-

Member Data Documentation

- -
- -
- -

The IP address.

- -
-
- -
- -
- -

The port.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext_1_1HostPort-members.html qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext_1_1HostPort-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext_1_1HostPort-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext_1_1HostPort-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::SASLContext::HostPort Member List

This is the complete list of members for QCA::SASLContext::HostPort, including all inherited members. - - -
addrQCA::SASLContext::HostPort
portQCA::SASLContext::HostPort
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -9bc96f30d9385da7360930ec35bb0b41 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext.html qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,869 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::SASLContext Class Reference - - - - - - -
-

QCA::SASLContext Class Reference
- -[QCA provider API] -

-

SASL provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::SASLContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Classes

class  HostPort
 Convenience class to hold an IP address and an associated port. More...

Public Types

enum  Result {
-  Success, -Error, -Params, -AuthCheck, -
-  Continue -
- }

Signals

void resultsReady ()

Public Member Functions

virtual SASL::AuthCondition authCondition () const =0
virtual QString authzid () const =0
virtual SASL::Params clientParams () const =0
virtual int encoded () const =0
virtual bool haveClientInit () const =0
virtual QString mech () const =0
virtual QStringList mechlist () const =0
virtual void nextStep (const QByteArray &from_net)=0
virtual QStringList realmlist () const =0
virtual void reset ()=0
virtual Result result () const =0
 SASLContext (Provider *p)
virtual void serverFirstStep (const QString &mech, const QByteArray *clientInit)=0
virtual void setClientParams (const QString *user, const QString *authzid, const SecureArray *pass, const QString *realm)=0
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
virtual int ssf () const =0
virtual void startClient (const QStringList &mechlist, bool allowClientSendFirst)=0
virtual void startServer (const QString &realm, bool disableServerSendLast)=0
virtual QByteArray stepData () const =0
virtual QByteArray to_app ()=0
virtual QByteArray to_net ()=0
virtual void tryAgain ()=0
virtual void update (const QByteArray &from_net, const QByteArray &from_app)=0
virtual QString username () const =0
virtual bool waitForResultsReady (int msecs)=0
-

Detailed Description

-

SASL provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want SASL instead.
-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::SASLContext::Result
-
-
- -

Result of a SASL operation.

-
Enumerator:
- - - - - -
Success  -

Operation completed.

-
Error  -

Operation failed.

-
Params  -

Parameters are needed to complete authentication.

-
AuthCheck  -

Client login can be inspected (server only).

-
Continue  -

More steps needed to complete authentication.

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::SASLContext::SASLContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the Provider associated with this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual void QCA::SASLContext::reset ( )  [pure virtual]
-
-
- -

Reset the object to its initial state.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual void QCA::SASLContext::setup (const QString service,
const QString host,
const HostPort local,
const HostPort remote,
const QString ext_id,
int  ext_ssf 
) [pure virtual]
-
-
- -

Configure a new session.

-

This function will be called before any other configuration functions.

-
Parameters:
- - - - - - - -
service the name of the network service being provided by this application, which can be used by the SASL system for policy control. Examples: "imap", "xmpp"
host the hostname that the application is interacting with or as
local pointer to a HostPort representing the local end of a network socket, or 0 if this information is unknown or not available
remote pointer to a HostPort representing the peer end of a network socket, or 0 if this information is unknown or not available
ext_id the id to be used for SASL EXTERNAL (client only)
ext_ssf the SSF of the external authentication channel (client only)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual void QCA::SASLContext::setConstraints (SASL::AuthFlags  f,
int  minSSF,
int  maxSSF 
) [pure virtual]
-
-
- -

Set the constraints of the session using SSF values.

-

This function will be called before startClient() or startServer().

-
Parameters:
- - - - -
f the flags to use
minSSF the minimum strength factor that is acceptable
maxSSF the maximum strength factor that is acceptable
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::SASLContext::startClient (const QStringList mechlist,
bool  allowClientSendFirst 
) [pure virtual]
-
-
- -

Begins the session in client mode, starting with the authentication.

-

This function returns immediately, and completion is signaled with the resultsReady() signal.

-

On completion, result(), mech(), haveClientInit(), and stepData() will be valid. If result() is Success, then the session is now in the connected state.

-
Parameters:
- - - -
mechlist the list of mechanisms
allowClientSendFirst whether the client sends first (true) or the server sends first (false)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::SASLContext::startServer (const QString realm,
bool  disableServerSendLast 
) [pure virtual]
-
-
- -

Begins the session in server mode, starting with the authentication.

-

This function returns immediately, and completion is signaled with the resultsReady() signal.

-

On completion, result() and mechlist() will be valid. The result() function will return Success or Error. If the result is Success, then serverFirstStep() will be called next.

-
Parameters:
- - - -
realm the realm to authenticate in
disableServerSendLast whether the client sends first (true) or the server sends first (false)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::SASLContext::serverFirstStep (const QString mech,
const QByteArray clientInit 
) [pure virtual]
-
-
- -

Finishes server startup.

-

This function returns immediately, and completion is signaled with the resultsReady() signal.

-

On completion, result() and stepData() will be valid. If result() is Success, then the session is now in the connected state.

-
Parameters:
- - - -
mech the mechanism to use
clientInit initial data from the client, or 0 if there is no such data
-
-
- -
-
- -
-
- - - - - - - - - -
virtual void QCA::SASLContext::nextStep (const QByteArray from_net )  [pure virtual]
-
-
- -

Perform another step of the SASL authentication.

-

This function returns immediately, and completion is signaled with the resultsReady() signal.

-

On completion, result() and stepData() will be valid.

-
Parameters:
- - -
from_net the data from the "other side" of the protocol to be used for the next step.
-
-
- -
-
- -
-
- - - - - - - - -
virtual void QCA::SASLContext::tryAgain ( )  [pure virtual]
-
-
- -

Attempt the most recent operation again.

-

This is used if the result() of an operation is Params or AuthCheck.

-

This function returns immediately, and completion is signaled with the resultsReady() signal.

-

On completion, result() and stepData() will be valid.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::SASLContext::update (const QByteArray from_net,
const QByteArray from_app 
) [pure virtual]
-
-
- -

Performs one iteration of the SASL security layer processing.

-

This function returns immediately, and completion is signaled with the resultsReady() signal.

-

On completion, result(), to_net(), encoded(), and to_app() will be valid. The result() function will return Success or Error.

-
Parameters:
- - - -
from_net the data from the "other side" of the protocol
from_app the data from the application of the protocol
-
-
- -
-
- -
-
- - - - - - - - - -
virtual bool QCA::SASLContext::waitForResultsReady (int  msecs )  [pure virtual]
-
-
- -

Waits for a startClient(), startServer(), serverFirstStep(), nextStep(), tryAgain(), or update() operation to complete.

-

In this case, the resultsReady() signal is not emitted. Returns true if the operation completed or false if this function times out.

-

This function is blocking.

-
Parameters:
- - -
msecs number of milliseconds to wait (-1 to wait forever)
-
-
- -
-
- -
-
- - - - - - - - -
virtual Result QCA::SASLContext::result ( )  const [pure virtual]
-
-
- -

Returns the result code of an operation.

- -
-
- -
-
- - - - - - - - -
virtual QStringList QCA::SASLContext::mechlist ( )  const [pure virtual]
-
-
- -

Returns the mechanism list (server mode only).

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::SASLContext::mech ( )  const [pure virtual]
-
-
- -

Returns the mechanism selected.

- -
-
- -
-
- - - - - - - - -
virtual bool QCA::SASLContext::haveClientInit ( )  const [pure virtual]
-
-
- -

Returns true if the client has initialization data.

- -
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::SASLContext::stepData ( )  const [pure virtual]
-
-
- -

Returns an authentication payload for to be transmitted over the network.

- -
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::SASLContext::to_net ( )  [pure virtual]
-
-
- -

Returns data that should be sent across the network (for the security layer).

- -
-
- -
-
- - - - - - - - -
virtual int QCA::SASLContext::encoded ( )  const [pure virtual]
-
-
- -

Returns the number of bytes of plaintext data that is encoded inside of to_net().

- -
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::SASLContext::to_app ( )  [pure virtual]
-
-
- -

Returns data that is decoded from the network and should be processed by the application.

- -
-
- -
-
- - - - - - - - -
virtual int QCA::SASLContext::ssf ( )  const [pure virtual]
-
-
- -

Returns the SSF of the active SASL session.

-

This is only valid after authentication success.

- -
-
- -
-
- - - - - - - - -
virtual SASL::AuthCondition QCA::SASLContext::authCondition ( )  const [pure virtual]
-
-
- -

Returns the reason for failure, if the authentication was not successful.

-

This is only valid after authentication failure.

- -
-
- -
-
- - - - - - - - -
virtual SASL::Params QCA::SASLContext::clientParams ( )  const [pure virtual]
-
-
- -

Returns the needed/optional client parameters.

-

This is only valid after receiving the Params result code.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
virtual void QCA::SASLContext::setClientParams (const QString user,
const QString authzid,
const SecureArray pass,
const QString realm 
) [pure virtual]
-
-
- -

Set some of the client parameters (pass 0 to not set a field).

-
Parameters:
- - - - - -
user the user name
authzid the authorization name / role
pass the password
realm the realm to authenticate in
-
-
- -
-
- -
-
- - - - - - - - -
virtual QStringList QCA::SASLContext::realmlist ( )  const [pure virtual]
-
-
- -

Returns the realm list (client mode only).

-

This is only valid after receiving the Params result code and SASL::Params::canSendRealm is set to true.

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::SASLContext::username ( )  const [pure virtual]
-
-
- -

Returns the username attempting to authenticate (server mode only).

-

This is only valid after receiving the AuthCheck result code.

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::SASLContext::authzid ( )  const [pure virtual]
-
-
- -

Returns the authzid attempting to authorize (server mode only).

-

This is only valid after receiving the AuthCheck result code.

- -
-
- -
-
- - - - - - - - -
void QCA::SASLContext::resultsReady ( )  [signal]
-
-
- -

Emit this when a startClient(), startServer(), serverFirstStep(), nextStep(), tryAgain(), or update() operation has completed.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SASLContext-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASLContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::SASLContext Member List

This is the complete list of members for QCA::SASLContext, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AuthCheck enum valueQCA::SASLContext
authCondition() const =0QCA::SASLContext [pure virtual]
authzid() const =0QCA::SASLContext [pure virtual]
clientParams() const =0QCA::SASLContext [pure virtual]
Continue enum valueQCA::SASLContext
encoded() const =0QCA::SASLContext [pure virtual]
Error enum valueQCA::SASLContext
haveClientInit() const =0QCA::SASLContext [pure virtual]
mech() const =0QCA::SASLContext [pure virtual]
mechlist() const =0QCA::SASLContext [pure virtual]
nextStep(const QByteArray &from_net)=0QCA::SASLContext [pure virtual]
Params enum valueQCA::SASLContext
realmlist() const =0QCA::SASLContext [pure virtual]
reset()=0QCA::SASLContext [pure virtual]
result() const =0QCA::SASLContext [pure virtual]
Result enum nameQCA::SASLContext
resultsReady()QCA::SASLContext [signal]
SASLContext(Provider *p)QCA::SASLContext [inline]
serverFirstStep(const QString &mech, const QByteArray *clientInit)=0QCA::SASLContext [pure virtual]
setClientParams(const QString *user, const QString *authzid, const SecureArray *pass, const QString *realm)=0QCA::SASLContext [pure virtual]
setConstraints(SASL::AuthFlags f, int minSSF, int maxSSF)=0QCA::SASLContext [pure virtual]
setup(const QString &service, const QString &host, const HostPort *local, const HostPort *remote, const QString &ext_id, int ext_ssf)=0QCA::SASLContext [pure virtual]
ssf() const =0QCA::SASLContext [pure virtual]
startClient(const QStringList &mechlist, bool allowClientSendFirst)=0QCA::SASLContext [pure virtual]
startServer(const QString &realm, bool disableServerSendLast)=0QCA::SASLContext [pure virtual]
stepData() const =0QCA::SASLContext [pure virtual]
Success enum valueQCA::SASLContext
to_app()=0QCA::SASLContext [pure virtual]
to_net()=0QCA::SASLContext [pure virtual]
tryAgain()=0QCA::SASLContext [pure virtual]
update(const QByteArray &from_net, const QByteArray &from_app)=0QCA::SASLContext [pure virtual]
username() const =0QCA::SASLContext [pure virtual]
waitForResultsReady(int msecs)=0QCA::SASLContext [pure virtual]
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASL.html qca2-2.1.0/apidocs/html/classQCA_1_1SASL.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SASL.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASL.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,1339 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::SASL Class Reference - - - - - - -
-

QCA::SASL Class Reference
- -[QCA user API] -

-

Simple Authentication and Security Layer protocol implementation. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::SASL:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Classes

class  Params
 Parameter flags for the SASL authentication. More...

Public Types

enum  AuthCondition {
-  AuthFail, -NoMechanism, -BadProtocol, -BadServer, -
-  BadAuth, -NoAuthzid, -TooWeak, -NeedEncrypt, -
-  Expired, -Disabled, -NoUser, -RemoteUnavailable -
- }
enum  AuthFlags {
-  AuthFlagsNone = 0x00, -AllowPlain = 0x01, -AllowAnonymous = 0x02, -RequireForwardSecrecy = 0x04, -
-  RequirePassCredentials = 0x08, -RequireMutualAuth = 0x10, -RequireAuthzidSupport = 0x20 -
- }
enum  ClientSendMode { AllowClientSendFirst, -DisableClientSendFirst - }
enum  Error { ErrorInit, -ErrorHandshake, -ErrorCrypt - }
enum  ServerSendMode { AllowServerSendLast, -DisableServerSendLast - }

Signals

void authCheck (const QString &user, const QString &authzid)
void authenticated ()
void clientStarted (bool clientInit, const QByteArray &clientInitData)
void needParams (const QCA::SASL::Params &params)
void nextStep (const QByteArray &stepData)
void serverStarted ()

Public Member Functions

AuthCondition authCondition () const
virtual int bytesAvailable () const
virtual int bytesOutgoingAvailable () const
void continueAfterAuthCheck ()
void continueAfterParams ()
virtual int convertBytesWritten (qint64 encryptedBytes)
Error errorCode () const
QString mechanism () const
QStringList mechanismList () const
void putServerFirstStep (const QString &mech, const QByteArray &clientInit)
void putServerFirstStep (const QString &mech)
void putStep (const QByteArray &stepData)
virtual QByteArray read ()
virtual QByteArray readOutgoing (int *plainBytes=0)
QStringList realmList () const
void reset ()
 SASL (QObject *parent=0, const QString &provider=QString())
void setAuthzid (const QString &auth)
void setConstraints (AuthFlags f, int minSSF, int maxSSF)
void setConstraints (AuthFlags f, SecurityLevel s=SL_None)
void setExternalAuthId (const QString &authid)
void setExternalSSF (int strength)
void setLocalAddress (const QString &addr, quint16 port)
void setPassword (const SecureArray &pass)
void setRealm (const QString &realm)
void setRemoteAddress (const QString &addr, quint16 port)
void setUsername (const QString &user)
int ssf () const
void startClient (const QString &service, const QString &host, const QStringList &mechlist, ClientSendMode mode=AllowClientSendFirst)
void startServer (const QString &service, const QString &host, const QString &realm, ServerSendMode mode=DisableServerSendLast)
virtual void write (const QByteArray &a)
virtual void writeIncoming (const QByteArray &a)

Friends

-class Private
-

Detailed Description

-

Simple Authentication and Security Layer protocol implementation.

-

This class implements the Simple Authenication and Security Layer protocol, which is described in RFC2222 - see http://www.ietf.org/rfc/rfc2222.txt.

-

As the name suggests, SASL provides authentication (eg, a "login" of some form), for a connection oriented protocol, and can also provide protection for the subsequent connection.

-

The SASL protocol is designed to be extensible, through a range of "mechanisms", where a mechanism is the actual authentication method. Example mechanisms include Anonymous, LOGIN, Kerberos V4, and GSSAPI. Mechanisms can be added (potentially without restarting the server application) by the system administrator.

-

It is important to understand that SASL is neither "network aware" nor "protocol aware". That means that SASL does not understand how the client connects to the server, and SASL does not understand the actual application protocol.

-
Examples:
-

saslclient.cpp, and saslserver.cpp.

-
-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::SASL::Error
-
-
- -

Possible errors that may occur when using SASL.

-
Enumerator:
- - - -
ErrorInit  -

problem starting up SASL

-
ErrorHandshake  -

problem during the authentication process

-
ErrorCrypt  -

problem at anytime after

-
-
-
- -
-
- -
-
- - - - -
enum QCA::SASL::AuthCondition
-
-
- -

Possible authentication error states.

-
Enumerator:
- - - - - - - - - - - - -
AuthFail  -

Generic authentication failure.

-
NoMechanism  -

No compatible/appropriate authentication mechanism.

-
BadProtocol  -

Bad protocol or cancelled.

-
BadServer  -

Server failed mutual authentication (client side only).

-
BadAuth  -

Authentication failure (server side only).

-
NoAuthzid  -

Authorization failure (server side only).

-
TooWeak  -

Mechanism too weak for this user (server side only).

-
NeedEncrypt  -

Encryption is needed in order to use mechanism (server side only).

-
Expired  -

Passphrase expired, has to be reset (server side only).

-
Disabled  -

Account is disabled (server side only).

-
NoUser  -

User not found (server side only).

-
RemoteUnavailable  -

Remote service needed for auth is gone (server side only).

-
-
-
- -
-
- -
-
- - - - -
enum QCA::SASL::AuthFlags
-
-
- -

Authentication requirement flag values.

- -
-
- -
-
- - - - -
enum QCA::SASL::ClientSendMode
-
-
- -

Mode options for client side sending.

- -
-
- -
-
- - - - -
enum QCA::SASL::ServerSendMode
-
-
- -

Mode options for server side sending.

- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::SASL::SASL (QObject parent = 0,
const QString provider = QString() 
) [explicit]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
parent the parent object for this SASL connection
provider if specified, the provider to use. If not specified, or specified as empty, then any provider is acceptable.
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
void QCA::SASL::reset ( ) 
-
-
- -

Reset the SASL mechanism.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::SASL::setConstraints (AuthFlags  f,
SecurityLevel  s = SL_None 
)
-
-
- -

Specify connection constraints.

-

SASL supports a range of authentication requirements, and a range of security levels. This method allows you to specify the requirements for your connection.

-
Parameters:
- - - -
f the authentication requirements, which you typically build using a binary OR function (eg AllowPlain | AllowAnonymous)
s the security level of the encryption, if used. See SecurityLevel for details of what each level provides.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void QCA::SASL::setConstraints (AuthFlags  f,
int  minSSF,
int  maxSSF 
)
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Unless you have a specific reason for directly specifying a strength factor, you probably should use the method above.

-
Parameters:
- - - - -
f the authentication requirements, which you typically build using a binary OR function (eg AllowPlain | AllowAnonymous)
minSSF the minimum security strength factor that is required
maxSSF the maximum security strength factor that is required
-
-
-
Note:
Security strength factors are a rough approximation to key length in the encryption function (eg if you are securing with plain DES, the security strength factor would be 56).
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::SASL::setLocalAddress (const QString addr,
quint16  port 
)
-
-
- -

Specify the local address.

-
Parameters:
- - - -
addr the address of the local part of the connection
port the port number of the local part of the connection
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::SASL::setRemoteAddress (const QString addr,
quint16  port 
)
-
-
- -

Specify the peer address.

-
Parameters:
- - - -
addr the address of the peer side of the connection
port the port number of the peer side of the connection
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SASL::setExternalAuthId (const QString authid ) 
-
-
- -

Specify the id of the externally secured connection.

-
Parameters:
- - -
authid the id of the connection
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SASL::setExternalSSF (int  strength ) 
-
-
- -

Specify a security strength factor for an externally secured connection.

-
Parameters:
- - -
strength the security strength factor of the connection
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void QCA::SASL::startClient (const QString service,
const QString host,
const QStringList mechlist,
ClientSendMode  mode = AllowClientSendFirst 
)
-
-
- -

Initialise the client side of the connection.

-

startClient must be called on the client side of the connection. clientStarted will be emitted when the operation is completed.

-
Parameters:
- - - - - -
service the name of the service
host the client side host name
mechlist the list of mechanisms which can be used
mode the mode to use on the client side
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void QCA::SASL::startServer (const QString service,
const QString host,
const QString realm,
ServerSendMode  mode = DisableServerSendLast 
)
-
-
- -

Initialise the server side of the connection.

-

startServer must be called on the server side of the connection. serverStarted will be emitted when the operation is completed.

-
Parameters:
- - - - - -
service the name of the service
host the server side host name
realm the realm to use
mode which mode to use on the server side
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SASL::putServerFirstStep (const QString mech ) 
-
-
- -

Process the first step in server mode (server).

-

Call this with the mechanism selected by the client. If there is initial client data, call the other version of this function instead.

-
Parameters:
- - -
mech the mechanism to be used.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::SASL::putServerFirstStep (const QString mech,
const QByteArray clientInit 
)
-
-
- -

Process the first step in server mode (server).

-

Call this with the mechanism selected by the client, and initial client data. If there is no initial client data, call the other version of this function instead.

-
Parameters:
- - - -
mech the mechanism to be used
clientInit the initial data provided by the client side
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SASL::putStep (const QByteArray stepData ) 
-
-
- -

Process an authentication step.

-

Call this with authentication data received from the network. The only exception is the first step in server mode, in which case putServerFirstStep must be called.

-
Parameters:
- - -
stepData the authentication data from the network
-
-
- -
-
- -
-
- - - - - - - - -
QString QCA::SASL::mechanism ( )  const
-
-
- -

Return the mechanism selected (client).

- -
-
- -
-
- - - - - - - - -
QStringList QCA::SASL::mechanismList ( )  const
-
-
- -

Return the mechanism list (server).

- -
-
- -
-
- - - - - - - - -
QStringList QCA::SASL::realmList ( )  const
-
-
- -

Return the realm list, if available (client).

- -
-
- -
-
- - - - - - - - -
int QCA::SASL::ssf ( )  const
-
-
- -

Return the security strength factor of the connection.

- -
-
- -
-
- - - - - - - - -
Error QCA::SASL::errorCode ( )  const
-
-
- -

Return the error code.

- -
-
- -
-
- - - - - - - - -
AuthCondition QCA::SASL::authCondition ( )  const
-
-
- -

Return the reason for authentication failure.

- -
-
- -
-
- - - - - - - - - -
void QCA::SASL::setUsername (const QString user ) 
-
-
- -

Specify the username to use in authentication.

-
Parameters:
- - -
user the username to use
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SASL::setAuthzid (const QString auth ) 
-
-
- -

Specify the authorization identity to use in authentication.

-
Parameters:
- - -
auth the authorization identity to use
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SASL::setPassword (const SecureArray pass ) 
-
-
- -

Specify the password to use in authentication.

-
Parameters:
- - -
pass the password to use
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SASL::setRealm (const QString realm ) 
-
-
- -

Specify the realm to use in authentication.

-
Parameters:
- - -
realm the realm to use
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::SASL::continueAfterParams ( ) 
-
-
- -

Continue negotiation after parameters have been set (client).

- -
-
- -
-
- - - - - - - - -
void QCA::SASL::continueAfterAuthCheck ( ) 
-
-
- -

Continue negotiation after auth ids have been checked (server).

- -
-
- -
-
- - - - - - - - -
virtual int QCA::SASL::bytesAvailable ( )  const [virtual]
-
-
- -

Returns the number of bytes available to be read() on the application side.

- -

Implements QCA::SecureLayer.

- -
-
- -
-
- - - - - - - - -
virtual int QCA::SASL::bytesOutgoingAvailable ( )  const [virtual]
-
-
- -

Returns the number of bytes available to be readOutgoing() on the network side.

- -

Implements QCA::SecureLayer.

- -
-
- -
-
- - - - - - - - - -
virtual void QCA::SASL::write (const QByteArray a )  [virtual]
-
-
- -

This method writes unencrypted (plain) data to the SecureLayer implementation.

-

You normally call this function on the application side.

-
Parameters:
- - -
a the source of the application-side data
-
-
- -

Implements QCA::SecureLayer.

- -
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::SASL::read ( )  [virtual]
-
-
- -

This method reads decrypted (plain) data from the SecureLayer implementation.

-

You normally call this function on the application side after receiving the readyRead() signal.

- -

Implements QCA::SecureLayer.

- -
-
- -
-
- - - - - - - - - -
virtual void QCA::SASL::writeIncoming (const QByteArray a )  [virtual]
-
-
- -

This method accepts encoded (typically encrypted) data for processing.

-

You normally call this function using data read from the network socket (e.g. using QTcpSocket::readAll()) after receiving a signal that indicates that the socket has data to read.

-
Parameters:
- - -
a the ByteArray to take network-side data from
-
-
- -

Implements QCA::SecureLayer.

- -
-
- -
-
- - - - - - - - - -
virtual QByteArray QCA::SASL::readOutgoing (int *  plainBytes = 0 )  [virtual]
-
-
- -

This method provides encoded (typically encrypted) data.

-

You normally call this function to get data to write out to the network socket (e.g. using QTcpSocket::write()) after receiving the readyReadOutgoing() signal.

-
Parameters:
- - -
plainBytes the number of bytes that were read.
-
-
- -

Implements QCA::SecureLayer.

- -
-
- -
-
- - - - - - - - - -
virtual int QCA::SASL::convertBytesWritten (qint64  encryptedBytes )  [virtual]
-
-
- -

Convert encrypted bytes written to plain text bytes written.

-
Parameters:
- - -
encryptedBytes the number of bytes to convert
-
-
- -

Implements QCA::SecureLayer.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::SASL::clientStarted (bool  clientInit,
const QByteArray clientInitData 
) [signal]
-
-
- -

This signal is emitted when the client has been successfully started.

-
Parameters:
- - - -
clientInit true if the client should send an initial response to the server
clientInitData the initial response to send to the server. Do note that there is a difference in SASL between an empty initial response and no initial response, and so even if clientInitData is an empty array, you still need to send an initial response if clientInit is true.
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::SASL::serverStarted ( )  [signal]
-
-
- -

This signal is emitted after the server has been successfully started.

- -
-
- -
-
- - - - - - - - - -
void QCA::SASL::nextStep (const QByteArray stepData )  [signal]
-
-
- -

This signal is emitted when there is data required to be sent over the network to complete the next step in the authentication process.

-
Parameters:
- - -
stepData the data to send over the network
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SASL::needParams (const QCA::SASL::Params params )  [signal]
-
-
- -

This signal is emitted when the client needs additional parameters.

-

After receiving this signal, the application should set the required parameter values appropriately and then call continueAfterParams().

-
Parameters:
- - -
params the parameters that are required by the client
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::SASL::authCheck (const QString user,
const QString authzid 
) [signal]
-
-
- -

This signal is emitted when the server needs to perform the authentication check.

-

If the user and authzid are valid, call continueAfterAuthCheck().

-
Parameters:
- - - -
user the user identification name
authzid the user authorization name
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::SASL::authenticated ( )  [signal]
-
-
- -

This signal is emitted when authentication is complete.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SASL-members.html qca2-2.1.0/apidocs/html/classQCA_1_1SASL-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SASL-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SASL-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,170 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::SASL Member List

This is the complete list of members for QCA::SASL, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
AllowAnonymous enum value (defined in QCA::SASL)QCA::SASL
AllowClientSendFirst enum value (defined in QCA::SASL)QCA::SASL
AllowPlain enum value (defined in QCA::SASL)QCA::SASL
AllowServerSendLast enum value (defined in QCA::SASL)QCA::SASL
authCheck(const QString &user, const QString &authzid)QCA::SASL [signal]
AuthCondition enum nameQCA::SASL
authCondition() const QCA::SASL
authenticated()QCA::SASL [signal]
AuthFail enum valueQCA::SASL
AuthFlags enum nameQCA::SASL
AuthFlagsNone enum value (defined in QCA::SASL)QCA::SASL
BadAuth enum valueQCA::SASL
BadProtocol enum valueQCA::SASL
BadServer enum valueQCA::SASL
blockSignals(bool block)QObject
bytesAvailable() const QCA::SASL [virtual]
bytesOutgoingAvailable() const QCA::SASL [virtual]
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
childEvent(QChildEvent *event)QObject
children()QObject
ClientSendMode enum nameQCA::SASL
clientStarted(bool clientInit, const QByteArray &clientInitData)QCA::SASL [signal]
close()QCA::SecureLayer [virtual]
closed()QCA::SecureLayer [signal]
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
context()QCA::Algorithm
context() const QCA::Algorithm
continueAfterAuthCheck()QCA::SASL
continueAfterParams()QCA::SASL
convertBytesWritten(qint64 encryptedBytes)QCA::SASL [virtual]
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
DisableClientSendFirst enum value (defined in QCA::SASL)QCA::SASL
Disabled enum valueQCA::SASL
DisableServerSendLast enum value (defined in QCA::SASL)QCA::SASL
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
Error enum nameQCA::SASL
error()QCA::SecureLayer [signal]
errorCode() const QCA::SASL
ErrorCrypt enum valueQCA::SASL
ErrorHandshake enum valueQCA::SASL
ErrorInit enum valueQCA::SASL
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
Expired enum valueQCA::SASL
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isClosable() const QCA::SecureLayer [virtual]
isWidgetType()QObject
killTimer(int id)QObject
mechanism() const QCA::SASL
mechanismList() const QCA::SASL
metaObject()QObject
moveToThread(QThread *targetThread)QObject
NeedEncrypt enum valueQCA::SASL
needParams(const QCA::SASL::Params &params)QCA::SASL [signal]
nextStep(const QByteArray &stepData)QCA::SASL [signal]
NoAuthzid enum valueQCA::SASL
NoMechanism enum valueQCA::SASL
NoUser enum valueQCA::SASL
operator=(const Algorithm &from)QCA::Algorithm
parent()QObject
Private (defined in QCA::SASL)QCA::SASL [friend]
property(const char *name)QObject
provider() const QCA::Algorithm
putServerFirstStep(const QString &mech)QCA::SASL
putServerFirstStep(const QString &mech, const QByteArray &clientInit)QCA::SASL
putStep(const QByteArray &stepData)QCA::SASL
QObject(QObject *parent=0)QObject
read()QCA::SASL [virtual]
readOutgoing(int *plainBytes=0)QCA::SASL [virtual]
readUnprocessed()QCA::SecureLayer [virtual]
readyRead()QCA::SecureLayer [signal]
readyReadOutgoing()QCA::SecureLayer [signal]
realmList() const QCA::SASL
receivers(const char *signal)QObject
RemoteUnavailable enum valueQCA::SASL
removeEventFilter(QObject *obj)QObject
RequireAuthzidSupport enum value (defined in QCA::SASL)QCA::SASL
RequireForwardSecrecy enum value (defined in QCA::SASL)QCA::SASL
RequireMutualAuth enum value (defined in QCA::SASL)QCA::SASL
RequirePassCredentials enum value (defined in QCA::SASL)QCA::SASL
reset()QCA::SASL
SASL(QObject *parent=0, const QString &provider=QString())QCA::SASL [explicit]
SecureLayer(QObject *parent=0)QCA::SecureLayer
sender()QObject
ServerSendMode enum nameQCA::SASL
serverStarted()QCA::SASL [signal]
setAuthzid(const QString &auth)QCA::SASL
setConstraints(AuthFlags f, SecurityLevel s=SL_None)QCA::SASL
setConstraints(AuthFlags f, int minSSF, int maxSSF)QCA::SASL
setExternalAuthId(const QString &authid)QCA::SASL
setExternalSSF(int strength)QCA::SASL
setLocalAddress(const QString &addr, quint16 port)QCA::SASL
setParent(QObject *parent)QObject
setPassword(const SecureArray &pass)QCA::SASL
setProperty(const char *name, const QVariant &value)QObject
setRealm(const QString &realm)QCA::SASL
setRemoteAddress(const QString &addr, quint16 port)QCA::SASL
setUsername(const QString &user)QCA::SASL
signalsBlocked()QObject
ssf() const QCA::SASL
startClient(const QString &service, const QString &host, const QStringList &mechlist, ClientSendMode mode=AllowClientSendFirst)QCA::SASL
startServer(const QString &service, const QString &host, const QString &realm, ServerSendMode mode=DisableServerSendLast)QCA::SASL
startTimer(int interval)QObject
takeContext()QCA::Algorithm
thread()QObject
timerEvent(QTimerEvent *event)QObject
TooWeak enum valueQCA::SASL
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
type() const QCA::Algorithm
write(const QByteArray &a)QCA::SASL [virtual]
writeIncoming(const QByteArray &a)QCA::SASL [virtual]
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~SASL() (defined in QCA::SASL)QCA::SASL
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureArray__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1SecureArray__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureArray__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureArray__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureArray__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1SecureArray__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureArray__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureArray__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -76d7d6b97a4b35be9cae8f1130bf78c2 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1SecureArray__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1SecureArray__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureArray.html qca2-2.1.0/apidocs/html/classQCA_1_1SecureArray.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureArray.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureArray.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,810 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::SecureArray Class Reference - - - - - - -
-

QCA::SecureArray Class Reference
- -[QCA user API] -

-

Secure array of bytes. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::SecureArray:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Member Functions

SecureArrayappend (const SecureArray &a)
const char & at (int index) const
char & at (int index)
void clear ()
const char * constData () const
const char * data () const
char * data ()
void fill (char fillChar, int fillToPosition=-1)
bool isEmpty () const
bool operator!= (const MemoryRegion &other) const
SecureArrayoperator+= (const SecureArray &a)
SecureArrayoperator= (const QByteArray &a)
SecureArrayoperator= (const SecureArray &from)
bool operator== (const MemoryRegion &other) const
const char & operator[] (int index) const
char & operator[] (int index)
bool resize (int size)
 SecureArray (const SecureArray &from)
 SecureArray (const MemoryRegion &a)
 SecureArray (const QByteArray &a)
 SecureArray (const char *str)
 SecureArray (int size, char ch=0)
 SecureArray ()
int size () const
QByteArray toByteArray () const

Protected Member Functions

void set (const QByteArray &from)
void set (const SecureArray &from)
-

Detailed Description

-

Secure array of bytes.

-

The SecureArray provides an array of memory from a pool that is, at least partly, secure. In this sense, secure means that the contents of the memory should not be made available to other applications. By comparison, a QByteArray or QString may be held in pages that might be swapped to disk or free'd without being cleared first.

-

Note that this class is implicitly shared (that is, copy on write).

-
Examples:
-

aes-cmac.cpp, ciphertest.cpp, eventhandlerdemo.cpp, hashtest.cpp, keyloader.cpp, mactest.cpp, md5crypt.cpp, publickeyexample.cpp, randomtest.cpp, rsatest.cpp, and saslclient.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::SecureArray::SecureArray ( ) 
-
-
- -

Construct a secure byte array, zero length.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA::SecureArray::SecureArray (int  size,
char  ch = 0 
) [explicit]
-
-
- -

Construct a secure byte array of the specified length.

-
Parameters:
- - - -
size the number of bytes in the array
ch the value every byte should be set to
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::SecureArray::SecureArray (const char *  str ) 
-
-
- -

Construct a secure byte array from a string.

-

Note that this copies, rather than references the source array.

-
Parameters:
- - -
str the source of the data (as a null terminated string).
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::SecureArray::SecureArray (const QByteArray a ) 
-
-
- -

Construct a secure byte array from a QByteArray.

-

Note that this copies, rather than references the source array.

-
Parameters:
- - -
a the source of the data.
-
-
-
See also:
operator=()
- -
-
- -
-
- - - - - - - - - -
QCA::SecureArray::SecureArray (const MemoryRegion a ) 
-
-
- -

Construct a secure byte array from a MemoryRegion.

-

Note that this copies, rather than references the source array

-
Parameters:
- - -
a the source of the data.
-
-
-
See also:
operator=()
- -
-
- -
-
- - - - - - - - - -
QCA::SecureArray::SecureArray (const SecureArray from ) 
-
-
- -

Construct a (shallow) copy of another secure byte array.

-
Parameters:
- - -
from the source of the data and length.
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
SecureArray& QCA::SecureArray::operator= (const SecureArray from ) 
-
-
- -

Creates a reference, rather than a deep copy.

-
Parameters:
- - -
from the array to reference
-
-
- -
-
- -
-
- - - - - - - - - -
SecureArray& QCA::SecureArray::operator= (const QByteArray a ) 
-
-
- -

Creates a copy, rather than references.

-
Parameters:
- - -
a the array to copy from
-
-
- -

Reimplemented from QCA::MemoryRegion.

- -
-
- -
-
- - - - - - - - -
void QCA::SecureArray::clear ( ) 
-
-
- -

Clears the contents of the array and makes it empty.

-
Examples:
md5crypt.cpp.
-
-
-
- -
-
- - - - - - - - - -
char& QCA::SecureArray::operator[] (int  index ) 
-
-
- -

Returns a reference to the byte at the index position.

-
Parameters:
- - -
index the zero-based offset to obtain
-
-
- -
-
- -
-
- - - - - - - - - -
const char& QCA::SecureArray::operator[] (int  index )  const
-
-
- -

Returns a reference to the byte at the index position.

-
Parameters:
- - -
index the zero-based offset to obtain
-
-
- -
-
- -
-
- - - - - - - - -
char* QCA::SecureArray::data ( ) 
-
-
- -

Pointer to the data in the secure array.

-

You can use this for memcpy and similar functions. If you are trying to obtain data at a particular offset, you might be better off using at() or operator[]

- -

Reimplemented from QCA::MemoryRegion.

-
Examples:
ciphertest.cpp, hashtest.cpp, mactest.cpp, md5crypt.cpp, publickeyexample.cpp, and rsatest.cpp.
-
-
-
- -
-
- - - - - - - - -
const char* QCA::SecureArray::data ( )  const
-
-
- -

Pointer to the data in the secure array.

-

You can use this for memcpy and similar functions. If you are trying to obtain data at a particular offset, you might be better off using at() or operator[]

- -

Reimplemented from QCA::MemoryRegion.

- -
-
- -
-
- - - - - - - - -
const char* QCA::SecureArray::constData ( )  const
-
-
- -

Pointer to the data in the secure array.

-

You can use this for memcpy and similar functions. If you are trying to obtain data at a particular offset, you might be better off using at() or operator[]

- -

Reimplemented from QCA::MemoryRegion.

- -
-
- -
-
- - - - - - - - - -
char& QCA::SecureArray::at (int  index ) 
-
-
- -

Returns a reference to the byte at the index position.

-
Parameters:
- - -
index the zero-based offset to obtain
-
-
- -

Reimplemented from QCA::MemoryRegion.

- -
-
- -
-
- - - - - - - - - -
const char& QCA::SecureArray::at (int  index )  const
-
-
- -

Returns a reference to the byte at the index position.

-
Parameters:
- - -
index the zero-based offset to obtain
-
-
- -

Reimplemented from QCA::MemoryRegion.

- -
-
- -
-
- - - - - - - - -
int QCA::SecureArray::size ( )  const
-
-
- -

Returns the number of bytes in the array.

- -

Reimplemented from QCA::MemoryRegion.

-
Examples:
aes-cmac.cpp, and md5crypt.cpp.
-
-
-
- -
-
- - - - - - - - -
bool QCA::SecureArray::isEmpty ( )  const
-
-
- -

Test if the array contains any bytes.

-

This is equivalent to testing (size() != 0). Note that if the array is allocated, isEmpty() is false (even if no data has been added)

-
Returns:
true if the array has zero length, otherwise false
- -

Reimplemented from QCA::MemoryRegion.

-
Examples:
rsatest.cpp.
-
-
-
- -
-
- - - - - - - - - -
bool QCA::SecureArray::resize (int  size ) 
-
-
- -

Change the length of this array If the new length is less than the old length, the extra information is (safely) discarded.

-

If the new length is equal to or greater than the old length, the existing data is copied into the array.

-
Parameters:
- - -
size the new length
-
-
- -

Reimplemented from QCA::MemoryRegion.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::SecureArray::fill (char  fillChar,
int  fillToPosition = -1 
)
-
-
- -

Fill the data array with a specified character.

-
Parameters:
- - - -
fillChar the character to use as the fill
fillToPosition the number of characters to fill to. If not specified (or -1), fills array to current length.
-
-
-
Note:
This function does not extend the array - if you ask for fill beyond the current length, only the current length will be used.
-
-The number of characters is 1 based, so if you ask for fill('x', 10), it will fill from
-
Examples:
md5crypt.cpp.
-
-
-
- -
-
- - - - - - - - -
QByteArray QCA::SecureArray::toByteArray ( )  const
-
-
- -

Copy the contents of the secure array out to a standard QByteArray.

-

Note that this performs a deep copy of the data.

- -

Reimplemented from QCA::MemoryRegion.

-
Examples:
ciphertest.cpp, hashtest.cpp, mactest.cpp, md5crypt.cpp, and rsatest.cpp.
-
-
-
- -
-
- - - - - - - - - -
SecureArray& QCA::SecureArray::append (const SecureArray a ) 
-
-
- -

Append a secure byte array to the end of this array.

-
Parameters:
- - -
a the array to append to this array
-
-
-
Examples:
ciphertest.cpp, and md5crypt.cpp.
-
-
-
- -
-
- - - - - - - - - -
bool QCA::SecureArray::operator== (const MemoryRegion other )  const
-
-
- -

Equality operator.

-

Returns true if both arrays have the same data (and the same length, of course).

-
Parameters:
- - -
other the MemoryRegion to compare to
-
-
- -
-
- -
-
- - - - - - - - - -
bool QCA::SecureArray::operator!= (const MemoryRegion other )  const [inline]
-
-
- -

Inequality operator.

-

Returns true if both arrays have different length, or the same length but different data.

-
Parameters:
- - -
other the MemoryRegion to compare to
-
-
- -
-
- -
-
- - - - - - - - - -
SecureArray& QCA::SecureArray::operator+= (const SecureArray a ) 
-
-
- -

Append a secure byte array to the end of this array.

-
Parameters:
- - -
a the array to append to this array
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SecureArray::set (const SecureArray from )  [protected]
-
-
- -

Assign the contents of a provided byte array to this object.

-
Parameters:
- - -
from the byte array to copy
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SecureArray::set (const QByteArray from )  [protected]
-
-
- -

Assign the contents of a provided byte array to this object.

-
Parameters:
- - -
from the byte array to copy
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureArray-members.html qca2-2.1.0/apidocs/html/classQCA_1_1SecureArray-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureArray-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureArray-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,80 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::SecureArray Member List

This is the complete list of members for QCA::SecureArray, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
append(const SecureArray &a)QCA::SecureArray
at(int index)QCA::SecureArray
at(int index) const QCA::SecureArray
clear()QCA::SecureArray
constData() const QCA::SecureArray
data()QCA::SecureArray
data() const QCA::SecureArray
fill(char fillChar, int fillToPosition=-1)QCA::SecureArray
isEmpty() const QCA::SecureArray
isNull() const QCA::MemoryRegion
isSecure() const QCA::MemoryRegion
MemoryRegion() (defined in QCA::MemoryRegion)QCA::MemoryRegion
MemoryRegion(const char *str)QCA::MemoryRegion
MemoryRegion(const QByteArray &from)QCA::MemoryRegion
MemoryRegion(const MemoryRegion &from)QCA::MemoryRegion
MemoryRegion(bool secure)QCA::MemoryRegion [protected]
MemoryRegion(int size, bool secure)QCA::MemoryRegion [protected]
MemoryRegion(const QByteArray &from, bool secure)QCA::MemoryRegion [protected]
operator!=(const MemoryRegion &other) const QCA::SecureArray [inline]
operator+=(const SecureArray &a)QCA::SecureArray
operator=(const SecureArray &from)QCA::SecureArray
operator=(const QByteArray &a)QCA::SecureArray
QCA::MemoryRegion::operator=(const MemoryRegion &from)QCA::MemoryRegion
operator==(const MemoryRegion &other) const QCA::SecureArray
operator[](int index)QCA::SecureArray
operator[](int index) const QCA::SecureArray
resize(int size)QCA::SecureArray
SecureArray()QCA::SecureArray
SecureArray(int size, char ch=0)QCA::SecureArray [explicit]
SecureArray(const char *str)QCA::SecureArray
SecureArray(const QByteArray &a)QCA::SecureArray
SecureArray(const MemoryRegion &a)QCA::SecureArray
SecureArray(const SecureArray &from)QCA::SecureArray
set(const SecureArray &from)QCA::SecureArray [protected]
set(const QByteArray &from)QCA::SecureArray [protected]
QCA::MemoryRegion::set(const QByteArray &from, bool secure)QCA::MemoryRegion [protected]
setSecure(bool secure)QCA::MemoryRegion [protected]
size() const QCA::SecureArray
toByteArray() const QCA::SecureArray
~MemoryRegion() (defined in QCA::MemoryRegion)QCA::MemoryRegion
~SecureArray() (defined in QCA::SecureArray)QCA::SecureArray
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureLayer__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1SecureLayer__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureLayer__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureLayer__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureLayer__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1SecureLayer__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureLayer__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureLayer__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -098962b69ec68bc7b75ca963d810b74e \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1SecureLayer__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1SecureLayer__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureLayer.html qca2-2.1.0/apidocs/html/classQCA_1_1SecureLayer.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureLayer.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureLayer.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,437 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::SecureLayer Class Reference - - - - - - -
-

QCA::SecureLayer Class Reference
- -[QCA user API] -

-

Abstract interface to a security layer. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::SecureLayer:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - -

Signals

void closed ()
void error ()
void readyRead ()
void readyReadOutgoing ()

Public Member Functions

virtual int bytesAvailable () const =0
virtual int bytesOutgoingAvailable () const =0
virtual void close ()
virtual int convertBytesWritten (qint64 encryptedBytes)=0
virtual bool isClosable () const
virtual QByteArray read ()=0
virtual QByteArray readOutgoing (int *plainBytes=0)=0
virtual QByteArray readUnprocessed ()
 SecureLayer (QObject *parent=0)
virtual void write (const QByteArray &a)=0
virtual void writeIncoming (const QByteArray &a)=0
-

Detailed Description

-

Abstract interface to a security layer.

-

SecureLayer is normally used between an application and a potentially insecure network. It provides secure communications over that network.

-

The concept is that (after some initial setup), the application can write() some data to the SecureLayer implementation, and that data is encrypted (or otherwise protected, depending on the setup). The SecureLayer implementation then emits the readyReadOutgoing() signal, and the application uses readOutgoing() to retrieve the the encrypted data from the SecureLayer implementation. The encrypted data is then sent out on the network.

-

When some encrypted data comes back from the network, the application does a writeIncoming() to the SecureLayer implementation. Some time later, the SecureLayer implementation may emit readyRead() to the application, which then read()s the decrypted data from the SecureLayer implementation.

-

Note that sometimes data is sent or received between the SecureLayer implementation and the network without any data being sent between the application and the SecureLayer implementation. This is a result of the initial negotiation activities (which require network traffic to agree a configuration to use) and other overheads associated with the secure link.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::SecureLayer::SecureLayer (QObject parent = 0 ) 
-
-
- -

Constructor for an abstract secure communications layer.

-
Parameters:
- - -
parent the parent object for this object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual bool QCA::SecureLayer::isClosable ( )  const [virtual]
-
-
- -

Returns true if the layer has a meaningful "close".

- -

Reimplemented in QCA::TLS.

- -
-
- -
-
- - - - - - - - -
virtual int QCA::SecureLayer::bytesAvailable ( )  const [pure virtual]
-
-
- -

Returns the number of bytes available to be read() on the application side.

- -

Implemented in QCA::TLS, and QCA::SASL.

- -
-
- -
-
- - - - - - - - -
virtual int QCA::SecureLayer::bytesOutgoingAvailable ( )  const [pure virtual]
-
-
- -

Returns the number of bytes available to be readOutgoing() on the network side.

- -

Implemented in QCA::TLS, and QCA::SASL.

- -
-
- -
-
- - - - - - - - -
virtual void QCA::SecureLayer::close ( )  [virtual]
-
-
- -

Close the link.

-

Note that this may not be meaningful / possible for all implementations.

-
See also:
isClosable() for a test that verifies if the link can be closed.
- -

Reimplemented in QCA::TLS.

- -
-
- -
-
- - - - - - - - - -
virtual void QCA::SecureLayer::write (const QByteArray a )  [pure virtual]
-
-
- -

This method writes unencrypted (plain) data to the SecureLayer implementation.

-

You normally call this function on the application side.

-
Parameters:
- - -
a the source of the application-side data
-
-
- -

Implemented in QCA::TLS, and QCA::SASL.

- -
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::SecureLayer::read ( )  [pure virtual]
-
-
- -

This method reads decrypted (plain) data from the SecureLayer implementation.

-

You normally call this function on the application side after receiving the readyRead() signal.

- -

Implemented in QCA::TLS, and QCA::SASL.

- -
-
- -
-
- - - - - - - - - -
virtual void QCA::SecureLayer::writeIncoming (const QByteArray a )  [pure virtual]
-
-
- -

This method accepts encoded (typically encrypted) data for processing.

-

You normally call this function using data read from the network socket (e.g. using QTcpSocket::readAll()) after receiving a signal that indicates that the socket has data to read.

-
Parameters:
- - -
a the ByteArray to take network-side data from
-
-
- -

Implemented in QCA::TLS, and QCA::SASL.

- -
-
- -
-
- - - - - - - - - -
virtual QByteArray QCA::SecureLayer::readOutgoing (int *  plainBytes = 0 )  [pure virtual]
-
-
- -

This method provides encoded (typically encrypted) data.

-

You normally call this function to get data to write out to the network socket (e.g. using QTcpSocket::write()) after receiving the readyReadOutgoing() signal.

-
Parameters:
- - -
plainBytes the number of bytes that were read.
-
-
- -

Implemented in QCA::TLS, and QCA::SASL.

- -
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::SecureLayer::readUnprocessed ( )  [virtual]
-
-
- -

This allows you to read data without having it decrypted first.

-

This is intended to be used for protocols that close off the connection and return to plain text transfer. You do not normally need to use this function.

- -

Reimplemented in QCA::TLS.

- -
-
- -
-
- - - - - - - - - -
virtual int QCA::SecureLayer::convertBytesWritten (qint64  encryptedBytes )  [pure virtual]
-
-
- -

Convert encrypted bytes written to plain text bytes written.

-
Parameters:
- - -
encryptedBytes the number of bytes to convert
-
-
- -

Implemented in QCA::TLS, and QCA::SASL.

- -
-
- -
-
- - - - - - - - -
void QCA::SecureLayer::readyRead ( )  [signal]
-
-
- -

This signal is emitted when SecureLayer has decrypted (application side) data ready to be read.

-

Typically you will connect this signal to a slot that reads the data (using read()).

- -
-
- -
-
- - - - - - - - -
void QCA::SecureLayer::readyReadOutgoing ( )  [signal]
-
-
- -

This signal is emitted when SecureLayer has encrypted (network side) data ready to be read.

-

Typically you will connect this signal to a slot that reads the data (using readOutgoing()) and writes it to a network socket.

- -
-
- -
-
- - - - - - - - -
void QCA::SecureLayer::closed ( )  [signal]
-
-
- -

This signal is emitted when the SecureLayer connection is closed.

- -
-
- -
-
- - - - - - - - -
void QCA::SecureLayer::error ( )  [signal]
-
-
- -

This signal is emitted when an error is detected.

-

You can determine the error type using errorCode().

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureLayer-members.html qca2-2.1.0/apidocs/html/classQCA_1_1SecureLayer-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureLayer-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureLayer-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::SecureLayer Member List

This is the complete list of members for QCA::SecureLayer, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
blockSignals(bool block)QObject
bytesAvailable() const =0QCA::SecureLayer [pure virtual]
bytesOutgoingAvailable() const =0QCA::SecureLayer [pure virtual]
childEvent(QChildEvent *event)QObject
children()QObject
close()QCA::SecureLayer [virtual]
closed()QCA::SecureLayer [signal]
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
convertBytesWritten(qint64 encryptedBytes)=0QCA::SecureLayer [pure virtual]
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
error()QCA::SecureLayer [signal]
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isClosable() const QCA::SecureLayer [virtual]
isWidgetType()QObject
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
parent()QObject
property(const char *name)QObject
QObject(QObject *parent=0)QObject
read()=0QCA::SecureLayer [pure virtual]
readOutgoing(int *plainBytes=0)=0QCA::SecureLayer [pure virtual]
readUnprocessed()QCA::SecureLayer [virtual]
readyRead()QCA::SecureLayer [signal]
readyReadOutgoing()QCA::SecureLayer [signal]
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
SecureLayer(QObject *parent=0)QCA::SecureLayer
sender()QObject
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
startTimer(int interval)QObject
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
write(const QByteArray &a)=0QCA::SecureLayer [pure virtual]
writeIncoming(const QByteArray &a)=0QCA::SecureLayer [pure virtual]
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessage__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessage__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessage__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessage__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessage__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessage__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessage__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessage__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -0f95e6608206f641bc1fab7c5aa6b058 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessage__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessage__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessage.html qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessage.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessage.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessage.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,1227 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::SecureMessage Class Reference - - - - - - -
-

QCA::SecureMessage Class Reference
- -[QCA user API] -

-

Class representing a secure message. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::SecureMessage:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Types

enum  Error {
-  ErrorPassphrase, -ErrorFormat, -ErrorSignerExpired, -ErrorSignerInvalid, -
-  ErrorEncryptExpired, -ErrorEncryptUntrusted, -ErrorEncryptInvalid, -ErrorNeedCard, -
-  ErrorCertKeyMismatch, -ErrorUnknown -
- }
enum  Format { Binary, -Ascii - }
enum  SignMode { Message, -Clearsign, -Detached - }
enum  Type { OpenPGP, -CMS - }

Signals

void bytesWritten (int bytes)
void finished ()
void readyRead ()

Public Member Functions

bool bundleSignerEnabled () const
int bytesAvailable () const
bool canClearsign () const
bool canSignAndEncrypt () const
bool canSignMultiple () const
QString diagnosticText () const
void end ()
Error errorCode () const
Format format () const
QString hashName () const
QByteArray read ()
SecureMessageKeyList recipientKeys () const
void reset ()
 SecureMessage (SecureMessageSystem *system)
void setBundleSignerEnabled (bool b)
void setFormat (Format f)
void setRecipient (const SecureMessageKey &key)
void setRecipients (const SecureMessageKeyList &keys)
void setSigner (const SecureMessageKey &key)
void setSigners (const SecureMessageKeyList &keys)
void setSMIMEAttributesEnabled (bool b)
QByteArray signature () const
SecureMessageSignature signer () const
SecureMessageKeyList signerKeys () const
SecureMessageSignatureList signers () const
bool smimeAttributesEnabled () const
void startDecrypt ()
void startEncrypt ()
void startSign (SignMode m=Message)
void startSignAndEncrypt ()
void startVerify (const QByteArray &detachedSig=QByteArray())
bool success () const
Type type () const
void update (const QByteArray &in)
bool verifySuccess () const
bool waitForFinished (int msecs=30000)
bool wasSigned () const

Friends

-class Private
-

Detailed Description

-

Class representing a secure message.

-

SecureMessage presents a unified interface for working with both OpenPGP and CMS (S/MIME) messages. Prepare the object by calling setFormat(), setRecipient(), and setSigner() as necessary, and then begin the operation by calling an appropriate 'start' function, such as startSign().

-

Here is an example of how to perform a Clearsign operation using PGP:

-
// first make the SecureMessageKey
-PGPKey myPGPKey = getSecretKeyFromSomewhere();
-SecureMessageKey key;
-key.setPGPSecretKey(myPGPKey);
-
-// our data to sign
-QByteArray plain = "Hello, world";
-
-// let's do it
-OpenPGP pgp;
-SecureMessage msg(&pgp);
-msg.setSigner(key);
-msg.startSign(SecureMessage::Clearsign);
-msg.update(plain);
-msg.end();
-msg.waitForFinished(-1);
-
-if(msg.success())
-{
-        QByteArray result = msg.read();
-        // result now contains the clearsign text data
-}
-else
-{
-        // error
-        ...
-}
-

Performing a CMS sign operation is similar. Simply set up the SecureMessageKey with a Certificate instead of a PGPKey, and operate on a CMS object instead of an OpenPGP object.

-
See also:
SecureMessageKey
-
-SecureMessageSignature
-
-OpenPGP
-
-CMS
-
Examples:
-

publickeyexample.cpp.

-
-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::SecureMessage::Type
-
-
- -

The type of secure message.

-
Enumerator:
- - -
OpenPGP  -

a Pretty Good Privacy message

-
CMS  -

a Cryptographic Message Syntax message

-
-
-
- -
-
- -
- -
- -

The type of message signature.

-
Enumerator:
- - - -
Message  -

the message includes the signature

-
Clearsign  -

the message is clear signed

-
Detached  -

the signature is detached

-
-
-
- -
-
- -
-
- - - - -
enum QCA::SecureMessage::Format
-
-
- -

Formats for secure messages.

-
Enumerator:
- - -
Binary  -

DER/binary.

-
Ascii  -

PEM/ascii-armored.

-
-
-
- -
-
- -
-
- - - - -
enum QCA::SecureMessage::Error
-
-
- -

Errors for secure messages.

-
Enumerator:
- - - - - - - - - - -
ErrorPassphrase  -

passphrase was either wrong or not provided

-
ErrorFormat  -

input format was bad

-
ErrorSignerExpired  -

signing key is expired

-
ErrorSignerInvalid  -

signing key is invalid in some way

-
ErrorEncryptExpired  -

encrypting key is expired

-
ErrorEncryptUntrusted  -

encrypting key is untrusted

-
ErrorEncryptInvalid  -

encrypting key is invalid in some way

-
ErrorNeedCard  -

pgp card is missing

-
ErrorCertKeyMismatch  -

certificate and private key don't match

-
ErrorUnknown  -

other error

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::SecureMessage::SecureMessage (SecureMessageSystem system ) 
-
-
- -

Create a new secure message.

-

This constructor uses an existing SecureMessageSystem object (for example, an OpenPGP or CMS object) to generate a specific kind of secure message.

-
Parameters:
- - -
system a pre-existing and configured SecureMessageSystem object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
Type QCA::SecureMessage::type ( )  const
-
-
- -

The Type of secure message.

- -

Reimplemented from QCA::Algorithm.

- -
-
- -
-
- - - - - - - - -
bool QCA::SecureMessage::canSignMultiple ( )  const
-
-
- -

Test if the message type supports multiple (parallel) signatures.

-
Returns:
true if the secure message support multiple parallel signatures
-
Note:
PGP cannot do this - it is primarily a CMS feature
- -
-
- -
-
- - - - - - - - -
bool QCA::SecureMessage::canClearsign ( )  const
-
-
- -

True if the SecureMessageSystem can clearsign messages.

-
Note:
CMS cannot clearsign - this is normally only available for PGP
- -
-
- -
-
- - - - - - - - -
bool QCA::SecureMessage::canSignAndEncrypt ( )  const
-
-
- -

True if the SecureMessageSystem can both sign and encrypt (in the same operation).

-
Note:
CMS cannot do an integrated sign/encrypt - this is normally only available for PGP. You can do separate signing and encrypting operations on the same message with CMS though.
- -
-
- -
-
- - - - - - - - -
void QCA::SecureMessage::reset ( ) 
-
-
- -

Reset the object state to that of original construction.

-

Now a new operation can be performed immediately.

- -
-
- -
-
- - - - - - - - -
bool QCA::SecureMessage::bundleSignerEnabled ( )  const
-
-
- -

Returns true if bundling of the signer certificate chain is enabled.

- -
-
- -
-
- - - - - - - - -
bool QCA::SecureMessage::smimeAttributesEnabled ( )  const
-
-
- -

Returns true if inclusion of S/MIME attributes is enabled.

- -
-
- -
-
- - - - - - - - -
Format QCA::SecureMessage::format ( )  const
-
-
- -

Return the format type set for this message.

- -
-
- -
-
- - - - - - - - -
SecureMessageKeyList QCA::SecureMessage::recipientKeys ( )  const
-
-
- -

Return the recipient(s) set for this message with setRecipient() or setRecipients().

- -
-
- -
-
- - - - - - - - -
SecureMessageKeyList QCA::SecureMessage::signerKeys ( )  const
-
-
- -

Return the signer(s) set for this message with setSigner() or setSigners().

- -
-
- -
-
- - - - - - - - - -
void QCA::SecureMessage::setBundleSignerEnabled (bool  b ) 
-
-
- -

For CMS only, this will bundle the signer certificate chain into the message.

-

This allows a message to be verified on its own, without the need to have obtained the signer's certificate in advance. Email clients using S/MIME often bundle the signer, greatly simplifying key management.

-

This behavior is enabled by default.

-
Parameters:
- - -
b whether to bundle (if true) or not (false)
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SecureMessage::setSMIMEAttributesEnabled (bool  b ) 
-
-
- -

For CMS only, this will put extra attributes into the message related to S/MIME, such as the preferred type of algorithm to use in replies.

-

The attributes used are decided by the provider.

-

This behavior is enabled by default.

-
Parameters:
- - -
b whether to embed extra attribues (if true) or not (false)
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SecureMessage::setFormat (Format  f ) 
-
-
- -

Set the Format used for messages.

-

The default is Binary.

-
Parameters:
- - -
f whether to use Binary or Ascii
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SecureMessage::setRecipient (const SecureMessageKey key ) 
-
-
- -

Set the recipient for an encrypted message.

-
Parameters:
- - -
key the recipient's key
-
-
-
See also:
setRecipients
-
Examples:
publickeyexample.cpp.
-
-
-
- -
-
- - - - - - - - - -
void QCA::SecureMessage::setRecipients (const SecureMessageKeyList keys ) 
-
-
- -

Set the list of recipients for an encrypted message.

-

For a list with one item, this has the same effect as setRecipient.

-
Parameters:
- - -
keys the recipients' key
-
-
-
See also:
setRecipient
- -
-
- -
-
- - - - - - - - - -
void QCA::SecureMessage::setSigner (const SecureMessageKey key ) 
-
-
- -

Set the signer for a signed message.

-

This is used for both creating signed messages as well as for verifying CMS messages that have no signer bundled.

-
Parameters:
- - -
key the key associated with the signer
-
-
-
See also:
setSigners
- -
-
- -
-
- - - - - - - - - -
void QCA::SecureMessage::setSigners (const SecureMessageKeyList keys ) 
-
-
- -

Set the list of signers for a signed message.

-

This is used for both creating signed messages as well as for verifying CMS messages that have no signer bundled.

-

For a list with one item, this has the same effect as setSigner.

-
Parameters:
- - -
keys the key associated with the signer
-
-
-
See also:
setSigner
- -
-
- -
-
- - - - - - - - -
void QCA::SecureMessage::startEncrypt ( ) 
-
-
- -

Start an encryption operation.

-

You will normally use this with some code along these lines:

-
encryptingObj.startEncrypt();
-encryptingObj.update(message);
-// perhaps some more update()s
-encryptingObj.end();
-

Each update() may (or may not) result in some encrypted data, as indicated by the readyRead() signal being emitted. Alternatively, you can wait until the whole message is available (using either waitForFinished(), or use the finished() signal. The encrypted message can then be read using the read() method.

-
Examples:
publickeyexample.cpp.
-
-
-
- -
-
- - - - - - - - -
void QCA::SecureMessage::startDecrypt ( ) 
-
-
- -

Start an decryption operation.

-

You will normally use this with some code along these lines:

-
decryptingObj.startEncrypt();
-decryptingObj.update(message);
-// perhaps some more update()s
-decryptingObj.end();
-

Each update() may (or may not) result in some decrypted data, as indicated by the readyRead() signal being emitted. Alternatively, you can wait until the whole message is available (using either waitForFinished(), or the finished() signal). The decrypted message can then be read using the read() method.

-
Note:
If decrypted result is also signed (not for CMS), then the signature will be verified during this operation.
- -
-
- -
-
- - - - - - - - - -
void QCA::SecureMessage::startSign (SignMode  m = Message ) 
-
-
- -

Start a signing operation.

-

You will normally use this with some code along these lines:

-
signingObj.startSign(QCA::SecureMessage::Detached)
-signingObj.update(message);
-// perhaps some more update()s
-signingObj.end();
-

For Detached signatures, you won't get any results until the whole process is done - you either waitForFinished(), or use the finished() signal, to figure out when you can get the signature (using the signature() method, not using read()). For other formats, you can use the readyRead() signal to determine when there may be part of a signed message to read().

-
Parameters:
- - -
m the mode that will be used to generate the signature
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SecureMessage::startVerify (const QByteArray detachedSig = QByteArray() ) 
-
-
- -

Start a verification operation.

-
Parameters:
- - -
detachedSig the detached signature to verify. Do not pass a signature for other signature types.
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::SecureMessage::startSignAndEncrypt ( ) 
-
-
- -

Start a combined signing and encrypting operation.

-

You use this in the same way as startEncrypt().

-
Note:
This may not be possible (e.g. CMS cannot do this) - see canSignAndEncrypt() for a suitable test.
- -
-
- -
-
- - - - - - - - - -
void QCA::SecureMessage::update (const QByteArray in ) 
-
-
- -

Process a message (or the next part of a message) in the current operation.

-

You need to have already set up the message (startEncrypt(), startDecrypt(), startSign(), startSignAndEncrypt() and startVerify()) before calling this method.

-
Parameters:
- - -
in the data to process
-
-
-
Examples:
publickeyexample.cpp.
-
-
-
- -
-
- - - - - - - - -
QByteArray QCA::SecureMessage::read ( ) 
-
-
- -

Read the available data.

-
Note:
For detached signatures, you don't get anything back using this method. Use signature() to get the detached signature().
-
Examples:
publickeyexample.cpp.
-
-
-
- -
-
- - - - - - - - -
int QCA::SecureMessage::bytesAvailable ( )  const
-
-
- -

The number of bytes available to be read.

- -
-
- -
-
- - - - - - - - -
void QCA::SecureMessage::end ( ) 
-
-
- -

Complete an operation.

-

You need to call this method after you have processed the message (which you pass in as the argument to update().

-
Note:
the results of the operation are not available as soon as this method returns. You need to wait for the finished() signal, or use waitForFinished().
-
Examples:
publickeyexample.cpp.
-
-
-
- -
-
- - - - - - - - - -
bool QCA::SecureMessage::waitForFinished (int  msecs = 30000 ) 
-
-
- -

Block until the operation (encryption, decryption, signing or verifying) completes.

-
Parameters:
- - -
msecs the number of milliseconds to wait for the operation to complete. Pass -1 to wait indefinitely.
-
-
-
Note:
You should not use this in GUI applications where the blocking behaviour looks like a hung application. Instead, connect the finished() signal to a slot that handles the results.
-
-This synchronous operation may require event handling, and so it must not be called from the same thread as an EventHandler.
-
Examples:
publickeyexample.cpp.
-
-
-
- -
-
- - - - - - - - -
bool QCA::SecureMessage::success ( )  const
-
-
- -

Indicates whether or not the operation was successful or failed.

-

If this function returns false, then the reason for failure can be obtained with errorCode().

-
See also:
errorCode
-
-diagnosticText
-
Examples:
publickeyexample.cpp.
-
-
-
- -
-
- - - - - - - - -
Error QCA::SecureMessage::errorCode ( )  const
-
-
- -

Returns the failure code.

-
See also:
success
-
-diagnosticText
-
Examples:
publickeyexample.cpp.
-
-
-
- -
-
- - - - - - - - -
QByteArray QCA::SecureMessage::signature ( )  const
-
-
- -

The signature for the message.

-

This is only used for Detached signatures. For other message types, you get the message and signature together using read().

- -
-
- -
-
- - - - - - - - -
QString QCA::SecureMessage::hashName ( )  const
-
-
- -

The name of the hash used for the signature process.

- -
-
- -
-
- - - - - - - - -
bool QCA::SecureMessage::wasSigned ( )  const
-
-
- -

Test if the message was signed.

-

This is true for OpenPGP if the decrypted message was also signed.

-
Returns:
true if the message was signed.
- -
-
- -
-
- - - - - - - - -
bool QCA::SecureMessage::verifySuccess ( )  const
-
-
- -

Verify that the message signature is correct.

-
Returns:
true if the signature is valid for the message, otherwise return false
- -
-
- -
-
- - - - - - - - -
SecureMessageSignature QCA::SecureMessage::signer ( )  const
-
-
- -

Information on the signer for the message.

- -
-
- -
-
- - - - - - - - -
SecureMessageSignatureList QCA::SecureMessage::signers ( )  const
-
-
- -

Information on the signers for the message.

-

This is only meaningful if the message type supports multiple signatures (see canSignMultiple() for a suitable test).

- -
-
- -
-
- - - - - - - - -
QString QCA::SecureMessage::diagnosticText ( )  const
-
-
- -

Returns a log of technical information about the operation, which may be useful for presenting to the user in an advanced error dialog.

- -
-
- -
-
- - - - - - - - -
void QCA::SecureMessage::readyRead ( )  [signal]
-
-
- -

This signal is emitted when there is some data to read.

-

Typically you connect this signal to a slot that does a read() of the available data.

-
Note:
This signal does not mean that the processing of a message is necessarily complete - see finished().
- -
-
- -
-
- - - - - - - - - -
void QCA::SecureMessage::bytesWritten (int  bytes )  [signal]
-
-
- -

This signal is emitted when data has been accepted by the message processor.

-
Parameters:
- - -
bytes the number of bytes written
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::SecureMessage::finished ( )  [signal]
-
-
- -

This signal is emitted when the message is fully processed.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageKey__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageKey__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageKey__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageKey__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageKey__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageKey__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageKey__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageKey__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -771c6eef342fcc7c33f86f4e7e55e14b \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageKey__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageKey__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageKey.html qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageKey.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageKey.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageKey.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,476 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::SecureMessageKey Class Reference - - - - - - -
-

QCA::SecureMessageKey Class Reference
- -[QCA user API] -

-

Key for SecureMessage system. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::SecureMessageKey:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - -

Public Types

enum  Type { None, -PGP, -X509 - }

Public Member Functions

bool havePrivate () const
bool isNull () const
QString name () const
SecureMessageKeyoperator= (const SecureMessageKey &from)
PGPKey pgpPublicKey () const
PGPKey pgpSecretKey () const
 SecureMessageKey (const SecureMessageKey &from)
 SecureMessageKey ()
void setPGPPublicKey (const PGPKey &pub)
void setPGPSecretKey (const PGPKey &sec)
void setX509CertificateChain (const CertificateChain &c)
void setX509KeyBundle (const KeyBundle &kb)
void setX509PrivateKey (const PrivateKey &k)
Type type () const
CertificateChain x509CertificateChain () const
PrivateKey x509PrivateKey () const
-

Detailed Description

-

Key for SecureMessage system.

-
Examples:
-

publickeyexample.cpp.

-
-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::SecureMessageKey::Type
-
-
- -

The key type.

-
Enumerator:
- - - -
None  -

no key

-
PGP  -

Pretty Good Privacy key.

-
X509  -

X.509 CMS key.

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::SecureMessageKey::SecureMessageKey ( ) 
-
-
- -

Construct an empty key.

- -
-
- -
-
- - - - - - - - - -
QCA::SecureMessageKey::SecureMessageKey (const SecureMessageKey from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the source key
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
SecureMessageKey& QCA::SecureMessageKey::operator= (const SecureMessageKey from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the source key
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::SecureMessageKey::isNull ( )  const
-
-
- -

Returns true for null object.

- -
-
- -
-
- - - - - - - - -
Type QCA::SecureMessageKey::type ( )  const
-
-
- -

The key type.

- -
-
- -
-
- - - - - - - - -
PGPKey QCA::SecureMessageKey::pgpPublicKey ( )  const
-
-
- -

Public key part of a PGP key.

- -
-
- -
-
- - - - - - - - -
PGPKey QCA::SecureMessageKey::pgpSecretKey ( )  const
-
-
- -

Private key part of a PGP key.

- -
-
- -
-
- - - - - - - - - -
void QCA::SecureMessageKey::setPGPPublicKey (const PGPKey pub ) 
-
-
- -

Set the public key part of a PGP key.

-
Parameters:
- - -
pub the PGP public key
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SecureMessageKey::setPGPSecretKey (const PGPKey sec ) 
-
-
- -

Set the private key part of a PGP key.

-
Parameters:
- - -
sec the PGP secretkey
-
-
- -
-
- -
-
- - - - - - - - -
CertificateChain QCA::SecureMessageKey::x509CertificateChain ( )  const
-
-
- -

The X.509 certificate chain (public part) for this key.

- -
-
- -
-
- - - - - - - - -
PrivateKey QCA::SecureMessageKey::x509PrivateKey ( )  const
-
-
- -

The X.509 private key part of this key.

- -
-
- -
-
- - - - - - - - - -
void QCA::SecureMessageKey::setX509CertificateChain (const CertificateChain c ) 
-
-
- -

Set the public key part of this X.509 key.

-
Parameters:
- - -
c the Certificate chain containing the public keys
-
-
-
Examples:
publickeyexample.cpp.
-
-
-
- -
-
- - - - - - - - - -
void QCA::SecureMessageKey::setX509PrivateKey (const PrivateKey k ) 
-
-
- -

Set the private key part of this X.509 key.

-
Parameters:
- - -
k the private key
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::SecureMessageKey::setX509KeyBundle (const KeyBundle kb ) 
-
-
- -

Set the public and private part of this X.509 key with KeyBundle.

-
Parameters:
- - -
kb the public and private key bundle
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::SecureMessageKey::havePrivate ( )  const
-
-
- -

Test if this key contains a private key part.

- -
-
- -
-
- - - - - - - - -
QString QCA::SecureMessageKey::name ( )  const
-
-
- -

The name associated with this key.

-

For a PGP key, this is the primary user ID

-

For an X.509 key, this is the Common Name

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageKey-members.html qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageKey-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageKey-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageKey-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::SecureMessageKey Member List

This is the complete list of members for QCA::SecureMessageKey, including all inherited members. - - - - - - - - - - - - - - - - - - - - - -
havePrivate() const QCA::SecureMessageKey
isNull() const QCA::SecureMessageKey
name() const QCA::SecureMessageKey
None enum valueQCA::SecureMessageKey
operator=(const SecureMessageKey &from)QCA::SecureMessageKey
PGP enum valueQCA::SecureMessageKey
pgpPublicKey() const QCA::SecureMessageKey
pgpSecretKey() const QCA::SecureMessageKey
SecureMessageKey()QCA::SecureMessageKey
SecureMessageKey(const SecureMessageKey &from)QCA::SecureMessageKey
setPGPPublicKey(const PGPKey &pub)QCA::SecureMessageKey
setPGPSecretKey(const PGPKey &sec)QCA::SecureMessageKey
setX509CertificateChain(const CertificateChain &c)QCA::SecureMessageKey
setX509KeyBundle(const KeyBundle &kb)QCA::SecureMessageKey
setX509PrivateKey(const PrivateKey &k)QCA::SecureMessageKey
Type enum nameQCA::SecureMessageKey
type() const QCA::SecureMessageKey
X509 enum valueQCA::SecureMessageKey
x509CertificateChain() const QCA::SecureMessageKey
x509PrivateKey() const QCA::SecureMessageKey
~SecureMessageKey() (defined in QCA::SecureMessageKey)QCA::SecureMessageKey
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessage-members.html qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessage-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessage-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessage-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,153 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::SecureMessage Member List

This is the complete list of members for QCA::SecureMessage, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
Ascii enum valueQCA::SecureMessage
Binary enum valueQCA::SecureMessage
blockSignals(bool block)QObject
bundleSignerEnabled() const QCA::SecureMessage
bytesAvailable() const QCA::SecureMessage
bytesWritten(int bytes)QCA::SecureMessage [signal]
canClearsign() const QCA::SecureMessage
canSignAndEncrypt() const QCA::SecureMessage
canSignMultiple() const QCA::SecureMessage
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
childEvent(QChildEvent *event)QObject
children()QObject
Clearsign enum valueQCA::SecureMessage
CMS enum valueQCA::SecureMessage
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
context()QCA::Algorithm
context() const QCA::Algorithm
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
Detached enum valueQCA::SecureMessage
diagnosticText() const QCA::SecureMessage
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
end()QCA::SecureMessage
Error enum nameQCA::SecureMessage
ErrorCertKeyMismatch enum valueQCA::SecureMessage
errorCode() const QCA::SecureMessage
ErrorEncryptExpired enum valueQCA::SecureMessage
ErrorEncryptInvalid enum valueQCA::SecureMessage
ErrorEncryptUntrusted enum valueQCA::SecureMessage
ErrorFormat enum valueQCA::SecureMessage
ErrorNeedCard enum valueQCA::SecureMessage
ErrorPassphrase enum valueQCA::SecureMessage
ErrorSignerExpired enum valueQCA::SecureMessage
ErrorSignerInvalid enum valueQCA::SecureMessage
ErrorUnknown enum valueQCA::SecureMessage
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
finished()QCA::SecureMessage [signal]
format() const QCA::SecureMessage
Format enum nameQCA::SecureMessage
hashName() const QCA::SecureMessage
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
killTimer(int id)QObject
Message enum valueQCA::SecureMessage
metaObject()QObject
moveToThread(QThread *targetThread)QObject
OpenPGP enum valueQCA::SecureMessage
operator=(const Algorithm &from)QCA::Algorithm
parent()QObject
Private (defined in QCA::SecureMessage)QCA::SecureMessage [friend]
property(const char *name)QObject
provider() const QCA::Algorithm
QObject(QObject *parent=0)QObject
read()QCA::SecureMessage
readyRead()QCA::SecureMessage [signal]
receivers(const char *signal)QObject
recipientKeys() const QCA::SecureMessage
removeEventFilter(QObject *obj)QObject
reset()QCA::SecureMessage
SecureMessage(SecureMessageSystem *system)QCA::SecureMessage
sender()QObject
setBundleSignerEnabled(bool b)QCA::SecureMessage
setFormat(Format f)QCA::SecureMessage
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
setRecipient(const SecureMessageKey &key)QCA::SecureMessage
setRecipients(const SecureMessageKeyList &keys)QCA::SecureMessage
setSigner(const SecureMessageKey &key)QCA::SecureMessage
setSigners(const SecureMessageKeyList &keys)QCA::SecureMessage
setSMIMEAttributesEnabled(bool b)QCA::SecureMessage
signalsBlocked()QObject
signature() const QCA::SecureMessage
signer() const QCA::SecureMessage
signerKeys() const QCA::SecureMessage
signers() const QCA::SecureMessage
SignMode enum nameQCA::SecureMessage
smimeAttributesEnabled() const QCA::SecureMessage
startDecrypt()QCA::SecureMessage
startEncrypt()QCA::SecureMessage
startSign(SignMode m=Message)QCA::SecureMessage
startSignAndEncrypt()QCA::SecureMessage
startTimer(int interval)QObject
startVerify(const QByteArray &detachedSig=QByteArray())QCA::SecureMessage
success() const QCA::SecureMessage
takeContext()QCA::Algorithm
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
Type enum nameQCA::SecureMessage
type() const QCA::SecureMessage
update(const QByteArray &in)QCA::SecureMessage
verifySuccess() const QCA::SecureMessage
waitForFinished(int msecs=30000)QCA::SecureMessage
wasSigned() const QCA::SecureMessage
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~SecureMessage() (defined in QCA::SecureMessage)QCA::SecureMessage
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSignature__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSignature__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSignature__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSignature__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSignature__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSignature__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSignature__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSignature__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -cad0e11354bfef258a05ef184314e276 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSignature__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSignature__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSignature.html qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSignature.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSignature.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSignature.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,312 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::SecureMessageSignature Class Reference - - - - - - -
-

QCA::SecureMessageSignature Class Reference
- -[QCA user API] -

-

SecureMessage signature. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::SecureMessageSignature:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - -

Public Types

enum  IdentityResult { Valid, -InvalidSignature, -InvalidKey, -NoKey - }

Public Member Functions

IdentityResult identityResult () const
SecureMessageKey key () const
Validity keyValidity () const
SecureMessageSignatureoperator= (const SecureMessageSignature &from)
 SecureMessageSignature (const SecureMessageSignature &from)
 SecureMessageSignature (IdentityResult r, Validity v, const SecureMessageKey &key, const QDateTime &ts)
 SecureMessageSignature ()
QDateTime timestamp () const
-

Detailed Description

-

SecureMessage signature.

-

Member Enumeration Documentation

- -
- -
- -

The result of identity verification.

-
Enumerator:
- - - - -
Valid  -

indentity is verified, matches signature

-
InvalidSignature  -

valid key provided, but signature failed

-
InvalidKey  -

invalid key provided

-
NoKey  -

identity unknown

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::SecureMessageSignature::SecureMessageSignature ( ) 
-
-
- -

Create an empty signature check object.

-

User applications don't normally need to create signature checks. You normally get the object back as a result of a SecureMessage operation.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
QCA::SecureMessageSignature::SecureMessageSignature (IdentityResult  r,
Validity  v,
const SecureMessageKey key,
const QDateTime ts 
)
-
-
- -

Create a signature check object.

-

User applications don't normally need to create signature checks. You normally get the object back as a result of a SecureMessage operation.

-
Parameters:
- - - - - -
r the result of the check
v the Validity of the key validation check
key the key associated with the signature
ts the timestamp associated with the signature
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::SecureMessageSignature::SecureMessageSignature (const SecureMessageSignature from ) 
-
-
- -

Standard copy constructor.

-
Parameters:
- - -
from the source signature object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
SecureMessageSignature& QCA::SecureMessageSignature::operator= (const SecureMessageSignature from ) 
-
-
- -

Standard assignment operator.

-
Parameters:
- - -
from the source signature object
-
-
- -
-
- -
-
- - - - - - - - -
IdentityResult QCA::SecureMessageSignature::identityResult ( )  const
-
-
- -

get the results of the identity check on this signature

- -
-
- -
-
- - - - - - - - -
Validity QCA::SecureMessageSignature::keyValidity ( )  const
-
-
- -

get the results of the key validation check on this signature

- -
-
- -
-
- - - - - - - - -
SecureMessageKey QCA::SecureMessageSignature::key ( )  const
-
-
- -

get the key associated with this signature

- -
-
- -
-
- - - - - - - - -
QDateTime QCA::SecureMessageSignature::timestamp ( )  const
-
-
- -

get the timestamp associated with this signature

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSignature-members.html qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSignature-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSignature-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSignature-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::SecureMessageSignature Member List

This is the complete list of members for QCA::SecureMessageSignature, including all inherited members. - - - - - - - - - - - - - - -
IdentityResult enum nameQCA::SecureMessageSignature
identityResult() const QCA::SecureMessageSignature
InvalidKey enum valueQCA::SecureMessageSignature
InvalidSignature enum valueQCA::SecureMessageSignature
key() const QCA::SecureMessageSignature
keyValidity() const QCA::SecureMessageSignature
NoKey enum valueQCA::SecureMessageSignature
operator=(const SecureMessageSignature &from)QCA::SecureMessageSignature
SecureMessageSignature()QCA::SecureMessageSignature
SecureMessageSignature(IdentityResult r, Validity v, const SecureMessageKey &key, const QDateTime &ts)QCA::SecureMessageSignature
SecureMessageSignature(const SecureMessageSignature &from)QCA::SecureMessageSignature
timestamp() const QCA::SecureMessageSignature
Valid enum valueQCA::SecureMessageSignature
~SecureMessageSignature() (defined in QCA::SecureMessageSignature)QCA::SecureMessageSignature
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSystem__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSystem__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSystem__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSystem__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSystem__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSystem__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSystem__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSystem__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -7bcc752380b86743a294880ab2212a3f \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSystem__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSystem__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSystem.html qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSystem.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSystem.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSystem.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::SecureMessageSystem Class Reference - - - - - - -
-

QCA::SecureMessageSystem Class Reference
- -[QCA user API] -

-

Abstract superclass for secure messaging systems. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::SecureMessageSystem:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - -

Protected Member Functions

 SecureMessageSystem (QObject *parent, const QString &type, const QString &provider)
-

Detailed Description

-

Abstract superclass for secure messaging systems.

-
See also:
SecureMessage
-
-SecureMessageKey
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QCA::SecureMessageSystem::SecureMessageSystem (QObject parent,
const QString type,
const QString provider 
) [protected]
-
-
- -

Protected constructor for SecureMessageSystem classes.

-

You are meant to be using a subclass (such as OpenPGP or CMS) - you only need to worry about this class if you are creating a whole new SecureMessageSystem type.

-
Parameters:
- - - - -
parent the parent object for this object
type the name of the Type of SecureMessageSystem to create
provider the provider to use, if a specific provider is required.
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSystem-members.html qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSystem-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SecureMessageSystem-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SecureMessageSystem-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::SecureMessageSystem Member List

This is the complete list of members for QCA::SecureMessageSystem, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
blockSignals(bool block)QObject
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
childEvent(QChildEvent *event)QObject
children()QObject
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
context()QCA::Algorithm
context() const QCA::Algorithm
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
operator=(const Algorithm &from)QCA::Algorithm
parent()QObject
property(const char *name)QObject
provider() const QCA::Algorithm
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
SecureMessageSystem(QObject *parent, const QString &type, const QString &provider)QCA::SecureMessageSystem [protected]
sender()QObject
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
startTimer(int interval)QObject
takeContext()QCA::Algorithm
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
type() const QCA::Algorithm
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~SecureMessageSystem() (defined in QCA::SecureMessageSystem)QCA::SecureMessageSystem
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SMSContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1SMSContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1SMSContext__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SMSContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SMSContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1SMSContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1SMSContext__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SMSContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -72af9e0d6f7cb000775bbb5244760292 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1SMSContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1SMSContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SMSContext.html qca2-2.1.0/apidocs/html/classQCA_1_1SMSContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SMSContext.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SMSContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,211 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::SMSContext Class Reference - - - - - - -
-

QCA::SMSContext Class Reference
- -[QCA provider API] -

-

SecureMessageSystem provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::SMSContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - -

Public Member Functions

virtual MessageContextcreateMessage ()=0
virtual void setPrivateKeys (const QList< SecureMessageKey > &keys)
virtual void setTrustedCertificates (const CertificateCollection &trusted)
virtual void setUntrustedCertificates (const CertificateCollection &untrusted)
 SMSContext (Provider *p, const QString &type)
-

Detailed Description

-

SecureMessageSystem provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want SecureMessageSystem instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::SMSContext::SMSContext (Provider p,
const QString type 
) [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
p the provider associated with this context
type the name of the type of secure message system
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
virtual void QCA::SMSContext::setTrustedCertificates (const CertificateCollection trusted )  [virtual]
-
-
- -

Set the trusted certificates and for this secure message system, to be used for validation.

-

The collection may also contain CRLs.

-

This function is only valid for CMS.

-
Parameters:
- - -
trusted a set of trusted certificates and CRLs.
-
-
- -
-
- -
-
- - - - - - - - - -
virtual void QCA::SMSContext::setUntrustedCertificates (const CertificateCollection untrusted )  [virtual]
-
-
- -

Set the untrusted certificates and CRLs for this secure message system, to be used for validation.

-

This function is only valid for CMS.

-
Parameters:
- - -
untrusted a set of untrusted certificates and CRLs.
-
-
- -
-
- -
-
- - - - - - - - - -
virtual void QCA::SMSContext::setPrivateKeys (const QList< SecureMessageKey > &  keys )  [virtual]
-
-
- -

Set the private keys for this secure message system, to be used for decryption.

-

This function is only valid for CMS.

-
Parameters:
- - -
keys the keys to be used for decryption
-
-
- -
-
- -
-
- - - - - - - - -
virtual MessageContext* QCA::SMSContext::createMessage ( )  [pure virtual]
-
-
- -

Create a new message object for this system.

-

The caller is responsible for deleting it.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SMSContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1SMSContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SMSContext-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SMSContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::SMSContext Member List

This is the complete list of members for QCA::SMSContext, including all inherited members. - - - - - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
createMessage()=0QCA::SMSContext [pure virtual]
setPrivateKeys(const QList< SecureMessageKey > &keys)QCA::SMSContext [virtual]
setTrustedCertificates(const CertificateCollection &trusted)QCA::SMSContext [virtual]
setUntrustedCertificates(const CertificateCollection &untrusted)QCA::SMSContext [virtual]
SMSContext(Provider *p, const QString &type)QCA::SMSContext [inline]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SymmetricKey__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1SymmetricKey__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1SymmetricKey__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SymmetricKey__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SymmetricKey__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1SymmetricKey__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1SymmetricKey__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SymmetricKey__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -7a7afe6fa8115ce1dd77ae8d597cf90a \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1SymmetricKey__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1SymmetricKey__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SymmetricKey.html qca2-2.1.0/apidocs/html/classQCA_1_1SymmetricKey.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SymmetricKey.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SymmetricKey.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,193 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::SymmetricKey Class Reference - - - - - - -
-

QCA::SymmetricKey Class Reference
- -[QCA user API] -

-

Container for keys for symmetric encryption algorithms. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::SymmetricKey:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - -

Public Member Functions

bool isWeakDESKey ()
 SymmetricKey (const QByteArray &a)
 SymmetricKey (const SecureArray &a)
 SymmetricKey (int size)
 SymmetricKey ()
-

Detailed Description

-

Container for keys for symmetric encryption algorithms.

-
Examples:
-

aes-cmac.cpp, ciphertest.cpp, and mactest.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
QCA::SymmetricKey::SymmetricKey ( ) 
-
-
- -

Construct an empty (zero length) key.

- -
-
- -
-
- - - - - - - - - -
QCA::SymmetricKey::SymmetricKey (int  size ) 
-
-
- -

Construct an key of specified size, with random contents.

-

This is intended to be used as a random session key.

-
Parameters:
- - -
size the number of bytes for the key
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::SymmetricKey::SymmetricKey (const SecureArray a ) 
-
-
- -

Construct a key from a provided byte array.

-
Parameters:
- - -
a the byte array to copy
-
-
- -
-
- -
-
- - - - - - - - - -
QCA::SymmetricKey::SymmetricKey (const QByteArray a ) 
-
-
- -

Construct a key from a provided byte array.

-
Parameters:
- - -
a the byte array to copy
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
bool QCA::SymmetricKey::isWeakDESKey ( ) 
-
-
- -

Test for weak DES keys.

-
Returns:
true if the key is a weak key for DES
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SymmetricKey-members.html qca2-2.1.0/apidocs/html/classQCA_1_1SymmetricKey-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SymmetricKey-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SymmetricKey-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,85 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::SymmetricKey Member List

This is the complete list of members for QCA::SymmetricKey, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
append(const SecureArray &a)QCA::SecureArray
at(int index)QCA::SecureArray
at(int index) const QCA::SecureArray
clear()QCA::SecureArray
constData() const QCA::SecureArray
data()QCA::SecureArray
data() const QCA::SecureArray
fill(char fillChar, int fillToPosition=-1)QCA::SecureArray
isEmpty() const QCA::SecureArray
isNull() const QCA::MemoryRegion
isSecure() const QCA::MemoryRegion
isWeakDESKey()QCA::SymmetricKey
MemoryRegion() (defined in QCA::MemoryRegion)QCA::MemoryRegion
MemoryRegion(const char *str)QCA::MemoryRegion
MemoryRegion(const QByteArray &from)QCA::MemoryRegion
MemoryRegion(const MemoryRegion &from)QCA::MemoryRegion
MemoryRegion(bool secure)QCA::MemoryRegion [protected]
MemoryRegion(int size, bool secure)QCA::MemoryRegion [protected]
MemoryRegion(const QByteArray &from, bool secure)QCA::MemoryRegion [protected]
operator!=(const MemoryRegion &other) const QCA::SecureArray [inline]
operator+=(const SecureArray &a)QCA::SecureArray
operator=(const SecureArray &from)QCA::SecureArray
operator=(const QByteArray &a)QCA::SecureArray
QCA::MemoryRegion::operator=(const MemoryRegion &from)QCA::MemoryRegion
operator==(const MemoryRegion &other) const QCA::SecureArray
operator[](int index)QCA::SecureArray
operator[](int index) const QCA::SecureArray
resize(int size)QCA::SecureArray
SecureArray()QCA::SecureArray
SecureArray(int size, char ch=0)QCA::SecureArray [explicit]
SecureArray(const char *str)QCA::SecureArray
SecureArray(const QByteArray &a)QCA::SecureArray
SecureArray(const MemoryRegion &a)QCA::SecureArray
SecureArray(const SecureArray &from)QCA::SecureArray
set(const SecureArray &from)QCA::SecureArray [protected]
set(const QByteArray &from)QCA::SecureArray [protected]
QCA::MemoryRegion::set(const QByteArray &from, bool secure)QCA::MemoryRegion [protected]
setSecure(bool secure)QCA::MemoryRegion [protected]
size() const QCA::SecureArray
SymmetricKey()QCA::SymmetricKey
SymmetricKey(int size)QCA::SymmetricKey
SymmetricKey(const SecureArray &a)QCA::SymmetricKey
SymmetricKey(const QByteArray &a)QCA::SymmetricKey
toByteArray() const QCA::SecureArray
~MemoryRegion() (defined in QCA::MemoryRegion)QCA::MemoryRegion
~SecureArray() (defined in QCA::SecureArray)QCA::SecureArray
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Synchronizer__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1Synchronizer__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1Synchronizer__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Synchronizer__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Synchronizer__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1Synchronizer__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1Synchronizer__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Synchronizer__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5173d2b4f5c52c803f6a061627454dbe \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1Synchronizer__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1Synchronizer__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Synchronizer.html qca2-2.1.0/apidocs/html/classQCA_1_1Synchronizer.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Synchronizer.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Synchronizer.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,139 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::Synchronizer Class Reference - - - - - - -
-

QCA::Synchronizer Class Reference

-

Enable synchronization between two threads. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::Synchronizer:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - -

Public Member Functions

void conditionMet ()
 Synchronizer (QObject *parent)
bool waitForCondition (int msecs=-1)
-

Detailed Description

-

Enable synchronization between two threads.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::Synchronizer::Synchronizer (QObject parent ) 
-
-
- -

Standard constructor.

-
Parameters:
- - -
parent the parent object to this object
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
bool QCA::Synchronizer::waitForCondition (int  msecs = -1 ) 
-
-
- -

Call to pause execution in this thread.

-

This function will block until conditionMet() is called.

-
Parameters:
- - -
msecs the time to wait before proceeding. The default timeout value (-1) indicates to wait indefinitely.
-
-
- -
-
- -
-
- - - - - - - - -
void QCA::Synchronizer::conditionMet ( ) 
-
-
- -

Call to continue execution in the paused thread.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1Synchronizer-members.html qca2-2.1.0/apidocs/html/classQCA_1_1Synchronizer-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1Synchronizer-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1Synchronizer-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,83 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::Synchronizer Member List

This is the complete list of members for QCA::Synchronizer, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
blockSignals(bool block)QObject
childEvent(QChildEvent *event)QObject
children()QObject
conditionMet()QCA::Synchronizer
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
parent()QObject
property(const char *name)QObject
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
sender()QObject
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
startTimer(int interval)QObject
Synchronizer(QObject *parent)QCA::Synchronizer
thread()QObject
timerEvent(QTimerEvent *event)QObject
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
waitForCondition(int msecs=-1)QCA::Synchronizer
~Synchronizer() (defined in QCA::Synchronizer)QCA::Synchronizer
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SyncThread__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1SyncThread__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1SyncThread__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SyncThread__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SyncThread__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1SyncThread__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1SyncThread__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SyncThread__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -19a441da423a29cbfb2f1ba88b82f3b5 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1SyncThread__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1SyncThread__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SyncThread.html qca2-2.1.0/apidocs/html/classQCA_1_1SyncThread.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SyncThread.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SyncThread.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,525 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::SyncThread Class Reference - - - - - - -
-

QCA::SyncThread Class Reference
- -[QCA user API] -

-

Convenience class to run a thread and interact with it synchronously. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::SyncThread:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - -

Public Member Functions

QVariant call (QObject *obj, const QByteArray &method, const QVariantList &args=QVariantList(), bool *ok=0)
void start ()
void stop ()
 SyncThread (QObject *parent=0)
 ~SyncThread ()

Protected Member Functions

virtual void atEnd ()=0
virtual void atStart ()=0
virtual void run ()

Friends

-class Private

Related Functions

(Note that these are not member functions.)

-

QCA_EXPORT bool invokeMethodWithVariants (QObject *obj, const QByteArray &method, const QVariantList &args, QVariant *ret, Qt::ConnectionType type=Qt::AutoConnection)
QCA_EXPORT QByteArray methodReturnType (const QMetaObject *obj, const QByteArray &method, const QList< QByteArray > argTypes)
-

Detailed Description

-

Convenience class to run a thread and interact with it synchronously.

-

SyncThread makes it easy to perform the common practice of starting a thread, running some objects in that thread, and then interacting with those objects safely. Often, there is no need to directly use threading primitives (e.g. QMutex), resulting in very clean multi-threaded code.

-
Note:
The following is an excerpt from http://delta.affinix.com/2006/11/13/synchronized-threads-part-3/
-

---
- With SyncThread, you can start, stop, and call a method in another thread while the main thread sleeps. The only requirement is that the methods be declared as slots.

-

Below is a contrived example, where we have an object in another thread that increments a counter over a some interval, using the Qt event loop, and provides a method to inspect the value.

-

First, the Counter object:

-
class Counter : public QObject
-{
-        Q_OBJECT
-private:
-        int x;
-        QTimer timer;
-
-public:
-        Counter() : timer(this)
-        {
-                x = 0;
-                connect(&timer, SIGNAL(timeout()), SLOT(t_timeout()));
-        }
-
-public slots:
-        void start(int seconds)
-        {
-                timer.setInterval(seconds * 1000);
-                timer.start();
-        }
-
-        int value() const
-        {
-                return x;
-        }
-
-private slots:
-        void t_timeout()
-        {
-                ++x;
-        }
-};
-

Looks like a typical object, no surprises.

-

Now to wrap Counter with SyncThread. We went over how to do this in the first article, and it is very straightforward:

-
class CounterThread : public SyncThread
-{
-        Q_OBJECT
-public:
-        Counter *counter;
-
-        CounterThread(QObject *parent) : SyncThread(parent)
-        {
-                counter = 0;
-        }
-
-        ~CounterThread()
-        {
-                // SyncThread will stop the thread on destruct, but since our
-                //   atStop() function makes references to CounterThread's
-                //   members, we need to shutdown here, before CounterThread
-                //   destructs.
-                stop();
-        }
-
-protected:
-        virtual void atStart()
-        {
-                counter = new Counter;
-        }
-
-        virtual void atStop()
-        {
-                delete counter;
-        }
-};
-

We can then use it like this:

-
CounterThread *thread = new CounterThread;
-
-// after this call, the thread is started and the Counter is ready
-thread->start();
-
-// let's start the counter with a 1 second interval
-thread->call(thread->counter, "start", QVariantList() << 1);
-...
-
-// after some time passes, let's check on the value
-int x = thread->call(thread->counter, "value").toInt();
-
-// we're done with this thing
-delete thread;
-

Do you see a mutex anywhere? I didn't think so.
- ---

-

Even without the call() function, SyncThread is still very useful for preparing objects in another thread, which you can then QObject::connect() to and use signals and slots like normal.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::SyncThread::SyncThread (QObject parent = 0 ) 
-
-
- -

Standard constructor.

-
Parameters:
- - -
parent the parent object for this parent.
-
-
- -
-
- -
-
- - - - - - - - -
QCA::SyncThread::~SyncThread ( ) 
-
-
- -

Calls stop() and then destructs.

-
Note:
Subclasses should call stop() in their own destructor
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
void QCA::SyncThread::start ( ) 
-
-
- -

Starts the thread, begins the event loop the thread, and then calls atStart() in the thread.

-

This function will block until atStart() has returned.

- -
-
- -
-
- - - - - - - - -
void QCA::SyncThread::stop ( ) 
-
-
- -

Stops the event loop of the thread, calls atStop() in the thread, and instructs the thread to finish.

-

This function will block until the thread has finished.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
QVariant QCA::SyncThread::call (QObject obj,
const QByteArray method,
const QVariantList &  args = QVariantList(),
bool *  ok = 0 
)
-
-
- -

Calls a slot of an object in the thread.

-

This function will block until the slot has returned.

-

It is possible for the call to fail, for example if the method does not exist.

-

The arguments and return value of the call use QVariant. If the method has no return value (returns void), then the returned QVariant will be null.

-
Parameters:
- - - - - -
obj the object to call the method on
method the name of the method (without the arguments or brackets)
args the list of arguments to use in the method call
ok if not 0, true is stored here if the call succeeds, otherwise false is stored here.
-
-
- -
-
- -
-
- - - - - - - - -
virtual void QCA::SyncThread::atStart ( )  [protected, pure virtual]
-
-
- -

Reimplement this to perform your initialization.

- -
-
- -
-
- - - - - - - - -
virtual void QCA::SyncThread::atEnd ( )  [protected, pure virtual]
-
-
- -

Reimplement this to perform your deinitialization.

- -
-
- -
-
- - - - - - - - -
virtual void QCA::SyncThread::run ( )  [protected, virtual]
-
-
- -

Starts the event loop and calls atStart and atStop as necessary.

- -

Reimplemented from QThread.

- -
-
-

Friends And Related Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QCA_EXPORT QByteArray methodReturnType (const QMetaObject obj,
const QByteArray method,
const QList< QByteArray argTypes 
) [related]
-
-
- -

Convenience method to determine the return type of a method.

-

This function identifies the return type of a specified method. This function can be used as shown:

-
class TestClass : public QObject
-{
-    Q_OBJECT
-    // ...
-public slots:
-    QString qstringMethod()  { return QString(); };
-    bool boolMethod( const QString & )  { return true; };
-};
-
-QByteArray myTypeName;
-
-TestClass testClass;
-QList<QByteArray> argsList; // empty list, since no args
-
-myTypeName = QCA::methodReturnType( testClass.metaObject(), QByteArray( "qstringMethod" ), argsList );
-// myTypeName is "QString"
-
-myTypeName = QCA::methodReturnType( testClass.metaObject(), QByteArray( "boolMethod" ), argsList );
-// myTypeName is "", because there is no method called "boolMethod" that has no arguments
-
-argsList << "QString"; // now we have one argument
-myTypeName = QCA::methodReturnType( testClass.metaObject(), QByteArray( "boolMethod" ), argsList );
-// myTypeName is "bool"
-

The return type name of a method returning void is an empty string, not "void"

-
Note:
This function is not normally required for use with QCA. It is provided for use in your code, if required.
-
Parameters:
- - - - -
obj the QMetaObject for the object
method the name of the method (without the arguments or brackets)
argTypes the list of argument types of the method
-
-
-
Returns:
the name of the type that this method will return with the specified argument types.
-
See also:
QMetaType for more information on the Qt meta type system.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
QCA_EXPORT bool invokeMethodWithVariants (QObject obj,
const QByteArray method,
const QVariantList &  args,
QVariant ret,
Qt::ConnectionType  type = Qt::AutoConnection 
) [related]
-
-
- -

Convenience method to invoke a method by name, using a variant list of arguments.

-

This function can be used as shown:

-
class TestClass : public QObject
-{
-    Q_OBJECT
-    // ...
-public slots:
-    QString qstringMethod()  { return QString( "the result" ); };
-    bool boolMethod( const QString & )  { return true; };
-};
-
-TestClass *testClass = new TestClass;
-QVariantList args;
-
-QVariant stringRes;
-// calls testClass->qstringMethod() with no arguments ( since args is an empty list)
-bool ret = QCA::invokeMethodWithVariants( testClass, QByteArray( "qstringMethod" ), args, &stringRes );
-// ret is true (since call succeeded), stringRes.toString() is a string - "the result"
-
-QVariant boolResult;
-QString someString( "not important" );
-args << someString;
-// calls testClass->boolMethod( someString ), returning result in boolResult
-ret = QCA::invokeMethodWithVariants( testClass1, QByteArray( "boolMethod" ), args, &boolResult );
-// ret is true (since call succeeded), boolResult.toBool() is true.
-
Parameters:
- - - - - - -
obj the object to call the method on
method the name of the method (without the arguments or brackets)
args the list of arguments to use in the method call
ret the return value of the method (unchanged if the call fails)
type the type of connection to use
-
-
-
Returns:
true if the call succeeded, otherwise false
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1SyncThread-members.html qca2-2.1.0/apidocs/html/classQCA_1_1SyncThread-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1SyncThread-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1SyncThread-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::SyncThread Member List

This is the complete list of members for QCA::SyncThread, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
atEnd()=0QCA::SyncThread [protected, pure virtual]
atStart()=0QCA::SyncThread [protected, pure virtual]
call(QObject *obj, const QByteArray &method, const QVariantList &args=QVariantList(), bool *ok=0)QCA::SyncThread
currentThread()QThread
exec()QThread
exit(int returnCode=0)QThread
finished()QThread
HANDLEQThread::currentThreadId()QThread
invokeMethodWithVariants(QObject *obj, const QByteArray &method, const QVariantList &args, QVariant *ret, Qt::ConnectionType type=Qt::AutoConnection)QCA::SyncThread [related]
isFinished()QThread
isRunning()QThread
methodReturnType(const QMetaObject *obj, const QByteArray &method, const QList< QByteArray > argTypes)QCA::SyncThread [related]
msleep(unsigned long msecs)QThread
Private (defined in QCA::SyncThread)QCA::SyncThread [friend]
QThread(QObject *parent=0)QThread
quit()QThread
run()QCA::SyncThread [protected, virtual]
setStackSize(uint stackSize)QThread
setTerminationEnabled(bool enabled=true)QThread
sleep(unsigned long secs)QThread
stackSize()QThread
start()QCA::SyncThread
QThread::start(Priority priority=InheritPriority)QThread
started()QThread
stop()QCA::SyncThread
SyncThread(QObject *parent=0)QCA::SyncThread
terminate()QThread
terminated()QThread
usleep(unsigned long usecs)QThread
wait(unsigned long time=ULONG_MAX)QThread
~SyncThread()QCA::SyncThread
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TextFilter__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1TextFilter__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1TextFilter__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TextFilter__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TextFilter__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1TextFilter__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1TextFilter__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TextFilter__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -bedf76c98a2120e93e742ebd2d2d55c7 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1TextFilter__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1TextFilter__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TextFilter.html qca2-2.1.0/apidocs/html/classQCA_1_1TextFilter.html --- qca2-2.0.3/apidocs/html/classQCA_1_1TextFilter.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TextFilter.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,330 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::TextFilter Class Reference - - - - - - -
-

QCA::TextFilter Class Reference
- -[QCA user API] -

-

Superclass for text based filtering algorithms. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::TextFilter:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - -

Public Member Functions

QString arrayToString (const MemoryRegion &a)
MemoryRegion decode (const MemoryRegion &a)
QString decodeString (const QString &s)
Direction direction () const
MemoryRegion encode (const MemoryRegion &a)
QString encodeString (const QString &s)
void setup (Direction dir)
MemoryRegion stringToArray (const QString &s)
 TextFilter (Direction dir)

Protected Attributes

Direction _dir
-

Detailed Description

-

Superclass for text based filtering algorithms.

-

This differs from Filter in that it has the concept of an algorithm that works in two directions, and supports operations on QString arguments.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::TextFilter::TextFilter (Direction  dir ) 
-
-
- -

Standard constructor.

-
Parameters:
- - -
dir the Direction that this TextFilter should use.
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
void QCA::TextFilter::setup (Direction  dir ) 
-
-
- -

Reset the TextFilter.

-
Parameters:
- - -
dir the Direction that this TextFilter should use.
-
-
- -
-
- -
-
- - - - - - - - -
Direction QCA::TextFilter::direction ( )  const
-
-
- -

The direction the TextFilter is set up to use.

- -
-
- -
-
- - - - - - - - - -
MemoryRegion QCA::TextFilter::encode (const MemoryRegion a ) 
-
-
- -

Process an array in the "forward" direction, returning an array.

-

This method runs in the forward direction, so for something like a Base64 encoding, it takes the "native" array, and returns that array encoded in base64.

-
Parameters:
- - -
a the array to encode
-
-
- -
-
- -
-
- - - - - - - - - -
MemoryRegion QCA::TextFilter::decode (const MemoryRegion a ) 
-
-
- -

Process an array in the "reverse" direction, returning an array.

-

This method runs in the reverse direction, so for something like a Base64 encoding, it takes a Base64 encoded array, and returns the "native" representation.

-
Parameters:
- - -
a the array to decode
-
-
- -
-
- -
-
- - - - - - - - - -
QString QCA::TextFilter::arrayToString (const MemoryRegion a ) 
-
-
- -

Process an array in the "forward" direction, returning a QString.

-

This is equivalent to encode(), except that it returns a QString, rather than a byte array.

-
Parameters:
- - -
a the array to encode
-
-
-
Examples:
base64test.cpp, hextest.cpp, publickeyexample.cpp, and saslserver.cpp.
-
-
-
- -
-
- - - - - - - - - -
MemoryRegion QCA::TextFilter::stringToArray (const QString s ) 
-
-
- -

Process an string in the "reverse" direction, returning a byte array.

-

This is equivalent to decode(), except that it takes a QString, rather than a byte array.

-
Parameters:
- - -
s the array to decode
-
-
- -
-
- -
-
- - - - - - - - - -
QString QCA::TextFilter::encodeString (const QString s ) 
-
-
- -

Process a string in the "forward" direction, returning a string.

-

This is equivalent to encode(), except that it takes and returns a QString, rather than byte arrays.

-
Parameters:
- - -
s the string to encode
-
-
- -
-
- -
-
- - - - - - - - - -
QString QCA::TextFilter::decodeString (const QString s ) 
-
-
- -

Process a string in the "reverse" direction, returning a string.

-

This is equivalent to decode(), except that it takes and returns a QString, rather than byte arrays.

-
Parameters:
- - -
s the string to decode
-
-
-
Examples:
base64test.cpp, and hextest.cpp.
-
-
-
-

Member Data Documentation

- -
-
- - - - -
Direction QCA::TextFilter::_dir [protected]
-
-
- -

Internal state variable for the Direction that the filter operates in.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TextFilter-members.html qca2-2.1.0/apidocs/html/classQCA_1_1TextFilter-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1TextFilter-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TextFilter-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::TextFilter Member List

This is the complete list of members for QCA::TextFilter, including all inherited members. - - - - - - - - - - - - - - - - -
_dirQCA::TextFilter [protected]
arrayToString(const MemoryRegion &a)QCA::TextFilter
clear()=0QCA::Filter [pure virtual]
decode(const MemoryRegion &a)QCA::TextFilter
decodeString(const QString &s)QCA::TextFilter
direction() const QCA::TextFilter
encode(const MemoryRegion &a)QCA::TextFilter
encodeString(const QString &s)QCA::TextFilter
final()=0QCA::Filter [pure virtual]
ok() const =0QCA::Filter [pure virtual]
process(const MemoryRegion &a)QCA::Filter
setup(Direction dir)QCA::TextFilter
stringToArray(const QString &s)QCA::TextFilter
TextFilter(Direction dir)QCA::TextFilter
update(const MemoryRegion &a)=0QCA::Filter [pure virtual]
~Filter() (defined in QCA::Filter)QCA::Filter [virtual]
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLS__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1TLS__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1TLS__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLS__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLS__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1TLS__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1TLS__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLS__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -8fa6822fff83b7fce5ba958c7f8a882d \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1TLS__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1TLS__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -6be84d6f7bad15110d7bd06ef5a65792 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo.html qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo.html --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,164 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::TLSContext::SessionInfo Class Reference - - - - - - -
-

QCA::TLSContext::SessionInfo Class Reference
- -[QCA provider API] -

-

Information about an active TLS connection. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::TLSContext::SessionInfo:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - -

Public Attributes

int cipherBits
int cipherMaxBits
QString cipherSuite
TLSSessionContextid
bool isCompressed
TLS::Version version
-

Detailed Description

-

Information about an active TLS connection.

-

For efficiency and simplicity, the members are directly accessed.

-

Member Data Documentation

- -
- -
- -

True if the TLS connection is compressed, otherwise false.

- -
-
- -
- -
- -

The TLS protocol version being used for this connection.

- -
-
- -
- -
- -

The cipher suite being used for this connection.

-
See also:
TLSContext::supportedCipherSuites()
- -
-
- -
- -
- -

The bit size of the cipher used for this connection.

- -
-
- -
- -
- -

The maximum bit size possible of the cipher used for this connection.

- -
-
- -
- -
- -

Pointer to the id of this TLS session, for use with resuming.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo-members.html qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext_1_1SessionInfo-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::TLSContext::SessionInfo Member List

This is the complete list of members for QCA::TLSContext::SessionInfo, including all inherited members. - - - - - - -
cipherBitsQCA::TLSContext::SessionInfo
cipherMaxBitsQCA::TLSContext::SessionInfo
cipherSuiteQCA::TLSContext::SessionInfo
idQCA::TLSContext::SessionInfo
isCompressedQCA::TLSContext::SessionInfo
versionQCA::TLSContext::SessionInfo
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -526c8cadfca4fbac3be72e1de76b84b5 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext.html qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,959 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::TLSContext Class Reference - - - - - - -
-

QCA::TLSContext Class Reference
- -[QCA provider API] -

-

TLS provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::TLSContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Classes

class  SessionInfo
 Information about an active TLS connection. More...

Public Types

enum  Result { Success, -Error, -Continue - }

Signals

void dtlsTimeout ()
void resultsReady ()

Public Member Functions

virtual bool canCompress () const =0
virtual bool canSetHostName () const =0
virtual bool certificateRequested () const =0
virtual bool clientHelloReceived () const =0
virtual int encoded () const =0
virtual bool eof () const =0
virtual QString hostName () const =0
virtual QList
-< CertificateInfoOrdered
issuerList () const =0
virtual int maxSSF () const =0
virtual CertificateChain peerCertificateChain () const =0
virtual Validity peerCertificateValidity () const =0
virtual void reset ()=0
virtual Result result () const =0
virtual bool serverHelloReceived () const =0
virtual SessionInfo sessionInfo () const =0
virtual void setCertificate (const CertificateChain &cert, const PrivateKey &key)=0
virtual void setConstraints (const QStringList &cipherSuiteList)=0
virtual void setConstraints (int minSSF, int maxSSF)=0
virtual void setIssuerList (const QList< CertificateInfoOrdered > &issuerList)=0
virtual void setMTU (int size)
virtual void setSessionId (const TLSSessionContext &id)=0
virtual void setTrustedCertificates (const CertificateCollection &trusted)=0
virtual void setup (bool serverMode, const QString &hostName, bool compress)=0
virtual void shutdown ()=0
virtual void start ()=0
virtual QStringList supportedCipherSuites (const TLS::Version &version) const =0
 TLSContext (Provider *p, const QString &type)
virtual QByteArray to_app ()=0
virtual QByteArray to_net ()=0
virtual QByteArray unprocessed ()=0
virtual void update (const QByteArray &from_net, const QByteArray &from_app)=0
virtual bool waitForResultsReady (int msecs)=0
-

Detailed Description

-

TLS provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want TLS instead.
-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::TLSContext::Result
-
-
- -

Result of a TLS operation.

-
Enumerator:
- - - -
Success  -

Operation completed.

-
Error  -

Operation failed.

-
Continue  -

More data needed to complete operation.

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::TLSContext::TLSContext (Provider p,
const QString type 
) [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - - -
p the Provider associated with this context
type the name of the type of feature that supported by this context
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual void QCA::TLSContext::reset ( )  [pure virtual]
-
-
- -

Reset the object to its initial state.

- -
-
- -
-
- - - - - - - - - -
virtual QStringList QCA::TLSContext::supportedCipherSuites (const TLS::Version version )  const [pure virtual]
-
-
- -

Returns a list of supported cipher suites for the specified SSL/TLS version.

-

The cipher suites are specified as strings, for example: "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA" (without quotes).

-
Parameters:
- - -
version the version of TLS to search for
-
-
- -
-
- -
-
- - - - - - - - -
virtual bool QCA::TLSContext::canCompress ( )  const [pure virtual]
-
-
- -

Returns true if the provider supports compression.

- -
-
- -
-
- - - - - - - - -
virtual bool QCA::TLSContext::canSetHostName ( )  const [pure virtual]
-
-
- -

Returns true if the provider supports server name indication.

- -
-
- -
-
- - - - - - - - -
virtual int QCA::TLSContext::maxSSF ( )  const [pure virtual]
-
-
- -

Returns the maximum SSF supported by this provider.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual void QCA::TLSContext::setup (bool  serverMode,
const QString hostName,
bool  compress 
) [pure virtual]
-
-
- -

Configure a new session.

-

This function will be called before any other configuration functions.

-
Parameters:
- - - - -
serverMode whether to operate as a server (true) or client (false)
hostName the hostname to use
compress whether to compress (true) or not (false)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::TLSContext::setConstraints (int  minSSF,
int  maxSSF 
) [pure virtual]
-
-
- -

Set the constraints of the session using SSF values.

-

This function will be called before start().

-
Parameters:
- - - -
minSSF the minimum strength factor that is acceptable
maxSSF the maximum strength factor that is acceptable
-
-
- -
-
- -
-
- - - - - - - - - -
virtual void QCA::TLSContext::setConstraints (const QStringList cipherSuiteList )  [pure virtual]
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Set the constraints of the session using a cipher suite list.

-

This function will be called before start().

-
Parameters:
- - -
cipherSuiteList the list of cipher suites that may be used for this session.
-
-
-
See also:
supportedCipherSuites
- -
-
- -
-
- - - - - - - - - -
virtual void QCA::TLSContext::setTrustedCertificates (const CertificateCollection trusted )  [pure virtual]
-
-
- -

Set the list of trusted certificates.

-

This function may be called at any time.

-
Parameters:
- - -
trusted the trusted certificates and CRLs to be used.
-
-
- -
-
- -
-
- - - - - - - - - -
virtual void QCA::TLSContext::setIssuerList (const QList< CertificateInfoOrdered > &  issuerList )  [pure virtual]
-
-
- -

Set the list of acceptable issuers.

-

This function may be called at any time.

-

This function is for server mode only.

-
Parameters:
- - -
issuerList the list of issuers that may be used
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::TLSContext::setCertificate (const CertificateChain cert,
const PrivateKey key 
) [pure virtual]
-
-
- -

Set the local certificate.

-

This function may be called at any time.

-
Parameters:
- - - -
cert the certificate and associated trust chain
key the private key for the local certificate
-
-
- -
-
- -
-
- - - - - - - - - -
virtual void QCA::TLSContext::setSessionId (const TLSSessionContext id )  [pure virtual]
-
-
- -

Set the TLS session id, for session resuming.

-

This function will be called before start().

-
Parameters:
- - -
id the session identification
-
-
- -
-
- -
-
- - - - - - - - -
virtual void QCA::TLSContext::shutdown ( )  [pure virtual]
-
-
- -

Sets the session to the shutdown state.

-

The actual shutdown operation will happen at a future call to update().

-

This function is for normal TLS only (not DTLS).

- -
-
- -
-
- - - - - - - - - -
virtual void QCA::TLSContext::setMTU (int  size )  [virtual]
-
-
- -

Set the maximum transmission unit size.

-

This function is for DTLS only.

-
Parameters:
- - -
size the maximum number of bytes in a datagram
-
-
- -
-
- -
-
- - - - - - - - -
virtual void QCA::TLSContext::start ( )  [pure virtual]
-
-
- -

Begins the session, starting with the handshake.

-

This function returns immediately, and completion is signaled with the resultsReady() signal.

-

On completion, the result() function will return Success if the TLS session is able to begin, or Error if there is a failure to initialize the TLS subsystem. If successful, the session is now in the handshake state, and update() will be called repeatedly until the session ends.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
virtual void QCA::TLSContext::update (const QByteArray from_net,
const QByteArray from_app 
) [pure virtual]
-
-
- -

Performs one iteration of the TLS session processing.

-

This function returns immediately, and completion is signaled with the resultsReady() signal.

-

If the session is in a handshake state, result() and to_net() will be valid. If result() is Success, then the session is now in the connected state.

-

If the session is in a shutdown state, result() and to_net() will be valid. If result() is Success, then the session has ended.

-

If the session is in a connected state, result(), to_net(), encoded(), to_app(), and eof() are valid. The result() function will return Success or Error. Note that eof() does not apply to DTLS.

-

For DTLS, this function operates with single packets. Many update() operations must be performed repeatedly to exchange multiple packets.

-
Parameters:
- - - -
from_net the data from the "other side" of the connection
from_app the data from the application of the protocol
-
-
- -
-
- -
-
- - - - - - - - - -
virtual bool QCA::TLSContext::waitForResultsReady (int  msecs )  [pure virtual]
-
-
- -

Waits for a start() or update() operation to complete.

-

In this case, the resultsReady() signal is not emitted. Returns true if the operation completed or false if this function times out.

-

This function is blocking.

-
Parameters:
- - -
msecs number of milliseconds to wait (-1 to wait forever)
-
-
- -
-
- -
-
- - - - - - - - -
virtual Result QCA::TLSContext::result ( )  const [pure virtual]
-
-
- -

Returns the result code of an operation.

- -
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::TLSContext::to_net ( )  [pure virtual]
-
-
- -

Returns data that should be sent across the network.

- -
-
- -
-
- - - - - - - - -
virtual int QCA::TLSContext::encoded ( )  const [pure virtual]
-
-
- -

Returns the number of bytes of plaintext data that is encoded inside of to_net().

- -
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::TLSContext::to_app ( )  [pure virtual]
-
-
- -

Returns data that is decoded from the network and should be processed by the application.

- -
-
- -
-
- - - - - - - - -
virtual bool QCA::TLSContext::eof ( )  const [pure virtual]
-
-
- -

Returns true if the peer has closed the stream.

- -
-
- -
-
- - - - - - - - -
virtual bool QCA::TLSContext::clientHelloReceived ( )  const [pure virtual]
-
-
- -

Returns true if the TLS client hello has been received.

-

This is only valid if a handshake is in progress or completed.

- -
-
- -
-
- - - - - - - - -
virtual bool QCA::TLSContext::serverHelloReceived ( )  const [pure virtual]
-
-
- -

Returns true if the TLS server hello has been received.

-

This is only valid if a handshake is in progress or completed.

- -
-
- -
-
- - - - - - - - -
virtual QString QCA::TLSContext::hostName ( )  const [pure virtual]
-
-
- -

Returns the host name sent by the client using server name indication (server mode only).

-

This is only valid if a handshake is in progress or completed.

- -
-
- -
-
- - - - - - - - -
virtual bool QCA::TLSContext::certificateRequested ( )  const [pure virtual]
-
-
- -

Returns true if the peer is requesting a certificate.

-

This is only valid if a handshake is in progress or completed.

- -
-
- -
-
- - - - - - - - -
virtual QList<CertificateInfoOrdered> QCA::TLSContext::issuerList ( )  const [pure virtual]
-
-
- -

Returns the issuer list sent by the server (client mode only).

-

This is only valid if a handshake is in progress or completed.

- -
-
- -
-
- - - - - - - - -
virtual Validity QCA::TLSContext::peerCertificateValidity ( )  const [pure virtual]
-
-
- -

Returns the QCA::Validity of the peer certificate.

-

This is only valid if a handshake is completed.

- -
-
- -
-
- - - - - - - - -
virtual CertificateChain QCA::TLSContext::peerCertificateChain ( )  const [pure virtual]
-
-
- -

Returns the peer certificate chain.

-

This is only valid if a handshake is completed.

- -
-
- -
-
- - - - - - - - -
virtual SessionInfo QCA::TLSContext::sessionInfo ( )  const [pure virtual]
-
-
- -

Returns information about the active TLS session.

-

This is only valid if a handshake is completed.

- -
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::TLSContext::unprocessed ( )  [pure virtual]
-
-
- -

Returns any unprocessed network input data.

-

This is only valid after a successful shutdown.

- -
-
- -
-
- - - - - - - - -
void QCA::TLSContext::resultsReady ( )  [signal]
-
-
- -

Emit this when a start() or update() operation has completed.

- -
-
- -
-
- - - - - - - - -
void QCA::TLSContext::dtlsTimeout ( )  [signal]
-
-
- -

Emit this to force the application to call update(), even with empty arguments.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSContext-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::TLSContext Member List

This is the complete list of members for QCA::TLSContext, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
canCompress() const =0QCA::TLSContext [pure virtual]
canSetHostName() const =0QCA::TLSContext [pure virtual]
certificateRequested() const =0QCA::TLSContext [pure virtual]
clientHelloReceived() const =0QCA::TLSContext [pure virtual]
Continue enum valueQCA::TLSContext
dtlsTimeout()QCA::TLSContext [signal]
encoded() const =0QCA::TLSContext [pure virtual]
eof() const =0QCA::TLSContext [pure virtual]
Error enum valueQCA::TLSContext
hostName() const =0QCA::TLSContext [pure virtual]
issuerList() const =0QCA::TLSContext [pure virtual]
maxSSF() const =0QCA::TLSContext [pure virtual]
peerCertificateChain() const =0QCA::TLSContext [pure virtual]
peerCertificateValidity() const =0QCA::TLSContext [pure virtual]
reset()=0QCA::TLSContext [pure virtual]
result() const =0QCA::TLSContext [pure virtual]
Result enum nameQCA::TLSContext
resultsReady()QCA::TLSContext [signal]
serverHelloReceived() const =0QCA::TLSContext [pure virtual]
sessionInfo() const =0QCA::TLSContext [pure virtual]
setCertificate(const CertificateChain &cert, const PrivateKey &key)=0QCA::TLSContext [pure virtual]
setConstraints(int minSSF, int maxSSF)=0QCA::TLSContext [pure virtual]
setConstraints(const QStringList &cipherSuiteList)=0QCA::TLSContext [pure virtual]
setIssuerList(const QList< CertificateInfoOrdered > &issuerList)=0QCA::TLSContext [pure virtual]
setMTU(int size)QCA::TLSContext [virtual]
setSessionId(const TLSSessionContext &id)=0QCA::TLSContext [pure virtual]
setTrustedCertificates(const CertificateCollection &trusted)=0QCA::TLSContext [pure virtual]
setup(bool serverMode, const QString &hostName, bool compress)=0QCA::TLSContext [pure virtual]
shutdown()=0QCA::TLSContext [pure virtual]
start()=0QCA::TLSContext [pure virtual]
Success enum valueQCA::TLSContext
supportedCipherSuites(const TLS::Version &version) const =0QCA::TLSContext [pure virtual]
TLSContext(Provider *p, const QString &type)QCA::TLSContext [inline]
to_app()=0QCA::TLSContext [pure virtual]
to_net()=0QCA::TLSContext [pure virtual]
unprocessed()=0QCA::TLSContext [pure virtual]
update(const QByteArray &from_net, const QByteArray &from_app)=0QCA::TLSContext [pure virtual]
waitForResultsReady(int msecs)=0QCA::TLSContext [pure virtual]
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLS.html qca2-2.1.0/apidocs/html/classQCA_1_1TLS.html --- qca2-2.0.3/apidocs/html/classQCA_1_1TLS.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLS.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,1639 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::TLS Class Reference - - - - - - -
-

QCA::TLS Class Reference
- -[QCA user API] -

-

Transport Layer Security / Secure Socket Layer. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::TLS:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Public Types

enum  Error {
-  ErrorSignerExpired, -ErrorSignerInvalid, -ErrorCertKeyMismatch, -ErrorInit, -
-  ErrorHandshake, -ErrorCrypt -
- }
enum  IdentityResult { Valid, -HostMismatch, -InvalidCertificate, -NoCertificate - }
enum  Mode { Stream, -Datagram - }
enum  Version { TLS_v1, -SSL_v3, -SSL_v2, -DTLS_v1 - }

Signals

void certificateRequested ()
void handshaken ()
void hostNameReceived ()
void peerCertificateAvailable ()

Public Member Functions

virtual int bytesAvailable () const
virtual int bytesOutgoingAvailable () const
bool canCompress () const
bool canSetHostName () const
int cipherBits () const
int cipherMaxBits () const
QString cipherSuite () const
virtual void close ()
bool compressionEnabled () const
void continueAfterStep ()
virtual int convertBytesWritten (qint64 encryptedBytes)
Error errorCode () const
QString hostName () const
virtual bool isClosable () const
bool isCompressed () const
bool isHandshaken () const
QList< CertificateInfoOrderedissuerList () const
CertificateChain localCertificateChain () const
PrivateKey localPrivateKey () const
int packetMTU () const
int packetsAvailable () const
int packetsOutgoingAvailable () const
CertificateChain peerCertificateChain () const
Validity peerCertificateValidity () const
IdentityResult peerIdentityResult () const
virtual QByteArray read ()
virtual QByteArray readOutgoing (int *plainBytes=0)
virtual QByteArray readUnprocessed ()
void reset ()
TLSSession session () const
void setCertificate (const KeyBundle &kb)
void setCertificate (const CertificateChain &cert, const PrivateKey &key)
void setCompressionEnabled (bool b)
void setConstraints (const QStringList &cipherSuiteList)
void setConstraints (int minSSF, int maxSSF)
void setConstraints (SecurityLevel s)
void setIssuerList (const QList< CertificateInfoOrdered > &issuers)
void setPacketMTU (int size) const
void setSession (const TLSSession &session)
void setTrustedCertificates (const CertificateCollection &trusted)
void startClient (const QString &host=QString())
void startServer ()
QStringList supportedCipherSuites (const Version &version=TLS_v1) const
 TLS (Mode mode, QObject *parent=0, const QString &provider=QString())
 TLS (QObject *parent=0, const QString &provider=QString())
CertificateCollection trustedCertificates () const
Version version () const
virtual void write (const QByteArray &a)
virtual void writeIncoming (const QByteArray &a)
 ~TLS ()

Protected Member Functions

void connectNotify (const char *signal)
void disconnectNotify (const char *signal)

Friends

-class Private
-

Detailed Description

-

Transport Layer Security / Secure Socket Layer.

-

Transport Layer Security (TLS) is the current state-of-the-art in secure transport mechanisms over the internet. It can be used in a way where only one side of the link needs to authenticate to the other. This makes it very useful for servers to provide their identity to clients. Note that is is possible to use TLS to authenticate both client and server.

-

TLS is a IETF standard (RFC2712 for TLS version 1.0, and RFC4346 for TLS version 1.1) based on earlier Netscape work on Secure Socket Layer (SSL version 2 and SSL version 3). New applications should use at least TLS 1.0, and SSL version 2 should be avoided due to known security problems.

-
Examples:
-

sslservtest.cpp, and ssltest.cpp.

-
-

Member Enumeration Documentation

- -
-
- - - - -
enum QCA::TLS::Mode
-
-
- -

Operating mode.

-
Enumerator:
- - -
Stream  -

stream mode

-
Datagram  -

datagram mode

-
-
-
- -
-
- -
-
- - - - -
enum QCA::TLS::Version
-
-
- -

Version of TLS or SSL.

-
Enumerator:
- - - - -
TLS_v1  -

Transport Layer Security, version 1.

-
SSL_v3  -

Secure Socket Layer, version 3.

-
SSL_v2  -

Secure Socket Layer, version 2.

-
DTLS_v1  -

Datagram Transport Layer Security, version 1.

-
-
-
- -
-
- -
-
- - - - -
enum QCA::TLS::Error
-
-
- -

Type of error.

-
Enumerator:
- - - - - - -
ErrorSignerExpired  -

local certificate is expired

-
ErrorSignerInvalid  -

local certificate is invalid in some way

-
ErrorCertKeyMismatch  -

certificate and private key don't match

-
ErrorInit  -

problem starting up TLS

-
ErrorHandshake  -

problem during the negotiation

-
ErrorCrypt  -

problem at anytime after

-
-
-
- -
-
- -
-
- - - - -
enum QCA::TLS::IdentityResult
-
-
- -

Type of identity.

-
Enumerator:
- - - - -
Valid  -

identity is verified

-
HostMismatch  -

valid cert provided, but wrong owner

-
InvalidCertificate  -

invalid cert

-
NoCertificate  -

identity unknown

-
-
-
- -
-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
QCA::TLS::TLS (QObject parent = 0,
const QString provider = QString() 
) [explicit]
-
-
- -

Constructor for Transport Layer Security connection.

-

This produces a Stream (normal TLS) rather than Datagram (DTLS) object. If you want to do DTLS, see below.

-
Parameters:
- - - -
parent the parent object for this object
provider the name of the provider, if a specific provider is required
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QCA::TLS::TLS (Mode  mode,
QObject parent = 0,
const QString provider = QString() 
) [explicit]
-
-
- -

Constructor for Transport Layer Security connection.

-

This constructor can be used for both normal TLS (set mode to TLS::Stream) or DTLS (set mode to TLS::Datagram).

-
Parameters:
- - - - -
mode the connection Mode
parent the parent object for this object
provider the name of the provider, if a specific provider is required
-
-
- -
-
- -
-
- - - - - - - - -
QCA::TLS::~TLS ( ) 
-
-
- -

Destructor.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
void QCA::TLS::reset ( ) 
-
-
- -

Reset the connection.

- -
-
- -
-
- - - - - - - - - -
QStringList QCA::TLS::supportedCipherSuites (const Version version = TLS_v1 )  const
-
-
- -

Get the list of cipher suites that are available for use.

-

A cipher suite is a combination of key exchange, encryption and hashing algorithms that are agreed during the initial handshake between client and server.

-
Parameters:
- - -
version the protocol Version that the cipher suites are required for
-
-
-
Returns:
list of the the names of the cipher suites supported.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::TLS::setCertificate (const CertificateChain cert,
const PrivateKey key 
)
-
-
- -

The local certificate to use.

-

This is the certificate that will be provided to the peer. This is almost always required on the server side (because the server has to provide a certificate to the client), and may be used on the client side.

-
Parameters:
- - - -
cert a chain of certificates that link the host certificate to a trusted root certificate.
key the private key for the certificate chain
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::TLS::setCertificate (const KeyBundle kb ) 
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Allows setting a certificate from a KeyBundle.

-
Parameters:
- - -
kb key bundle containing the local certificate and associated private key.
-
-
- -
-
- -
-
- - - - - - - - -
CertificateCollection QCA::TLS::trustedCertificates ( )  const
-
-
- -

Return the trusted certificates set for this object.

- -
-
- -
-
- - - - - - - - - -
void QCA::TLS::setTrustedCertificates (const CertificateCollection trusted ) 
-
-
- -

Set up the set of trusted certificates that will be used to verify that the certificate provided is valid.

-

Typically, this will be the collection of root certificates from the system, which you can get using QCA::systemStore(), however you may choose to pass whatever certificates match your assurance needs.

-
Parameters:
- - -
trusted a bundle of trusted certificates.
-
-
-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - - -
void QCA::TLS::setConstraints (SecurityLevel  s ) 
-
-
- -

The security level required for this link.

-
Parameters:
- - -
s the level required for this link.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void QCA::TLS::setConstraints (int  minSSF,
int  maxSSF 
)
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
Parameters:
- - - -
minSSF the minimum Security Strength Factor required for this link.
maxSSF the maximum Security Strength Factor required for this link.
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::TLS::setConstraints (const QStringList cipherSuiteList ) 
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
Parameters:
- - -
cipherSuiteList a list of the names of cipher suites that can be used for this link.
-
-
-
Note:
the names are the same as the names in the applicable IETF RFCs (or Internet Drafts if there is no applicable RFC).
- -
-
- -
-
- - - - - - - - -
QList<CertificateInfoOrdered> QCA::TLS::issuerList ( )  const
-
-
- -

Retrieve the list of allowed issuers by the server, if the server has provided them.

-

Only DN types will be present.

-
Certificate someCert = ...
-PrivateKey someKey = ...
-
-// see if the server will take our cert
-CertificateInfoOrdered issuerInfo = someCert.issuerInfoOrdered().dnOnly();
-foreach(const CertificateInfoOrdered &info, tls->issuerList())
-{
-        if(info == issuerInfo)
-        {
-                // server will accept someCert, let's present it
-                tls->setCertificate(someCert, someKey);
-                break;
-        }
-}
-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - - -
void QCA::TLS::setIssuerList (const QList< CertificateInfoOrdered > &  issuers ) 
-
-
- -

Sets the issuer list to present to the client.

-

For use with servers only. Only DN types are allowed.

-
Parameters:
- - -
issuers the list of valid issuers to be used.
-
-
- -
-
- -
-
- - - - - - - - - -
void QCA::TLS::setSession (const TLSSession session ) 
-
-
- -

Resume a TLS session using the given session object.

-
Parameters:
- - -
session the session state to use for resumption.
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::TLS::canCompress ( )  const
-
-
- -

Test if the link can use compression.

-
Returns:
true if the link can use compression
- -
-
- -
-
- - - - - - - - -
bool QCA::TLS::canSetHostName ( )  const
-
-
- -

Test if the link can specify a hostname (Server Name Indication).

-
Returns:
true if the link can specify a hostname
- -
-
- -
-
- - - - - - - - -
bool QCA::TLS::compressionEnabled ( )  const
-
-
- -

Returns true if compression is enabled.

-

This only indicates whether or not the object is configured to use compression, not whether or not the link is actually compressed. Use isCompressed() for that.

- -
-
- -
-
- - - - - - - - - -
void QCA::TLS::setCompressionEnabled (bool  b ) 
-
-
- -

Set the link to use compression.

-
Parameters:
- - -
b true if the link should use compression, or false to disable compression
-
-
- -
-
- -
-
- - - - - - - - -
QString QCA::TLS::hostName ( )  const
-
-
- -

Returns the host name specified or an empty string if no host name is specified.

- -
-
- -
-
- - - - - - - - - -
void QCA::TLS::startClient (const QString host = QString() ) 
-
-
- -

Start the TLS/SSL connection as a client.

-

Typically, you'll want to perform RFC 2818 validation on the server's certificate, based on the hostname you're intending to connect to. Pass a value for host in order to have the validation for you. If you want to bypass this behavior and do the validation yourself, pass an empty string for host.

-

If the host is an internationalized domain name, then it must be provided in unicode format, not in IDNA ACE/punycode format.

-
Parameters:
- - -
host the hostname that you want to connect to
-
-
-
Note:
The hostname will be used for Server Name Indication extension (see RFC 3546 Section 3.1) if supported by the backend provider.
-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
void QCA::TLS::startServer ( ) 
-
-
- -

Start the TLS/SSL connection as a server.

- -
-
- -
-
- - - - - - - - -
void QCA::TLS::continueAfterStep ( ) 
-
-
- -

Resumes TLS processing.

-

Call this function after hostNameReceived(), certificateRequested() peerCertificateAvailable() or handshaken() is emitted. By requiring this function to be called in order to proceed, applications are given a chance to perform user interaction between steps in the TLS process.

-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
bool QCA::TLS::isHandshaken ( )  const
-
-
- -

test if the handshake is complete

-
Returns:
true if the handshake is complete
-
See also:
handshaken
- -
-
- -
-
- - - - - - - - -
bool QCA::TLS::isCompressed ( )  const
-
-
- -

test if the link is compressed

-
Returns:
true if the link is compressed
- -
-
- -
-
- - - - - - - - -
Version QCA::TLS::version ( )  const
-
-
- -

The protocol version that is in use for this connection.

- -
-
- -
-
- - - - - - - - -
QString QCA::TLS::cipherSuite ( )  const
-
-
- -

The cipher suite that has been negotiated for this connection.

-

The name returned here is the name used in the applicable RFC (or Internet Draft, where there is no RFC).

-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
int QCA::TLS::cipherBits ( )  const
-
-
- -

The number of effective bits of security being used for this connection.

-

This can differ from the actual number of bits in the cipher for certain older "export ciphers" that are deliberately crippled. If you want that information, use cipherMaxBits().

-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
int QCA::TLS::cipherMaxBits ( )  const
-
-
- -

The number of bits of security that the cipher could use.

-

This is normally the same as cipherBits(), but can be greater for older "export ciphers".

-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
TLSSession QCA::TLS::session ( )  const
-
-
- -

The session object of the TLS connection, which can be used for resuming.

- -
-
- -
-
- - - - - - - - -
Error QCA::TLS::errorCode ( )  const
-
-
- -

This method returns the type of error that has occurred.

-

You should only need to check this if the error() signal is emitted.

-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
IdentityResult QCA::TLS::peerIdentityResult ( )  const
-
-
- -

After the SSL/TLS handshake is complete, this method allows you to determine if the other end of the connection (if the application is a client, this is the server; if the application is a server, this is the client) has a valid identity.

-

Note that the security of TLS/SSL depends on checking this. It is not enough to check that the certificate is valid - you must check that the certificate is valid for the entity that you are trying to communicate with.

-
Note:
If this returns QCA::TLS::InvalidCertificate, you may wish to use peerCertificateValidity() to determine whether to proceed or not.
-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
Validity QCA::TLS::peerCertificateValidity ( )  const
-
-
- -

After the SSL/TLS handshake is valid, this method allows you to check if the received certificate from the other end is valid.

-

As noted in peerIdentityResult(), you also need to check that the certificate matches the entity you are trying to communicate with.

-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
CertificateChain QCA::TLS::localCertificateChain ( )  const
-
-
- -

The CertificateChain for the local host certificate.

- -
-
- -
-
- - - - - - - - -
PrivateKey QCA::TLS::localPrivateKey ( )  const
-
-
- -

The PrivateKey for the local host certificate.

- -
-
- -
-
- - - - - - - - -
CertificateChain QCA::TLS::peerCertificateChain ( )  const
-
-
- -

The CertificateChain from the peer (other end of the connection to the trusted root certificate).

-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
virtual bool QCA::TLS::isClosable ( )  const [virtual]
-
-
- -

Returns true if the layer has a meaningful "close".

- -

Reimplemented from QCA::SecureLayer.

- -
-
- -
-
- - - - - - - - -
virtual int QCA::TLS::bytesAvailable ( )  const [virtual]
-
-
- -

Returns the number of bytes available to be read() on the application side.

- -

Implements QCA::SecureLayer.

- -
-
- -
-
- - - - - - - - -
virtual int QCA::TLS::bytesOutgoingAvailable ( )  const [virtual]
-
-
- -

Returns the number of bytes available to be readOutgoing() on the network side.

- -

Implements QCA::SecureLayer.

- -
-
- -
-
- - - - - - - - -
virtual void QCA::TLS::close ( )  [virtual]
-
-
- -

Close the link.

-

Note that this may not be meaningful / possible for all implementations.

-
See also:
isClosable() for a test that verifies if the link can be closed.
- -

Reimplemented from QCA::SecureLayer.

- -
-
- -
-
- - - - - - - - - -
virtual void QCA::TLS::write (const QByteArray a )  [virtual]
-
-
- -

This method writes unencrypted (plain) data to the SecureLayer implementation.

-

You normally call this function on the application side.

-
Parameters:
- - -
a the source of the application-side data
-
-
- -

Implements QCA::SecureLayer.

-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::TLS::read ( )  [virtual]
-
-
- -

This method reads decrypted (plain) data from the SecureLayer implementation.

-

You normally call this function on the application side after receiving the readyRead() signal.

- -

Implements QCA::SecureLayer.

-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - - -
virtual void QCA::TLS::writeIncoming (const QByteArray a )  [virtual]
-
-
- -

This method accepts encoded (typically encrypted) data for processing.

-

You normally call this function using data read from the network socket (e.g. using QTcpSocket::readAll()) after receiving a signal that indicates that the socket has data to read.

-
Parameters:
- - -
a the ByteArray to take network-side data from
-
-
- -

Implements QCA::SecureLayer.

-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - - -
virtual QByteArray QCA::TLS::readOutgoing (int *  plainBytes = 0 )  [virtual]
-
-
- -

This method provides encoded (typically encrypted) data.

-

You normally call this function to get data to write out to the network socket (e.g. using QTcpSocket::write()) after receiving the readyReadOutgoing() signal.

-
Parameters:
- - -
plainBytes the number of bytes that were read.
-
-
- -

Implements QCA::SecureLayer.

-
Examples:
ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
virtual QByteArray QCA::TLS::readUnprocessed ( )  [virtual]
-
-
- -

This allows you to read data without having it decrypted first.

-

This is intended to be used for protocols that close off the connection and return to plain text transfer. You do not normally need to use this function.

- -

Reimplemented from QCA::SecureLayer.

- -
-
- -
-
- - - - - - - - - -
virtual int QCA::TLS::convertBytesWritten (qint64  encryptedBytes )  [virtual]
-
-
- -

Convert encrypted bytes written to plain text bytes written.

-
Parameters:
- - -
encryptedBytes the number of bytes to convert
-
-
- -

Implements QCA::SecureLayer.

- -
-
- -
-
- - - - - - - - -
int QCA::TLS::packetsAvailable ( )  const
-
-
- -

Determine the number of packets available to be read on the application side.

-
Note:
this is only used with DTLS.
- -
-
- -
-
- - - - - - - - -
int QCA::TLS::packetsOutgoingAvailable ( )  const
-
-
- -

Determine the number of packets available to be read on the network side.

-
Note:
this is only used with DTLS.
- -
-
- -
-
- - - - - - - - -
int QCA::TLS::packetMTU ( )  const
-
-
- -

Return the currently configured maximum packet size.

-
Note:
this is only used with DTLS
- -
-
- -
-
- - - - - - - - - -
void QCA::TLS::setPacketMTU (int  size )  const
-
-
- -

Set the maximum packet size to use.

-
Parameters:
- - -
size the number of bytes to set as the MTU.
-
-
-
Note:
this is only used with DTLS.
- -
-
- -
-
- - - - - - - - -
void QCA::TLS::hostNameReceived ( )  [signal]
-
-
- -

Emitted if a host name is set by the client.

-

At this time, the server can inspect the hostName().

-

You must call continueAfterStep() in order for TLS processing to resume after this signal is emitted.

-

This signal is only emitted in server mode.

-
See also:
continueAfterStep
- -
-
- -
-
- - - - - - - - -
void QCA::TLS::certificateRequested ( )  [signal]
-
-
- -

Emitted when the server requests a certificate.

-

At this time, the client can inspect the issuerList().

-

You must call continueAfterStep() in order for TLS processing to resume after this signal is emitted.

-

This signal is only emitted in client mode.

-
See also:
continueAfterStep
- -
-
- -
-
- - - - - - - - -
void QCA::TLS::peerCertificateAvailable ( )  [signal]
-
-
- -

Emitted when a certificate is received from the peer.

-

At this time, you may inspect peerIdentityResult(), peerCertificateValidity(), and peerCertificateChain().

-

You must call continueAfterStep() in order for TLS processing to resume after this signal is emitted.

-
See also:
continueAfterStep
- -
-
- -
-
- - - - - - - - -
void QCA::TLS::handshaken ( )  [signal]
-
-
- -

Emitted when the protocol handshake is complete.

-

At this time, all available information about the TLS session can be inspected.

-

You must call continueAfterStep() in order for TLS processing to resume after this signal is emitted.

-
See also:
continueAfterStep
-
-isHandshaken
- -
-
- -
-
- - - - - - - - - -
void QCA::TLS::connectNotify (const char *  signal )  [protected]
-
-
- -

Called when a connection is made to a particular signal.

-
Parameters:
- - -
signal the name of the signal that has been connected to.
-
-
- -

Reimplemented from QObject.

- -
-
- -
-
- - - - - - - - - -
void QCA::TLS::disconnectNotify (const char *  signal )  [protected]
-
-
- -

Called when a connection is removed from a particular signal.

-
Parameters:
- - -
signal the name of the signal that has been disconnected from.
-
-
- -

Reimplemented from QObject.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLS-members.html qca2-2.1.0/apidocs/html/classQCA_1_1TLS-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1TLS-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLS-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,171 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::TLS Member List

This is the complete list of members for QCA::TLS, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
blockSignals(bool block)QObject
bytesAvailable() const QCA::TLS [virtual]
bytesOutgoingAvailable() const QCA::TLS [virtual]
canCompress() const QCA::TLS
canSetHostName() const QCA::TLS
certificateRequested()QCA::TLS [signal]
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
childEvent(QChildEvent *event)QObject
children()QObject
cipherBits() const QCA::TLS
cipherMaxBits() const QCA::TLS
cipherSuite() const QCA::TLS
close()QCA::TLS [virtual]
closed()QCA::SecureLayer [signal]
compressionEnabled() const QCA::TLS
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QCA::TLS [protected]
context()QCA::Algorithm
context() const QCA::Algorithm
continueAfterStep()QCA::TLS
convertBytesWritten(qint64 encryptedBytes)QCA::TLS [virtual]
customEvent(QEvent *event)QObject
Datagram enum valueQCA::TLS
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QCA::TLS [protected]
DTLS_v1 enum valueQCA::TLS
dumpObjectInfo()QObject
dumpObjectTree()QObject
error()QCA::SecureLayer [signal]
Error enum nameQCA::TLS
ErrorCertKeyMismatch enum valueQCA::TLS
errorCode() const QCA::TLS
ErrorCrypt enum valueQCA::TLS
ErrorHandshake enum valueQCA::TLS
ErrorInit enum valueQCA::TLS
ErrorSignerExpired enum valueQCA::TLS
ErrorSignerInvalid enum valueQCA::TLS
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
handshaken()QCA::TLS [signal]
HostMismatch enum valueQCA::TLS
hostName() const QCA::TLS
hostNameReceived()QCA::TLS [signal]
IdentityResult enum nameQCA::TLS
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
InvalidCertificate enum valueQCA::TLS
isClosable() const QCA::TLS [virtual]
isCompressed() const QCA::TLS
isHandshaken() const QCA::TLS
issuerList() const QCA::TLS
isWidgetType()QObject
killTimer(int id)QObject
localCertificateChain() const QCA::TLS
localPrivateKey() const QCA::TLS
metaObject()QObject
Mode enum nameQCA::TLS
moveToThread(QThread *targetThread)QObject
NoCertificate enum valueQCA::TLS
operator=(const Algorithm &from)QCA::Algorithm
packetMTU() const QCA::TLS
packetsAvailable() const QCA::TLS
packetsOutgoingAvailable() const QCA::TLS
parent()QObject
peerCertificateAvailable()QCA::TLS [signal]
peerCertificateChain() const QCA::TLS
peerCertificateValidity() const QCA::TLS
peerIdentityResult() const QCA::TLS
Private (defined in QCA::TLS)QCA::TLS [friend]
property(const char *name)QObject
provider() const QCA::Algorithm
QObject(QObject *parent=0)QObject
read()QCA::TLS [virtual]
readOutgoing(int *plainBytes=0)QCA::TLS [virtual]
readUnprocessed()QCA::TLS [virtual]
readyRead()QCA::SecureLayer [signal]
readyReadOutgoing()QCA::SecureLayer [signal]
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
reset()QCA::TLS
SecureLayer(QObject *parent=0)QCA::SecureLayer
sender()QObject
session() const QCA::TLS
setCertificate(const CertificateChain &cert, const PrivateKey &key)QCA::TLS
setCertificate(const KeyBundle &kb)QCA::TLS
setCompressionEnabled(bool b)QCA::TLS
setConstraints(SecurityLevel s)QCA::TLS
setConstraints(int minSSF, int maxSSF)QCA::TLS
setConstraints(const QStringList &cipherSuiteList)QCA::TLS
setIssuerList(const QList< CertificateInfoOrdered > &issuers)QCA::TLS
setPacketMTU(int size) const QCA::TLS
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
setSession(const TLSSession &session)QCA::TLS
setTrustedCertificates(const CertificateCollection &trusted)QCA::TLS
signalsBlocked()QObject
SSL_v2 enum valueQCA::TLS
SSL_v3 enum valueQCA::TLS
startClient(const QString &host=QString())QCA::TLS
startServer()QCA::TLS
startTimer(int interval)QObject
Stream enum valueQCA::TLS
supportedCipherSuites(const Version &version=TLS_v1) const QCA::TLS
takeContext()QCA::Algorithm
thread()QObject
timerEvent(QTimerEvent *event)QObject
TLS(QObject *parent=0, const QString &provider=QString())QCA::TLS [explicit]
TLS(Mode mode, QObject *parent=0, const QString &provider=QString())QCA::TLS [explicit]
TLS_v1 enum valueQCA::TLS
tr(const char *sourceText, const char *comment)QObject
trustedCertificates() const QCA::TLS
trUtf8(const char *sourceText, const char *comment)QObject
type() const QCA::Algorithm
Valid enum valueQCA::TLS
Version enum nameQCA::TLS
version() const QCA::TLS
write(const QByteArray &a)QCA::TLS [virtual]
writeIncoming(const QByteArray &a)QCA::TLS [virtual]
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~TLS()QCA::TLS
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSSession__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1TLSSession__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSSession__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSSession__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSSession__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1TLSSession__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSSession__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSSession__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -05d01d090f3e249bdaa773870924621b \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1TLSSession__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1TLSSession__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSSessionContext__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1TLSSessionContext__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSSessionContext__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSSessionContext__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSSessionContext__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1TLSSessionContext__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSSessionContext__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSSessionContext__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -d7ea7dded3bbdc06595bf7a2c1ac773f \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1TLSSessionContext__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1TLSSessionContext__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSSessionContext.html qca2-2.1.0/apidocs/html/classQCA_1_1TLSSessionContext.html --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSSessionContext.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSSessionContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::TLSSessionContext Class Reference - - - - - - -
-

QCA::TLSSessionContext Class Reference
- -[QCA provider API] -

-

TLS "session" provider. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::TLSSessionContext:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - -

Public Member Functions

 TLSSessionContext (Provider *p)
-

Detailed Description

-

TLS "session" provider.

-
Note:
This class is part of the provider plugin interface and should not be used directly by applications. You probably want TLSSession instead.
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::TLSSessionContext::TLSSessionContext (Provider p )  [inline]
-
-
- -

Standard constructor.

-
Parameters:
- - -
p the Provider associated with this context
-
-
- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSSessionContext-members.html qca2-2.1.0/apidocs/html/classQCA_1_1TLSSessionContext-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSSessionContext-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSSessionContext-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::TLSSessionContext Member List

This is the complete list of members for QCA::TLSSessionContext, including all inherited members. - - - - -
BasicContext(Provider *parent, const QString &type)QCA::BasicContext [protected]
BasicContext(const BasicContext &from)QCA::BasicContext [protected]
TLSSessionContext(Provider *p)QCA::TLSSessionContext [inline]
~BasicContext() (defined in QCA::BasicContext)QCA::BasicContext
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSSession.html qca2-2.1.0/apidocs/html/classQCA_1_1TLSSession.html --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSSession.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSSession.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,141 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::TLSSession Class Reference - - - - - - -
-

QCA::TLSSession Class Reference
- -[QCA user API] -

-

Session token, used for TLS resuming. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::TLSSession:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - -

Public Member Functions

bool isNull () const
TLSSessionoperator= (const TLSSession &from)
 TLSSession (const TLSSession &from)
-

Detailed Description

-

Session token, used for TLS resuming.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::TLSSession::TLSSession (const TLSSession from ) 
-
-
- -

Copy constructor.

-
Parameters:
- - -
from the session token to copy from
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - -
TLSSession& QCA::TLSSession::operator= (const TLSSession from ) 
-
-
- -

Assignment operator.

-
Parameters:
- - -
from the session token to assign from
-
-
- -
-
- -
-
- - - - - - - - -
bool QCA::TLSSession::isNull ( )  const
-
-
- -

Test if the session token is valid.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TLSSession-members.html qca2-2.1.0/apidocs/html/classQCA_1_1TLSSession-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1TLSSession-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TLSSession-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::TLSSession Member List

This is the complete list of members for QCA::TLSSession, including all inherited members. - - - - - - - - - - - - - - - - - -
Algorithm(const Algorithm &from)QCA::Algorithm
Algorithm()QCA::Algorithm [protected]
Algorithm(const QString &type, const QString &provider)QCA::Algorithm [protected]
change(Provider::Context *c)QCA::Algorithm
change(const QString &type, const QString &provider)QCA::Algorithm
context()QCA::Algorithm
context() const QCA::Algorithm
isNull() const QCA::TLSSession
operator=(const TLSSession &from)QCA::TLSSession
QCA::Algorithm::operator=(const Algorithm &from)QCA::Algorithm
provider() const QCA::Algorithm
takeContext()QCA::Algorithm
TLSSession() (defined in QCA::TLSSession)QCA::TLSSession
TLSSession(const TLSSession &from)QCA::TLSSession
type() const QCA::Algorithm
~Algorithm() (defined in QCA::Algorithm)QCA::Algorithm [virtual]
~TLSSession() (defined in QCA::TLSSession)QCA::TLSSession
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TokenAsker__coll__graph.map qca2-2.1.0/apidocs/html/classQCA_1_1TokenAsker__coll__graph.map --- qca2-2.0.3/apidocs/html/classQCA_1_1TokenAsker__coll__graph.map 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TokenAsker__coll__graph.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TokenAsker__coll__graph.md5 qca2-2.1.0/apidocs/html/classQCA_1_1TokenAsker__coll__graph.md5 --- qca2-2.0.3/apidocs/html/classQCA_1_1TokenAsker__coll__graph.md5 2010-11-27 21:30:41.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TokenAsker__coll__graph.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -fc5af82f57acda14650dae60c526bb81 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/classQCA_1_1TokenAsker__coll__graph.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/classQCA_1_1TokenAsker__coll__graph.png differ diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TokenAsker.html qca2-2.1.0/apidocs/html/classQCA_1_1TokenAsker.html --- qca2-2.0.3/apidocs/html/classQCA_1_1TokenAsker.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TokenAsker.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,232 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA::TokenAsker Class Reference - - - - - - -
-

QCA::TokenAsker Class Reference
- -[QCA user API] -

-

User token handler. -More...

- -

#include <QtCrypto>

-
-Collaboration diagram for QCA::TokenAsker:
-
-
Collaboration graph
- - -
[legend]
- -

List of all members.

- - - - - - - - - - - -

Signals

void responseReady ()

Public Member Functions

bool accepted () const
void ask (const KeyStoreInfo &keyStoreInfo, const KeyStoreEntry &keyStoreEntry, void *ptr)
void cancel ()
 TokenAsker (QObject *parent=0)
void waitForResponse ()

Friends

-class Private
-

Detailed Description

-

User token handler.

-

This class is used to request the user to insert a token.

-
Examples:
-

eventhandlerdemo.cpp.

-
-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - -
QCA::TokenAsker::TokenAsker (QObject parent = 0 ) 
-
-
- -

Construct a new asker.

-
Parameters:
- - -
parent the parent object for this QObject
-
-
- -
-
-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void QCA::TokenAsker::ask (const KeyStoreInfo keyStoreInfo,
const KeyStoreEntry keyStoreEntry,
void *  ptr 
)
-
-
- -

queue a token request associated with a key store

-
Parameters:
- - - - -
keyStoreInfo info of the key store that the information is required for
keyStoreEntry the item in the key store that the information is required for (if applicable)
ptr opaque data
-
-
-
Examples:
eventhandlerdemo.cpp.
-
-
-
- -
-
- - - - - - - - -
void QCA::TokenAsker::cancel ( ) 
-
-
- -

Cancel the pending password / passphrase request.

- -
-
- -
-
- - - - - - - - -
void QCA::TokenAsker::waitForResponse ( ) 
-
-
- -

Block until the token request is completed.

-

You can use the responseReady signal instead of blocking, if appropriate.

-
Examples:
eventhandlerdemo.cpp.
-
-
-
- -
-
- - - - - - - - -
bool QCA::TokenAsker::accepted ( )  const
-
-
- -

Test if the token request was accepted or not.

-
Returns:
true if the token request was accepted
-
Examples:
eventhandlerdemo.cpp.
-
-
-
- -
-
- - - - - - - - -
void QCA::TokenAsker::responseReady ( )  [signal]
-
-
- -

Emitted when the asker process has been completed.

-

You should check whether the user accepted() the response prior to relying on token being present.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCA_1_1TokenAsker-members.html qca2-2.1.0/apidocs/html/classQCA_1_1TokenAsker-members.html --- qca2-2.0.3/apidocs/html/classQCA_1_1TokenAsker-members.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCA_1_1TokenAsker-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,87 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCA::TokenAsker Member List

This is the complete list of members for QCA::TokenAsker, including all inherited members. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
accepted() const QCA::TokenAsker
ask(const KeyStoreInfo &keyStoreInfo, const KeyStoreEntry &keyStoreEntry, void *ptr)QCA::TokenAsker
blockSignals(bool block)QObject
cancel()QCA::TokenAsker
childEvent(QChildEvent *event)QObject
children()QObject
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connect(const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoCompatConnection)QObject
connectNotify(const char *signal)QObject
customEvent(QEvent *event)QObject
deleteLater()QObject
destroyed(QObject *obj=0)QObject
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)QObject
disconnect(const char *signal=0, const QObject *receiver=0, const char *member=0)QObject
disconnect(const QObject *receiver, const char *member=0)QObject
disconnectNotify(const char *signal)QObject
dumpObjectInfo()QObject
dumpObjectTree()QObject
event(QEvent *e)QObject
eventFilter(QObject *watched, QEvent *e)QObject
findChild(const QString &name=QString()QObject
findChildren(const QString &name=QString()QObject
findChildren(const QRegExp &re)QObject
inherits(const char *clname)QObject
installEventFilter(QObject *filterObj)QObject
isWidgetType()QObject
killTimer(int id)QObject
metaObject()QObject
moveToThread(QThread *targetThread)QObject
parent()QObject
Private (defined in QCA::TokenAsker)QCA::TokenAsker [friend]
property(const char *name)QObject
QObject(QObject *parent=0)QObject
receivers(const char *signal)QObject
removeEventFilter(QObject *obj)QObject
responseReady()QCA::TokenAsker [signal]
sender()QObject
setParent(QObject *parent)QObject
setProperty(const char *name, const QVariant &value)QObject
signalsBlocked()QObject
startTimer(int interval)QObject
thread()QObject
timerEvent(QTimerEvent *event)QObject
TokenAsker(QObject *parent=0)QCA::TokenAsker
tr(const char *sourceText, const char *comment)QObject
trUtf8(const char *sourceText, const char *comment)QObject
waitForResponse()QCA::TokenAsker
~TokenAsker() (defined in QCA::TokenAsker)QCA::TokenAsker
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCAPlugin.html qca2-2.1.0/apidocs/html/classQCAPlugin.html --- qca2-2.0.3/apidocs/html/classQCAPlugin.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCAPlugin.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,108 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCAPlugin Class Reference - - - - - - -
-

QCAPlugin Class Reference
- -[QCA provider API] -

-

Provider plugin base class. -More...

- -

#include <QtCrypto>

- -

List of all members.

- - - - -

Public Member Functions

virtual QCA::ProvidercreateProvider ()=0
virtual ~QCAPlugin ()
-

Detailed Description

-

Provider plugin base class.

-

QCA loads cryptographic provider plugins with QPluginLoader. The QObject obtained when loading the plugin must implement the QCAPlugin interface. This is done by inheriting QCAPlugin, and including Q_INTERFACES(QCAPlugin) in your class declaration.

-

For example:

-
class MyPlugin : public QObject, public QCAPlugin
-{
-        Q_OBJECT
-        Q_INTERFACES(QCAPlugin)
-public:
-        virtual Provider *createProvider() { ... }
-};
-

There is only one function to reimplement, called createProvider(). This function should return a newly allocated Provider instance.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - -
virtual QCAPlugin::~QCAPlugin ( )  [inline, virtual]
-
-
- -

Destructs the object.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
virtual QCA::Provider* QCAPlugin::createProvider ( )  [pure virtual]
-
-
- -

Returns a newly allocated Provider instance.

- -
-
-
The documentation for this class was generated from the following file: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/classQCAPlugin-members.html qca2-2.1.0/apidocs/html/classQCAPlugin-members.html --- qca2-2.0.3/apidocs/html/classQCAPlugin-members.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/classQCAPlugin-members.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ - - - - -Qt Cryptographic Architecture: Member List - - - - - - -
-

QCAPlugin Member List

This is the complete list of members for QCAPlugin, including all inherited members. - - -
createProvider()=0QCAPlugin [pure virtual]
~QCAPlugin()QCAPlugin [inline, virtual]
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/dir_046dd47861f7bfae7f6c5f0d4711b033_dep.map qca2-2.1.0/apidocs/html/dir_046dd47861f7bfae7f6c5f0d4711b033_dep.map --- qca2-2.0.3/apidocs/html/dir_046dd47861f7bfae7f6c5f0d4711b033_dep.map 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/dir_046dd47861f7bfae7f6c5f0d4711b033_dep.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/dir_046dd47861f7bfae7f6c5f0d4711b033_dep.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/dir_046dd47861f7bfae7f6c5f0d4711b033_dep.png differ diff -Nru qca2-2.0.3/apidocs/html/dir_046dd47861f7bfae7f6c5f0d4711b033.html qca2-2.1.0/apidocs/html/dir_046dd47861f7bfae7f6c5f0d4711b033.html --- qca2-2.0.3/apidocs/html/dir_046dd47861f7bfae7f6c5f0d4711b033.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/dir_046dd47861f7bfae7f6c5f0d4711b033.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ - - - - -Qt Cryptographic Architecture: examples/ Directory Reference - - - - - - -
-

examples Directory Reference

-

-
-
-
examples/
- - -
-

- - - -

Files

file  examples.doco
-
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/dir_26c7b9e842618f3c7bee466b4320c59f_dep.map qca2-2.1.0/apidocs/html/dir_26c7b9e842618f3c7bee466b4320c59f_dep.map --- qca2-2.0.3/apidocs/html/dir_26c7b9e842618f3c7bee466b4320c59f_dep.map 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/dir_26c7b9e842618f3c7bee466b4320c59f_dep.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/dir_26c7b9e842618f3c7bee466b4320c59f_dep.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/dir_26c7b9e842618f3c7bee466b4320c59f_dep.png differ diff -Nru qca2-2.0.3/apidocs/html/dir_26c7b9e842618f3c7bee466b4320c59f.html qca2-2.1.0/apidocs/html/dir_26c7b9e842618f3c7bee466b4320c59f.html --- qca2-2.0.3/apidocs/html/dir_26c7b9e842618f3c7bee466b4320c59f.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/dir_26c7b9e842618f3c7bee466b4320c59f.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ - - - - -Qt Cryptographic Architecture: include/QtCrypto/ Directory Reference - - - - - - -
-

QtCrypto Directory Reference

-

-
-
-
include/QtCrypto/
- - -
-

- - - - - - - - - - - - - - - - -

Files

file  qca.h [code]
file  qca_basic.h [code]
file  qca_cert.h [code]
file  qca_core.h [code]
file  qca_export.h [code]
file  qca_keystore.h [code]
file  qca_publickey.h [code]
file  qca_securelayer.h [code]
file  qca_securemessage.h [code]
file  qca_support.h [code]
file  qca_textfilter.h [code]
file  qca_tools.h [code]
file  qcaprovider.h [code]
file  qpipe.h [code]
-
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/dir_79e57a0d9086aa97f0ee3aaabd7aafd9_dep.map qca2-2.1.0/apidocs/html/dir_79e57a0d9086aa97f0ee3aaabd7aafd9_dep.map --- qca2-2.0.3/apidocs/html/dir_79e57a0d9086aa97f0ee3aaabd7aafd9_dep.map 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/dir_79e57a0d9086aa97f0ee3aaabd7aafd9_dep.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/dir_79e57a0d9086aa97f0ee3aaabd7aafd9_dep.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/dir_79e57a0d9086aa97f0ee3aaabd7aafd9_dep.png differ diff -Nru qca2-2.0.3/apidocs/html/dir_79e57a0d9086aa97f0ee3aaabd7aafd9.html qca2-2.1.0/apidocs/html/dir_79e57a0d9086aa97f0ee3aaabd7aafd9.html --- qca2-2.0.3/apidocs/html/dir_79e57a0d9086aa97f0ee3aaabd7aafd9.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/dir_79e57a0d9086aa97f0ee3aaabd7aafd9.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ - - - - -Qt Cryptographic Architecture: include/ Directory Reference - - - - - - -
-

include Directory Reference

-

-
-
-
include/
- - -
-

- - - -

Directories

directory  QtCrypto
-
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/dirs.html qca2-2.1.0/apidocs/html/dirs.html --- qca2-2.0.3/apidocs/html/dirs.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/dirs.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,38 +0,0 @@ - - - - -Qt Cryptographic Architecture: Directory Hierarchy - - - - - - -
-

Directories

This directory hierarchy is sorted roughly, but not completely, alphabetically: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/doxygen.css qca2-2.1.0/apidocs/html/doxygen.css --- qca2-2.0.3/apidocs/html/doxygen.css 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/doxygen.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,545 +0,0 @@ -/* The standard CSS for doxygen */ - -body, table, div, p, dl { - font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; - font-size: 12px; -} - -/* @group Heading Levels */ - -h1 { - text-align: center; - font-size: 150%; -} - -h2 { - font-size: 120%; -} - -h3 { - font-size: 100%; -} - -dt { - font-weight: bold; -} - -div.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; -} - -p.startli, p.startdd, p.starttd { - margin-top: 2px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #e8eef2; - border: 1px solid #84b0c7; - text-align: center; - margin: 2px; - padding: 2px; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #153788; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #1b77c5; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #6666cc; - color: #ffffff; - border: 1px double #9295C2; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code { - color: #3030f0; -} - -a.codeRef { - color: #3030f0; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -.fragment { - font-family: monospace, fixed; - font-size: 105%; -} - -pre.fragment { - border: 1px solid #CCCCCC; - background-color: #f5f5f5; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; -} - -div.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - margin-bottom: 6px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background: white; - color: black; - margin-right: 20px; - margin-left: 20px; -} - -td.indexkey { - background-color: #e8eef2; - font-weight: bold; - border: 1px solid #CCCCCC; - margin: 2px 0px 2px 0; - padding: 2px 10px; -} - -td.indexvalue { - background-color: #e8eef2; - border: 1px solid #CCCCCC; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #f0f0f0; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -/* @end */ - -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #84b0c7; -} - -th.dirtab { - background: #e8eef2; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #666; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #FAFAFA; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memItemLeft, .memItemRight, .memTemplParams { - border-top: 1px solid #ccc; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memTemplParams { - color: #606060; - white-space: nowrap; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtemplate { - font-size: 80%; - color: #606060; - font-weight: normal; - margin-left: 3px; -} - -.memnav { - background-color: #e8eef2; - border: 1px solid #84b0c7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.memitem { - padding: 0; - margin-bottom: 10px; -} - -.memname { - white-space: nowrap; - font-weight: bold; - margin-left: 6px; -} - -.memproto { - border-top: 1px solid #84b0c7; - border-left: 1px solid #84b0c7; - border-right: 1px solid #84b0c7; - padding: 0; - background-color: #d5e1e8; - font-weight: bold; - /* firefox specific markup */ - background-image: -moz-linear-gradient(rgba(228, 233, 245, 1.0) 0%, rgba(193, 205, 232, 1.0) 100%); - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 8px; - -moz-border-radius-topleft: 8px; - /* webkit specific markup */ - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(228, 233, 245, 1.0)), to(rgba(193, 205, 232, 1.0))); - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 8px; - -webkit-border-top-left-radius: 8px; - -} - -.memdoc { - border-bottom: 1px solid #84b0c7; - border-left: 1px solid #84b0c7; - border-right: 1px solid #84b0c7; - padding: 2px 5px; - background-color: #eef3f5; - border-top-width: 0; - /* firefox specific markup */ - -moz-border-radius-bottomleft: 8px; - -moz-border-radius-bottomright: 8px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 8px; - -webkit-border-bottom-right-radius: 8px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} - -/* @end */ - -/* @group Directory (tree) */ - -/* for the tree view */ - -.ftvtree { - font-family: sans-serif; - margin: 0.5em; -} - -/* these are for tree view when used as main index */ - -.directory { - font-size: 9pt; - font-weight: bold; -} - -.directory h3 { - margin: 0px; - margin-top: 1em; - font-size: 11pt; -} - -/* -The following two styles can be used to replace the root node title -with an image of your choice. Simply uncomment the next two styles, -specify the name of your image and be sure to set 'height' to the -proper pixel height of your image. -*/ - -/* -.directory h3.swap { - height: 61px; - background-repeat: no-repeat; - background-image: url("yourimage.gif"); -} -.directory h3.swap span { - display: none; -} -*/ - -.directory > h3 { - margin-top: 0; -} - -.directory p { - margin: 0px; - white-space: nowrap; -} - -.directory div { - display: none; - margin: 0px; -} - -.directory img { - vertical-align: -30%; -} - -/* these are for tree view when not used as main index */ - -.directory-alt { - font-size: 100%; - font-weight: bold; -} - -.directory-alt h3 { - margin: 0px; - margin-top: 1em; - font-size: 11pt; -} - -.directory-alt > h3 { - margin-top: 0; -} - -.directory-alt p { - margin: 0px; - white-space: nowrap; -} - -.directory-alt div { - display: none; - margin: 0px; -} - -.directory-alt img { - vertical-align: -30%; -} - -/* @end */ - -address { - font-style: normal; - color: #333; -} - -table.doxtable { - border-collapse:collapse; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #153788; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #254798; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; -} - Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/doxygen.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/doxygen.png differ diff -Nru qca2-2.0.3/apidocs/html/eventhandlerdemo.cpp-example.html qca2-2.1.0/apidocs/html/eventhandlerdemo.cpp-example.html --- qca2-2.0.3/apidocs/html/eventhandlerdemo.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/eventhandlerdemo.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,190 +0,0 @@ - - - - -Qt Cryptographic Architecture: eventhandlerdemo.cpp - - - - - - -
-

eventhandlerdemo.cpp

The code below shows to implement a client side handler for password / passphrase / PIN and token requests from QCA and any associated providers.

-
/*
- Copyright (C) 2007 Brad Hards <bradh@frogmouth.net>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-// QtCrypto has the declarations for all of QCA
-#include <QtCrypto>
-
-#include <QCoreApplication>
-
-#include <iostream>
-
-class ClientPassphraseHandler: public QObject
-{
-    Q_OBJECT
-public:
-    ClientPassphraseHandler(QObject *parent = 0) : QObject( parent )
-    {
-        // When the PasswordAsker or TokenAsker needs to interact
-        // with the user, it raises a signal. We connect that to a
-        // local slot to get the required information.
-        connect( &m_handler, SIGNAL( eventReady(int, const QCA::Event &) ),
-                 SLOT( my_eventReady(int, const QCA::Event &) ) );
-
-        // Now that we are set up, we can start the EventHandler. Nothing
-        // will happen if you don't call this method.
-        m_handler.start();
-    }
-
-private slots:
-    // This slot gets called when the provider needs a token inserted,
-    // or to get a passphrase / password / PIN.
-    void my_eventReady(int id, const QCA::Event &event)
-    {
-        // We can sanity check the event
-        if ( event.isNull() ) {
-            return;
-        }
-
-        // Events can be associated with a a keystore or a file/bytearray
-        // You can tell which by looking at the Source
-        if ( event.source() == QCA::Event::KeyStore ) {
-            std::cout << "Event is associated with a key store operation" << std::endl;
-        } else if ( event.source() == QCA::Event::Data ) {
-            std::cout << "Event is associated with a file or some other data" << std::endl;
-            // if the event comes from a file type operation, you can get the
-            // name / label using fileName()
-            std::cout << "   Filename: " << qPrintable( event.fileName() ) << std::endl;
-        } else {
-            std::cout << "Unexpected Source for Event" << std::endl;
-        }
-
-        // There are different kinds of events.
-        if ( event.type() == QCA::Event::Token ) {
-            // You would typically ask the user to insert the token here
-            std::cout << "Request for token" << std::endl;
-            // we just fake it for this demo.
-            m_handler.tokenOkay( id );
-            // you could use m_handler.reject( id ) to refuse the token request
-
-        } else if ( event.type() == QCA::Event::Password ) {
-            std::cout << "Request for password, passphrase or PIN" << std::endl;
-            // and within the Password type, we have a few different styles.
-            if ( event.passwordStyle() == QCA::Event::StylePassword ) {
-                std::cout << "   [Password request]" << std::endl;
-            } else if ( event.passwordStyle() == QCA::Event::StylePassphrase ) {
-                std::cout << "   [Passphrase request]" << std::endl;
-            } else if ( event.passwordStyle() == QCA::Event::StylePIN ){
-                std::cout << "   [PIN request]" << std::endl;
-            } else {
-                std::cout << "   [unexpect request style]" << std::endl;
-            }
-            // You would typically request the password/PIN/passphrase.
-            // again, we just fake it.
-            m_handler.submitPassword( id,  QCA::SecureArray( "hello" ) );
-
-        } else {
-            std::cout << "Unexpected event type" << std::endl;
-        }
-    }
-private:
-    QCA::EventHandler m_handler;
-
-};
-
-void asker_procedure();
-
-class AskerThread : public QThread
-{
-    Q_OBJECT
-protected:
-    virtual void run()
-    {
-        asker_procedure();
-    }
-};
-
-int main(int argc, char **argv)
-{
-    // the Initializer object sets things up, and
-    // also does cleanup when it goes out of scope
-    QCA::Initializer init;
-
-    QCoreApplication exampleApp(argc, argv);
-
-    ClientPassphraseHandler cph;
-
-    // handler and asker cannot occur in the same thread
-    AskerThread askerThread;
-    QObject::connect(&askerThread, SIGNAL(finished()), &exampleApp, SLOT(quit()));
-    askerThread.start();
-
-    exampleApp.exec();
-    return 0;
-}
-
-void asker_procedure()
-{
-    QCA::PasswordAsker pwAsker;
-
-    pwAsker.ask( QCA::Event::StylePassword, "foo.tmp",  0 );
-
-    pwAsker.waitForResponse();
-
-    std::cout << "Password was: " << pwAsker.password().toByteArray().data() << std::endl;
-
-    std::cout << std::endl << "Now do token:" << std::endl;
-
-    QCA::TokenAsker tokenAsker;
-
-    tokenAsker.ask( QCA::KeyStoreInfo( QCA::KeyStore::SmartCard, "Token Id", "Token Name" ), QCA::KeyStoreEntry(), 0 );
-
-    tokenAsker.waitForResponse();
-
-    if ( tokenAsker.accepted() ) {
-        std::cout << "Token was accepted" << std::endl;
-    } else {
-        std::cout << "Token was not accepted" << std::endl;
-    }
-}
-
-#include "eventhandlerdemo.moc"
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/examples.html qca2-2.1.0/apidocs/html/examples.html --- qca2-2.0.3/apidocs/html/examples.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/examples.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ - - - - -Qt Cryptographic Architecture: Examples - - - - - - -
-

Examples

Here is a list of all examples: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/files.html qca2-2.1.0/apidocs/html/files.html --- qca2-2.0.3/apidocs/html/files.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/files.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ - - - - -Qt Cryptographic Architecture: File Index - - - - - - -
-

File List

Here is a list of all documented files with brief descriptions: - - - - - - - - - - - - - - -
qca.h [code]Summary header file for QCA
qca_basic.h [code]Header file for classes for cryptographic primitives (basic operations)
qca_cert.h [code]Header file for PGP key and X.509 certificate related classes
qca_core.h [code]Header file for core QCA infrastructure
qca_export.h [code]Preprocessor magic to allow export of library symbols
qca_keystore.h [code]Header file for classes that provide and manage keys
qca_publickey.h [code]Header file for PublicKey and PrivateKey related classes
qca_securelayer.h [code]Header file for SecureLayer and its subclasses
qca_securemessage.h [code]Header file for secure message (PGP, CMS) classes
qca_support.h [code]Header file for "support" classes used in QCA
qca_textfilter.h [code]Header file for text encoding/decoding classes
qca_tools.h [code]Header file for "tool" classes used in QCA
qcaprovider.h [code]Header file for provider implementation classes (plugins)
qpipe.h [code]Header file for the QPipe FIFO class
-
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/form_0.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/form_0.png differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/form_1.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/form_1.png differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/form_2.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/form_2.png differ diff -Nru qca2-2.0.3/apidocs/html/formula.repository qca2-2.1.0/apidocs/html/formula.repository --- qca2-2.0.3/apidocs/html/formula.repository 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/formula.repository 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -\form#0:$2^{64}$ -\form#1:$2^{128}$ -\form#2:$2^{256}$ diff -Nru qca2-2.0.3/apidocs/html/functions_0x61.html qca2-2.1.0/apidocs/html/functions_0x61.html --- qca2-2.0.3/apidocs/html/functions_0x61.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x61.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,167 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- a -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x62.html qca2-2.1.0/apidocs/html/functions_0x62.html --- qca2-2.0.3/apidocs/html/functions_0x62.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x62.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,159 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- b -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x63.html qca2-2.1.0/apidocs/html/functions_0x63.html --- qca2-2.0.3/apidocs/html/functions_0x63.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x63.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,467 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- c -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x64.html qca2-2.1.0/apidocs/html/functions_0x64.html --- qca2-2.0.3/apidocs/html/functions_0x64.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x64.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,210 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- d -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x65.html qca2-2.1.0/apidocs/html/functions_0x65.html --- qca2-2.0.3/apidocs/html/functions_0x65.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x65.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,243 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- e -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x66.html qca2-2.1.0/apidocs/html/functions_0x66.html --- qca2-2.0.3/apidocs/html/functions_0x66.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x66.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- f -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x67.html qca2-2.1.0/apidocs/html/functions_0x67.html --- qca2-2.0.3/apidocs/html/functions_0x67.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x67.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- g -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x68.html qca2-2.1.0/apidocs/html/functions_0x68.html --- qca2-2.0.3/apidocs/html/functions_0x68.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x68.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,128 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- h -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x69.html qca2-2.1.0/apidocs/html/functions_0x69.html --- qca2-2.0.3/apidocs/html/functions_0x69.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x69.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,282 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- i -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x6b.html qca2-2.1.0/apidocs/html/functions_0x6b.html --- qca2-2.0.3/apidocs/html/functions_0x6b.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x6b.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,170 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- k -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x6c.html qca2-2.1.0/apidocs/html/functions_0x6c.html --- qca2-2.0.3/apidocs/html/functions_0x6c.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x6c.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,119 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- l -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x6d.html qca2-2.1.0/apidocs/html/functions_0x6d.html --- qca2-2.0.3/apidocs/html/functions_0x6d.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x6d.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,141 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- m -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x6e.html qca2-2.1.0/apidocs/html/functions_0x6e.html --- qca2-2.0.3/apidocs/html/functions_0x6e.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x6e.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,163 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- n -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x6f.html qca2-2.1.0/apidocs/html/functions_0x6f.html --- qca2-2.0.3/apidocs/html/functions_0x6f.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x6f.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,207 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- o -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x70.html qca2-2.1.0/apidocs/html/functions_0x70.html --- qca2-2.0.3/apidocs/html/functions_0x70.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x70.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,263 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- p -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x71.html qca2-2.1.0/apidocs/html/functions_0x71.html --- qca2-2.0.3/apidocs/html/functions_0x71.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x71.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- q -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x72.html qca2-2.1.0/apidocs/html/functions_0x72.html --- qca2-2.0.3/apidocs/html/functions_0x72.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x72.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,231 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- r -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x73.html qca2-2.1.0/apidocs/html/functions_0x73.html --- qca2-2.0.3/apidocs/html/functions_0x73.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x73.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,611 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- s -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x74.html qca2-2.1.0/apidocs/html/functions_0x74.html --- qca2-2.0.3/apidocs/html/functions_0x74.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x74.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,309 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- t -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x75.html qca2-2.1.0/apidocs/html/functions_0x75.html --- qca2-2.0.3/apidocs/html/functions_0x75.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x75.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,138 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- u -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x76.html qca2-2.1.0/apidocs/html/functions_0x76.html --- qca2-2.0.3/apidocs/html/functions_0x76.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x76.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,121 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- v -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x77.html qca2-2.1.0/apidocs/html/functions_0x77.html --- qca2-2.0.3/apidocs/html/functions_0x77.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x77.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,151 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- w -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x78.html qca2-2.1.0/apidocs/html/functions_0x78.html --- qca2-2.0.3/apidocs/html/functions_0x78.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x78.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- x -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x79.html qca2-2.1.0/apidocs/html/functions_0x79.html --- qca2-2.0.3/apidocs/html/functions_0x79.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x79.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- y -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_0x7e.html qca2-2.1.0/apidocs/html/functions_0x7e.html --- qca2-2.0.3/apidocs/html/functions_0x7e.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_0x7e.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- ~ -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_enum.html qca2-2.1.0/apidocs/html/functions_enum.html --- qca2-2.0.3/apidocs/html/functions_enum.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_enum.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,191 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Enumerations - - - - - - -
-  - -

- a -

- - -

- c -

- - -

- e -

- - -

- f -

- - -

- i -

- - -

- m -

- - -

- o -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- v -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_eval.html qca2-2.1.0/apidocs/html/functions_eval.html --- qca2-2.0.3/apidocs/html/functions_eval.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_eval.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,487 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Enumerator - - - - - - -
-  - -

- a -

- - -

- b -

- - -

- c -

- - -

- d -

- - -

- e -

- - -

- h -

- - -

- i -

- - -

- k -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- q -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- u -

- - -

- v -

- - -

- w -

- - -

- x -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x62.html qca2-2.1.0/apidocs/html/functions_func_0x62.html --- qca2-2.0.3/apidocs/html/functions_func_0x62.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x62.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,146 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- b -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x63.html qca2-2.1.0/apidocs/html/functions_func_0x63.html --- qca2-2.0.3/apidocs/html/functions_func_0x63.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x63.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,422 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- c -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x64.html qca2-2.1.0/apidocs/html/functions_func_0x64.html --- qca2-2.0.3/apidocs/html/functions_func_0x64.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x64.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,173 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- d -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x65.html qca2-2.1.0/apidocs/html/functions_func_0x65.html --- qca2-2.0.3/apidocs/html/functions_func_0x65.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x65.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,165 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- e -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x66.html qca2-2.1.0/apidocs/html/functions_func_0x66.html --- qca2-2.0.3/apidocs/html/functions_func_0x66.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x66.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,190 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- f -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x67.html qca2-2.1.0/apidocs/html/functions_func_0x67.html --- qca2-2.0.3/apidocs/html/functions_func_0x67.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x67.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- g -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x68.html qca2-2.1.0/apidocs/html/functions_func_0x68.html --- qca2-2.0.3/apidocs/html/functions_func_0x68.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x68.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,124 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- h -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x69.html qca2-2.1.0/apidocs/html/functions_func_0x69.html --- qca2-2.0.3/apidocs/html/functions_func_0x69.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x69.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,246 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- i -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x6b.html qca2-2.1.0/apidocs/html/functions_func_0x6b.html --- qca2-2.0.3/apidocs/html/functions_func_0x6b.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x6b.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,164 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- k -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x6c.html qca2-2.1.0/apidocs/html/functions_func_0x6c.html --- qca2-2.0.3/apidocs/html/functions_func_0x6c.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x6c.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,118 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- l -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x6d.html qca2-2.1.0/apidocs/html/functions_func_0x6d.html --- qca2-2.0.3/apidocs/html/functions_func_0x6d.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x6d.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,133 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- m -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x6e.html qca2-2.1.0/apidocs/html/functions_func_0x6e.html --- qca2-2.0.3/apidocs/html/functions_func_0x6e.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x6e.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,133 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- n -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x6f.html qca2-2.1.0/apidocs/html/functions_func_0x6f.html --- qca2-2.0.3/apidocs/html/functions_func_0x6f.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x6f.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- o -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x70.html qca2-2.1.0/apidocs/html/functions_func_0x70.html --- qca2-2.0.3/apidocs/html/functions_func_0x70.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x70.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,233 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- p -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x71.html qca2-2.1.0/apidocs/html/functions_func_0x71.html --- qca2-2.0.3/apidocs/html/functions_func_0x71.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x71.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- q -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x72.html qca2-2.1.0/apidocs/html/functions_func_0x72.html --- qca2-2.0.3/apidocs/html/functions_func_0x72.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x72.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,202 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- r -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x73.html qca2-2.1.0/apidocs/html/functions_func_0x73.html --- qca2-2.0.3/apidocs/html/functions_func_0x73.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x73.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,532 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- s -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x74.html qca2-2.1.0/apidocs/html/functions_func_0x74.html --- qca2-2.0.3/apidocs/html/functions_func_0x74.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x74.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,266 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- t -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x75.html qca2-2.1.0/apidocs/html/functions_func_0x75.html --- qca2-2.0.3/apidocs/html/functions_func_0x75.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x75.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,130 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- u -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x76.html qca2-2.1.0/apidocs/html/functions_func_0x76.html --- qca2-2.0.3/apidocs/html/functions_func_0x76.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x76.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,108 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- v -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x77.html qca2-2.1.0/apidocs/html/functions_func_0x77.html --- qca2-2.0.3/apidocs/html/functions_func_0x77.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x77.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,140 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- w -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x78.html qca2-2.1.0/apidocs/html/functions_func_0x78.html --- qca2-2.0.3/apidocs/html/functions_func_0x78.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x78.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- x -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x79.html qca2-2.1.0/apidocs/html/functions_func_0x79.html --- qca2-2.0.3/apidocs/html/functions_func_0x79.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x79.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- y -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func_0x7e.html qca2-2.1.0/apidocs/html/functions_func_0x7e.html --- qca2-2.0.3/apidocs/html/functions_func_0x7e.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func_0x7e.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- ~ -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_func.html qca2-2.1.0/apidocs/html/functions_func.html --- qca2-2.0.3/apidocs/html/functions_func.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_func.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,136 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Functions - - - - - - -
-  - -

- a -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions.html qca2-2.1.0/apidocs/html/functions.html --- qca2-2.0.3/apidocs/html/functions.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented class members with links to the class documentation for each member: - -

- _ -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/functions_vars.html qca2-2.1.0/apidocs/html/functions_vars.html --- qca2-2.0.3/apidocs/html/functions_vars.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/functions_vars.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,251 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - Variables - - - - - - -
-  - -

- _ -

- - -

- a -

- - -

- c -

- - -

- e -

- - -

- f -

- - -

- i -

- - -

- k -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- u -

- - -

- v -

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/globals_defs.html qca2-2.1.0/apidocs/html/globals_defs.html --- qca2-2.0.3/apidocs/html/globals_defs.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/globals_defs.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/globals_func.html qca2-2.1.0/apidocs/html/globals_func.html --- qca2-2.0.3/apidocs/html/globals_func.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/globals_func.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/globals.html qca2-2.1.0/apidocs/html/globals.html --- qca2-2.0.3/apidocs/html/globals.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/globals.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented file members with links to the documentation: -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/graph_legend.dot qca2-2.1.0/apidocs/html/graph_legend.dot --- qca2-2.0.3/apidocs/html/graph_legend.dot 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/graph_legend.dot 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -digraph G -{ - edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; - node [fontname="FreeSans",fontsize="10",shape=record]; - Node9 [shape="box",label="Inherited",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",fillcolor="grey75",style="filled" fontcolor="black"]; - Node10 -> Node9 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; - Node10 [shape="box",label="PublicBase",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPublicBase.html"]; - Node11 -> Node10 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; - Node11 [shape="box",label="Truncated",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="red",URL="$classTruncated.html"]; - Node13 -> Node9 [dir=back,color="darkgreen",fontsize="10",style="solid",fontname="FreeSans"]; - Node13 [shape="box",label="ProtectedBase",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classProtectedBase.html"]; - Node14 -> Node9 [dir=back,color="firebrick4",fontsize="10",style="solid",fontname="FreeSans"]; - Node14 [shape="box",label="PrivateBase",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPrivateBase.html"]; - Node15 -> Node9 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; - Node15 [shape="box",label="Undocumented",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="grey75"]; - Node16 -> Node9 [dir=back,color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; - Node16 [shape="box",label="Templ< int >",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"]; - Node17 -> Node16 [dir=back,color="orange",fontsize="10",style="dashed",label="< int >",fontname="FreeSans"]; - Node17 [shape="box",label="Templ< T >",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"]; - Node18 -> Node9 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="m_usedClass",fontname="FreeSans"]; - Node18 [shape="box",label="Used",fontsize="10",height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classUsed.html"]; -} diff -Nru qca2-2.0.3/apidocs/html/graph_legend.html qca2-2.1.0/apidocs/html/graph_legend.html --- qca2-2.0.3/apidocs/html/graph_legend.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/graph_legend.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ - - - - -Qt Cryptographic Architecture: Graph Legend - - - - - - -
-

Graph Legend

This page explains how to interpret the graphs that are generated by doxygen.

-

Consider the following example:

-
/*! Invisible class because of truncation */
-class Invisible { };
-
-/*! Truncated class, inheritance relation is hidden */
-class Truncated : public Invisible { };
-
-/* Class not documented with doxygen comments */
-class Undocumented { };
-
-/*! Class that is inherited using public inheritance */
-class PublicBase : public Truncated { };
-
-/*! A template class */
-template<class T> class Templ { };
-
-/*! Class that is inherited using protected inheritance */
-class ProtectedBase { };
-
-/*! Class that is inherited using private inheritance */
-class PrivateBase { };
-
-/*! Class that is used by the Inherited class */
-class Used { };
-
-/*! Super class that inherits a number of other classes */
-class Inherited : public PublicBase,
-                  protected ProtectedBase,
-                  private PrivateBase,
-                  public Undocumented,
-                  public Templ<int>
-{
-  private:
-    Used *m_usedClass;
-};
-

This will result in the following graph:

-
-graph_legend.png -
-

The boxes in the above graph have the following meaning:

- -

The arrows have the following meaning:

- -
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/graph_legend.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/graph_legend.png differ diff -Nru qca2-2.0.3/apidocs/html/group__ProviderAPI.html qca2-2.1.0/apidocs/html/group__ProviderAPI.html --- qca2-2.0.3/apidocs/html/group__ProviderAPI.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/group__ProviderAPI.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA provider API - - - - - - -
-

QCA provider API

-

This group of classes is not normally needed by application writers, but can be used to extend QCA if required. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Classes

class  QCA::BasicContext
 Base class to use for primitive provider contexts. More...
class  QCA::CAContext
 X.509 certificate authority provider. More...
class  QCA::CertBase
 X.509 certificate and certificate request provider base. More...
class  QCA::CertCollectionContext
 X.509 certificate collection provider. More...
class  QCA::CertContext
 X.509 certificate provider. More...
class  QCA::CertContextProps
 X.509 certificate or certificate request properties. More...
class  QCA::CipherContext
 Cipher provider. More...
class  QCA::Provider::Context
 Internal context class used for the plugin. More...
class  QCA::CRLContext
 X.509 certificate revocation list provider. More...
class  QCA::CRLContextProps
 X.509 certificate revocation list properties. More...
class  QCA::CSRContext
 X.509 certificate request provider. More...
class  QCA::DHContext
 Diffie-Hellman provider. More...
class  QCA::DLGroupContext
 Discrete logarithm provider. More...
class  QCA::DSAContext
 DSA provider. More...
class  QCA::HashContext
 Hash provider. More...
class  QCA::SASLContext::HostPort
 Convenience class to hold an IP address and an associated port. More...
class  QCA::InfoContext
 Extended provider information. More...
class  QCA::KDFContext
 Key derivation function provider. More...
class  QCA::KeyStoreEntryContext
 KeyStoreEntry provider. More...
class  QCA::KeyStoreListContext
 KeyStore provider. More...
class  QCA::MACContext
 Message authentication code provider. More...
class  QCA::MessageContext
 SecureMessage provider. More...
class  QCA::PGPKeyContext
 OpenPGP key provider. More...
class  QCA::PGPKeyContextProps
 OpenPGP key properties. More...
class  QCA::PKCS12Context
 PKCS#12 provider. More...
class  QCA::PKeyBase
 Public key implementation provider base. More...
class  QCA::PKeyContext
 Public key container provider. More...
class  QCA::Provider
 Algorithm provider. More...
class  QCAPlugin
 Provider plugin base class. More...
class  QCA::RandomContext
 Random provider. More...
class  QCA::RSAContext
 RSA provider. More...
class  QCA::SASLContext
 SASL provider. More...
class  QCA::TLSContext::SessionInfo
 Information about an active TLS connection. More...
class  QCA::SMSContext
 SecureMessageSystem provider. More...
class  QCA::TLSContext
 TLS provider. More...
class  QCA::TLSSessionContext
 TLS "session" provider. More...
-

Detailed Description

-

This group of classes is not normally needed by application writers, but can be used to extend QCA if required.

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/group__UserAPI.html qca2-2.1.0/apidocs/html/group__UserAPI.html --- qca2-2.0.3/apidocs/html/group__UserAPI.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/group__UserAPI.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,193 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA user API - - - - - - -
-

QCA user API

-

This is the main set of QCA classes, intended for use in standard applications. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Classes

class  QCA::AbstractLogDevice
 An abstract log device. More...
class  QCA::Algorithm
 General superclass for an algorithm. More...
class  QCA::Base64
 Base64 encoding / decoding More...
class  QCA::BigInteger
 Arbitrary precision integer. More...
class  QCA::BufferedComputation
 General superclass for buffered computation algorithms. More...
class  QCA::Certificate
 Public Key (X.509) certificate. More...
class  QCA::CertificateAuthority
 A Certificate Authority is used to generate Certificates and Certificate Revocation Lists (CRLs). More...
class  QCA::CertificateChain
 A chain of related Certificates. More...
class  QCA::CertificateCollection
 Bundle of Certificates and CRLs. More...
class  QCA::CertificateInfoOrdered
 Ordered certificate properties type. More...
class  QCA::CertificateInfoPair
 One entry in a certificate information list. More...
class  QCA::CertificateInfoType
 Certificate information type. More...
class  QCA::CertificateOptions
 Certificate options More...
class  QCA::CertificateRequest
 Certificate Request More...
class  QCA::Cipher
 General class for cipher (encryption / decryption) algorithms. More...
class  QCA::CMS
 Cryptographic Message Syntax messaging system. More...
class  QCA::Console
 QCA Console system More...
class  QCA::ConsolePrompt
 Console prompt handler. More...
class  QCA::ConsoleReference
 Manager for a Console. More...
class  QCA::ConstraintType
 Certificate constraint. More...
class  QCA::CRL
 Certificate Revocation List More...
class  QCA::CRLEntry
 Part of a CRL representing a single certificate. More...
class  QCA::DHPrivateKey
 Diffie-Hellman Private Key. More...
class  QCA::DHPublicKey
 Diffie-Hellman Public Key. More...
class  QCA::DirWatch
 Support class to monitor a directory for activity. More...
class  QCA::DLGroup
 A discrete logarithm group. More...
class  QCA::DSAPrivateKey
 Digital Signature Algorithm Private Key. More...
class  QCA::DSAPublicKey
 Digital Signature Algorithm Public Key. More...
class  QCA::Event
 An asynchronous event. More...
class  QCA::EventHandler
 Interface class for password / passphrase / PIN and token handlers. More...
class  QCA::FileWatch
 Support class to monitor a file for activity. More...
class  QCA::Filter
 General superclass for filtering transformation algorithms. More...
class  QCA::Hash
 General class for hashing algorithms. More...
class  QCA::Hex
 Hexadecimal encoding / decoding. More...
class  QCA::InitializationVector
 Container for initialisation vectors and nonces. More...
class  QCA::Initializer
 Convenience method for initialising and cleaning up QCA. More...
class  QCA::KeyBundle
 Certificate chain and private key pair. More...
class  QCA::KeyDerivationFunction
 General superclass for key derivation algorithms. More...
class  QCA::KeyGenerator
 Class for generating asymmetric key pairs. More...
class  QCA::KeyLength
 Simple container for acceptable key lengths. More...
class  QCA::KeyLoader
 Asynchronous private key loader. More...
class  QCA::KeyStore
 General purpose key storage object. More...
class  QCA::KeyStoreEntry
 Single entry in a KeyStore. More...
class  QCA::KeyStoreEntryWatcher
 Class to monitor the availability of a KeyStoreEntry. More...
class  QCA::KeyStoreInfo
 Key store information, outside of a KeyStore object. More...
class  QCA::KeyStoreManager
 Access keystores, and monitor keystores for changes. More...
class  QCA::Logger
 A simple logging system. More...
class  QCA::MemoryRegion
 Array of bytes that may be optionally secured. More...
class  QCA::MessageAuthenticationCode
 General class for message authentication code (MAC) algorithms. More...
class  QCA::OpenPGP
 Pretty Good Privacy messaging system. More...
class  QCA::SASL::Params
 Parameter flags for the SASL authentication. More...
class  QCA::PasswordAsker
 User password / passphrase / PIN handler. More...
class  QCA::PBKDF1
 Password based key derivation function version 1. More...
class  QCA::PBKDF2
 Password based key derivation function version 2. More...
class  QCA::PGPKey
 Pretty Good Privacy key. More...
class  QCA::PKey
 General superclass for public (PublicKey) and private (PrivateKey) keys used with asymmetric encryption techniques. More...
class  QCA::PrivateKey
 Generic private key. More...
class  QCA::PublicKey
 Generic public key. More...
class  QCA::QPipe
 A FIFO buffer (named pipe) abstraction. More...
class  QCA::QPipeDevice
 Unbuffered direct pipe. More...
class  QCA::QPipeEnd
 A buffered higher-level pipe end. More...
class  QCA::Random
 Source of random numbers. More...
class  QCA::RSAPrivateKey
 RSA Private Key. More...
class  QCA::RSAPublicKey
 RSA Public Key. More...
class  QCA::SASL
 Simple Authentication and Security Layer protocol implementation. More...
class  QCA::SecureArray
 Secure array of bytes. More...
class  QCA::SecureLayer
 Abstract interface to a security layer. More...
class  QCA::SecureMessage
 Class representing a secure message. More...
class  QCA::SecureMessageKey
 Key for SecureMessage system. More...
class  QCA::SecureMessageSignature
 SecureMessage signature. More...
class  QCA::SecureMessageSystem
 Abstract superclass for secure messaging systems. More...
class  QCA::SymmetricKey
 Container for keys for symmetric encryption algorithms. More...
class  QCA::SyncThread
 Convenience class to run a thread and interact with it synchronously. More...
class  QCA::TextFilter
 Superclass for text based filtering algorithms. More...
class  QCA::TLS
 Transport Layer Security / Secure Socket Layer. More...
class  QCA::TLSSession
 Session token, used for TLS resuming. More...
class  QCA::TokenAsker
 User token handler. More...
-

Detailed Description

-

This is the main set of QCA classes, intended for use in standard applications.

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/hashing.html qca2-2.1.0/apidocs/html/hashing.html --- qca2-2.0.3/apidocs/html/hashing.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/hashing.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ - - - - -Qt Cryptographic Architecture: Hashing Algorithms - - - - - - -
- - -

Hashing Algorithms

There are a range of hashing algorithms available in QCA.

-

Hashing algorithms are used with the Hash and MessageAuthenticationCode classes.

-

The MD2 algorithm takes an arbitrary data stream, known as the message and outputs a condensed 128 bit (16 byte) representation of that data stream, known as the message digest. This algorithm is considered slightly more secure than MD5, but is more expensive to compute. Unless backward compatibility or interoperability are considerations, you are better off using the SHA1 or RIPEMD160 hashing algorithms. For more information on MD2, see B. Kalinski RFC1319 "The %MD2 - Message-Digest Algorithm". The label for MD2 is "md2".

-

The MD4 algorithm takes an arbitrary data stream, known as the message and outputs a condensed 128 bit (16 byte) representation of that data stream, known as the message digest. MD4 is not considered to be secure, based on known attacks. It should only be used for applications where collision attacks are not a consideration (for example, as used in the rsync algorithm for fingerprinting blocks of data). If a secure hash is required, you are better off using the SHA1 or RIPEMD160 hashing algorithms. MD2 and MD5 are both stronger 128 bit hashes. For more information on MD4, see R. Rivest RFC1320 "The %MD4 Message-Digest Algorithm". The label for MD4 is "md4".

-

The MD5 takes an arbitrary data stream, known as the message and outputs a condensed 128 bit (16 byte) representation of that data stream, known as the message digest. MD5 is not considered to be secure, based on known attacks. It should only be used for applications where collision attacks are not a consideration. If a secure hash is required, you are better off using the SHA1 or RIPEMD160 hashing algorithms. For more information on MD5, see R. Rivest RFC1321 "The %MD5 - Message-Digest Algorithm". The label for MD5 is "md5".

-

The RIPEMD160 algorithm takes an arbitrary data stream, known as the message (up to $2^{64}$ bits in length) and outputs a condensed 160 bit (20 byte) representation of that data stream, known as the message digest. The RIPEMD160 algorithm is considered secure in that it is considered computationally infeasible to find the message that produced the message digest. The label for RIPEMD160 is "ripemd160".

-

The SHA-0 algorithm is a 160 bit hashing function, no longer recommended for new applications because of known (partial) attacks against it. The label for SHA-0 is "sha0".

-

The SHA-1 algorithm takes an arbitrary data stream, known as the message (up to $2^{64}$ bits in length) and outputs a condensed 160 bit (20 byte) representation of that data stream, known as the message digest. SHA-1 is considered secure in that it is considered computationally infeasible to find the message that produced the message digest. For more information on the SHA-1 algorithm,, see Federal Information Processing Standard Publication 180-2 "Specifications for the - Secure %Hash Standard", available from http://csrc.nist.gov/publications/. The label for SHA-1 is "sha1".

-

The SHA-224 algorithm takes an arbitrary data stream, known as the message (up to $2^{64}$ bits in length) and outputs a condensed 224 bit (28 byte) representation of that data stream, known as the message digest. SHA-224 is a "cut down" version of SHA-256, and you may be better off using SHA-256 in new designs. The SHA-224 algorithm is considered secure in that it is considered computationally infeasible to find the message that produced the message digest. For more information on SHA-224, see Federal Information Processing Standard Publication 180-2 "Specifications for the Secure %Hash - Standard", with change notice 1, available from http://csrc.nist.gov/publications/. The label for SHA-224 is "sha224".

-

The SHA-256 algorithm takes an arbitrary data stream, known as the message (up to $2^{64}$ bits in length) and outputs a condensed 256 bit (32 byte) representation of that data stream, known as the message digest. The SHA-256 algorithm is considered secure in that it is considered computationally infeasible to find the message that produced the message digest. For more information on SHA-256, see Federal Information Processing Standard Publication 180-2 "Specifications for the Secure %Hash Standard", available from http://csrc.nist.gov/publications/. The label for SHA-256 is "sha256".

-

The SHA-384 algorithm takes an arbitrary data stream, known as the message (up to $2^{128}$ bits in length) and outputs a condensed 384 bit (48 byte) representation of that data stream, known as the message digest. The SHA-384 algorithm is a "cut down" version of SHA-512, and you may be better off using SHA-512 in new designs. The SHA-384 algorithm is considered secure in that it is considered computationally infeasible to find the message that produced the message digest. For more information on SHA-384, see Federal Information Processing Standard Publication 180-2 "Specifications for the Secure %Hash Standard", available from http://csrc.nist.gov/publications/. The label for SHA-384 is "sha384".

-

The SHA-512 algorithm takes an arbitrary data stream, known as the message (up to $2^{128}$ bits in length) and outputs a condensed 512 bit (64 byte) representation of that data stream, known as the message digest. The SHA-512 algorithm is considered secure in that it is considered computationally infeasible to find the message that produced the message digest. For more information on SHA-512, see Federal Information Processing Standard Publication 180-2 "Specifications for the Secure %Hash Standard", available from http://csrc.nist.gov/publications/. The label for SHA-512 is "sha512".

-

The Whirlpool algorithm takes an arbitrary data stream, known as the message (up to $2^{256}$ bits in length) and outputs a condensed 512 bit (64 byte) representation of that data stream, known as the message digest. The Whirlpool algorithm is considered secure in that it is considered computationally infeasible to find the message that produced the message digest. For more information on Whirlpool, see http://paginas.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html or ISO/IEC 10118-3:2004. The label for Whirlpool is "whirlpool".

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/hashtest.cpp-example.html qca2-2.1.0/apidocs/html/hashtest.cpp-example.html --- qca2-2.0.3/apidocs/html/hashtest.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/hashtest.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,106 +0,0 @@ - - - - -Qt Cryptographic Architecture: hashtest.cpp - - - - - - -
-

hashtest.cpp

The code below shows how to use the QCA::Hash class

-
/*
- Copyright (C) 2004 Brad Hards <bradh@frogmouth.net>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-// QtCrypto/QtCrypto has the declarations for all of QCA
-#include <QtCrypto>
-
-#include <QCoreApplication>
-
-#include <stdio.h>
-
-int main(int argc, char **argv)
-{
-        // the Initializer object sets things up, and
-        // also does cleanup when it goes out of scope
-        QCA::Initializer init;
-
-        QCoreApplication app(argc, argv);
-
-        // we use the first argument if provided, or
-        // use "hello" if no arguments
-        QCA::SecureArray arg = (argc >= 2) ? argv[1] : "hello";
-
-        // must always check that an algorithm is supported before using it
-        if( !QCA::isSupported("sha1") )
-                printf("SHA1 not supported!\n");
-        else {
-                // this shows the "all in one" approach
-                QString result = QCA::Hash("sha1").hashToString(arg);
-                printf("sha1(\"%s\") = [%s]\n", arg.data(), result.toAscii().data());
-        }
-
-        // must always check that an algorithm is supported before using it
-        if( !QCA::isSupported("md5") )
-                printf("MD5 not supported!\n");
-        else {
-                // this shows the incremental approach. Naturally
-                // for this simple job, we could use the "all in one"
-                // approach - this is an example, after all :-)
-                QCA::SecureArray part1(arg.toByteArray().left(3)); // three chars - "hel"
-                QCA::SecureArray part2(arg.toByteArray().mid(3)); // the rest - "lo"
-
-                // create the required object.
-                QCA::Hash hashObject("md5");
-                // we split it into two parts to show incremental update
-                hashObject.update(part1);
-                hashObject.update(part2);
-                // no more updates after calling final.
-                QCA::SecureArray resultArray = hashObject.final();
-                // convert the result into printable hexadecimal.
-                QString result = QCA::arrayToHex(resultArray.toByteArray());
-                printf("md5(\"%s\") = [%s]\n", arg.data(), result.toAscii().data());
-        }
-
-        return 0;
-}
-
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/hextest.cpp-example.html qca2-2.1.0/apidocs/html/hextest.cpp-example.html --- qca2-2.0.3/apidocs/html/hextest.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/hextest.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,98 +0,0 @@ - - - - -Qt Cryptographic Architecture: hextest.cpp - - - - - - -
-

hextest.cpp

The code below shows some simple operations on a QCA::Hex object, converting between QCA::SecureArray and QString.

-
/*
- Copyright (C) 2005 Brad Hards <bradh@frogmouth.net>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-// QtCrypto has the declarations for all of QCA
-#include <QtCrypto>
-
-#include <QCoreApplication>
-
-#include <iostream>
-
-int main(int argc, char **argv)
-{
-        // the Initializer object sets things up, and
-        // also does cleanup when it goes out of scope
-        QCA::Initializer init;
-
-        QCoreApplication app(argc, argv);
-
-        // we use the first argument as the data to encode / decode
-        // if an argument is provided. Use "hello" if no argument
-        QByteArray arg; // empty array
-        arg.append((argc >= 2) ? argv[1] : "hello");
-
-        // create our object, which does encoding by default
-        // QCA::Hex encoder(QCA::Encode); is equivalent
-        QCA::Hex encoder;
-
-        // You might prefer to use encoder.encode(); and have
-        // it return a QCA::SecureArray, depending on your needs
-        QString encoded = encoder.arrayToString(arg);
-
-        std::cout << arg.data() << " in hex encoding is ";
-        std::cout << encoded.toLatin1().data() << std::endl;
-
-        // This time, we'll create an object to decode hexadecimal.
-        // We could also have reused the existing object, calling
-        // clear(); and setup(QCA::Decode); on it.
-        QCA::Hex decoder(QCA::Decode);
-
-        // This time, we convert a QString into a QString
-        QString decoded = decoder.decodeString(encoded);
-
-        std::cout << encoded.toLatin1().data() << " decoded from hex is ";
-        std::cout << decoded.toLatin1().data() << std::endl;
-
-        return 0;
-}
-
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/hierarchy.html qca2-2.1.0/apidocs/html/hierarchy.html --- qca2-2.0.3/apidocs/html/hierarchy.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/hierarchy.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,211 +0,0 @@ - - - - -Qt Cryptographic Architecture: Hierarchical Index - - - - - - -
-

Class Hierarchy

-

Go to the graphical class hierarchy

-This inheritance list is sorted roughly, but not completely, alphabetically: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/index.html qca2-2.1.0/apidocs/html/index.html --- qca2-2.0.3/apidocs/html/index.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/index.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,124 +0,0 @@ - - - - -Qt Cryptographic Architecture: Qt Cryptographic Architecture - - - - - - -
-

Qt Cryptographic Architecture

Taking a hint from the similarly-named Java Cryptography Architecture, QCA aims to provide a straightforward and cross-platform cryptographic API, using Qt datatypes and conventions. QCA separates the API from the implementation, using plugins known as Providers. The advantage of this model is to allow applications to avoid linking to or explicitly depending on any particular cryptographic library. This allows one to easily change or upgrade Provider implementations without even needing to recompile the application!

-

QCA should work everywhere Qt does, including Windows/Unix/MacOSX. This version of QCA is for Qt4, and requires no Qt3 compatibility code.

-

-Features

-

This library provides an easy API for the following features:

- -

Functionality is supplied via plugins. This is useful for avoiding dependence on a particular crypto library and makes upgrading easier, as there is no need to recompile your application when adding or upgrading a crypto plugin. Also, by pushing crypto functionality into plugins, your application is free of legal issues, such as export regulation.

-

And of course, you get a very simple crypto API for Qt, where you can do things like:

-
   QString hash = QCA::Hash("sha1").hashToString(blockOfData);
-

-Using QCA

-

The application simply includes <QtCrypto> and links to libqca, which provides the 'wrapper API' and plugin loader. Crypto functionality is determined during runtime, and plugins are loaded from the 'crypto' subfolder of the Qt library paths. There are additional examples available.

-

-Introduction

-

Using QCA is much like using Qt, and if you are familiar with Qt, then it should feel "natural". There are a few things you do need to know though, to build reliable applications:

- -

-Thoughts on security

-

QCA tries to be flexible in what it supports. That does not mean that every possible combination of features makes sense though.

-

We strongly recommend against coming up with your own design made up of low-level cryptographic primitives (e.g. QCA::Hash, QCA::Cipher and similar features) and trying to use higher level capabilities. In particular, we recommend looking at QCA::TLS, QCA::SASL, QCA::CMS and QCA::OpenPGP as starting points.

-

When selecting a particular cryptographic feature, you should make sure that you understand what sort of threats your application is likely to be exposed to, and how that threat can be effectively countered. In addition, you should consider whether you can avoid adding cryptographic features directly to your application (e.g. for secure transport, you may be able to tunnel your application over SSH).

-

Also, you may need to look beyond QCA for some security needs (e.g. for authentication, your situation may be more suited to using Kerberos than SASL or TLS).

-

-Design

-

The architecture of QCA is shown below:

-
-qca-arch.png -

QCA Architecture

-

Application authors normally only need to use the User API. The provider API is available for plugin authors, but can also be used by application authors to provide very specific capabilities.

-

For more information on the design of QCA, you might like to review the Architecture description.

-

-Availability

-

-Releases

-

The latest release packages can be found in the QCA 2.0 download area.

-

See the project web site for further information about QCA releases.

-

-Current development

-

The latest version of the code is available from the KDE Subversion server (there is no formal release of the current version at this time). See http://developer.kde.org/source/anonsvn.html for general instructions. You do not need kdelibs or arts modules for QCA - just pull down kdesupport/qca. The plugins are in the same tree. Naturally you will need Qt properly set up and configured in order to build and use QCA.

-

The Subversion code can also be browsed via the web

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__0.map qca2-2.1.0/apidocs/html/inherit__graph__0.map --- qca2-2.0.3/apidocs/html/inherit__graph__0.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__0.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__0.md5 qca2-2.1.0/apidocs/html/inherit__graph__0.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__0.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__0.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -1afe9a58695988337979e4ba1f9e06f1 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__0.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__0.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__10.map qca2-2.1.0/apidocs/html/inherit__graph__10.map --- qca2-2.0.3/apidocs/html/inherit__graph__10.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__10.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__10.md5 qca2-2.1.0/apidocs/html/inherit__graph__10.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__10.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__10.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5fe65923cae6f7f744fd72e96c674867 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__10.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__10.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__11.map qca2-2.1.0/apidocs/html/inherit__graph__11.map --- qca2-2.0.3/apidocs/html/inherit__graph__11.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__11.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__11.md5 qca2-2.1.0/apidocs/html/inherit__graph__11.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__11.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__11.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -bb782da0b1f89a8c29b1063ea6483a1a \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__11.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__11.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__12.map qca2-2.1.0/apidocs/html/inherit__graph__12.map --- qca2-2.0.3/apidocs/html/inherit__graph__12.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__12.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__12.md5 qca2-2.1.0/apidocs/html/inherit__graph__12.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__12.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__12.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -6db842232bd5cf2c74490ee3de131b16 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__12.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__12.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__13.map qca2-2.1.0/apidocs/html/inherit__graph__13.map --- qca2-2.0.3/apidocs/html/inherit__graph__13.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__13.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__13.md5 qca2-2.1.0/apidocs/html/inherit__graph__13.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__13.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__13.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -8af95ad1209179d76053ebb0d22301e4 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__13.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__13.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__14.map qca2-2.1.0/apidocs/html/inherit__graph__14.map --- qca2-2.0.3/apidocs/html/inherit__graph__14.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__14.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__14.md5 qca2-2.1.0/apidocs/html/inherit__graph__14.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__14.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__14.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -85a58b0acdd6f1d5c714857678700106 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__14.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__14.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__15.map qca2-2.1.0/apidocs/html/inherit__graph__15.map --- qca2-2.0.3/apidocs/html/inherit__graph__15.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__15.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__15.md5 qca2-2.1.0/apidocs/html/inherit__graph__15.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__15.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__15.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -b9bcebebba780eb8c7a5be7d797abe83 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__15.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__15.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__16.map qca2-2.1.0/apidocs/html/inherit__graph__16.map --- qca2-2.0.3/apidocs/html/inherit__graph__16.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__16.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__16.md5 qca2-2.1.0/apidocs/html/inherit__graph__16.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__16.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__16.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -3f89898e2d4b483743d73535d6a792c6 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__16.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__16.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__17.map qca2-2.1.0/apidocs/html/inherit__graph__17.map --- qca2-2.0.3/apidocs/html/inherit__graph__17.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__17.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__17.md5 qca2-2.1.0/apidocs/html/inherit__graph__17.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__17.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__17.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -b26f9e3c84f25e430acd845b034bf797 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__17.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__17.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__18.map qca2-2.1.0/apidocs/html/inherit__graph__18.map --- qca2-2.0.3/apidocs/html/inherit__graph__18.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__18.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__18.md5 qca2-2.1.0/apidocs/html/inherit__graph__18.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__18.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__18.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -3e07a98b81080b6edeca788e605da9a1 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__18.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__18.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__19.map qca2-2.1.0/apidocs/html/inherit__graph__19.map --- qca2-2.0.3/apidocs/html/inherit__graph__19.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__19.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__19.md5 qca2-2.1.0/apidocs/html/inherit__graph__19.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__19.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__19.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -c56583ba43766dfb82f9b2f1f0cd46b7 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__19.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__19.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__1.map qca2-2.1.0/apidocs/html/inherit__graph__1.map --- qca2-2.0.3/apidocs/html/inherit__graph__1.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__1.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__1.md5 qca2-2.1.0/apidocs/html/inherit__graph__1.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__1.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__1.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -9dc24170614e5358218ee97bbb53c742 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__1.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__1.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__20.map qca2-2.1.0/apidocs/html/inherit__graph__20.map --- qca2-2.0.3/apidocs/html/inherit__graph__20.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__20.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__20.md5 qca2-2.1.0/apidocs/html/inherit__graph__20.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__20.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__20.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -abf59b35568345558372886ec46fa6e1 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__20.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__20.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__21.map qca2-2.1.0/apidocs/html/inherit__graph__21.map --- qca2-2.0.3/apidocs/html/inherit__graph__21.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__21.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__21.md5 qca2-2.1.0/apidocs/html/inherit__graph__21.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__21.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__21.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -567b3692e8449d58edbc25aef1c23453 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__21.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__21.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__22.map qca2-2.1.0/apidocs/html/inherit__graph__22.map --- qca2-2.0.3/apidocs/html/inherit__graph__22.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__22.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__22.md5 qca2-2.1.0/apidocs/html/inherit__graph__22.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__22.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__22.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -7637b3b818f1806047b21d548b114de7 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__22.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__22.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__23.map qca2-2.1.0/apidocs/html/inherit__graph__23.map --- qca2-2.0.3/apidocs/html/inherit__graph__23.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__23.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__23.md5 qca2-2.1.0/apidocs/html/inherit__graph__23.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__23.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__23.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -57d87a619ccb52b337338ec71f36358a \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__23.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__23.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__24.map qca2-2.1.0/apidocs/html/inherit__graph__24.map --- qca2-2.0.3/apidocs/html/inherit__graph__24.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__24.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__24.md5 qca2-2.1.0/apidocs/html/inherit__graph__24.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__24.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__24.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -aa13478da46772d8840bf6f16c9c955c \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__24.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__24.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__25.map qca2-2.1.0/apidocs/html/inherit__graph__25.map --- qca2-2.0.3/apidocs/html/inherit__graph__25.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__25.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__25.md5 qca2-2.1.0/apidocs/html/inherit__graph__25.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__25.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__25.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -3ced73bcbe34c0b4c3573a0c65a3b67a \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__25.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__25.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__26.map qca2-2.1.0/apidocs/html/inherit__graph__26.map --- qca2-2.0.3/apidocs/html/inherit__graph__26.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__26.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__26.md5 qca2-2.1.0/apidocs/html/inherit__graph__26.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__26.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__26.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -b029c4501244bcee751470cbb5cb6b43 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__26.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__26.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__27.map qca2-2.1.0/apidocs/html/inherit__graph__27.map --- qca2-2.0.3/apidocs/html/inherit__graph__27.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__27.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__27.md5 qca2-2.1.0/apidocs/html/inherit__graph__27.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__27.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__27.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -a1705da5fdc777816a8ac3b13d560571 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__27.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__27.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__28.map qca2-2.1.0/apidocs/html/inherit__graph__28.map --- qca2-2.0.3/apidocs/html/inherit__graph__28.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__28.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__28.md5 qca2-2.1.0/apidocs/html/inherit__graph__28.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__28.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__28.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -e4a105d9e981021268cb34a61ec6e3dd \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__28.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__28.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__29.map qca2-2.1.0/apidocs/html/inherit__graph__29.map --- qca2-2.0.3/apidocs/html/inherit__graph__29.map 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__29.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__29.md5 qca2-2.1.0/apidocs/html/inherit__graph__29.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__29.md5 2010-11-27 21:30:36.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__29.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -90e7a8b4c106ae7bc000f6742556cd64 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__29.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__29.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__2.map qca2-2.1.0/apidocs/html/inherit__graph__2.map --- qca2-2.0.3/apidocs/html/inherit__graph__2.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__2.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__2.md5 qca2-2.1.0/apidocs/html/inherit__graph__2.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__2.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__2.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -b7b9651284fec179aa6020a5d4f40304 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__2.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__2.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__3.map qca2-2.1.0/apidocs/html/inherit__graph__3.map --- qca2-2.0.3/apidocs/html/inherit__graph__3.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__3.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__3.md5 qca2-2.1.0/apidocs/html/inherit__graph__3.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__3.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__3.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -7953d18d3a3c37cc25b384f73d6a4076 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__3.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__3.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__4.map qca2-2.1.0/apidocs/html/inherit__graph__4.map --- qca2-2.0.3/apidocs/html/inherit__graph__4.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__4.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__4.md5 qca2-2.1.0/apidocs/html/inherit__graph__4.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__4.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__4.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -28ab18b16b9a976e72dc55e6abed7bd3 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__4.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__4.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__5.map qca2-2.1.0/apidocs/html/inherit__graph__5.map --- qca2-2.0.3/apidocs/html/inherit__graph__5.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__5.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__5.md5 qca2-2.1.0/apidocs/html/inherit__graph__5.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__5.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__5.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -cb9e73e802b36748e679217b76198333 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__5.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__5.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__6.map qca2-2.1.0/apidocs/html/inherit__graph__6.map --- qca2-2.0.3/apidocs/html/inherit__graph__6.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__6.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__6.md5 qca2-2.1.0/apidocs/html/inherit__graph__6.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__6.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__6.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -f45b76b15def12fe171affe1bd39a7cd \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__6.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__6.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__7.map qca2-2.1.0/apidocs/html/inherit__graph__7.map --- qca2-2.0.3/apidocs/html/inherit__graph__7.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__7.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__7.md5 qca2-2.1.0/apidocs/html/inherit__graph__7.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__7.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__7.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -acc43401ca417a4d58dd63ca7926355e \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__7.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__7.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__8.map qca2-2.1.0/apidocs/html/inherit__graph__8.map --- qca2-2.0.3/apidocs/html/inherit__graph__8.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__8.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__8.md5 qca2-2.1.0/apidocs/html/inherit__graph__8.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__8.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__8.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -ba351aefc688134040b47e56a3385899 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__8.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__8.png differ diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__9.map qca2-2.1.0/apidocs/html/inherit__graph__9.map --- qca2-2.0.3/apidocs/html/inherit__graph__9.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__9.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/inherit__graph__9.md5 qca2-2.1.0/apidocs/html/inherit__graph__9.md5 --- qca2-2.0.3/apidocs/html/inherit__graph__9.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherit__graph__9.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -a03ba5b3be037987d7acfce1470caf4b \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/inherit__graph__9.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/inherit__graph__9.png differ diff -Nru qca2-2.0.3/apidocs/html/inherits.html qca2-2.1.0/apidocs/html/inherits.html --- qca2-2.0.3/apidocs/html/inherits.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/inherits.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,132 +0,0 @@ - - - - -Qt Cryptographic Architecture: Graphical Class Hierarchy - - - - - - -
-

Graphical Class Hierarchy

-

Go to the textual class hierarchy

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/installdox qca2-2.1.0/apidocs/html/installdox --- qca2-2.0.3/apidocs/html/installdox 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/installdox 1970-01-01 00:00:00.000000000 +0000 @@ -1,117 +0,0 @@ -#!/usr/bin/perl - -%subst = ( "qt.tag", ""); -$quiet = 0; - -if (open(F,"search.cfg")) -{ - $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; - $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; -} - -while ( @ARGV ) { - $_ = shift @ARGV; - if ( s/^-// ) { - if ( /^l(.*)/ ) { - $v = ($1 eq "") ? shift @ARGV : $1; - ($v =~ /\/$/) || ($v .= "/"); - $_ = $v; - if ( /(.+)\@(.+)/ ) { - if ( exists $subst{$1} ) { - $subst{$1} = $2; - } else { - print STDERR "Unknown tag file $1 given with option -l\n"; - &usage(); - } - } else { - print STDERR "Argument $_ is invalid for option -l\n"; - &usage(); - } - } - elsif ( /^q/ ) { - $quiet = 1; - } - elsif ( /^\?|^h/ ) { - &usage(); - } - else { - print STDERR "Illegal option -$_\n"; - &usage(); - } - } - else { - push (@files, $_ ); - } -} - -foreach $sub (keys %subst) -{ - if ( $subst{$sub} eq "" ) - { - print STDERR "No substitute given for tag file `$sub'\n"; - &usage(); - } - elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) - { - print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; - } -} - -if ( ! @files ) { - if (opendir(D,".")) { - foreach $file ( readdir(D) ) { - $match = ".html"; - next if ( $file =~ /^\.\.?$/ ); - ($file =~ /$match/) && (push @files, $file); - ($file =~ "tree.js") && (push @files, $file); - } - closedir(D); - } -} - -if ( ! @files ) { - print STDERR "Warning: No input files given and none found!\n"; -} - -foreach $f (@files) -{ - if ( ! $quiet ) { - print "Editing: $f...\n"; - } - $oldf = $f; - $f .= ".bak"; - unless (rename $oldf,$f) { - print STDERR "Error: cannot rename file $oldf\n"; - exit 1; - } - if (open(F,"<$f")) { - unless (open(G,">$oldf")) { - print STDERR "Error: opening file $oldf for writing\n"; - exit 1; - } - if ($oldf ne "tree.js") { - while () { - s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; - print G "$_"; - } - } - else { - while () { - s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; - print G "$_"; - } - } - } - else { - print STDERR "Warning file $f does not exist\n"; - } - unlink $f; -} - -sub usage { - print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; - print STDERR "Options:\n"; - print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; - print STDERR " -q Quiet mode\n\n"; - exit 1; -} diff -Nru qca2-2.0.3/apidocs/html/keyloader.cpp-example.html qca2-2.1.0/apidocs/html/keyloader.cpp-example.html --- qca2-2.0.3/apidocs/html/keyloader.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/keyloader.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,148 +0,0 @@ - - - - -Qt Cryptographic Architecture: keyloader.cpp - - - - - - -
-

keyloader.cpp

The code below shows how to load a private key from a PEM format file, including handling any requirement for a passphrase. This is done using the QCA::KeyLoader class.

-
/*
- Copyright (C) 2007 Justin Karneges <justin@affinix.com>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-// QtCrypto has the declarations for all of QCA
-#include <QtCrypto>
-
-#include <QCoreApplication>
-#include <QTimer>
-
-#include <stdio.h>
-
-class PassphraseHandler: public QObject
-{
-        Q_OBJECT
-public:
-        QCA::EventHandler handler;
-
-        PassphraseHandler(QObject *parent = 0) : QObject(parent)
-        {
-                connect(&handler, SIGNAL(eventReady(int, const QCA::Event &)),
-                        SLOT(eh_eventReady(int, const QCA::Event &)));
-                handler.start();
-        }
-
-private slots:
-        void eh_eventReady(int id, const QCA::Event &event)
-        {
-                if(event.type() == QCA::Event::Password)
-                {
-                        QCA::SecureArray pass;
-                        QCA::ConsolePrompt prompt;
-                        prompt.getHidden("Passphrase");
-                        prompt.waitForFinished();
-                        pass = prompt.result();
-                        handler.submitPassword(id, pass);
-                }
-                else
-                        handler.reject(id);
-        }
-};
-
-class App : public QObject
-{
-        Q_OBJECT
-public:
-        QCA::KeyLoader keyLoader;
-        QString str;
-
-        App()
-        {
-                connect(&keyLoader, SIGNAL(finished()), SLOT(kl_finished()));
-        }
-
-public slots:
-        void start()
-        {
-                keyLoader.loadPrivateKeyFromPEMFile(str);
-        }
-
-signals:
-        void quit();
-
-private slots:
-        void kl_finished()
-        {
-                if(keyLoader.convertResult() == QCA::ConvertGood)
-                {
-                        QCA::PrivateKey key = keyLoader.privateKey();
-                        printf("Loaded successfully.  Bits: %d\n", key.bitSize());
-                }
-                else
-                        printf("Unable to load.\n");
-
-                emit quit();
-        }
-};
-
-int main(int argc, char **argv)
-{
-        QCA::Initializer init;
-        QCoreApplication qapp(argc, argv);
-
-        if(argc < 2)
-        {
-                printf("usage: keyloader [privatekey.pem]\n");
-                return 0;
-        }
-
-        PassphraseHandler passphraseHandler;
-        App app;
-        app.str = argv[1];
-        QObject::connect(&app, SIGNAL(quit()), &qapp, SLOT(quit()));
-        QTimer::singleShot(0, &app, SLOT(start()));
-        qapp.exec();
-        return 0;
-}
-
-#include "keyloader.moc"
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/mactest.cpp-example.html qca2-2.1.0/apidocs/html/mactest.cpp-example.html --- qca2-2.0.3/apidocs/html/mactest.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/mactest.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ - - - - -Qt Cryptographic Architecture: mactest.cpp - - - - - - -
-

mactest.cpp

The code below shows how to use the QCA::MessageAuthenticationCode class

-
/*
- Copyright (C) 2004, 2006 Brad Hards <bradh@frogmouth.net>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-// QtCrypto has the declarations for all of QCA
-#include <QtCrypto>
-
-#include <QCoreApplication>
-#include <QDebug>
-
-// needed for printf
-#include<stdio.h>
-
-int main(int argc, char **argv)
-{
-        // the Initializer object sets things up, and
-        // also does cleanup when it goes out of scope
-        QCA::Initializer init;
-
-        QCoreApplication app(argc, argv);
-
-        qDebug() << "This example shows hashed MAC";
-
-        // we use the first argument as the data to authenticate
-        // if an argument is provided. Use "hello" if no argument
-        QByteArray arg = (argc >= 2) ? argv[1] : "hello";
-
-        // we use the second argument as the key to authenticate
-        // with, if two arguments are provided. Use "secret" as
-        // the key if less than two arguments.
-        QCA::SecureArray key((argc >= 3) ? argv[2] : "secret");
-
-        // must always check that an algorithm is supported before using it
-        if( !QCA::isSupported("hmac(sha1)") ) {
-                printf("HMAC(SHA1) not supported!\n");
-        } else {
-                // create the required object using HMAC with SHA-1, and an
-                // empty key.
-                QCA::MessageAuthenticationCode hmacObject(  "hmac(sha1)", QCA::SecureArray() );
-
-                // create the key
-                QCA::SymmetricKey keyObject(key);
-
-                // set the HMAC object to use the key
-                hmacObject.setup(key);
-                // that could also have been done in the
-                // QCA::MessageAuthenticationCode constructor
-
-                // we split it into two parts to show incremental update
-                QCA::SecureArray part1(arg.left(3)); // three chars - "hel"
-                QCA::SecureArray part2(arg.mid(3)); // the rest - "lo"
-                hmacObject.update(part1);
-                hmacObject.update(part2);
-
-                // no more updates after calling final.
-                QCA::SecureArray resultArray = hmacObject.final();
-
-                // convert the result into printable hexadecimal.
-                QString result = QCA::arrayToHex(resultArray.toByteArray());
-                printf("HMAC(SHA1) of \"%s\" with \"%s\" = [%s]\n", arg.data(), key.data(), result.toLatin1().data());
-        }
-
-        return 0;
-}
-
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/md5crypt.cpp-example.html qca2-2.1.0/apidocs/html/md5crypt.cpp-example.html --- qca2-2.0.3/apidocs/html/md5crypt.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/md5crypt.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,253 +0,0 @@ - - - - -Qt Cryptographic Architecture: md5crypt.cpp - - - - - - -
-

md5crypt.cpp

The code below shows how to calculate an md5crypt based password. This code is compatible with the glibc code.

-
/*
-  Copyright (C) 2007 Carlo Todeschini - Metarete s.r.l. <info@metarete.it>
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to deal
-  in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in
-  all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-  AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-  AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-/*
-  Algorithm inspired by Vladimir Silva's "Secure Java apps on Linux using
-  MD5 crypt" article
-  (http://www-128.ibm.com/developerworks/linux/library/l-md5crypt/)
-*/
-
-#include <QtCrypto>
-#include <QCoreApplication>
-#include <QtDebug>
-#include <stdio.h>
-
-QString to64 ( long v , int size )
-{
-
-    // Character set of the encrypted password: A-Za-z0-9./
-    QString itoa64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-    QString result;
-
-    while ( --size >= 0 )
-    {
-        result.append ( itoa64.at ( ( int )( v & 0x3f ) ) );
-        v = v >> 6;
-    }
-
-    return result;
-
-}
-
-
-int byte2unsigned ( int byteValue )
-{
-
-    int integerToReturn;
-    integerToReturn = (int) byteValue & 0xff;
-    return integerToReturn;
-
-}
-
-QString qca_md5crypt( const QCA::SecureArray &password, const QCA::SecureArray &salt )
-{
-    QCA::SecureArray finalState, magic_string = "$1$";
-
-    // The md5crypt algorithm uses two separate hashes
-    QCA::Hash hash1( "md5" );
-    QCA::Hash hash2( "md5" );
-
-    // MD5 Hash #1: pwd, magic string and salt
-    hash1.update ( password );
-    hash1.update ( magic_string );
-    hash1.update ( salt );
-
-    // MD5 Hash #2: password, salt, password
-    hash2.update ( password );
-    hash2.update ( salt );
-    hash2.update ( password );
-
-    finalState = hash2.final();
-
-    // Two sets of transformations based on the length of the password
-    for ( int i = password.size() ; i > 0 ; i -= 16 )
-    {
-        // Update hash1 from offset value (i > 16 ? 16 : i)
-        hash1.update( finalState.toByteArray().left(i > 16 ? 16 : i));
-    }
-
-    // Clear array bits
-    finalState.fill( 0 );
-
-    for ( int i = password.size() ; i != 0 ; i = i >> 1 )
-    {
-        if ( ( i & 1 ) != 0 )
-        {
-            hash1.update( finalState.toByteArray().left ( 1 ) );
-        }
-        else
-        {
-            hash1.update( password.toByteArray().left ( 1 ) );
-        }
-    }
-
-    finalState = hash1.final();
-
-    // Now build a 1000 entry dictionary...
-    for ( int i = 0 ; i < 1000 ; i++ )
-    {
-
-        hash2.clear();
-
-        if ((i & 1) != 0)
-        {
-            hash2.update ( password );
-        }
-        else
-        {
-            hash2.update ( finalState.toByteArray().left( 16 ));
-        }
-
-        if ((i % 3) != 0)
-        {
-            hash2.update ( salt );
-        }
-
-        if ((i % 7) != 0)
-        {
-            hash2.update ( password );
-        }
-
-        if ((i & 1) != 0)
-        {
-            hash2.update ( finalState.toByteArray().left( 16 ) );
-        }
-        else
-        {
-            hash2.update ( password );
-        }
-
-        finalState = hash2.final();
-    }
-
-    // Create an output string
-    // Salt is part of the encoded password ($1$<string>$)
-    QString encodedString;
-
-    encodedString.append ( magic_string.toByteArray() );
-    encodedString.append ( salt.toByteArray() );
-    encodedString.append ( "$" );
-
-    long l;
-
-    l = ( byte2unsigned (finalState.toByteArray().at(0) ) << 16 |
-          ( byte2unsigned (finalState.toByteArray().at(6)) ) << 8 |
-          byte2unsigned (finalState.toByteArray().at(12)) );
-    encodedString.append ( to64 (l, 4) );
-
-    l = ( byte2unsigned (finalState.toByteArray().at(1)) << 16 |
-          ( byte2unsigned (finalState.toByteArray().at(7))) << 8 |
-          byte2unsigned (finalState.toByteArray().at(13)) );
-    encodedString.append ( to64 (l, 4) );
-
-    l = ( byte2unsigned (finalState.toByteArray().at(2)) << 16 |
-          ( byte2unsigned (finalState.toByteArray().at(8))) << 8 |
-          byte2unsigned (finalState.toByteArray().at(14)) );
-    encodedString.append ( to64 (l, 4) );
-
-    l = ( byte2unsigned (finalState.toByteArray().at(3)) << 16 |
-          ( byte2unsigned (finalState.toByteArray().at(9))) << 8 |
-          byte2unsigned (finalState.toByteArray().at(15)) );
-    encodedString.append ( to64 (l, 4) );
-
-    l = ( byte2unsigned (finalState.toByteArray().at(4)) << 16 |
-          ( byte2unsigned (finalState.toByteArray().at(10))) << 8 |
-          byte2unsigned (finalState.toByteArray().at(5)) );
-    encodedString.append ( to64 (l, 4) );
-
-    l = byte2unsigned (finalState.toByteArray().at(11));
-    encodedString.append ( to64 (l, 2) );
-
-    return encodedString;
-}
-
-int main(int argc, char **argv)
-{
-
-    // the Initializer object sets things up, and
-    // also does cleanup when it goes out of scope
-    QCA::Initializer init;
-
-    QCoreApplication app ( argc, argv );
-
-    QCA::SecureArray password, salt;
-
-    if ( argc < 3 )
-    {
-        printf ( "Usage: %s password salt (salt without $1$)\n" , argv[0] );
-        return 1;
-    }
-
-    password.append( argv[1] );
-
-    salt.append( argv[2] );
-
-    // must always check that an algorithm is supported before using it
-    if( !QCA::isSupported( "md5" ) )
-        printf ("MD5 hash not supported!\n");
-    else
-    {
-        QString result = qca_md5crypt( password, salt );
-
-        printf ("md5crypt     [ %s , %s ] = '%s'\n" , password.data(), salt.data() , qPrintable(result) );
-
-        // this is equivalent if you have GNU libc 2.0
-        // printf( "GNU md5crypt [ %s , %s ] = '%s'\n",  password.data(), salt.data(), crypt( password.data(), ( "$1$"+salt ).data() ) );
-    }
-
-    return 0;
-}
-
-
-
-
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/modules.html qca2-2.1.0/apidocs/html/modules.html --- qca2-2.0.3/apidocs/html/modules.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/modules.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ - - - - -Qt Cryptographic Architecture: Module Index - - - - - - -
-

Modules

Here is a list of all modules: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/namespacemembers_enum.html qca2-2.1.0/apidocs/html/namespacemembers_enum.html --- qca2-2.0.3/apidocs/html/namespacemembers_enum.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/namespacemembers_enum.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
    -
  • CertificateInfoTypeKnown -: QCA -
  • -
  • CertificateRequestFormat -: QCA -
  • -
  • ConstraintTypeKnown -: QCA -
  • -
  • ConvertResult -: QCA -
  • -
  • Direction -: QCA -
  • -
  • DLGroupSet -: QCA -
  • -
  • EncryptionAlgorithm -: QCA -
  • -
  • MemoryMode -: QCA -
  • -
  • PBEAlgorithm -: QCA -
  • -
  • SecurityLevel -: QCA -
  • -
  • SignatureAlgorithm -: QCA -
  • -
  • SignatureFormat -: QCA -
  • -
  • UsageMode -: QCA -
  • -
  • ValidateFlags -: QCA -
  • -
  • Validity -: QCA -
  • -
-
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/namespacemembers_eval.html qca2-2.1.0/apidocs/html/namespacemembers_eval.html --- qca2-2.0.3/apidocs/html/namespacemembers_eval.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/namespacemembers_eval.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,414 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-  - -

- c -

    -
  • ClientAuth -: QCA -
  • -
  • CodeSigning -: QCA -
  • -
  • CommonName -: QCA -
  • -
  • ConvertGood -: QCA -
  • -
  • Country -: QCA -
  • -
  • CRLSign -: QCA -
  • -
- - -

- d -

    -
  • DataEncipherment -: QCA -
  • -
  • DecipherOnly -: QCA -
  • -
  • Decode -: QCA -
  • -
  • DefaultFormat -: QCA -
  • -
  • DERSequence -: QCA -
  • -
  • DigitalSignature -: QCA -
  • -
  • DNS -: QCA -
  • -
  • DSA_1024 -: QCA -
  • -
  • DSA_512 -: QCA -
  • -
  • DSA_768 -: QCA -
  • -
- - -

- e -

    -
  • Email -: QCA -
  • -
  • EmailLegacy -: QCA -
  • -
  • EmailProtection -: QCA -
  • -
  • EME_PKCS1_OAEP -: QCA -
  • -
  • EME_PKCS1v15 -: QCA -
  • -
  • EMSA1_SHA1 -: QCA -
  • -
  • EMSA3_MD2 -: QCA -
  • -
  • EMSA3_MD5 -: QCA -
  • -
  • EMSA3_Raw -: QCA -
  • -
  • EMSA3_RIPEMD160 -: QCA -
  • -
  • EMSA3_SHA1 -: QCA -
  • -
  • EncipherOnly -: QCA -
  • -
  • Encode -: QCA -
  • -
  • ErrorDecode -: QCA -
  • -
  • ErrorExpired -: QCA -
  • -
  • ErrorExpiredCA -: QCA -
  • -
  • ErrorFile -: QCA -
  • -
  • ErrorInvalidCA -: QCA -
  • -
  • ErrorInvalidPurpose -: QCA -
  • -
  • ErrorPassphrase -: QCA -
  • -
  • ErrorPathLengthExceeded -: QCA -
  • -
  • ErrorRejected -: QCA -
  • -
  • ErrorRevoked -: QCA -
  • -
  • ErrorSelfSigned -: QCA -
  • -
  • ErrorSignatureFailed -: QCA -
  • -
  • ErrorUntrusted -: QCA -
  • -
  • ErrorValidityUnknown -: QCA -
  • -
- - -

- i -

    -
  • IEEE_1363 -: QCA -
  • -
  • IETF_1024 -: QCA -
  • -
  • IETF_1536 -: QCA -
  • -
  • IETF_2048 -: QCA -
  • -
  • IETF_3072 -: QCA -
  • -
  • IETF_4096 -: QCA -
  • -
  • IETF_6144 -: QCA -
  • -
  • IETF_768 -: QCA -
  • -
  • IETF_8192 -: QCA -
  • -
  • IncorporationCountry -: QCA -
  • -
  • IncorporationLocality -: QCA -
  • -
  • IncorporationState -: QCA -
  • -
  • IPAddress -: QCA -
  • -
  • IPSecEndSystem -: QCA -
  • -
  • IPSecTunnel -: QCA -
  • -
  • IPSecUser -: QCA -
  • -
- - -

- k -

    -
  • KeyAgreement -: QCA -
  • -
  • KeyCertificateSign -: QCA -
  • -
  • KeyEncipherment -: QCA -
  • -
- - -

- l -

    -
  • Locality -: QCA -
  • -
  • Locking -: QCA -
  • -
  • LockingKeepPrivileges -: QCA -
  • -
- - -

- n -

    -
  • NonRepudiation -: QCA -
  • -
- - -

- o -

    -
  • OCSPSigning -: QCA -
  • -
  • Organization -: QCA -
  • -
  • OrganizationalUnit -: QCA -
  • -
- - -

- p -

    -
  • PBEDefault -: QCA -
  • -
  • PBES2_AES128_SHA1 -: QCA -
  • -
  • PBES2_AES192_SHA1 -: QCA -
  • -
  • PBES2_AES256_SHA1 -: QCA -
  • -
  • PBES2_DES_SHA1 -: QCA -
  • -
  • PBES2_TripleDES_SHA1 -: QCA -
  • -
  • PKCS10 -: QCA -
  • -
  • Practical -: QCA -
  • -
- - -

- s -

    -
  • ServerAuth -: QCA -
  • -
  • SignatureUnknown -: QCA -
  • -
  • SL_Baseline -: QCA -
  • -
  • SL_Export -: QCA -
  • -
  • SL_High -: QCA -
  • -
  • SL_Highest -: QCA -
  • -
  • SL_Integrity -: QCA -
  • -
  • SL_None -: QCA -
  • -
  • SPKAC -: QCA -
  • -
  • State -: QCA -
  • -
- - -

- t -

    -
  • TimeStamping -: QCA -
  • -
- - -

- u -

    -
  • URI -: QCA -
  • -
  • UsageAny -: QCA -
  • -
  • UsageCodeSigning -: QCA -
  • -
  • UsageCRLSigning -: QCA -
  • -
  • UsageEmailProtection -: QCA -
  • -
  • UsageTimeStamping -: QCA -
  • -
  • UsageTLSClient -: QCA -
  • -
  • UsageTLSServer -: QCA -
  • -
- - -

- v -

    -
  • ValidityGood -: QCA -
  • -
- - -

- x -

    -
  • XMPP -: QCA -
  • -
-
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/namespacemembers_func.html qca2-2.1.0/apidocs/html/namespacemembers_func.html --- qca2-2.0.3/apidocs/html/namespacemembers_func.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/namespacemembers_func.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,231 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-  - -

- a -

    -
  • appendPluginDiagnosticText() -: QCA -
  • -
  • appName() -: QCA -
  • -
  • arrayToHex() -: QCA -
  • -
- - -

- c -

    -
  • clearPluginDiagnosticText() -: QCA -
  • -
- - -

- d -

    -
  • defaultFeatures() -: QCA -
  • -
  • defaultProvider() -: QCA -
  • -
  • deinit() -: QCA -
  • -
- - -

- e -

    -
  • emsa3Encode() -: QCA -
  • -
- - -

- f -

    -
  • findProvider() -: QCA -
  • -
- - -

- g -

    -
  • getProperty() -: QCA -
  • -
  • getProviderConfig() -: QCA -
  • -
  • globalRandomProvider() -: QCA -
  • -
- - -

- h -

    -
  • haveSecureMemory() -: QCA -
  • -
  • haveSecureRandom() -: QCA -
  • -
  • haveSystemStore() -: QCA -
  • -
  • hexToArray() -: QCA -
  • -
- - -

- i -

    -
  • init() -: QCA -
  • -
  • insertProvider() -: QCA -
  • -
  • isSupported() -: QCA -
  • -
- - -

- l -

    -
  • logger() -: QCA -
  • -
- - -

- m -

    -
  • makeFriendlyNames() -: QCA -
  • -
- - -

- o -

    -
  • operator+() -: QCA -
  • -
  • orderedDNOnly() -: QCA -
  • -
  • orderedToDNString() -: QCA -
  • -
- - -

- p -

    -
  • pluginDiagnosticText() -: QCA -
  • -
  • providerPriority() -: QCA -
  • -
  • providers() -: QCA -
  • -
- - -

- s -

    -
  • saveProviderConfig() -: QCA -
  • -
  • scanForPlugins() -: QCA -
  • -
  • setAppName() -: QCA -
  • -
  • setGlobalRandomProvider() -: QCA -
  • -
  • setProperty() -: QCA -
  • -
  • setProviderConfig() -: QCA -
  • -
  • setProviderPriority() -: QCA -
  • -
  • supportedFeatures() -: QCA -
  • -
  • systemStore() -: QCA -
  • -
- - -

- u -

    -
  • unloadAllPlugins() -: QCA -
  • -
-
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/namespacemembers.html qca2-2.1.0/apidocs/html/namespacemembers.html --- qca2-2.0.3/apidocs/html/namespacemembers.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/namespacemembers.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,610 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
-Here is a list of all documented namespace members with links to the namespaces they belong to: - -

- a -

    -
  • appendPluginDiagnosticText() -: QCA -
  • -
  • appName() -: QCA -
  • -
  • arrayToHex() -: QCA -
  • -
- - -

- c -

    -
  • CertificateInfo -: QCA -
  • -
  • CertificateInfoTypeKnown -: QCA -
  • -
  • CertificateRequestFormat -: QCA -
  • -
  • clearPluginDiagnosticText() -: QCA -
  • -
  • ClientAuth -: QCA -
  • -
  • CodeSigning -: QCA -
  • -
  • CommonName -: QCA -
  • -
  • Constraints -: QCA -
  • -
  • ConstraintTypeKnown -: QCA -
  • -
  • ConvertGood -: QCA -
  • -
  • ConvertResult -: QCA -
  • -
  • Country -: QCA -
  • -
  • CRLSign -: QCA -
  • -
- - -

- d -

    -
  • DataEncipherment -: QCA -
  • -
  • DecipherOnly -: QCA -
  • -
  • Decode -: QCA -
  • -
  • defaultFeatures() -: QCA -
  • -
  • DefaultFormat -: QCA -
  • -
  • defaultProvider() -: QCA -
  • -
  • deinit() -: QCA -
  • -
  • DERSequence -: QCA -
  • -
  • DigitalSignature -: QCA -
  • -
  • Direction -: QCA -
  • -
  • DLGroupSet -: QCA -
  • -
  • DNS -: QCA -
  • -
  • DSA_1024 -: QCA -
  • -
  • DSA_512 -: QCA -
  • -
  • DSA_768 -: QCA -
  • -
- - -

- e -

    -
  • Email -: QCA -
  • -
  • EmailLegacy -: QCA -
  • -
  • EmailProtection -: QCA -
  • -
  • EME_PKCS1_OAEP -: QCA -
  • -
  • EME_PKCS1v15 -: QCA -
  • -
  • EMSA1_SHA1 -: QCA -
  • -
  • EMSA3_MD2 -: QCA -
  • -
  • EMSA3_MD5 -: QCA -
  • -
  • EMSA3_Raw -: QCA -
  • -
  • EMSA3_RIPEMD160 -: QCA -
  • -
  • EMSA3_SHA1 -: QCA -
  • -
  • emsa3Encode() -: QCA -
  • -
  • EncipherOnly -: QCA -
  • -
  • Encode -: QCA -
  • -
  • EncryptionAlgorithm -: QCA -
  • -
  • ErrorDecode -: QCA -
  • -
  • ErrorExpired -: QCA -
  • -
  • ErrorExpiredCA -: QCA -
  • -
  • ErrorFile -: QCA -
  • -
  • ErrorInvalidCA -: QCA -
  • -
  • ErrorInvalidPurpose -: QCA -
  • -
  • ErrorPassphrase -: QCA -
  • -
  • ErrorPathLengthExceeded -: QCA -
  • -
  • ErrorRejected -: QCA -
  • -
  • ErrorRevoked -: QCA -
  • -
  • ErrorSelfSigned -: QCA -
  • -
  • ErrorSignatureFailed -: QCA -
  • -
  • ErrorUntrusted -: QCA -
  • -
  • ErrorValidityUnknown -: QCA -
  • -
- - -

- f -

    -
  • findProvider() -: QCA -
  • -
- - -

- g -

    -
  • getProperty() -: QCA -
  • -
  • getProviderConfig() -: QCA -
  • -
  • globalRandomProvider() -: QCA -
  • -
- - -

- h -

    -
  • haveSecureMemory() -: QCA -
  • -
  • haveSecureRandom() -: QCA -
  • -
  • haveSystemStore() -: QCA -
  • -
  • hexToArray() -: QCA -
  • -
- - -

- i -

    -
  • IEEE_1363 -: QCA -
  • -
  • IETF_1024 -: QCA -
  • -
  • IETF_1536 -: QCA -
  • -
  • IETF_2048 -: QCA -
  • -
  • IETF_3072 -: QCA -
  • -
  • IETF_4096 -: QCA -
  • -
  • IETF_6144 -: QCA -
  • -
  • IETF_768 -: QCA -
  • -
  • IETF_8192 -: QCA -
  • -
  • IncorporationCountry -: QCA -
  • -
  • IncorporationLocality -: QCA -
  • -
  • IncorporationState -: QCA -
  • -
  • init() -: QCA -
  • -
  • insertProvider() -: QCA -
  • -
  • IPAddress -: QCA -
  • -
  • IPSecEndSystem -: QCA -
  • -
  • IPSecTunnel -: QCA -
  • -
  • IPSecUser -: QCA -
  • -
  • isSupported() -: QCA -
  • -
- - -

- k -

    -
  • KeyAgreement -: QCA -
  • -
  • KeyCertificateSign -: QCA -
  • -
  • KeyEncipherment -: QCA -
  • -
- - -

- l -

    -
  • Locality -: QCA -
  • -
  • Locking -: QCA -
  • -
  • LockingKeepPrivileges -: QCA -
  • -
  • logger() -: QCA -
  • -
- - -

- m -

    -
  • makeFriendlyNames() -: QCA -
  • -
  • MemoryMode -: QCA -
  • -
- - -

- n -

    -
  • NonRepudiation -: QCA -
  • -
- - -

- o -

    -
  • OCSPSigning -: QCA -
  • -
  • operator+() -: QCA -
  • -
  • orderedDNOnly() -: QCA -
  • -
  • orderedToDNString() -: QCA -
  • -
  • Organization -: QCA -
  • -
  • OrganizationalUnit -: QCA -
  • -
- - -

- p -

    -
  • PBEAlgorithm -: QCA -
  • -
  • PBEDefault -: QCA -
  • -
  • PBES2_AES128_SHA1 -: QCA -
  • -
  • PBES2_AES192_SHA1 -: QCA -
  • -
  • PBES2_AES256_SHA1 -: QCA -
  • -
  • PBES2_DES_SHA1 -: QCA -
  • -
  • PBES2_TripleDES_SHA1 -: QCA -
  • -
  • PKCS10 -: QCA -
  • -
  • pluginDiagnosticText() -: QCA -
  • -
  • Practical -: QCA -
  • -
  • ProviderList -: QCA -
  • -
  • providerPriority() -: QCA -
  • -
  • providers() -: QCA -
  • -
- - -

- s -

    -
  • saveProviderConfig() -: QCA -
  • -
  • scanForPlugins() -: QCA -
  • -
  • SecureMessageKeyList -: QCA -
  • -
  • SecureMessageSignatureList -: QCA -
  • -
  • SecurityLevel -: QCA -
  • -
  • ServerAuth -: QCA -
  • -
  • setAppName() -: QCA -
  • -
  • setGlobalRandomProvider() -: QCA -
  • -
  • setProperty() -: QCA -
  • -
  • setProviderConfig() -: QCA -
  • -
  • setProviderPriority() -: QCA -
  • -
  • SignatureAlgorithm -: QCA -
  • -
  • SignatureFormat -: QCA -
  • -
  • SignatureUnknown -: QCA -
  • -
  • SL_Baseline -: QCA -
  • -
  • SL_Export -: QCA -
  • -
  • SL_High -: QCA -
  • -
  • SL_Highest -: QCA -
  • -
  • SL_Integrity -: QCA -
  • -
  • SL_None -: QCA -
  • -
  • SPKAC -: QCA -
  • -
  • State -: QCA -
  • -
  • supportedFeatures() -: QCA -
  • -
  • systemStore() -: QCA -
  • -
- - -

- t -

    -
  • TimeStamping -: QCA -
  • -
- - -

- u -

    -
  • unloadAllPlugins() -: QCA -
  • -
  • URI -: QCA -
  • -
  • UsageAny -: QCA -
  • -
  • UsageCodeSigning -: QCA -
  • -
  • UsageCRLSigning -: QCA -
  • -
  • UsageEmailProtection -: QCA -
  • -
  • UsageMode -: QCA -
  • -
  • UsageTimeStamping -: QCA -
  • -
  • UsageTLSClient -: QCA -
  • -
  • UsageTLSServer -: QCA -
  • -
- - -

- v -

    -
  • ValidateFlags -: QCA -
  • -
  • Validity -: QCA -
  • -
  • ValidityGood -: QCA -
  • -
- - -

- x -

    -
  • XMPP -: QCA -
  • -
-
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/namespacemembers_type.html qca2-2.1.0/apidocs/html/namespacemembers_type.html --- qca2-2.0.3/apidocs/html/namespacemembers_type.html 2010-11-27 21:41:19.000000000 +0000 +++ qca2-2.1.0/apidocs/html/namespacemembers_type.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ - - - - -Qt Cryptographic Architecture: Class Members - - - - - - -
    -
  • CertificateInfo -: QCA -
  • -
  • Constraints -: QCA -
  • -
  • ProviderList -: QCA -
  • -
  • SecureMessageKeyList -: QCA -
  • -
  • SecureMessageSignatureList -: QCA -
  • -
-
-
Generated on Sat Nov 27 13:41:19 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/namespaceQCA.html qca2-2.1.0/apidocs/html/namespaceQCA.html --- qca2-2.0.3/apidocs/html/namespaceQCA.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/namespaceQCA.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,2233 +0,0 @@ - - - - -Qt Cryptographic Architecture: QCA Namespace Reference - - - - - - -
-

QCA Namespace Reference

-

QCA - the Qt Cryptographic Architecture. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Classes

class  AbstractLogDevice
 An abstract log device. More...
class  Algorithm
 General superclass for an algorithm. More...
class  Base64
 Base64 encoding / decoding More...
class  BasicContext
 Base class to use for primitive provider contexts. More...
class  BigInteger
 Arbitrary precision integer. More...
class  BufferedComputation
 General superclass for buffered computation algorithms. More...
class  CAContext
 X.509 certificate authority provider. More...
class  CertBase
 X.509 certificate and certificate request provider base. More...
class  CertCollectionContext
 X.509 certificate collection provider. More...
class  CertContext
 X.509 certificate provider. More...
class  CertContextProps
 X.509 certificate or certificate request properties. More...
class  Certificate
 Public Key (X.509) certificate. More...
class  CertificateAuthority
 A Certificate Authority is used to generate Certificates and Certificate Revocation Lists (CRLs). More...
class  CertificateChain
 A chain of related Certificates. More...
class  CertificateCollection
 Bundle of Certificates and CRLs. More...
class  CertificateInfoOrdered
 Ordered certificate properties type. More...
class  CertificateInfoPair
 One entry in a certificate information list. More...
class  CertificateInfoType
 Certificate information type. More...
class  CertificateOptions
 Certificate options More...
class  CertificateRequest
 Certificate Request More...
class  Cipher
 General class for cipher (encryption / decryption) algorithms. More...
class  CipherContext
 Cipher provider. More...
class  CMS
 Cryptographic Message Syntax messaging system. More...
class  Console
 QCA Console system More...
class  ConsolePrompt
 Console prompt handler. More...
class  ConsoleReference
 Manager for a Console. More...
class  ConstraintType
 Certificate constraint. More...
class  CRL
 Certificate Revocation List More...
class  CRLContext
 X.509 certificate revocation list provider. More...
class  CRLContextProps
 X.509 certificate revocation list properties. More...
class  CRLEntry
 Part of a CRL representing a single certificate. More...
class  CSRContext
 X.509 certificate request provider. More...
class  DHContext
 Diffie-Hellman provider. More...
class  DHPrivateKey
 Diffie-Hellman Private Key. More...
class  DHPublicKey
 Diffie-Hellman Public Key. More...
class  DirWatch
 Support class to monitor a directory for activity. More...
class  DLGroup
 A discrete logarithm group. More...
class  DLGroupContext
 Discrete logarithm provider. More...
class  DSAContext
 DSA provider. More...
class  DSAPrivateKey
 Digital Signature Algorithm Private Key. More...
class  DSAPublicKey
 Digital Signature Algorithm Public Key. More...
class  Event
 An asynchronous event. More...
class  EventHandler
 Interface class for password / passphrase / PIN and token handlers. More...
class  FileWatch
 Support class to monitor a file for activity. More...
class  Filter
 General superclass for filtering transformation algorithms. More...
class  Hash
 General class for hashing algorithms. More...
class  HashContext
 Hash provider. More...
class  Hex
 Hexadecimal encoding / decoding. More...
class  InfoContext
 Extended provider information. More...
class  InitializationVector
 Container for initialisation vectors and nonces. More...
class  Initializer
 Convenience method for initialising and cleaning up QCA. More...
class  KDFContext
 Key derivation function provider. More...
class  KeyBundle
 Certificate chain and private key pair. More...
class  KeyDerivationFunction
 General superclass for key derivation algorithms. More...
class  KeyGenerator
 Class for generating asymmetric key pairs. More...
class  KeyLength
 Simple container for acceptable key lengths. More...
class  KeyLoader
 Asynchronous private key loader. More...
class  KeyStore
 General purpose key storage object. More...
class  KeyStoreEntry
 Single entry in a KeyStore. More...
class  KeyStoreEntryContext
 KeyStoreEntry provider. More...
class  KeyStoreEntryWatcher
 Class to monitor the availability of a KeyStoreEntry. More...
class  KeyStoreInfo
 Key store information, outside of a KeyStore object. More...
class  KeyStoreListContext
 KeyStore provider. More...
class  KeyStoreManager
 Access keystores, and monitor keystores for changes. More...
class  Logger
 A simple logging system. More...
class  MACContext
 Message authentication code provider. More...
class  MemoryRegion
 Array of bytes that may be optionally secured. More...
class  MessageAuthenticationCode
 General class for message authentication code (MAC) algorithms. More...
class  MessageContext
 SecureMessage provider. More...
class  OpenPGP
 Pretty Good Privacy messaging system. More...
class  PasswordAsker
 User password / passphrase / PIN handler. More...
class  PBKDF1
 Password based key derivation function version 1. More...
class  PBKDF2
 Password based key derivation function version 2. More...
class  PGPKey
 Pretty Good Privacy key. More...
class  PGPKeyContext
 OpenPGP key provider. More...
class  PGPKeyContextProps
 OpenPGP key properties. More...
class  PKCS12Context
 PKCS#12 provider. More...
class  PKey
 General superclass for public (PublicKey) and private (PrivateKey) keys used with asymmetric encryption techniques. More...
class  PKeyBase
 Public key implementation provider base. More...
class  PKeyContext
 Public key container provider. More...
class  PrivateKey
 Generic private key. More...
class  Provider
 Algorithm provider. More...
class  PublicKey
 Generic public key. More...
class  QPipe
 A FIFO buffer (named pipe) abstraction. More...
class  QPipeDevice
 Unbuffered direct pipe. More...
class  QPipeEnd
 A buffered higher-level pipe end. More...
class  Random
 Source of random numbers. More...
class  RandomContext
 Random provider. More...
class  RSAContext
 RSA provider. More...
class  RSAPrivateKey
 RSA Private Key. More...
class  RSAPublicKey
 RSA Public Key. More...
class  SASL
 Simple Authentication and Security Layer protocol implementation. More...
class  SASLContext
 SASL provider. More...
class  SecureArray
 Secure array of bytes. More...
class  SecureLayer
 Abstract interface to a security layer. More...
class  SecureMessage
 Class representing a secure message. More...
class  SecureMessageKey
 Key for SecureMessage system. More...
class  SecureMessageSignature
 SecureMessage signature. More...
class  SecureMessageSystem
 Abstract superclass for secure messaging systems. More...
class  SMSContext
 SecureMessageSystem provider. More...
class  SymmetricKey
 Container for keys for symmetric encryption algorithms. More...
class  Synchronizer
 Enable synchronization between two threads. More...
class  SyncThread
 Convenience class to run a thread and interact with it synchronously. More...
class  TextFilter
 Superclass for text based filtering algorithms. More...
class  TLS
 Transport Layer Security / Secure Socket Layer. More...
class  TLSContext
 TLS provider. More...
class  TLSSession
 Session token, used for TLS resuming. More...
class  TLSSessionContext
 TLS "session" provider. More...
class  TokenAsker
 User token handler. More...

Typedefs

typedef QMultiMap
-< CertificateInfoType, QString
CertificateInfo
typedef QList< ConstraintTypeConstraints
typedef QList< Provider * > ProviderList
typedef QList< SecureMessageKeySecureMessageKeyList
typedef QList
-< SecureMessageSignature
SecureMessageSignatureList

Enumerations

enum  CertificateInfoTypeKnown {
-  CommonName, -Email, -EmailLegacy, -Organization, -
-  OrganizationalUnit, -Locality, -IncorporationLocality, -State, -
-  IncorporationState, -Country, -IncorporationCountry, -URI, -
-  DNS, -IPAddress, -XMPP -
- }
enum  CertificateRequestFormat { PKCS10, -SPKAC - }
enum  ConstraintTypeKnown {
-  DigitalSignature, -NonRepudiation, -KeyEncipherment, -DataEncipherment, -
-  KeyAgreement, -KeyCertificateSign, -CRLSign, -EncipherOnly, -
-  DecipherOnly, -ServerAuth, -ClientAuth, -CodeSigning, -
-  EmailProtection, -IPSecEndSystem, -IPSecTunnel, -IPSecUser, -
-  TimeStamping, -OCSPSigning -
- }
enum  ConvertResult { ConvertGood, -ErrorDecode, -ErrorPassphrase, -ErrorFile - }
enum  Direction { Encode, -Decode - }
enum  DLGroupSet {
-  DSA_512, -DSA_768, -DSA_1024, -IETF_768, -
-  IETF_1024, -IETF_1536, -IETF_2048, -IETF_3072, -
-  IETF_4096, -IETF_6144, -IETF_8192 -
- }
enum  EncryptionAlgorithm { EME_PKCS1v15, -EME_PKCS1_OAEP - }
enum  MemoryMode { Practical, -Locking, -LockingKeepPrivileges - }
enum  PBEAlgorithm {
-  PBEDefault, -PBES2_DES_SHA1, -PBES2_TripleDES_SHA1, -PBES2_AES128_SHA1, -
-  PBES2_AES192_SHA1, -PBES2_AES256_SHA1 -
- }
enum  SecurityLevel {
-  SL_None, -SL_Integrity, -SL_Export, -SL_Baseline, -
-  SL_High, -SL_Highest -
- }
enum  SignatureAlgorithm {
-  SignatureUnknown, -EMSA1_SHA1, -EMSA3_SHA1, -EMSA3_MD5, -
-  EMSA3_MD2, -EMSA3_RIPEMD160, -EMSA3_Raw -
- }
enum  SignatureFormat { DefaultFormat, -IEEE_1363, -DERSequence - }
enum  UsageMode {
-  UsageAny = 0x00, -UsageTLSServer = 0x01, -UsageTLSClient = 0x02, -UsageCodeSigning = 0x04, -
-  UsageEmailProtection = 0x08, -UsageTimeStamping = 0x10, -UsageCRLSigning = 0x20 -
- }
enum  ValidateFlags { ValidateAll = 0x00, -ValidateRevoked = 0x01, -ValidateExpired = 0x02, -ValidatePolicy = 0x04 - }
enum  Validity {
-  ValidityGood, -ErrorRejected, -ErrorUntrusted, -ErrorSignatureFailed, -
-  ErrorInvalidCA, -ErrorInvalidPurpose, -ErrorSelfSigned, -ErrorRevoked, -
-  ErrorPathLengthExceeded, -ErrorExpired, -ErrorExpiredCA, -ErrorValidityUnknown = 64 -
- }

Functions

QCA_EXPORT void appendPluginDiagnosticText (const QString &text)
QCA_EXPORT QString appName ()
QCA_EXPORT QString arrayToHex (const QByteArray &array)
QCA_EXPORT void clearPluginDiagnosticText ()
QCA_EXPORT QStringList defaultFeatures ()
QCA_EXPORT ProviderdefaultProvider ()
QCA_EXPORT void deinit ()
QCA_EXPORT QByteArray emsa3Encode (const QString &hashName, const QByteArray &digest, int size=-1)
QCA_EXPORT ProviderfindProvider (const QString &name)
QCA_EXPORT QVariant getProperty (const QString &name)
QCA_EXPORT QVariantMap getProviderConfig (const QString &name)
QCA_EXPORT QString globalRandomProvider ()
QCA_EXPORT bool haveSecureMemory ()
QCA_EXPORT bool haveSecureRandom ()
QCA_EXPORT bool haveSystemStore ()
QCA_EXPORT QByteArray hexToArray (const QString &hexString)
QCA_EXPORT void init (MemoryMode m, int prealloc)
QCA_EXPORT void init ()
QCA_EXPORT bool insertProvider (Provider *p, int priority=0)
QCA_EXPORT bool isSupported (const QStringList &features, const QString &provider=QString())
QCA_EXPORT bool isSupported (const char *features, const QString &provider=QString())
QCA_EXPORT Loggerlogger ()
QCA_EXPORT QStringList makeFriendlyNames (const QList< Certificate > &list)
QCA_EXPORT const SecureArray operator+ (const SecureArray &a, const SecureArray &b)
QCA_EXPORT CertificateInfoOrdered orderedDNOnly (const CertificateInfoOrdered &in)
QCA_EXPORT QString orderedToDNString (const CertificateInfoOrdered &in)
QCA_EXPORT QString pluginDiagnosticText ()
QCA_EXPORT int providerPriority (const QString &name)
QCA_EXPORT ProviderList providers ()
QCA_EXPORT void saveProviderConfig (const QString &name)
QCA_EXPORT void scanForPlugins ()
QCA_EXPORT void setAppName (const QString &name)
QCA_EXPORT void setGlobalRandomProvider (const QString &provider)
QCA_EXPORT void setProperty (const QString &name, const QVariant &value)
QCA_EXPORT void setProviderConfig (const QString &name, const QVariantMap &config)
QCA_EXPORT void setProviderPriority (const QString &name, int priority)
QCA_EXPORT QStringList supportedFeatures ()
QCA_EXPORT CertificateCollection systemStore ()
QCA_EXPORT void unloadAllPlugins ()
-

Detailed Description

-

QCA - the Qt Cryptographic Architecture.

-

Typedef Documentation

- -
- -
- -

Certificate properties type.

-

With this container, the information is not necessarily stored in the same sequence as the certificate format itself. Use this container if the order the information is/was stored does not matter for you (this is the case with most applications).

-

Additionally, the EmailLegacy type should not be used with this container. Use Email instead.

- -
-
- -
-
- - - - -
typedef QList<ConstraintType> QCA::Constraints
-
-
- -

Certificate constraints type

- -
-
- -
-
- - - - -
typedef QList<Provider*> QCA::ProviderList
-
-
- -

Convenience representation for the plugin providers.

-

You can get a list of providers using the providers() function

-
See also:
ProviderListIterator
-
-providers()
- -
-
- -
- -
- -

A list of message keys.

- -
-
- -
- -
- -

A list of signatures.

- -
-
-

Enumeration Type Documentation

- -
- -
- -

Certificate Request Format.

-
Enumerator:
- - -
PKCS10  -

standard PKCS#10 format

-
SPKAC  -

Signed Public Key and Challenge (Netscape) format.

-
-
-
- -
-
- -
- -
- -

Known types of information stored in certificates.

-

This enumerator offers a convenient way to work with common types.

-
Enumerator:
- - - - - - - - - - - - - - - -
CommonName  -

The common name (eg person), id = "2.5.4.3".

-
Email  -

Email address, id = "GeneralName.rfc822Name".

-
EmailLegacy  -

PKCS#9 Email field, id = "1.2.840.113549.1.9.1".

-
Organization  -

An organisation (eg company), id = "2.5.4.10".

-
OrganizationalUnit  -

An part of an organisation (eg a division or branch), id = "2.5.4.11".

-
Locality  -

The locality (eg city, a shire, or part of a state), id = "2.5.4.7".

-
IncorporationLocality  -

The locality of incorporation (EV certificates), id = "1.3.6.1.4.1.311.60.2.1.1".

-
State  -

The state within the country, id = "2.5.4.8".

-
IncorporationState  -

The state of incorporation (EV certificates), id = "1.3.6.1.4.1.311.60.2.1.2".

-
Country  -

The country, id = "2.5.4.6".

-
IncorporationCountry  -

The country of incorporation (EV certificates), id = "1.3.6.1.4.1.311.60.2.1.3".

-
URI  -

Uniform Resource Identifier, id = "GeneralName.uniformResourceIdentifier".

-
DNS  -

DNS name, id = "GeneralName.dNSName".

-
IPAddress  -

IP address, id = "GeneralName.iPAddress".

-
XMPP  -

XMPP address (see http://www.ietf.org/rfc/rfc3920.txt), id = "1.3.6.1.5.5.7.8.5".

-
-
-
- -
-
- -
-
- - - - -
enum QCA::ConstraintTypeKnown
-
-
- -

Known types of certificate constraints.

-

This enumerator offers a convenient way to work with common types.

-
Enumerator:
- - - - - - - - - - - - - - - - - - -
DigitalSignature  -

Certificate can be used to create digital signatures, id = "KeyUsage.digitalSignature"

-
NonRepudiation  -

Certificate can be used for non-repudiation, id = "KeyUsage.nonRepudiation"

-
KeyEncipherment  -

Certificate can be used for encrypting / decrypting keys, id = "KeyUsage.keyEncipherment"

-
DataEncipherment  -

Certificate can be used for encrypting / decrypting data, id = "KeyUsage.dataEncipherment"

-
KeyAgreement  -

Certificate can be used for key agreement, id = "KeyUsage.keyAgreement"

-
KeyCertificateSign  -

Certificate can be used for key certificate signing, id = "KeyUsage.keyCertSign"

-
CRLSign  -

Certificate can be used to sign Certificate Revocation Lists, id = "KeyUsage.crlSign"

-
EncipherOnly  -

Certificate can only be used for encryption, id = "KeyUsage.encipherOnly"

-
DecipherOnly  -

Certificate can only be used for decryption, id = "KeyUsage.decipherOnly"

-
ServerAuth  -

Certificate can be used for server authentication (e.g. web server), id = "1.3.6.1.5.5.7.3.1". This is an extended usage constraint.

-
ClientAuth  -

Certificate can be used for client authentication (e.g. web browser), id = "1.3.6.1.5.5.7.3.2". This is an extended usage constraint.

-
CodeSigning  -

Certificate can be used to sign code, id = "1.3.6.1.5.5.7.3.3". This is an extended usage constraint.

-
EmailProtection  -

Certificate can be used to sign / encrypt email, id = "1.3.6.1.5.5.7.3.4". This is an extended usage constraint.

-
IPSecEndSystem  -

Certificate can be used to authenticate a endpoint in IPSEC, id = "1.3.6.1.5.5.7.3.5". This is an extended usage constraint.

-
IPSecTunnel  -

Certificate can be used to authenticate a tunnel in IPSEC, id = "1.3.6.1.5.5.7.3.6". This is an extended usage constraint.

-
IPSecUser  -

Certificate can be used to authenticate a user in IPSEC, id = "1.3.6.1.5.5.7.3.7". This is an extended usage constraint.

-
TimeStamping  -

Certificate can be used to create a "time stamp" signature, id = "1.3.6.1.5.5.7.3.8". This is an extended usage constraint.

-
OCSPSigning  -

Certificate can be used to sign an Online Certificate Status Protocol (OCSP) assertion, id = "1.3.6.1.5.5.7.3.9". This is an extended usage constraint.

-
-
-
- -
-
- -
-
- - - - -
enum QCA::UsageMode
-
-
- -

Specify the intended usage of a certificate.

-
Enumerator:
- - - - - - - -
UsageAny  -

Any application, or unspecified.

-
UsageTLSServer  -

server side of a TLS or SSL connection

-
UsageTLSClient  -

client side of a TLS or SSL connection

-
UsageCodeSigning  -

code signing certificate

-
UsageEmailProtection  -

email (S/MIME) certificate

-
UsageTimeStamping  -

time stamping certificate

-
UsageCRLSigning  -

certificate revocation list signing certificate

-
-
-
- -
-
- -
-
- - - - -
enum QCA::Validity
-
-
- -

The validity (or otherwise) of a certificate.

-
Enumerator:
- - - - - - - - - - - - -
ValidityGood  -

The certificate is valid.

-
ErrorRejected  -

The root CA rejected the certificate purpose.

-
ErrorUntrusted  -

The certificate is not trusted.

-
ErrorSignatureFailed  -

The signature does not match.

-
ErrorInvalidCA  -

The Certificate Authority is invalid.

-
ErrorInvalidPurpose  -

The purpose does not match the intended usage.

-
ErrorSelfSigned  -

The certificate is self-signed, and is not found in the list of trusted certificates.

-
ErrorRevoked  -

The certificate has been revoked.

-
ErrorPathLengthExceeded  -

The path length from the root CA to this certificate is too long.

-
ErrorExpired  -

The certificate has expired, or is not yet valid (e.g. current time is earlier than notBefore time).

-
ErrorExpiredCA  -

The Certificate Authority has expired.

-
ErrorValidityUnknown  -

Validity is unknown.

-
-
-
- -
-
- -
-
- - - - -
enum QCA::ValidateFlags
-
-
- -

The conditions to validate for a certificate.

- -
-
- -
-
- - - - -
enum QCA::MemoryMode
-
-
- -

Mode settings for memory allocation.

-

QCA can use secure memory, however most operating systems restrict the amount of memory that can be pinned by user applications, to prevent a denial-of-service attack.

-

QCA supports two approaches to getting memory - the mlock method, which generally requires root (administrator) level privileges, and the mmap method which is not as secure, but which should be able to be used by any process.

-
See also:
Initializer
-
Enumerator:
- - - -
Practical  -

mlock and drop root if available, else mmap

-
Locking  -

mlock and drop root

-
LockingKeepPrivileges  -

mlock, retaining root privileges

-
-
-
- -
-
- -
-
- - - - -
enum QCA::Direction
-
-
- -

Direction settings for symmetric algorithms.

-

For some algorithms, it makes sense to have a "direction", such as Cipher algorithms which can be used to encrypt or decrypt.

-
Enumerator:
- - -
Encode  -

Operate in the "forward" direction; for example, encrypting.

-
Decode  -

Operate in the "reverse" direction; for example, decrypting.

-
-
-
- -
-
- -
-
- - - - -
enum QCA::EncryptionAlgorithm
-
-
- -

Encryption algorithms.

-
Enumerator:
- - -
EME_PKCS1v15  -

Block type 2 (PKCS#1, Version 1.5).

-
EME_PKCS1_OAEP  -

Optimal asymmetric encryption padding (PKCS#1, Version 2.0).

-
-
-
- -
-
- -
-
- - - - -
enum QCA::SignatureAlgorithm
-
-
- -

Signature algorithm variants.

-
Enumerator:
- - - - - - - -
SignatureUnknown  -

Unknown signing algorithm.

-
EMSA1_SHA1  -

SHA1, with EMSA1 (IEEE1363-2000) encoding (this is the usual DSA algorithm - FIPS186).

-
EMSA3_SHA1  -

SHA1, with EMSA3 (ie PKCS#1 Version 1.5) encoding.

-
EMSA3_MD5  -

MD5, with EMSA3 (ie PKCS#1 Version 1.5) encoding (this is the usual RSA algorithm).

-
EMSA3_MD2  -

MD2, with EMSA3 (ie PKCS#1 Version 1.5) encoding.

-
EMSA3_RIPEMD160  -

RIPEMD160, with EMSA3 (ie PKCS#1 Version 1.5) encoding.

-
EMSA3_Raw  -

EMSA3 without computing a message digest or a DigestInfo encoding (identical to PKCS#11's CKM_RSA_PKCS mechanism).

-
-
-
- -
-
- -
-
- - - - -
enum QCA::SignatureFormat
-
-
- -

Signature formats (DSA only).

-
Enumerator:
- - - -
DefaultFormat  -

For DSA, this is the same as IEEE_1363.

-
IEEE_1363  -

40-byte format from IEEE 1363 (Botan/.NET)

-
DERSequence  -

Signature wrapped in DER formatting (OpenSSL/Java).

-
-
-
- -
-
- -
-
- - - - -
enum QCA::PBEAlgorithm
-
-
- -

Password-based encryption.

-
Enumerator:
- - - - - - -
PBEDefault  -

Use modern default (same as PBES2_TripleDES_SHA1).

-
PBES2_DES_SHA1  -

PKCS#5 v2.0 DES/CBC,SHA1.

-
PBES2_TripleDES_SHA1  -

PKCS#5 v2.0 TripleDES/CBC,SHA1.

-
PBES2_AES128_SHA1  -

PKCS#5 v2.0 AES-128/CBC,SHA1.

-
PBES2_AES192_SHA1  -

PKCS#5 v2.0 AES-192/CBC,SHA1.

-
PBES2_AES256_SHA1  -

PKCS#5 v2.0 AES-256/CBC,SHA1.

-
-
-
- -
-
- -
-
- - - - -
enum QCA::ConvertResult
-
-
- -

Return value from a format conversion.

-

Note that if you are checking for any result other than ConvertGood, then you may be introducing a provider specific dependency.

-
Enumerator:
- - - - -
ConvertGood  -

Conversion succeeded, results should be valid.

-
ErrorDecode  -

General failure in the decode stage.

-
ErrorPassphrase  -

Failure because of incorrect passphrase.

-
ErrorFile  -

Failure because of incorrect file.

-
-
-
- -
-
- -
-
- - - - -
enum QCA::DLGroupSet
-
-
- -

Well known discrete logarithm group sets.

-

These sets are derived from three main sources: Java Cryptographic Extensions, RFC2412 and RFC3526.

-
Enumerator:
- - - - - - - - - - - -
DSA_512  -

512 bit group, for compatibility with JCE

-
DSA_768  -

768 bit group, for compatibility with JCE

-
DSA_1024  -

1024 bit group, for compatibility with JCE

-
IETF_768  -

Group 1 from RFC 2412, Section E.1.

-
IETF_1024  -

Group 2 from RFC 2412, Section E.2.

-
IETF_1536  -

1536-bit MODP Group ("group 5") from RFC3526 Section 2.

-
IETF_2048  -

2048-bit MODP Group ("group 14") from RFC3526 Section 3.

-
IETF_3072  -

3072-bit MODP Group ("group 15") from RFC3526 Section 4.

-
IETF_4096  -

4096-bit MODP Group ("group 16") from RFC3526 Section 5.

-
IETF_6144  -

6144-bit MODP Group ("group 17") from RFC3526 Section 6.

-
IETF_8192  -

8192-bit MODP Group ("group 18") from RFC3526 Section 7.

-
-
-
- -
-
- -
-
- - - - -
enum QCA::SecurityLevel
-
-
- -

Specify the lower-bound for acceptable TLS/SASL security layers.

-

For TLS, the interpretation of these levels is:

-
    -
  • Any cipher suite that provides non-authenticated communications (usually anonymous Diffie-Hellman) is SL_Integrity.
  • -
  • Any cipher suite that is limited to 40 bits (export-version crippled forms of RC2, RC4 or DES) is SL_Export. Standard DES (56 bits) and some forms of RC4 (64 bits) are also SL_Export.
  • -
  • Any normal cipher (AES, Camellia, RC4 or similar) with 128 bits, or Elliptic Curve Ciphers with 283 bits, is SL_Baseline
  • -
  • AES or Camellia at least 192 bits, triple-DES and similar ciphers are SL_High. ECC with 409 or more bits is also SL_High.
  • -
  • Highest does not have an equivalent strength. It indicates that the provider should use the strongest ciphers available (but not less than SL_High).
  • -
-
Enumerator:
- - - - - - -
SL_None  -

indicates that no security is ok

-
SL_Integrity  -

must at least get integrity protection

-
SL_Export  -

must be export level bits or more

-
SL_Baseline  -

must be 128 bit or more

-
SL_High  -

must be more than 128 bit

-
SL_Highest  -

SL_High or max possible, whichever is greater.

-
-
-
- -
-
-

Function Documentation

- -
-
- - - - - - - - - -
QCA_EXPORT QString QCA::orderedToDNString (const CertificateInfoOrdered &  in ) 
-
-
- -

Convert to RFC 1779 string format.

-
Parameters:
- - -
in the certificate info to convert
-
-
- -

Referenced by QCA::CertificateInfoOrdered::toString().

- -
-
- -
-
- - - - - - - - - -
QCA_EXPORT CertificateInfoOrdered QCA::orderedDNOnly (const CertificateInfoOrdered &  in ) 
-
-
- -

Return a new CertificateInfoOrdered that only contains the Distinguished Name (DN) types found in the input object.

-
Parameters:
- - -
in the certificate info to extract from
-
-
- -

Referenced by QCA::CertificateInfoOrdered::dnOnly().

- -
-
- -
-
- - - - - - - - - -
QCA_EXPORT QStringList QCA::makeFriendlyNames (const QList< Certificate > &  list ) 
-
-
- -

Create a list of unique friendly names among a list of certificates.

-
Parameters:
- - -
list the list of certificates for which a friendly name is required.
-
-
- -
-
- -
-
- - - - - - - - -
QCA_EXPORT void QCA::init ( ) 
-
- -
- -
-
- - - - - - - - - - - - - - - - - - -
QCA_EXPORT void QCA::init (MemoryMode  m,
int  prealloc 
)
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
Parameters:
- - - -
m the MemoryMode to use
prealloc the amount of memory in kilobytes to allocate for secure storage
-
-
- -
-
- -
-
- - - - - - - - -
QCA_EXPORT void QCA::deinit ( ) 
-
-
- -

Clean up routine.

-

This routine cleans up QCA, including memory allocations This call is not normally required, because it is cleaner to use an Initializer

- -
-
- -
-
- - - - - - - - -
QCA_EXPORT bool QCA::haveSecureMemory ( ) 
-
-
- -

Test if secure storage memory is available.

-
Returns:
true if secure storage memory is available
- -
-
- -
-
- - - - - - - - -
QCA_EXPORT bool QCA::haveSecureRandom ( ) 
-
-
- -

Test if secure random is available.

-

Secure random is considered available if the global random provider is not the default provider.

-
Returns:
true if secure random is available
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA_EXPORT bool QCA::isSupported (const char *  features,
const QString provider = QString() 
)
-
-
- -

Test if a capability (algorithm) is available.

-

Since capabilities are made available at runtime, you should always check before using a capability the first time, as shown below.

-
QCA::init();
-if(!QCA::isSupported("sha1"))
-        printf("SHA1 not supported!\n");
-else
-{
-        QString result = QCA::SHA1::hashToString(myString);
-        printf("sha1(\"%s\") = [%s]\n", myString.data(), qPrintable(result));
-}
-
Parameters:
- - - -
features the name of the capability to test for
provider if specified, only check for the capability in that specific provider. If not provided, or provided as an empty string, then check for capabilities in all available providers
-
-
-
Returns:
true if the capability is available, otherwise false
-

Note that you can test for a combination of capabilities, using a comma delimited list:

-
QCA::isSupported("sha1,md5"):
-

which will return true if all of the capabilities listed are present.

-
Examples:
aes-cmac.cpp, certtest.cpp, ciphertest.cpp, hashtest.cpp, mactest.cpp, md5crypt.cpp, publickeyexample.cpp, rsatest.cpp, saslclient.cpp, saslserver.cpp, sslservtest.cpp, and ssltest.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA_EXPORT bool QCA::isSupported (const QStringList features,
const QString provider = QString() 
)
-
-
- -

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
Parameters:
- - - -
features a list of features to test for
provider if specified, only check for the capability in that specific provider. If not provided, or provided as an empty string, then check for capabilities in all available providers
-
-
- -
-
- -
-
- - - - - - - - -
QCA_EXPORT QStringList QCA::supportedFeatures ( ) 
-
-
- -

Generate a list of all the supported features in plugins, and in built in capabilities.

-
Returns:
a list containing the names of the features
-

The following code writes a list of features to standard out

-
QStringList capabilities;
-capabilities = QCA::supportedFeatures();
-std::cout << "Supported:" << capabilities.join(",") << std::endl;
-
See also:
isSupported(const char *features)
-
-isSupported(const QStringList &features)
-
-defaultFeatures()
- -
-
- -
-
- - - - - - - - -
QCA_EXPORT QStringList QCA::defaultFeatures ( ) 
-
-
- -

Generate a list of the built in features.

-

This differs from supportedFeatures() in that it does not include features provided by plugins.

-
Returns:
a list containing the names of the features
-

The following code writes a list of features to standard out

-
QStringList capabilities;
-capabilities = QCA::defaultFeatures();
-std::cout << "Default:" << capabilities.join(",") << std::endl;
-
See also:
isSupported
-
-supportedFeatures()
-
Examples:
providertest.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA_EXPORT bool QCA::insertProvider (Provider *  p,
int  priority = 0 
)
-
-
- -

Add a provider to the current list of providers.

-

This function allows you to add a provider to the current plugin providers at a specified priority. If a provider with the name already exists, this call fails.

-
Parameters:
- - - -
p a pointer to a Provider object, which must be set up.
priority the priority level to set the provider to
-
-
-
Returns:
true if the provider is added, and false if the provider is not added (failure)
-
See also:
setProviderPriority for a description of the provider priority system
-
Examples:
aes-cmac.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA_EXPORT void QCA::setProviderPriority (const QString name,
int  priority 
)
-
-
- -

Change the priority of a specified provider.

-

QCA supports a number of providers, and if a number of providers support the same algorithm, it needs to choose between them. You can do this at object instantiation time (by specifying the name of the provider that should be used). Alternatively, you can provide a relative priority level at an application level, using this call.

-

Priority is used at object instantiation time. The provider is selected according to the following logic:

-
    -
  • if a particular provider is nominated, and that provider supports the required algorithm, then the nominated provider is used
  • -
  • if no provider is nominated, or it doesn't support the required algorithm, then the provider with the lowest priority number will be used, if that provider supports the algorithm.
  • -
  • if the provider with the lowest priority number doesn't support the required algorithm, the provider with the next lowest priority number will be tried, and so on through to the provider with the largest priority number
  • -
  • if none of the plugin providers support the required algorithm, then the default (built-in) provider will be tried.
  • -
-
Parameters:
- - - -
name the name of the provider
priority the new priority of the provider. As a special case, if you pass in -1, then this provider gets the same priority as the the last provider that was added or had its priority set using this call.
-
-
-
See also:
providerPriority
- -
-
- -
-
- - - - - - - - - -
QCA_EXPORT int QCA::providerPriority (const QString name ) 
-
-
- -

Return the priority of a specified provider.

-

The name of the provider (eg "qca-ossl") is used to look up the current priority associated with that provider. If the provider is not found (or something else went wrong), -1 is returned.

-
Parameters:
- - -
name the name of the provider
-
-
-
Returns:
the current priority level
-
See also:
setProviderPriority for a description of the provider priority system
- -
-
- -
-
- - - - - - - - -
QCA_EXPORT ProviderList QCA::providers ( ) 
-
-
- -

Return a list of the current providers.

-

The current plugin providers are provided as a list, which you can iterate over using ProviderListIterator.

-
See also:
ProviderList
-
-ProviderListIterator
-
Examples:
providertest.cpp.
-
-
-
- -
-
- - - - - - - - - -
QCA_EXPORT Provider* QCA::findProvider (const QString name ) 
-
-
- -

Return the named provider, or 0 if not found.

-
Parameters:
- - -
name the name of the provider to search for.
-
-
- -
-
- -
-
- - - - - - - - -
QCA_EXPORT Provider* QCA::defaultProvider ( ) 
-
-
- -

Return the default provider.

- -
-
- -
-
- - - - - - - - -
QCA_EXPORT void QCA::scanForPlugins ( ) 
-
-
- -

Scan for new plugins.

-
Examples:
providertest.cpp.
-
-
-
- -
-
- - - - - - - - -
QCA_EXPORT void QCA::unloadAllPlugins ( ) 
-
-
- -

Unload the current plugins.

- -
-
- -
-
- - - - - - - - -
QCA_EXPORT QString QCA::pluginDiagnosticText ( ) 
-
-
- -

Retrieve plugin diagnostic text.

- -
-
- -
-
- - - - - - - - -
QCA_EXPORT void QCA::clearPluginDiagnosticText ( ) 
-
-
- -

Clear plugin diagnostic text.

- -
-
- -
-
- - - - - - - - - -
QCA_EXPORT void QCA::appendPluginDiagnosticText (const QString text ) 
-
-
- -

Add plugin diagnostic text.

-

This function should only be called by providers.

-
Parameters:
- - -
text the diagnostic message to append
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA_EXPORT void QCA::setProperty (const QString name,
const QVariant value 
)
-
-
- -

Set a global property.

-
Parameters:
- - - -
name the name of the property
value the value to set the property to
-
-
-
See also:
getProperty
- -
-
- -
-
- - - - - - - - - -
QCA_EXPORT QVariant QCA::getProperty (const QString name ) 
-
-
- -

Retrieve a global property.

-
Parameters:
- - -
name the name of the property to look up
-
-
-
See also:
setProperty
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA_EXPORT void QCA::setProviderConfig (const QString name,
const QVariantMap &  config 
)
-
-
- -

Set provider configuration.

-

Allowed value types: QString, int, bool

-
Parameters:
- - - -
name the name of the provider to set the configuration to
config the configuration
-
-
- -
-
- -
-
- - - - - - - - - -
QCA_EXPORT QVariantMap QCA::getProviderConfig (const QString name ) 
-
-
- -

Retrieve provider configuration.

-
Parameters:
- - -
name the name of the provider to retrieve the configuration of
-
-
- -
-
- -
-
- - - - - - - - - -
QCA_EXPORT void QCA::saveProviderConfig (const QString name ) 
-
-
- -

Save provider configuration to persistent storage.

-
Parameters:
- - -
name the name of the provider to have its configuration saved
-
-
- -
-
- -
-
- - - - - - - - -
QCA_EXPORT QString QCA::globalRandomProvider ( ) 
-
-
- -

Return the name of the global random number provider.

- -
-
- -
-
- - - - - - - - - -
QCA_EXPORT void QCA::setGlobalRandomProvider (const QString provider ) 
-
-
- -

Change the global random number provider.

-

The Random capabilities of QCA are provided as part of the built in capabilities, however the generator can be changed if required.

-
Parameters:
- - -
provider the name of the provider to use as the global random provider.
-
-
- -
-
- -
-
- - - - - - - - -
QCA_EXPORT Logger* QCA::logger ( ) 
-
-
- -

Return a reference to the QCA Logger, which is used for diagnostics and error recording.

-

The system Logger is automatically created for you on start.

- -
-
- -
-
- - - - - - - - -
QCA_EXPORT bool QCA::haveSystemStore ( ) 
-
-
- -

Test if QCA can access the root CA certificates.

-

If root certificates are available, this function returns true, otherwise it returns false.

-
See also:
systemStore
-
Examples:
certtest.cpp, and ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
QCA_EXPORT CertificateCollection QCA::systemStore ( ) 
-
-
- -

Get system-wide root Certificate Authority (CA) certificates.

-

Many operating systems (or distributions, on Linux-type systems) come with some trusted certificates. Typically, these include the root certificates for major Certificate Authorities (for example, Verisign, Comodo) and some additional certificates that are used for system updates. They are provided in different ways for different systems.

-

This function provides an common way to access the system certificates. There are other ways to access certificates - see the various I/O methods (such as fromDER() and fromPEM()) in the Certificate and CertificateCollection classes.

-
Note:
Availability of the system certificates depends on how QCA was built. You can test whether the system certificates are available using the haveSystemStore() function.
-
Examples:
certtest.cpp, and ssltest.cpp.
-
-
-
- -
-
- - - - - - - - -
QCA_EXPORT QString QCA::appName ( ) 
-
-
- -

Get the application name that will be used by SASL server mode.

-

The application name is used by SASL in server mode, as some systems might have different security policies depending on the app. The default application name is 'qca'

- -
-
- -
-
- - - - - - - - - -
QCA_EXPORT void QCA::setAppName (const QString name ) 
-
-
- -

Set the application name that will be used by SASL server mode.

-

The application name is used by SASL in server mode, as some systems might have different security policies depending on the app. This should be set before using SASL objects, and it cannot be changed later.

-
Parameters:
- - -
name the name string to use for SASL server mode
-
-
-
Examples:
saslserver.cpp.
-
-
-
- -
-
- - - - - - - - - -
QCA_EXPORT QString QCA::arrayToHex (const QByteArray array ) 
-
-
- -

Convert a byte array to printable hexadecimal representation.

-

This is a convenience function to convert an arbitrary QByteArray to a printable representation.

-
QByteArray test(10);
-test.fill('a');
-// 0x61 is 'a' in ASCII
-if (QString("61616161616161616161") == QCA::arrayToHex(test) )
-{
-        printf ("arrayToHex passed\n");
-}
-
Parameters:
- - -
array the array to be converted
-
-
-
Returns:
a printable representation
-
Examples:
aes-cmac.cpp, ciphertest.cpp, hashtest.cpp, mactest.cpp, and rsatest.cpp.
-
-
-
- -
-
- - - - - - - - - -
QCA_EXPORT QByteArray QCA::hexToArray (const QString hexString ) 
-
-
- -

Convert a QString containing a hexadecimal representation of a byte array into a QByteArray.

-

This is a convenience function to convert a printable representation into a QByteArray - effectively the inverse of QCA::arrayToHex.

-
QCA::init();
-QByteArray test(10);
-
-test.fill('b'); // 0x62 in hexadecimal
-test[7] = 0x00; // can handle strings with nulls
-
-if (QCA::hexToArray(QString("62626262626262006262") ) == test )
-{
-        printf ("hexToArray passed\n");
-}
-
Parameters:
- - -
hexString the string containing a printable representation to be converted
-
-
-
Returns:
the equivalent QByteArray
-
Examples:
aes-cmac.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
QCA_EXPORT QByteArray QCA::emsa3Encode (const QString hashName,
const QByteArray digest,
int  size = -1 
)
-
-
- -

Encode a hash result in EMSA3 (PKCS#1) format.

-

This is a convenience function for providers that only have access to raw RSA signing (mainly smartcard providers). This is a built-in function of QCA and does not utilize a provider. SHA1, MD5, MD2, and RIPEMD160 are supported.

-
Parameters:
- - - - -
hashName the hash type used to create the digest
digest the digest to encode in EMSA3 format
size the desired size of the encoding output (-1 for automatic size)
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA_EXPORT const SecureArray QCA::operator+ (const SecureArray &  a,
const SecureArray &  b 
)
-
-
- -

Returns an array that is the result of concatenating a and b.

-
Parameters:
- - - -
a the string to put at the start of the result
b the string to put at the end of the result
-
-
- -
-
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/namespaces.html qca2-2.1.0/apidocs/html/namespaces.html --- qca2-2.0.3/apidocs/html/namespaces.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/namespaces.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ - - - - -Qt Cryptographic Architecture: Namespace Index - - - - - - -
-

Namespace List

Here is a list of all documented namespaces with brief descriptions: - -
QCAQCA - the Qt Cryptographic Architecture
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/paddingDescription.html qca2-2.1.0/apidocs/html/paddingDescription.html --- qca2-2.0.3/apidocs/html/paddingDescription.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/paddingDescription.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ - - - - -Qt Cryptographic Architecture: Padding - - - - - - -
- - -

Padding

For those Cipher sub-classes that are block based, there are modes that require a full block on encryption and decryption - Cipher Block Chaining mode and Electronic Code Book modes are good examples.

-

Since real world messages are not always a convenient multiple of a block size, we have to adding padding. There are a number of padding modes that QCA supports, including not doing any padding at all.

-

If you are not going to use padding, then you can pass QCA::Cipher::NoPadding as the pad argument to the Cipher sub-class, however it is then your responsibility to pass in appropriate data for the mode that you are using.

-

The most common padding scheme is known as PKCS#7 (also PKCS#1), and it specifies that the pad bytes are all equal to the length of the padding ( for example, if you need three pad bytes to complete the block, then the padding is 0x03 0x03 0x03 ).

-

On encryption, for algorithm / mode combinations that require padding, you will get a block of ciphertext when the input plain text block is complete. When you call final(), you will get out the ciphertext that corresponds to the last part of the plain text, plus any padding. If you had provided plaintext that matched up with a block size, then the cipher text block is generated from pure padding - you always get at least some padding, to ensure that the padding can be safely removed on decryption.

-

On decryption, for algorithm / mode combinations that use padding, you will get back a block of plaintext when the input ciphertext block is complete. When you call final(), you will get a block that has been stripped of ciphertext.

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/pages.html qca2-2.1.0/apidocs/html/pages.html --- qca2-2.0.3/apidocs/html/pages.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/pages.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ - - - - -Qt Cryptographic Architecture: Page Index - - - - - - -
-

Related Pages

Here is a list of all related documentation pages: -
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/providers.html qca2-2.1.0/apidocs/html/providers.html --- qca2-2.0.3/apidocs/html/providers.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/providers.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ - - - - -Qt Cryptographic Architecture: Providers - - - - - - -
- - -

Providers

QCA works on the concept of a "provider".

-

There is a limited internal provider (named "default"), but most of the work is done in plugin modules.

-

The logic to selection of a provider is fairly simple. The user can specify a provider name - if that name exists, and the provider supports the requested feature, then the named provider is used. If that didn't work, then the available plugins are searched (based on a priority order) for the requested feature. If that doesn't work, then the default provider is searched for the requested feature.

-

So the only way to get the default provider is to either have no other support whatsoever, or to specify the default provider directly (this goes for the algorithm constructors as well as setGlobalRNG()).

-

You can add your own provider in two ways - as a shared object plugin, and as a part of the client code.

-

The shared object plugin needs to be able to be found using the built-in scan logic - this normally means you need to install it into the plugins/crypto subdirectory within the directory that Qt is installed to. This will make it available for all applications.

-

If you have a limited application domain (such as a specialist algorithm, or a need to be bug-compatible), you may find it easier to create a client-side provider, and add it using the QCA::insertProvider call. There is an example of this - see the AES-CMAC example.

-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/providertest.cpp-example.html qca2-2.1.0/apidocs/html/providertest.cpp-example.html --- qca2-2.0.3/apidocs/html/providertest.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/providertest.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ - - - - -Qt Cryptographic Architecture: providertest.cpp - - - - - - -
-

providertest.cpp

The code below shows some simple operations on a QCA::Provider object, including use of iterators and some member functions.

-
/*
- Copyright (C) 2004 Brad Hards <bradh@frogmouth.net>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-// QtCrypto has the declarations for all of QCA
-#include <QtCrypto>
-#include <QCoreApplication>
-
-#include <iostream>
-#include <qstringlist.h>
-
-int main(int argc, char **argv)
-{
-    // the Initializer object sets things up, and
-    // also does cleanup when it goes out of scope
-    QCA::Initializer init;
-
-    QCoreApplication app(argc, argv);
-
-    // get all the available providers loaded.
-    // you don't normally need this (because you test using isSupported())
-    // but this is a special case.
-    QCA::scanForPlugins();
-
-    // this gives us all the plugin providers as a list
-    QCA::ProviderList qcaProviders = QCA::providers();
-    for (int i = 0; i < qcaProviders.size(); ++i) {
-        // each provider has a name, which we can display
-        std::cout << qcaProviders[i]->name().toLatin1().data() << ": ";
-        // ... and also a list of features
-        QStringList capabilities = qcaProviders[i]->features();
-        // we turn the string list back into a single string,
-        // and display it as well
-        std::cout << capabilities.join(", ").toLatin1().data() << std::endl;
-    }
-
-    // Note that the default provider isn't included in
-    // the result of QCA::providers()
-    std::cout << "default: ";
-    // However it is still possible to get the features
-    // supported by the default provider
-    QStringList capabilities = QCA::defaultFeatures();
-    std::cout << capabilities.join(", ").toLatin1().data() << std::endl;
-    return 0;
-}
-
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/publickeyexample.cpp-example.html qca2-2.1.0/apidocs/html/publickeyexample.cpp-example.html --- qca2-2.0.3/apidocs/html/publickeyexample.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/publickeyexample.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,146 +0,0 @@ - - - - -Qt Cryptographic Architecture: publickeyexample.cpp - - - - - - -
-

publickeyexample.cpp

The code below shows how to do public key encryption, decryption, signing and verification.

-
/*
- Copyright (C) 2003 Justin Karneges <justin@affinix.com>
- Copyright (C) 2005 Brad Hards <bradh@frogmouth.net>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-
-#include <QtCrypto>
-
-#include <QCoreApplication>
-
-#include <iostream>
-
-
-int main(int argc, char** argv)
-{
-    // the Initializer object sets things up, and
-    // also does cleanup when it goes out of scope
-    QCA::Initializer init;
-
-    QCoreApplication app(argc, argv);
-
-    // We need to ensure that we have certificate handling support
-    if ( !QCA::isSupported( "cert" ) ) {
-        std::cout << "Sorry, no PKI certificate support" << std::endl;
-        return 1;
-    }
-
-    // Read in a private key
-    QCA::PrivateKey privKey;
-    QCA::ConvertResult convRes;
-    QCA::SecureArray passPhrase = "start";
-    privKey = QCA::PrivateKey::fromPEMFile( "Userkey.pem", passPhrase, &convRes );
-    if ( convRes != QCA::ConvertGood ) {
-        std::cout << "Sorry, could not import Private Key" << std::endl;
-        return 1;
-    }
-
-    // Read in a matching public key cert
-    // you could also build this using the fromPEMFile() method
-    QCA::Certificate pubCert( "User.pem" );
-    if ( pubCert.isNull() ) {
-        std::cout << "Sorry, could not import public key certificate" << std::endl;
-        return 1;
-    }
-    // We are building the certificate into a SecureMessageKey object, via a
-    // CertificateChain
-    QCA::SecureMessageKey secMsgKey;
-    QCA::CertificateChain chain;
-    chain += pubCert;
-    secMsgKey.setX509CertificateChain( chain );
-
-    // build up a SecureMessage object, based on our public key certificate
-    QCA::CMS cms;
-    QCA::SecureMessage msg(&cms);
-    msg.setRecipient(secMsgKey);
-
-    // Some plain text - we use the first command line argument if provided
-    QByteArray plainText = (argc >= 2) ? argv[1] : "What do ya want for nuthin'";
-
-    // Now use the SecureMessage object to encrypt the plain text.
-    msg.startEncrypt();
-    msg.update(plainText);
-    msg.end();
-    // I think it is reasonable to wait for 1 second for this
-    msg.waitForFinished(1000);
-
-    // check to see if it worked
-    if(!msg.success())
-    {
-        std::cout << "Error encrypting: " << msg.errorCode() << std::endl;
-        return 1;
-    }
-
-    // get the result
-    QCA::SecureArray cipherText = msg.read();
-    QCA::Base64 enc;
-    std::cout << plainText.data() << " encrypts to (in base 64): ";
-    std::cout << qPrintable( enc.arrayToString( cipherText ) ) << std::endl;
-
-    // Show we can decrypt it with the private key
-    if ( !privKey.canDecrypt() ) {
-        std::cout << "Private key cannot be used to decrypt" << std::endl;
-        return 1;
-    }
-    QCA::SecureArray plainTextResult;
-    if ( 0 == privKey.decrypt(cipherText, &plainTextResult, QCA::EME_PKCS1_OAEP ) ) {
-        std::cout << "Decryption process failed" << std::endl;
-        return 1;
-    }
-
-    std::cout << qPrintable( enc.arrayToString( cipherText ) );
-    std::cout << " (in base 64) decrypts to: ";
-    std::cout << plainTextResult.data() << std::endl;
-
-    return 0;
-}
-
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca_8h__dep__incl.map qca2-2.1.0/apidocs/html/qca_8h__dep__incl.map --- qca2-2.0.3/apidocs/html/qca_8h__dep__incl.map 2010-11-27 21:30:33.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca_8h__dep__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ - - diff -Nru qca2-2.0.3/apidocs/html/qca_8h__dep__incl.md5 qca2-2.1.0/apidocs/html/qca_8h__dep__incl.md5 --- qca2-2.0.3/apidocs/html/qca_8h__dep__incl.md5 2010-11-27 21:30:33.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca_8h__dep__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -0c0eafc5969120f500122a0f72182b58 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca_8h__dep__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca_8h__dep__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca_8h.html qca2-2.1.0/apidocs/html/qca_8h.html --- qca2-2.0.3/apidocs/html/qca_8h.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca_8h.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,87 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca.h File Reference - - - - - - -
-

qca.h File Reference

-

Summary header file for QCA. -More...

-#include "qca_core.h"
-#include <QString>
-#include <QStringList>
-#include <QList>
-#include <QSharedData>
-#include <QSharedDataPointer>
-#include <QtGlobal>
-#include <QByteArray>
-#include <QObject>
-#include <QVariant>
-#include <QVariantList>
-#include <QMetaObject>
-#include <QThread>
-#include "qca_export.h"
-#include <QMetaType>
-#include "qca_tools.h"
-#include "qca_core.h"
-#include <QMap>
-#include <QDateTime>
-#include "qca_publickey.h"
-#include "qca_cert.h"
-#include "qca_basic.h"
-#include "qca_keystore.h"
-#include "qca_securelayer.h"
-#include "qca_securemessage.h"
-#include <limits>
-
-Include dependency graph for qca.h:
-
-
- - -
-
-This graph shows which files directly or indirectly include this file:
-
-
-
- -

Go to the source code of this file.

- -
-

Detailed Description

-

Summary header file for QCA.

-
Note:
You should not use this header directly from an application. You should just use #include <QtCrypto> instead.
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca_8h__incl.map qca2-2.1.0/apidocs/html/qca_8h__incl.map --- qca2-2.0.3/apidocs/html/qca_8h__incl.map 2010-11-27 21:30:33.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca_8h__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/qca_8h__incl.md5 qca2-2.1.0/apidocs/html/qca_8h__incl.md5 --- qca2-2.0.3/apidocs/html/qca_8h__incl.md5 2010-11-27 21:30:33.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca_8h__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -11c1f59a3ac0b0af857b52d062b7b163 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca_8h__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca_8h__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca_8h_source.html qca2-2.1.0/apidocs/html/qca_8h_source.html --- qca2-2.0.3/apidocs/html/qca_8h_source.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca_8h_source.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,76 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca.h Source File - - - - - - -
-

qca.h

Go to the documentation of this file.
00001 /*
-00002  * qca.h - Qt Cryptographic Architecture
-00003  * Copyright (C) 2003-2005  Justin Karneges <justin@affinix.com>
-00004  * Copyright (C) 2004-2006  Brad Hards <bradh@frogmouth.net>
-00005  *
-00006  * This library is free software; you can redistribute it and/or
-00007  * modify it under the terms of the GNU Lesser General Public
-00008  * License as published by the Free Software Foundation; either
-00009  * version 2.1 of the License, or (at your option) any later version.
-00010  *
-00011  * This library is distributed in the hope that it will be useful,
-00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-00014  * Lesser General Public License for more details.
-00015  *
-00016  * You should have received a copy of the GNU Lesser General Public
-00017  * License along with this library; if not, write to the Free Software
-00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-00019  * 02110-1301  USA
-00020  *
-00021  */
-00022 
-00033 #ifndef QCA_H
-00034 #define QCA_H
-00035 
-00036 #include "qca_core.h"
-00037 #include "qca_textfilter.h"
-00038 #include "qca_basic.h"
-00039 #include "qca_publickey.h"
-00040 #include "qca_cert.h"
-00041 #include "qca_keystore.h"
-00042 #include "qca_securelayer.h"
-00043 #include "qca_securemessage.h"
-00044 #include "qcaprovider.h"
-00045 #include "qpipe.h"
-00046 
-00047 #endif
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca-arch.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca-arch.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__basic_8h__dep__incl.map qca2-2.1.0/apidocs/html/qca__basic_8h__dep__incl.map --- qca2-2.0.3/apidocs/html/qca__basic_8h__dep__incl.map 2010-11-27 21:30:33.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__basic_8h__dep__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__basic_8h__dep__incl.md5 qca2-2.1.0/apidocs/html/qca__basic_8h__dep__incl.md5 --- qca2-2.0.3/apidocs/html/qca__basic_8h__dep__incl.md5 2010-11-27 21:30:33.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__basic_8h__dep__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -57524b98e349bdef6774313b0994817c \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__basic_8h__dep__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__basic_8h__dep__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__basic_8h.html qca2-2.1.0/apidocs/html/qca__basic_8h.html --- qca2-2.0.3/apidocs/html/qca__basic_8h.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__basic_8h.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_basic.h File Reference - - - - - - -
-

qca_basic.h File Reference

-

Header file for classes for cryptographic primitives (basic operations). -More...

-#include "qca_core.h"
-
-Include dependency graph for qca_basic.h:
-
-
- - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - -
- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - -

Classes

class  QCA::Cipher
 General class for cipher (encryption / decryption) algorithms. More...
class  QCA::Hash
 General class for hashing algorithms. More...
class  QCA::KeyDerivationFunction
 General superclass for key derivation algorithms. More...
class  QCA::MessageAuthenticationCode
 General class for message authentication code (MAC) algorithms. More...
class  QCA::PBKDF1
 Password based key derivation function version 1. More...
class  QCA::PBKDF2
 Password based key derivation function version 2. More...
class  QCA::Random
 Source of random numbers. More...

Namespaces

namespace  QCA
-

Detailed Description

-

Header file for classes for cryptographic primitives (basic operations).

-
Note:
You should not use this header directly from an application. You should just use #include <QtCrypto> instead.
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__basic_8h__incl.map qca2-2.1.0/apidocs/html/qca__basic_8h__incl.map --- qca2-2.0.3/apidocs/html/qca__basic_8h__incl.map 2010-11-27 21:30:33.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__basic_8h__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__basic_8h__incl.md5 qca2-2.1.0/apidocs/html/qca__basic_8h__incl.md5 --- qca2-2.0.3/apidocs/html/qca__basic_8h__incl.md5 2010-11-27 21:30:33.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__basic_8h__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -6c286bcb8028c65e47cca40fc044e020 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__basic_8h__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__basic_8h__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__basic_8h_source.html qca2-2.1.0/apidocs/html/qca__basic_8h_source.html --- qca2-2.0.3/apidocs/html/qca__basic_8h_source.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__basic_8h_source.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,260 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_basic.h Source File - - - - - - -
-

qca_basic.h

Go to the documentation of this file.
00001 /*
-00002  * qca_basic.h - Qt Cryptographic Architecture
-00003  * Copyright (C) 2003-2007  Justin Karneges <justin@affinix.com>
-00004  * Copyright (C) 2004-2007  Brad Hards <bradh@frogmouth.net>
-00005  *
-00006  * This library is free software; you can redistribute it and/or
-00007  * modify it under the terms of the GNU Lesser General Public
-00008  * License as published by the Free Software Foundation; either
-00009  * version 2.1 of the License, or (at your option) any later version.
-00010  *
-00011  * This library is distributed in the hope that it will be useful,
-00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-00014  * Lesser General Public License for more details.
-00015  *
-00016  * You should have received a copy of the GNU Lesser General Public
-00017  * License along with this library; if not, write to the Free Software
-00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-00019  * 02110-1301  USA
-00020  *
-00021  */
-00022 
-00033 #ifndef QCA_BASIC_H
-00034 #define QCA_BASIC_H
-00035 
-00036 #include "qca_core.h"
-00037 
-00038 namespace QCA {
-00039 
-00062 class QCA_EXPORT Random : public Algorithm
-00063 {
-00064 public:
-00071         Random(const QString &provider = QString());
-00072 
-00078         Random(const Random &from);
-00079 
-00080         ~Random();
-00081 
-00087         Random & operator=(const Random &from);
-00088 
-00097         uchar nextByte();
-00098 
-00109         SecureArray nextBytes(int size);
-00110 
-00122         static uchar randomChar();
-00123 
-00133         static int randomInt();
-00134 
-00145         static SecureArray randomArray(int size);
-00146 
-00147 private:
-00148         class Private;
-00149         Private *d;
-00150 };
-00151 
-00205 class QCA_EXPORT Hash : public Algorithm, public BufferedComputation
-00206 {
-00207 public:
-00216         explicit Hash(const QString &type, const QString &provider = QString());
-00217 
-00223         Hash(const Hash &from);
-00224 
-00225         ~Hash();
-00226 
-00232         Hash & operator=(const Hash &from);
-00233 
-00241         static QStringList supportedTypes(const QString &provider = QString());
-00242 
-00246         QString type() const;
-00247 
-00258         virtual void clear();
-00259 
-00271         virtual void update(const MemoryRegion &a);
-00272 
-00278         void update(const QByteArray &a);
-00279 
-00294         void update(const char *data, int len = -1);
-00295 
-00318         void update(QIODevice *file);
-00319 
-00333         virtual MemoryRegion final();
-00334 
-00355         MemoryRegion hash(const MemoryRegion &array);
-00356 
-00371         QString hashToString(const MemoryRegion &array);
-00372 
-00373 private:
-00374         class Private;
-00375         Private *d;
-00376 };
-00377 
-00575 class QCA_EXPORT Cipher : public Algorithm, public Filter
-00576 {
-00577 public:
-00585         enum Mode
-00586         {
-00587                 CBC, 
-00588                 CFB, 
-00589                 ECB, 
-00590                 OFB  
-00591         };
-00592 
-00599         enum Padding
-00600         {
-00601                 DefaultPadding, 
-00602                 NoPadding,      
-00603                 PKCS7           
-00604         };
-00605 
-00622         Cipher(const QString &type, Mode mode, Padding pad = DefaultPadding,
-00623                 Direction dir = Encode, const SymmetricKey &key = SymmetricKey(), 
-00624                 const InitializationVector &iv = InitializationVector(),
-00625                 const QString &provider = QString());
-00626 
-00632         Cipher(const Cipher &from);
-00633 
-00634         ~Cipher();
-00635 
-00641         Cipher & operator=(const Cipher &from);
-00642 
-00650         static QStringList supportedTypes(const QString &provider = QString());
-00651 
-00655         QString type() const;
-00656 
-00660         Mode mode() const;
-00661 
-00665         Padding padding() const;
-00666 
-00670         Direction direction() const;
-00671 
-00675         KeyLength keyLength() const;
-00676 
-00683         bool validKeyLength(int n) const;
-00684 
-00688         int blockSize() const;
-00689 
-00693         virtual void clear();
-00694 
-00702         virtual MemoryRegion update(const MemoryRegion &a);
-00703 
-00708         virtual MemoryRegion final();
-00709 
-00715         virtual bool ok() const;
-00716 
-00730         void setup(Direction dir, const SymmetricKey &key, const InitializationVector &iv = InitializationVector());
-00731 
-00741         static QString withAlgorithms(const QString &cipherType, Mode modeType, Padding paddingType);
-00742 
-00743 private:
-00744         class Private;
-00745         Private *d;
-00746 };
-00747 
-00768 class QCA_EXPORT MessageAuthenticationCode : public Algorithm, public BufferedComputation
-00769 {
-00770 public:
-00780         MessageAuthenticationCode(const QString &type, const SymmetricKey &key, const QString &provider = QString());
-00781 
-00790         MessageAuthenticationCode(const MessageAuthenticationCode &from);
-00791 
-00792         ~MessageAuthenticationCode();
-00793 
-00802         MessageAuthenticationCode & operator=(const MessageAuthenticationCode &from);
-00803 
-00812         static QStringList supportedTypes(const QString &provider = QString());
-00813 
-00817         QString type() const;
-00818 
-00822         KeyLength keyLength() const;
-00823 
-00830         bool validKeyLength(int n) const;
-00831 
-00844         virtual void clear();
-00845 
-00853         virtual void update(const MemoryRegion &array);
-00854 
-00866         virtual MemoryRegion final();
-00867 
-00873         void setup(const SymmetricKey &key);
-00874 
-00875 private:
-00876         class Private;
-00877         Private *d;
-00878 };
-00879 
-00894 class QCA_EXPORT KeyDerivationFunction : public Algorithm
-00895 {
-00896 public:
-00902         KeyDerivationFunction(const KeyDerivationFunction &from);
-00903 
-00904         ~KeyDerivationFunction();
-00905 
-00914         KeyDerivationFunction & operator=(const KeyDerivationFunction &from);
-00915 
-00928         SymmetricKey makeKey(const SecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount);
-00929 
-00942         static QString withAlgorithm(const QString &kdfType, const QString &algType);
-00943 
-00944 protected:
-00951         KeyDerivationFunction(const QString &type, const QString &provider);
-00952 
-00953 private:
-00954         class Private;
-00955         Private *d;
-00956 };
-00957 
-00968 class QCA_EXPORT PBKDF1 : public KeyDerivationFunction
-00969 {
-00970 public:
-00977         explicit PBKDF1(const QString &algorithm = "sha1", const QString &provider = QString()) : KeyDerivationFunction(withAlgorithm("pbkdf1", algorithm), provider) {}
-00978 };
-00979 
-00990 class QCA_EXPORT PBKDF2 : public KeyDerivationFunction
-00991 {
-00992 public:
-00999         explicit PBKDF2(const QString &algorithm = "sha1", const QString &provider = QString()) : KeyDerivationFunction(withAlgorithm("pbkdf2", algorithm), provider) {}
-01000 };
-01001 
-01002 }
-01003 
-01004 #endif
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__cert_8h__dep__incl.map qca2-2.1.0/apidocs/html/qca__cert_8h__dep__incl.map --- qca2-2.0.3/apidocs/html/qca__cert_8h__dep__incl.map 2010-11-27 21:30:33.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__cert_8h__dep__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__cert_8h__dep__incl.md5 qca2-2.1.0/apidocs/html/qca__cert_8h__dep__incl.md5 --- qca2-2.0.3/apidocs/html/qca__cert_8h__dep__incl.md5 2010-11-27 21:30:33.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__cert_8h__dep__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -a9097b4304420d57449aa1d341f5f94d \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__cert_8h__dep__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__cert_8h__dep__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__cert_8h.html qca2-2.1.0/apidocs/html/qca__cert_8h.html --- qca2-2.0.3/apidocs/html/qca__cert_8h.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__cert_8h.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,191 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_cert.h File Reference - - - - - - -
-

qca_cert.h File Reference

-

Header file for PGP key and X.509 certificate related classes. -More...

-#include <QMap>
-#include <QDateTime>
-#include "qca_core.h"
-#include "qca_publickey.h"
-
-Include dependency graph for qca_cert.h:
-
-
- - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - -
- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Classes

class  QCA::Certificate
 Public Key (X.509) certificate. More...
class  QCA::CertificateAuthority
 A Certificate Authority is used to generate Certificates and Certificate Revocation Lists (CRLs). More...
class  QCA::CertificateChain
 A chain of related Certificates. More...
class  QCA::CertificateCollection
 Bundle of Certificates and CRLs. More...
class  QCA::CertificateInfoOrdered
 Ordered certificate properties type. More...
class  QCA::CertificateInfoPair
 One entry in a certificate information list. More...
class  QCA::CertificateInfoType
 Certificate information type. More...
class  QCA::CertificateOptions
 Certificate options More...
class  QCA::CertificateRequest
 Certificate Request More...
class  QCA::ConstraintType
 Certificate constraint. More...
class  QCA::CRL
 Certificate Revocation List More...
class  QCA::CRLEntry
 Part of a CRL representing a single certificate. More...
class  QCA::KeyBundle
 Certificate chain and private key pair. More...
class  QCA::KeyLoader
 Asynchronous private key loader. More...
class  QCA::PGPKey
 Pretty Good Privacy key. More...

Namespaces

namespace  QCA

Typedefs

typedef QMultiMap
-< CertificateInfoType, QString
QCA::CertificateInfo
typedef QList< ConstraintType > QCA::Constraints

Enumerations

enum  QCA::CertificateInfoTypeKnown {
-  QCA::CommonName, -QCA::Email, -QCA::EmailLegacy, -QCA::Organization, -
-  QCA::OrganizationalUnit, -QCA::Locality, -QCA::IncorporationLocality, -QCA::State, -
-  QCA::IncorporationState, -QCA::Country, -QCA::IncorporationCountry, -QCA::URI, -
-  QCA::DNS, -QCA::IPAddress, -QCA::XMPP -
- }
enum  QCA::CertificateRequestFormat { QCA::PKCS10, -QCA::SPKAC - }
enum  QCA::ConstraintTypeKnown {
-  QCA::DigitalSignature, -QCA::NonRepudiation, -QCA::KeyEncipherment, -QCA::DataEncipherment, -
-  QCA::KeyAgreement, -QCA::KeyCertificateSign, -QCA::CRLSign, -QCA::EncipherOnly, -
-  QCA::DecipherOnly, -QCA::ServerAuth, -QCA::ClientAuth, -QCA::CodeSigning, -
-  QCA::EmailProtection, -QCA::IPSecEndSystem, -QCA::IPSecTunnel, -QCA::IPSecUser, -
-  QCA::TimeStamping, -QCA::OCSPSigning -
- }
enum  QCA::UsageMode {
-  QCA::UsageAny = 0x00, -QCA::UsageTLSServer = 0x01, -QCA::UsageTLSClient = 0x02, -QCA::UsageCodeSigning = 0x04, -
-  QCA::UsageEmailProtection = 0x08, -QCA::UsageTimeStamping = 0x10, -QCA::UsageCRLSigning = 0x20 -
- }
enum  QCA::ValidateFlags { ValidateAll = 0x00, -ValidateRevoked = 0x01, -ValidateExpired = 0x02, -ValidatePolicy = 0x04 - }
enum  QCA::Validity {
-  QCA::ValidityGood, -QCA::ErrorRejected, -QCA::ErrorUntrusted, -QCA::ErrorSignatureFailed, -
-  QCA::ErrorInvalidCA, -QCA::ErrorInvalidPurpose, -QCA::ErrorSelfSigned, -QCA::ErrorRevoked, -
-  QCA::ErrorPathLengthExceeded, -QCA::ErrorExpired, -QCA::ErrorExpiredCA, -QCA::ErrorValidityUnknown = 64 -
- }

Functions

QCA_EXPORT QStringList QCA::makeFriendlyNames (const QList< Certificate > &list)
QCA_EXPORT CertificateInfoOrdered QCA::orderedDNOnly (const CertificateInfoOrdered &in)
QCA_EXPORT QString QCA::orderedToDNString (const CertificateInfoOrdered &in)
-

Detailed Description

-

Header file for PGP key and X.509 certificate related classes.

-
Note:
You should not use this header directly from an application. You should just use #include <QtCrypto> instead.
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__cert_8h__incl.map qca2-2.1.0/apidocs/html/qca__cert_8h__incl.map --- qca2-2.0.3/apidocs/html/qca__cert_8h__incl.map 2010-11-27 21:30:33.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__cert_8h__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__cert_8h__incl.md5 qca2-2.1.0/apidocs/html/qca__cert_8h__incl.md5 --- qca2-2.0.3/apidocs/html/qca__cert_8h__incl.md5 2010-11-27 21:30:33.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__cert_8h__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -dc2ef948429786785c3c86ba4d072e57 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__cert_8h__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__cert_8h__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__cert_8h_source.html qca2-2.1.0/apidocs/html/qca__cert_8h_source.html --- qca2-2.0.3/apidocs/html/qca__cert_8h_source.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__cert_8h_source.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,870 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_cert.h Source File - - - - - - -
-

qca_cert.h

Go to the documentation of this file.
00001 /*
-00002  * qca_cert.h - Qt Cryptographic Architecture
-00003  * Copyright (C) 2003-2007  Justin Karneges <justin@affinix.com>
-00004  * Copyright (C) 2004-2006  Brad Hards <bradh@frogmouth.net>
-00005  *
-00006  * This library is free software; you can redistribute it and/or
-00007  * modify it under the terms of the GNU Lesser General Public
-00008  * License as published by the Free Software Foundation; either
-00009  * version 2.1 of the License, or (at your option) any later version.
-00010  *
-00011  * This library is distributed in the hope that it will be useful,
-00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-00014  * Lesser General Public License for more details.
-00015  *
-00016  * You should have received a copy of the GNU Lesser General Public
-00017  * License along with this library; if not, write to the Free Software
-00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-00019  * 02110-1301  USA
-00020  *
-00021  */
-00022 
-00033 #ifndef QCA_CERT_H
-00034 #define QCA_CERT_H
-00035 
-00036 #include <QMap>
-00037 #include <QDateTime>
-00038 #include "qca_core.h"
-00039 #include "qca_publickey.h"
-00040 
-00041 namespace QCA {
-00042 
-00043 class CertContext;
-00044 class CSRContext;
-00045 class CRLContext;
-00046 class Certificate;
-00047 class CRL;
-00048 class CertificateCollection;
-00049 class CertificateChain;
-00050 
-00051 
-00055 enum CertificateRequestFormat
-00056 {
-00057         PKCS10, 
-00058         SPKAC   
-00059 };
-00060 
-00066 enum CertificateInfoTypeKnown
-00067 {
-00068         CommonName,             
-00069         Email,                  
-00070         EmailLegacy,            
-00071         Organization,           
-00072         OrganizationalUnit,     
-00073         Locality,               
-00074         IncorporationLocality,  
-00075         State,                  
-00076         IncorporationState,     
-00077         Country,                
-00078         IncorporationCountry,   
-00079         URI,                    
-00080         DNS,                    
-00081         IPAddress,              
-00082         XMPP                    
-00083 };
-00084 
-00121 class QCA_EXPORT CertificateInfoType
-00122 {
-00123 public:
-00127         enum Section
-00128         {
-00129                 DN,              
-00130                 AlternativeName  
-00131         };
-00132 
-00136         CertificateInfoType();
-00137 
-00146         CertificateInfoType(CertificateInfoTypeKnown known);
-00147 
-00156         CertificateInfoType(const QString &id, Section section);
-00157 
-00163         CertificateInfoType(const CertificateInfoType &from);
-00164 
-00165         ~CertificateInfoType();
-00166 
-00172         CertificateInfoType & operator=(const CertificateInfoType &from);
-00173 
-00177         Section section() const;
-00178 
-00186         CertificateInfoTypeKnown known() const;
-00187 
-00206         QString id() const;
-00207 
-00214         bool operator<(const CertificateInfoType &other) const;
-00215 
-00222         bool operator==(const CertificateInfoType &other) const;
-00223 
-00230         inline bool operator!=(const CertificateInfoType &other) const
-00231         {
-00232                 return !(*this == other);
-00233         }
-00234 
-00235 private:
-00236         class Private;
-00237         QSharedDataPointer<Private> d;
-00238 };
-00239 
-00247 class QCA_EXPORT CertificateInfoPair
-00248 {
-00249 public:
-00253         CertificateInfoPair();
-00254 
-00261         CertificateInfoPair(const CertificateInfoType &type, const QString &value);
-00262 
-00268         CertificateInfoPair(const CertificateInfoPair &from);
-00269 
-00270         ~CertificateInfoPair();
-00271 
-00277         CertificateInfoPair & operator=(const CertificateInfoPair &from);
-00278 
-00282         CertificateInfoType type() const;
-00283 
-00287         QString value() const;
-00288 
-00295         bool operator==(const CertificateInfoPair &other) const;
-00296 
-00303         inline bool operator!=(const CertificateInfoPair &other) const
-00304         {
-00305                 return !(*this == other);
-00306         }
-00307 
-00308 private:
-00309         class Private;
-00310         QSharedDataPointer<Private> d;
-00311 };
-00312 
-00313 
-00319 enum ConstraintTypeKnown
-00320 {
-00321         // KeyUsage
-00322         DigitalSignature,    
-00323         NonRepudiation,      
-00324         KeyEncipherment,     
-00325         DataEncipherment,    
-00326         KeyAgreement,        
-00327         KeyCertificateSign,  
-00328         CRLSign,             
-00329         EncipherOnly,        
-00330         DecipherOnly,        
-00331 
-00332         // ExtKeyUsage
-00333         ServerAuth,       
-00334         ClientAuth,       
-00335         CodeSigning,      
-00336         EmailProtection,  
-00337         IPSecEndSystem,   
-00338         IPSecTunnel,      
-00339         IPSecUser,        
-00340         TimeStamping,     
-00341         OCSPSigning       
-00342 };
-00343 
-00357 class QCA_EXPORT ConstraintType
-00358 {
-00359 public:
-00363         enum Section
-00364         {
-00365                 KeyUsage,          
-00366                 ExtendedKeyUsage   
-00367         };
-00368 
-00372         ConstraintType();
-00373 
-00382         ConstraintType(ConstraintTypeKnown known);
-00383 
-00392         ConstraintType(const QString &id, Section section);
-00393 
-00399         ConstraintType(const ConstraintType &from);
-00400 
-00401         ~ConstraintType();
-00402 
-00408         ConstraintType & operator=(const ConstraintType &from);
-00409 
-00413         Section section() const;
-00414 
-00422         ConstraintTypeKnown known() const;
-00423 
-00442         QString id() const;
-00443 
-00449         bool operator<(const ConstraintType &other) const;
-00450 
-00456         bool operator==(const ConstraintType &other) const;
-00457 
-00463         inline bool operator!=(const ConstraintType &other) const
-00464         {
-00465                 return !(*this == other);
-00466         }
-00467 
-00468 private:
-00469         class Private;
-00470         QSharedDataPointer<Private> d;
-00471 };
-00472 
-00476 enum UsageMode
-00477 {
-00478         UsageAny             = 0x00, 
-00479         UsageTLSServer       = 0x01, 
-00480         UsageTLSClient       = 0x02, 
-00481         UsageCodeSigning     = 0x04, 
-00482         UsageEmailProtection = 0x08, 
-00483         UsageTimeStamping    = 0x10, 
-00484         UsageCRLSigning      = 0x20  
-00485 };
-00486 
-00490 enum Validity
-00491 {
-00492         ValidityGood,            
-00493         ErrorRejected,           
-00494         ErrorUntrusted,          
-00495         ErrorSignatureFailed,    
-00496         ErrorInvalidCA,          
-00497         ErrorInvalidPurpose,     
-00498         ErrorSelfSigned,         
-00499         ErrorRevoked,            
-00500         ErrorPathLengthExceeded, 
-00501         ErrorExpired,            
-00502         ErrorExpiredCA,          
-00503         ErrorValidityUnknown = 64  
-00504 };
-00505 
-00509 enum ValidateFlags
-00510 {
-00511         ValidateAll     = 0x00,  // Verify all conditions
-00512         ValidateRevoked = 0x01,  // Verify the certificate was not revoked
-00513         ValidateExpired = 0x02,  // Verify the certificate has not expired
-00514         ValidatePolicy  = 0x04   // Verify the certificate can be used for a specified purpose
-00515 };
-00516 
-00528 typedef QMultiMap<CertificateInfoType, QString> CertificateInfo;
-00529 
-00540 class CertificateInfoOrdered : public QList<CertificateInfoPair>
-00541 {
-00542 public:
-00546         inline QString toString() const;
-00547 
-00552         inline CertificateInfoOrdered dnOnly() const;
-00553 };
-00554 
-00560 QCA_EXPORT QString orderedToDNString(const CertificateInfoOrdered &in);
-00561 
-00568 QCA_EXPORT CertificateInfoOrdered orderedDNOnly(const CertificateInfoOrdered &in);
-00569 
-00570 inline QString CertificateInfoOrdered::toString() const
-00571 {
-00572         return orderedToDNString(*this);
-00573 }
-00574 
-00575 inline CertificateInfoOrdered CertificateInfoOrdered::dnOnly() const
-00576 {
-00577         return orderedDNOnly(*this);
-00578 }
-00579 
-00583 typedef QList<ConstraintType> Constraints;
-00584 
-00591 QCA_EXPORT QStringList makeFriendlyNames(const QList<Certificate> &list);
-00592 
-00602 class QCA_EXPORT CertificateOptions
-00603 {
-00604 public:
-00610         CertificateOptions(CertificateRequestFormat format = PKCS10);
-00611 
-00617         CertificateOptions(const CertificateOptions &from);
-00618         ~CertificateOptions();
-00619 
-00625         CertificateOptions & operator=(const CertificateOptions &from);
-00626 
-00630         CertificateRequestFormat format() const;
-00631 
-00637         void setFormat(CertificateRequestFormat f);
-00638 
-00644         bool isValid() const;
-00645 
-00653         QString challenge() const;
-00654 
-00660         CertificateInfo info() const;
-00661 
-00668         CertificateInfoOrdered infoOrdered() const;
-00669 
-00673         Constraints constraints() const;
-00674 
-00678         QStringList policies() const;
-00679 
-00687         QStringList crlLocations() const;
-00688 
-00696         QStringList issuerLocations() const;
-00697 
-00703         QStringList ocspLocations() const;
-00704 
-00711         bool isCA() const;
-00712 
-00716         int pathLimit() const;
-00717 
-00723         BigInteger serialNumber() const;
-00724 
-00730         QDateTime notValidBefore() const;
-00731 
-00737         QDateTime notValidAfter() const;
-00738 
-00747         void setChallenge(const QString &s);
-00748 
-00757         void setInfo(const CertificateInfo &info);
-00758 
-00767         void setInfoOrdered(const CertificateInfoOrdered &info);
-00768 
-00774         void setConstraints(const Constraints &constraints);
-00775 
-00781         void setPolicies(const QStringList &policies);
-00782 
-00790         void setCRLLocations(const QStringList &locations);
-00791 
-00799         void setIssuerLocations(const QStringList &locations);
-00800 
-00806         void setOCSPLocations(const QStringList &locations);
-00807 
-00813         void setAsCA(int pathLimit = 8); // value from Botan
-00814 
-00818         void setAsUser();
-00819 
-00825         void setSerialNumber(const BigInteger &i);
-00826 
-00833         void setValidityPeriod(const QDateTime &start, const QDateTime &end);
-00834 
-00835 private:
-00836         class Private;
-00837         Private *d;
-00838 };
-00839 
-00849 class QCA_EXPORT Certificate : public Algorithm
-00850 {
-00851 public:
-00855         Certificate();
-00856 
-00863         Certificate(const QString &fileName);
-00864 
-00874         Certificate(const CertificateOptions &opts, const PrivateKey &key, const QString &provider = QString());
-00875 
-00881         Certificate(const Certificate &from);
-00882 
-00883         ~Certificate();
-00884 
-00890         Certificate & operator=(const Certificate &from);
-00891 
-00896         bool isNull() const;
-00897 
-00901         QDateTime notValidBefore() const;
-00902 
-00906         QDateTime notValidAfter() const;
-00907 
-00925         CertificateInfo subjectInfo() const;
-00926 
-00946         CertificateInfoOrdered subjectInfoOrdered() const;
-00947 
-00953         CertificateInfo issuerInfo() const;
-00954 
-00967         CertificateInfoOrdered issuerInfoOrdered() const;
-00968 
-00972         Constraints constraints() const;
-00973 
-00979         QStringList policies() const;
-00980 
-00986         QStringList crlLocations() const;
-00987 
-00993         QStringList issuerLocations() const;
-00994 
-00998         QStringList ocspLocations() const;
-00999 
-01006         QString commonName() const;
-01007 
-01011         BigInteger serialNumber() const;
-01012 
-01016         PublicKey subjectPublicKey() const;
-01017 
-01023         bool isCA() const;
-01024 
-01030         bool isSelfSigned() const;
-01031 
-01040         bool isIssuerOf(const Certificate &other) const;
-01041 
-01046         int pathLimit() const;
-01047 
-01051         SignatureAlgorithm signatureAlgorithm() const;
-01052 
-01056         QByteArray subjectKeyId() const;
-01057 
-01061         QByteArray issuerKeyId() const;
-01062 
-01074         Validity validate(const CertificateCollection &trusted, const CertificateCollection &untrusted, UsageMode u = UsageAny, ValidateFlags vf = ValidateAll) const;
-01075 
-01079         QByteArray toDER() const;
-01080 
-01084         QString toPEM() const;
-01085 
-01091         bool toPEMFile(const QString &fileName) const;
-01092 
-01105         static Certificate fromDER(const QByteArray &a, ConvertResult *result = 0, const QString &provider = QString());
-01106 
-01119         static Certificate fromPEM(const QString &s, ConvertResult *result = 0, const QString &provider = QString());
-01120 
-01134         static Certificate fromPEMFile(const QString &fileName, ConvertResult *result = 0, const QString &provider = QString());
-01135 
-01148         bool matchesHostName(const QString &host) const;
-01149 
-01157         bool operator==(const Certificate &a) const;
-01158 
-01164         inline bool operator!=(const Certificate &other) const
-01165         {
-01166                 return !(*this == other);
-01167         }
-01168 
-01174         void change(CertContext *c);
-01175 
-01176 private:
-01177         class Private;
-01178         friend class Private;
-01179         QSharedDataPointer<Private> d;
-01180 
-01181         friend class CertificateChain;
-01182         Validity chain_validate(const CertificateChain &chain, const CertificateCollection &trusted, const QList<CRL> &untrusted_crls, UsageMode u, ValidateFlags vf) const;
-01183         CertificateChain chain_complete(const CertificateChain &chain, const QList<Certificate> &issuers, Validity *result) const;
-01184 };
-01185 
-01208 class CertificateChain : public QList<Certificate>
-01209 {
-01210 public:
-01214         inline CertificateChain() {}
-01215 
-01222         inline CertificateChain(const Certificate &primary) { append(primary); }
-01223 
-01227         inline const Certificate & primary() const { return first(); }
-01228 
-01242         inline Validity validate(const CertificateCollection &trusted, const QList<CRL> &untrusted_crls = QList<CRL>(), UsageMode u = UsageAny, ValidateFlags vf = ValidateAll) const;
-01243 
-01267         inline CertificateChain complete(const QList<Certificate> &issuers = QList<Certificate>(), Validity *result = 0) const;
-01268 };
-01269 
-01270 inline Validity CertificateChain::validate(const CertificateCollection &trusted, const QList<CRL> &untrusted_crls, UsageMode u, ValidateFlags vf) const
-01271 {
-01272         if(isEmpty())
-01273                 return ErrorValidityUnknown;
-01274         return first().chain_validate(*this, trusted, untrusted_crls, u, vf);
-01275 }
-01276 
-01277 inline CertificateChain CertificateChain::complete(const QList<Certificate> &issuers, Validity *result) const
-01278 {
-01279         if(isEmpty())
-01280                 return CertificateChain();
-01281         return first().chain_complete(*this, issuers, result);
-01282 }
-01283 
-01293 class QCA_EXPORT CertificateRequest : public Algorithm
-01294 {
-01295 public:
-01299         CertificateRequest();
-01300 
-01307         CertificateRequest(const QString &fileName);
-01308 
-01318         CertificateRequest(const CertificateOptions &opts, const PrivateKey &key, const QString &provider = QString());
-01319 
-01325         CertificateRequest(const CertificateRequest &from);
-01326 
-01327         ~CertificateRequest();
-01328 
-01334         CertificateRequest & operator=(const CertificateRequest &from);
-01335 
-01341         bool isNull() const;
-01342 
-01353         static bool canUseFormat(CertificateRequestFormat f, const QString &provider = QString());
-01354 
-01358         CertificateRequestFormat format() const;
-01359 
-01368         CertificateInfo subjectInfo() const;
-01369 
-01380         CertificateInfoOrdered subjectInfoOrdered() const;
-01381 
-01387         Constraints constraints() const;
-01388 
-01394         QStringList policies() const;
-01395 
-01399         PublicKey subjectPublicKey() const;
-01400 
-01407         bool isCA() const;
-01408 
-01414         int pathLimit() const;
-01415 
-01419         QString challenge() const;
-01420 
-01425         SignatureAlgorithm signatureAlgorithm() const;
-01426 
-01434         bool operator==(const CertificateRequest &csr) const;
-01435 
-01441         inline bool operator!=(const CertificateRequest &other) const
-01442         {
-01443                 return !(*this == other);
-01444         }
-01445 
-01451         QByteArray toDER() const;
-01452 
-01458         QString toPEM() const;
-01459 
-01467         bool toPEMFile(const QString &fileName) const;
-01468 
-01483         static CertificateRequest fromDER(const QByteArray &a, ConvertResult *result = 0, const QString &provider = QString());
-01484 
-01500         static CertificateRequest fromPEM(const QString &s, ConvertResult *result = 0, const QString &provider = QString());
-01501 
-01517         static CertificateRequest fromPEMFile(const QString &fileName, ConvertResult *result = 0, const QString &provider = QString());
-01518 
-01526         QString toString() const;
-01527 
-01542         static CertificateRequest fromString(const QString &s, ConvertResult *result = 0, const QString &provider = QString());
-01543 
-01549         void change(CSRContext *c);
-01550 
-01551 private:
-01552         class Private;
-01553         friend class Private;
-01554         QSharedDataPointer<Private> d;
-01555 };
-01556 
-01564 class QCA_EXPORT CRLEntry
-01565 {
-01566 public:
-01570         enum Reason
-01571         {
-01572                 Unspecified,        
-01573                 KeyCompromise,      
-01574                 CACompromise,       
-01575                 AffiliationChanged,
-01576                 Superseded,         
-01577                 CessationOfOperation,
-01578                 CertificateHold,    
-01579                 RemoveFromCRL,      
-01580                 PrivilegeWithdrawn,
-01581                 AACompromise        
-01582         };
-01583 
-01587         CRLEntry();
-01588 
-01595         explicit CRLEntry(const Certificate &c, Reason r = Unspecified);
-01596 
-01605         CRLEntry(const BigInteger serial, const QDateTime &time, Reason r = Unspecified);
-01606 
-01612         CRLEntry(const CRLEntry &from);
-01613 
-01614         ~CRLEntry();
-01615 
-01621         CRLEntry & operator=(const CRLEntry &from);
-01622 
-01626         BigInteger serialNumber() const;
-01627 
-01631         QDateTime time() const;
-01632 
-01636         bool isNull() const;
-01637 
-01644         Reason reason() const;
-01645 
-01653         bool operator<(const CRLEntry &a) const;
-01654 
-01662         bool operator==(const CRLEntry &a) const;
-01663 
-01669         inline bool operator!=(const CRLEntry &other) const
-01670         {
-01671                 return !(*this == other);
-01672         }
-01673 
-01674 private:
-01675         BigInteger _serial;
-01676         QDateTime _time;
-01677         Reason _reason;
-01678 
-01679         class Private;
-01680         Private *d;
-01681 };
-01682 
-01703 class QCA_EXPORT CRL : public Algorithm
-01704 {
-01705 public:
-01706         CRL();
-01707 
-01713         CRL(const CRL &from);
-01714 
-01715         ~CRL();
-01716 
-01722         CRL & operator=(const CRL &from);
-01723 
-01729         bool isNull() const;
-01730 
-01737         CertificateInfo issuerInfo() const;
-01738 
-01747         CertificateInfoOrdered issuerInfoOrdered() const;
-01748 
-01755         int number() const;
-01756 
-01760         QDateTime thisUpdate() const;
-01761 
-01767         QDateTime nextUpdate() const;
-01768 
-01772         QList<CRLEntry> revoked() const;
-01773 
-01777         SignatureAlgorithm signatureAlgorithm() const;
-01778 
-01782         QByteArray issuerKeyId() const;
-01783 
-01791         bool operator==(const CRL &a) const;
-01792 
-01798         inline bool operator!=(const CRL &other) const
-01799         {
-01800                 return !(*this == other);
-01801         }
-01802 
-01808         QByteArray toDER() const;
-01809 
-01815         QString toPEM() const;
-01816 
-01823         bool toPEMFile(const QString &fileName) const;
-01824 
-01836         static CRL fromDER(const QByteArray &a, ConvertResult *result = 0, const QString &provider = QString());
-01837 
-01849         static CRL fromPEM(const QString &s, ConvertResult *result = 0, const QString &provider = QString());
-01850 
-01863         static CRL fromPEMFile(const QString &fileName, ConvertResult *result = 0, const QString &provider = QString());
-01864 
-01870         void change(CRLContext *c);
-01871 
-01872 private:
-01873         class Private;
-01874         friend class Private;
-01875         QSharedDataPointer<Private> d;
-01876 };
-01877 
-01891 class QCA_EXPORT CertificateCollection
-01892 {
-01893 public:
-01897         CertificateCollection();
-01898 
-01904         CertificateCollection(const CertificateCollection &from);
-01905 
-01906         ~CertificateCollection();
-01907 
-01913         CertificateCollection & operator=(const CertificateCollection &from);
-01914 
-01920         void addCertificate(const Certificate &cert);
-01921 
-01928         void addCRL(const CRL &crl);
-01929 
-01933         QList<Certificate> certificates() const;
-01934 
-01938         QList<CRL> crls() const;
-01939 
-01945         void append(const CertificateCollection &other);
-01946 
-01952         CertificateCollection operator+(const CertificateCollection &other) const;
-01953 
-01959         CertificateCollection & operator+=(const CertificateCollection &other);
-01960 
-01971         static bool canUsePKCS7(const QString &provider = QString());
-01972 
-01981         bool toFlatTextFile(const QString &fileName);
-01982 
-01993         bool toPKCS7File(const QString &fileName, const QString &provider = QString());
-01994 
-02008         static CertificateCollection fromFlatTextFile(const QString &fileName, ConvertResult *result = 0, const QString &provider = QString());
-02009 
-02023         static CertificateCollection fromPKCS7File(const QString &fileName, ConvertResult *result = 0, const QString &provider = QString());
-02024 
-02025 private:
-02026         class Private;
-02027         QSharedDataPointer<Private> d;
-02028 };
-02029 
-02038 class QCA_EXPORT CertificateAuthority : public Algorithm
-02039 {
-02040 public:
-02049         CertificateAuthority(const Certificate &cert, const PrivateKey &key, const QString &provider);
-02050 
-02056         CertificateAuthority(const CertificateAuthority &from);
-02057 
-02058         ~CertificateAuthority();
-02059 
-02065         CertificateAuthority & operator=(const CertificateAuthority &from);
-02066 
-02073         Certificate certificate() const;
-02074 
-02082         Certificate signRequest(const CertificateRequest &req, const QDateTime &notValidAfter) const;
-02083 
-02090         Certificate createCertificate(const PublicKey &key, const CertificateOptions &opts) const;
-02091 
-02099         CRL createCRL(const QDateTime &nextUpdate) const;
-02100 
-02110         CRL updateCRL(const CRL &crl, const QList<CRLEntry> &entries, const QDateTime &nextUpdate) const;
-02111 
-02112 private:
-02113         class Private;
-02114         Private *d;
-02115 };
-02116 
-02136 class QCA_EXPORT KeyBundle
-02137 {
-02138 public:
-02142         KeyBundle();
-02143 
-02161         explicit KeyBundle(const QString &fileName, const SecureArray &passphrase = SecureArray());
-02162 
-02168         KeyBundle(const KeyBundle &from);
-02169 
-02170         ~KeyBundle();
-02171 
-02177         KeyBundle & operator=(const KeyBundle &from);
-02178 
-02182         bool isNull() const;
-02183 
-02193         QString name() const;
-02194 
-02200         CertificateChain certificateChain() const;
-02201 
-02207         PrivateKey privateKey() const;
-02208 
-02214         void setName(const QString &s);
-02215 
-02225         void setCertificateChainAndKey(const CertificateChain &c, const PrivateKey &key);
-02226 
-02250         QByteArray toArray(const SecureArray &passphrase, const QString &provider = QString()) const;
-02251 
-02276         bool toFile(const QString &fileName, const SecureArray &passphrase, const QString &provider = QString()) const;
-02277 
-02308         static KeyBundle fromArray(const QByteArray &a, const SecureArray &passphrase = SecureArray(), ConvertResult *result = 0, const QString &provider = QString());
-02309 
-02340         static KeyBundle fromFile(const QString &fileName, const SecureArray &passphrase = SecureArray(), ConvertResult *result = 0, const QString &provider = QString());
-02341 
-02342 private:
-02343         class Private;
-02344         QSharedDataPointer<Private> d;
-02345 };
-02346 
-02361 class QCA_EXPORT PGPKey : public Algorithm
-02362 {
-02363 public:
-02367         PGPKey();
-02368 
-02378         PGPKey(const QString &fileName);
-02379 
-02385         PGPKey(const PGPKey &from);
-02386 
-02387         ~PGPKey();
-02388 
-02394         PGPKey & operator=(const PGPKey &from);
-02395 
-02401         bool isNull() const;
-02402 
-02406         QString keyId() const;
-02407 
-02411         QString primaryUserId() const;
-02412 
-02416         QStringList userIds() const;
-02417 
-02423         bool isSecret() const;
-02424 
-02428         QDateTime creationDate() const;
-02429 
-02433         QDateTime expirationDate() const;
-02434 
-02441         QString fingerprint() const;
-02442 
-02451         bool inKeyring() const;
-02452 
-02458         bool isTrusted() const;
-02459 
-02469         QByteArray toArray() const;
-02470 
-02479         QString toString() const;
-02480 
-02486         bool toFile(const QString &fileName) const;
-02487 
-02497         static PGPKey fromArray(const QByteArray &a, ConvertResult *result = 0, const QString &provider = QString());
-02498 
-02508         static PGPKey fromString(const QString &s, ConvertResult *result = 0, const QString &provider = QString());
-02509 
-02520         static PGPKey fromFile(const QString &fileName, ConvertResult *result = 0, const QString &provider = QString());
-02521 
-02522 private:
-02523         class Private;
-02524         Private *d;
-02525 };
-02526 
-02566 class QCA_EXPORT KeyLoader : public QObject
-02567 {
-02568         Q_OBJECT
-02569 public:
-02575         KeyLoader(QObject *parent = 0);
-02576         ~KeyLoader();
-02577 
-02587         void loadPrivateKeyFromPEMFile(const QString &fileName);
-02588 
-02597         void loadPrivateKeyFromPEM(const QString &s);
-02598 
-02607         void loadPrivateKeyFromDER(const SecureArray &a);
-02608 
-02617         void loadKeyBundleFromFile(const QString &fileName);
-02618 
-02626         void loadKeyBundleFromArray(const QByteArray &a);
-02627 
-02633         ConvertResult convertResult() const;
-02634 
-02644         PrivateKey privateKey() const;
-02645 
-02654         KeyBundle keyBundle() const;
-02655 
-02656 Q_SIGNALS:
-02664         void finished();
-02665 
-02666 private:
-02667         Q_DISABLE_COPY(KeyLoader)
-02668 
-02669         class Private;
-02670         friend class Private;
-02671         Private *d;
-02672 };
-02673 
-02674 }
-02675 
-02676 #endif
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__core_8h__dep__incl.map qca2-2.1.0/apidocs/html/qca__core_8h__dep__incl.map --- qca2-2.0.3/apidocs/html/qca__core_8h__dep__incl.map 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__core_8h__dep__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ - - - - - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__core_8h__dep__incl.md5 qca2-2.1.0/apidocs/html/qca__core_8h__dep__incl.md5 --- qca2-2.0.3/apidocs/html/qca__core_8h__dep__incl.md5 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__core_8h__dep__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -d63c526d8ca3ac5f03f686035dbfea38 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__core_8h__dep__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__core_8h__dep__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__core_8h.html qca2-2.1.0/apidocs/html/qca__core_8h.html --- qca2-2.0.3/apidocs/html/qca__core_8h.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__core_8h.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,275 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_core.h File Reference - - - - - - -
-

qca_core.h File Reference

-

Header file for core QCA infrastructure. -More...

-#include <QString>
-#include <QStringList>
-#include <QList>
-#include <QSharedData>
-#include <QSharedDataPointer>
-#include "qca_export.h"
-#include "qca_support.h"
-#include "qca_tools.h"
-
-Include dependency graph for qca_core.h:
-
-
- - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - -
- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Classes

class  QCA::Algorithm
 General superclass for an algorithm. More...
class  QCA::BasicContext
 Base class to use for primitive provider contexts. More...
class  QCA::BufferedComputation
 General superclass for buffered computation algorithms. More...
class  QCA::Event
 An asynchronous event. More...
class  QCA::EventHandler
 Interface class for password / passphrase / PIN and token handlers. More...
class  QCA::Filter
 General superclass for filtering transformation algorithms. More...
class  QCA::InitializationVector
 Container for initialisation vectors and nonces. More...
class  QCA::Initializer
 Convenience method for initialising and cleaning up QCA. More...
class  QCA::KeyLength
 Simple container for acceptable key lengths. More...
class  QCA::PasswordAsker
 User password / passphrase / PIN handler. More...
class  QCA::Provider
 Algorithm provider. More...
class  QCA::Provider
 Algorithm provider. More...
class  QCA::SymmetricKey
 Container for keys for symmetric encryption algorithms. More...
class  QCA::TokenAsker
 User token handler. More...

Namespaces

namespace  QCA

Defines

#define QCA_logBinaryMessage(blob, severity)
#define QCA_logTextMessage(message, severity)
#define QCA_VERSION   0x020003

Typedefs

typedef QList< Provider * > QCA::ProviderList

Enumerations

enum  QCA::Direction { QCA::Encode, -QCA::Decode - }
enum  QCA::MemoryMode { QCA::Practical, -QCA::Locking, -QCA::LockingKeepPrivileges - }

Functions

QCA_EXPORT void QCA::appendPluginDiagnosticText (const QString &text)
QCA_EXPORT QString QCA::appName ()
QCA_EXPORT QString QCA::arrayToHex (const QByteArray &array)
QCA_EXPORT void QCA::clearPluginDiagnosticText ()
QCA_EXPORT QStringList QCA::defaultFeatures ()
QCA_EXPORT Provider * QCA::defaultProvider ()
QCA_EXPORT void QCA::deinit ()
QCA_EXPORT Provider * QCA::findProvider (const QString &name)
QCA_EXPORT QVariant QCA::getProperty (const QString &name)
QCA_EXPORT QVariantMap QCA::getProviderConfig (const QString &name)
QCA_EXPORT QString QCA::globalRandomProvider ()
QCA_EXPORT bool QCA::haveSecureMemory ()
QCA_EXPORT bool QCA::haveSecureRandom ()
QCA_EXPORT bool QCA::haveSystemStore ()
QCA_EXPORT QByteArray QCA::hexToArray (const QString &hexString)
QCA_EXPORT void QCA::init (MemoryMode m, int prealloc)
QCA_EXPORT void QCA::init ()
QCA_EXPORT bool QCA::insertProvider (Provider *p, int priority=0)
QCA_EXPORT bool QCA::isSupported (const QStringList &features, const QString &provider=QString())
QCA_EXPORT bool QCA::isSupported (const char *features, const QString &provider=QString())
QCA_EXPORT Logger * QCA::logger ()
QCA_EXPORT QString QCA::pluginDiagnosticText ()
QCA_EXPORT int QCA::providerPriority (const QString &name)
QCA_EXPORT ProviderList QCA::providers ()
QCA_EXPORT int qcaVersion ()
QCA_EXPORT void QCA::saveProviderConfig (const QString &name)
QCA_EXPORT void QCA::scanForPlugins ()
QCA_EXPORT void QCA::setAppName (const QString &name)
QCA_EXPORT void QCA::setGlobalRandomProvider (const QString &provider)
QCA_EXPORT void QCA::setProperty (const QString &name, const QVariant &value)
QCA_EXPORT void QCA::setProviderConfig (const QString &name, const QVariantMap &config)
QCA_EXPORT void QCA::setProviderPriority (const QString &name, int priority)
QCA_EXPORT QStringList QCA::supportedFeatures ()
QCA_EXPORT CertificateCollection QCA::systemStore ()
QCA_EXPORT void QCA::unloadAllPlugins ()
-

Detailed Description

-

Header file for core QCA infrastructure.

-
Note:
You should not use this header directly from an application. You should just use #include <QtCrypto> instead.
-

Define Documentation

- -
-
- - - - -
#define QCA_VERSION   0x020003
-
-
- -

The current version of QCA.

-

This provides you a compile time check of the QCA version.

-
See also:
qcaVersion for a runtime check.
-
Examples:
aes-cmac.cpp.
-
-
-
- -
-
- - - - - - - - - - - - - - -
#define QCA_logTextMessage(message,
severity  ) 
-
-
-Value:
do { \
-                register QCA::Logger::Severity s = severity; \
-                register QCA::Logger *l = QCA::logger (); \
-                if (s <= l->level ()) { \
-                        l->logTextMessage (message, s); \
-                } \
-        } while (false)
-
-

Log a text message.

-

This is an efficient function to avoid overhead of argument executions when log level blocks the message.

-
Parameters:
- - - -
message the text to log
severity the type of information to log
-
-
-
Note:
This is a macro, so arguments may or may not be evaluated.
- -
-
- -
-
- - - - - - - - - - - - - - -
#define QCA_logBinaryMessage(blob,
severity  ) 
-
-
-Value:
do { \
-                register QCA::Logger::Severity s = severity; \
-                register QCA::Logger *l = QCA::logger (); \
-                if (s <= l->level ()) { \
-                        l->logBinaryMessage (blob, s); \
-                } \
-        } while (false)
-
-

Log a binary message.

-

This is an efficient function to avoid overhead of argument executions when log level blocks the message.

-
Parameters:
- - - -
blob the blob to log
severity the type of information to log
-
-
-
Note:
This is a macro, so arguments may or may not be evaluated.
- -
-
-

Function Documentation

- -
-
- - - - - - - - -
QCA_EXPORT int qcaVersion ( ) 
-
-
- -

The current version of QCA.

-

This is equivalent to QCA_VERSION, except it provides a runtime check of the version of QCA that is being used.

-
Examples:
aes-cmac.cpp.
-
-
-
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__core_8h__incl.map qca2-2.1.0/apidocs/html/qca__core_8h__incl.map --- qca2-2.0.3/apidocs/html/qca__core_8h__incl.map 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__core_8h__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ - - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__core_8h__incl.md5 qca2-2.1.0/apidocs/html/qca__core_8h__incl.md5 --- qca2-2.0.3/apidocs/html/qca__core_8h__incl.md5 2010-11-27 21:30:33.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__core_8h__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -d273f38ec5ce000db801a74d5c72667c \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__core_8h__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__core_8h__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__core_8h_source.html qca2-2.1.0/apidocs/html/qca__core_8h_source.html --- qca2-2.0.3/apidocs/html/qca__core_8h_source.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__core_8h_source.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,518 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_core.h Source File - - - - - - -
-

qca_core.h

Go to the documentation of this file.
00001 /*
-00002  * qca_core.h - Qt Cryptographic Architecture
-00003  * Copyright (C) 2003-2007  Justin Karneges <justin@affinix.com>
-00004  * Copyright (C) 2004,2005  Brad Hards <bradh@frogmouth.net>
-00005  *
-00006  * This library is free software; you can redistribute it and/or
-00007  * modify it under the terms of the GNU Lesser General Public
-00008  * License as published by the Free Software Foundation; either
-00009  * version 2.1 of the License, or (at your option) any later version.
-00010  *
-00011  * This library is distributed in the hope that it will be useful,
-00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-00014  * Lesser General Public License for more details.
-00015  *
-00016  * You should have received a copy of the GNU Lesser General Public
-00017  * License along with this library; if not, write to the Free Software
-00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-00019  * 02110-1301  USA
-00020  *
-00021  */
-00022 
-00033 #ifndef QCA_CORE_H
-00034 #define QCA_CORE_H
-00035 
-00043 #define QCA_VERSION 0x020003
-00044 
-00045 #include <QString>
-00046 #include <QStringList>
-00047 #include <QList>
-00048 #include <QSharedData>
-00049 #include <QSharedDataPointer>
-00050 #include "qca_export.h"
-00051 #include "qca_support.h"
-00052 #include "qca_tools.h"
-00053 
-00060 QCA_EXPORT int qcaVersion();
-00061 
-00065 namespace QCA {
-00066 
-00067 class Provider;
-00068 class Random;
-00069 class CertificateCollection;
-00070 class Global;
-00071 class KeyStore;
-00072 class KeyStoreEntry;
-00073 class KeyStoreInfo;
-00074 class KeyStoreManager;
-00075 class Logger;
-00076 
-00086 typedef QList<Provider*> ProviderList;
-00087 
-00102 enum MemoryMode
-00103 {
-00104         Practical, 
-00105         Locking, 
-00106         LockingKeepPrivileges 
-00107 };
-00108 
-00115 enum Direction
-00116 {
-00117         Encode, 
-00118         Decode  
-00119 };
-00120 
-00126 QCA_EXPORT void init();
-00127 
-00135 QCA_EXPORT void init(MemoryMode m, int prealloc);
-00136 
-00144 QCA_EXPORT void deinit();
-00145 
-00151 QCA_EXPORT bool haveSecureMemory();
-00152 
-00161 QCA_EXPORT bool haveSecureRandom();
-00162 
-00194 QCA_EXPORT bool isSupported(const char *features, const QString &provider = QString());
-00195 
-00204 QCA_EXPORT bool isSupported(const QStringList &features, const QString &provider = QString());
-00205 
-00222 QCA_EXPORT QStringList supportedFeatures();
-00223 
-00241 QCA_EXPORT QStringList defaultFeatures();
-00242 
-00258 QCA_EXPORT bool insertProvider(Provider *p, int priority = 0);
-00259 
-00291 QCA_EXPORT void setProviderPriority(const QString &name, int priority);
-00292 
-00306 QCA_EXPORT int providerPriority(const QString &name);
-00307 
-00317 QCA_EXPORT ProviderList providers();
-00318 
-00324 QCA_EXPORT Provider *findProvider(const QString &name);
-00325 
-00329 QCA_EXPORT Provider *defaultProvider();
-00330 
-00334 QCA_EXPORT void scanForPlugins();
-00335 
-00339 QCA_EXPORT void unloadAllPlugins();
-00340 
-00344 QCA_EXPORT QString pluginDiagnosticText();
-00345 
-00349 QCA_EXPORT void clearPluginDiagnosticText();
-00350 
-00358 QCA_EXPORT void appendPluginDiagnosticText(const QString &text);
-00359 
-00368 QCA_EXPORT void setProperty(const QString &name, const QVariant &value);
-00369 
-00377 QCA_EXPORT QVariant getProperty(const QString &name);
-00378 
-00387 QCA_EXPORT void setProviderConfig(const QString &name, const QVariantMap &config);
-00388 
-00394 QCA_EXPORT QVariantMap getProviderConfig(const QString &name);
-00395 
-00401 QCA_EXPORT void saveProviderConfig(const QString &name);
-00402 
-00406 QCA_EXPORT QString globalRandomProvider();
-00407 
-00418 QCA_EXPORT void setGlobalRandomProvider(const QString &provider);
-00419 
-00426 QCA_EXPORT Logger *logger();
-00427 
-00438 #define QCA_logTextMessage(message, severity) \
-00439         do { \
-00440                 register QCA::Logger::Severity s = severity; \
-00441                 register QCA::Logger *l = QCA::logger (); \
-00442                 if (s <= l->level ()) { \
-00443                         l->logTextMessage (message, s); \
-00444                 } \
-00445         } while (false)
-00446 
-00457 #define QCA_logBinaryMessage(blob, severity) \
-00458         do { \
-00459                 register QCA::Logger::Severity s = severity; \
-00460                 register QCA::Logger *l = QCA::logger (); \
-00461                 if (s <= l->level ()) { \
-00462                         l->logBinaryMessage (blob, s); \
-00463                 } \
-00464         } while (false)
-00465 
-00474 QCA_EXPORT bool haveSystemStore();
-00475 
-00496 QCA_EXPORT CertificateCollection systemStore();
-00497 
-00505 QCA_EXPORT QString appName();
-00506 
-00516 QCA_EXPORT void setAppName(const QString &name);
-00517 
-00538 QCA_EXPORT QString arrayToHex(const QByteArray &array);
-00539 
-00565 QCA_EXPORT QByteArray hexToArray(const QString &hexString);
-00566 
-00578 class QCA_EXPORT Initializer
-00579 {
-00580 public:
-00588         explicit Initializer(MemoryMode m = Practical, int prealloc = 64);
-00589         ~Initializer();
-00590 };
-00591 
-00616 class QCA_EXPORT KeyLength
-00617 {
-00618 public:
-00627         KeyLength(int min, int max, int multiple)
-00628                 : _min( min ), _max(max), _multiple( multiple )
-00629         { }
-00630 
-00634         int minimum() const { return _min; }
-00635 
-00639         int maximum() const { return _max; }
-00640 
-00647         int multiple() const { return _multiple; }
-00648 
-00649 private:
-00650         const int _min, _max, _multiple;
-00651 };
-00652 
-00668 class QCA_EXPORT Provider
-00669 {
-00670 public:
-00671         virtual ~Provider();
-00672 
-00673         class Context;
-00674 
-00684         virtual void init();
-00685 
-00695         virtual void deinit();
-00696 
-00705         virtual int version() const;
-00706 
-00718         virtual int qcaVersion() const = 0;
-00719 
-00737         virtual QString name() const = 0;
-00738 
-00754         virtual QStringList features() const = 0;
-00755 
-00766         virtual QString credit() const;
-00767 
-00794         virtual Context *createContext(const QString &type) = 0;
-00795 
-00820         virtual QVariantMap defaultConfig() const;
-00821 
-00831         virtual void configChanged(const QVariantMap &config);
-00832 };
-00833 
-00843 class QCA_EXPORT Provider::Context : public QObject
-00844 {
-00845         Q_OBJECT
-00846 public:
-00847         virtual ~Context();
-00848 
-00852         Provider *provider() const;
-00853 
-00857         QString type() const;
-00858 
-00862         virtual Context *clone() const = 0;
-00863 
-00872         bool sameProvider(const Context *c) const;
-00873 
-00874 protected:
-00882         Context(Provider *parent, const QString &type);
-00883 
-00889         Context(const Context &from);
-00890 
-00891 private:
-00892         // disable assignment
-00893         Context & operator=(const Context &from);
-00894 
-00895         Provider *_provider;
-00896         QString _type;
-00897 };
-00898 
-00913 class QCA_EXPORT BasicContext : public Provider::Context
-00914 {
-00915         Q_OBJECT
-00916 public:
-00917         ~BasicContext();
-00918 
-00919 protected:
-00927         BasicContext(Provider *parent, const QString &type);
-00928 
-00934         BasicContext(const BasicContext &from);
-00935 
-00936 private:
-00937         // disable assignment
-00938         BasicContext & operator=(const BasicContext &from);
-00939 };
-00940 
-00955 class QCA_EXPORT BufferedComputation
-00956 {
-00957 public:
-00958         virtual ~BufferedComputation();
-00959 
-00963         virtual void clear() = 0;
-00964 
-00971         virtual void update(const MemoryRegion &a) = 0;
-00972 
-00976         virtual MemoryRegion final() = 0;
-00977 
-00990         MemoryRegion process(const MemoryRegion &a);
-00991 };
-00992 
-01011 class QCA_EXPORT Filter
-01012 {
-01013 public:
-01014         virtual ~Filter();
-01015 
-01019         virtual void clear() = 0;
-01020 
-01027         virtual MemoryRegion update(const MemoryRegion &a) = 0;
-01028 
-01033         virtual MemoryRegion final() = 0;
-01034 
-01040         virtual bool ok() const = 0;
-01041 
-01054         MemoryRegion process(const MemoryRegion &a);
-01055 };
-01056 
-01067 class QCA_EXPORT Algorithm
-01068 {
-01069 public:
-01075         Algorithm(const Algorithm &from);
-01076 
-01077         virtual ~Algorithm();
-01078 
-01084         Algorithm & operator=(const Algorithm &from);
-01085 
-01089         QString type() const;
-01090 
-01097         Provider *provider() const;
-01098 
-01099         // Note: The next five functions are not public!
-01100 
-01106         Provider::Context *context();
-01107 
-01113         const Provider::Context *context() const;
-01114 
-01122         void change(Provider::Context *c);
-01123 
-01132         void change(const QString &type, const QString &provider);
-01133 
-01139         Provider::Context *takeContext();
-01140 
-01141 protected:
-01145         Algorithm();
-01146 
-01153         Algorithm(const QString &type, const QString &provider);
-01154 
-01155 private:
-01156         class Private;
-01157         QSharedDataPointer<Private> d;
-01158 };
-01159 
-01167 class QCA_EXPORT SymmetricKey : public SecureArray
-01168 {
-01169 public:
-01173         SymmetricKey();
-01174 
-01182         SymmetricKey(int size);
-01183 
-01189         SymmetricKey(const SecureArray &a);
-01190 
-01196         SymmetricKey(const QByteArray &a);
-01197 
-01203         bool isWeakDESKey();
-01204 };
-01205 
-01213 class QCA_EXPORT InitializationVector : public SecureArray
-01214 {
-01215 public:
-01219         InitializationVector();
-01220 
-01226         InitializationVector(int size);
-01227 
-01233         InitializationVector(const SecureArray &a);
-01234 
-01240         InitializationVector(const QByteArray &a);
-01241 };
-01242 
-01257 class QCA_EXPORT Event
-01258 {
-01259 public:
-01265         enum Type
-01266         {
-01267                 Password,   
-01268                 Token       
-01269         };
-01270 
-01283         enum Source
-01284         {
-01285                 KeyStore,   
-01286                 Data        
-01287         };
-01288 
-01297         enum PasswordStyle
-01298         {
-01299                 StylePassword,   
-01300                 StylePassphrase, 
-01301                 StylePIN         
-01302         };
-01303 
-01307         Event();
-01308 
-01314         Event(const Event &from);
-01315 
-01319         ~Event();
-01320 
-01326         Event & operator=(const Event &from);
-01327 
-01331         bool isNull() const;
-01332 
-01336         Type type() const;
-01337 
-01341         Source source() const;
-01342 
-01350         PasswordStyle passwordStyle() const;
-01351 
-01357         KeyStoreInfo keyStoreInfo() const;
-01358 
-01364         KeyStoreEntry keyStoreEntry() const;
-01365 
-01372         QString fileName() const;
-01373 
-01377         void *ptr() const;
-01378 
-01392         void setPasswordKeyStore(PasswordStyle pstyle, const KeyStoreInfo &keyStoreInfo, const KeyStoreEntry &keyStoreEntry, void *ptr);
-01393 
-01405         void setPasswordData(PasswordStyle pstyle, const QString &fileName, void *ptr);
-01406 
-01418         void setToken(const KeyStoreInfo &keyStoreInfo, const KeyStoreEntry &keyStoreEntry, void *ptr);
-01419 
-01420 private:
-01421         class Private;
-01422         QSharedDataPointer<Private> d;
-01423 };
-01424 
-01442 class QCA_EXPORT EventHandler : public QObject
-01443 {
-01444         Q_OBJECT
-01445 public:
-01451         EventHandler(QObject *parent = 0);
-01452         ~EventHandler();
-01453 
-01459         void start();
-01460 
-01471         void submitPassword(int id, const SecureArray &password);
-01472 
-01482         void tokenOkay(int id);
-01483 
-01493         void reject(int id);
-01494 
-01495 Q_SIGNALS:
-01505         void eventReady(int id, const QCA::Event &context);
-01506 
-01507 private:
-01508         Q_DISABLE_COPY(EventHandler)
-01509 
-01510         class Private;
-01511         friend class Private;
-01512         Private *d;
-01513 };
-01514 
-01524 class QCA_EXPORT PasswordAsker : public QObject
-01525 {
-01526         Q_OBJECT
-01527 public:
-01533         PasswordAsker(QObject *parent = 0);
-01534         ~PasswordAsker();
-01535 
-01547         void ask(Event::PasswordStyle pstyle, const KeyStoreInfo &keyStoreInfo, const KeyStoreEntry &keyStoreEntry, void *ptr);
-01548 
-01558         void ask(Event::PasswordStyle pstyle, const QString &fileName, void *ptr);
-01559 
-01563         void cancel();
-01564 
-01572         void waitForResponse();
-01573 
-01582         bool accepted() const;
-01583 
-01588         SecureArray password() const;
-01589 
-01590 Q_SIGNALS:
-01597         void responseReady();
-01598 
-01599 private:
-01600         Q_DISABLE_COPY(PasswordAsker)
-01601 
-01602         class Private;
-01603         friend class Private;
-01604         Private *d;
-01605 };
-01606 
-01616 class QCA_EXPORT TokenAsker : public QObject
-01617 {
-01618         Q_OBJECT
-01619 public:
-01625         TokenAsker(QObject *parent = 0);
-01626         ~TokenAsker();
-01627 
-01637         void ask(const KeyStoreInfo &keyStoreInfo, const KeyStoreEntry &keyStoreEntry, void *ptr);
-01638 
-01642         void cancel();
-01643 
-01650         void waitForResponse();
-01651 
-01657         bool accepted() const;
-01658 
-01659 Q_SIGNALS:
-01666         void responseReady();
-01667 
-01668 private:
-01669         Q_DISABLE_COPY(TokenAsker)
-01670 
-01671         class Private;
-01672         friend class Private;
-01673         Private *d;
-01674 };
-01675 
-01676 }
-01677 
-01678 #endif
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__export_8h__dep__incl.map qca2-2.1.0/apidocs/html/qca__export_8h__dep__incl.map --- qca2-2.0.3/apidocs/html/qca__export_8h__dep__incl.map 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__export_8h__dep__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__export_8h__dep__incl.md5 qca2-2.1.0/apidocs/html/qca__export_8h__dep__incl.md5 --- qca2-2.0.3/apidocs/html/qca__export_8h__dep__incl.md5 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__export_8h__dep__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -552c215c29e904a7801cb197f16f8e95 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__export_8h__dep__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__export_8h__dep__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__export_8h.html qca2-2.1.0/apidocs/html/qca__export_8h.html --- qca2-2.0.3/apidocs/html/qca__export_8h.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__export_8h.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_export.h File Reference - - - - - - -
-

qca_export.h File Reference

-

Preprocessor magic to allow export of library symbols. -More...

-#include <QtGlobal>
-
-Include dependency graph for qca_export.h:
-
-
-
-
-This graph shows which files directly or indirectly include this file:
-
-
- - -
- -

Go to the source code of this file.

- -
-

Detailed Description

-

Preprocessor magic to allow export of library symbols.

-

This is strictly internal.

-
Note:
You should not include this header directly from an application. You should just use #include <QtCrypto> instead.
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__export_8h__incl.map qca2-2.1.0/apidocs/html/qca__export_8h__incl.map --- qca2-2.0.3/apidocs/html/qca__export_8h__incl.map 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__export_8h__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ - - diff -Nru qca2-2.0.3/apidocs/html/qca__export_8h__incl.md5 qca2-2.1.0/apidocs/html/qca__export_8h__incl.md5 --- qca2-2.0.3/apidocs/html/qca__export_8h__incl.md5 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__export_8h__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -db242095d92d50cb3d27c61c17fedb22 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__export_8h__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__export_8h__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__export_8h_source.html qca2-2.1.0/apidocs/html/qca__export_8h_source.html --- qca2-2.0.3/apidocs/html/qca__export_8h_source.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__export_8h_source.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,79 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_export.h Source File - - - - - - -
-

qca_export.h

Go to the documentation of this file.
00001 /*
-00002  * qca_export.h - Qt Cryptographic Architecture
-00003  * Copyright (C) 2003-2005  Justin Karneges <justin@affinix.com>
-00004  *
-00005  * This library is free software; you can redistribute it and/or
-00006  * modify it under the terms of the GNU Lesser General Public
-00007  * License as published by the Free Software Foundation; either
-00008  * version 2.1 of the License, or (at your option) any later version.
-00009  *
-00010  * This library is distributed in the hope that it will be useful,
-00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-00013  * Lesser General Public License for more details.
-00014  *
-00015  * You should have received a copy of the GNU Lesser General Public
-00016  * License along with this library; if not, write to the Free Software
-00017  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-00018  * 02110-1301  USA
-00019  *
-00020  */
-00021 
-00034 #ifndef QCA_EXPORT_H
-00035 #define QCA_EXPORT_H
-00036 
-00037 #include <QtGlobal>
-00038 
-00039 #ifdef Q_OS_WIN
-00040 # ifndef QCA_STATIC
-00041 #  ifdef QCA_MAKEDLL
-00042 #   define QCA_EXPORT Q_DECL_EXPORT
-00043 #  else
-00044 #   define QCA_EXPORT Q_DECL_IMPORT
-00045 #  endif
-00046 # endif
-00047 #endif
-00048 #ifndef QCA_EXPORT
-00049 # define QCA_EXPORT
-00050 #endif
-00051 
-00052 #endif
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__keystore_8h__dep__incl.map qca2-2.1.0/apidocs/html/qca__keystore_8h__dep__incl.map --- qca2-2.0.3/apidocs/html/qca__keystore_8h__dep__incl.map 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__keystore_8h__dep__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__keystore_8h__dep__incl.md5 qca2-2.1.0/apidocs/html/qca__keystore_8h__dep__incl.md5 --- qca2-2.0.3/apidocs/html/qca__keystore_8h__dep__incl.md5 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__keystore_8h__dep__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -6dd23524a176a5ea7f3f2a09c7d557c2 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__keystore_8h__dep__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__keystore_8h__dep__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__keystore_8h.html qca2-2.1.0/apidocs/html/qca__keystore_8h.html --- qca2-2.0.3/apidocs/html/qca__keystore_8h.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__keystore_8h.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_keystore.h File Reference - - - - - - -
-

qca_keystore.h File Reference

-

Header file for classes that provide and manage keys. -More...

-#include "qca_core.h"
-#include "qca_cert.h"
-
-Include dependency graph for qca_keystore.h:
-
-
- - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - -
- -

Go to the source code of this file.

- - - - - - - - - - - - - - -

Classes

class  QCA::KeyStore
 General purpose key storage object. More...
class  QCA::KeyStoreEntry
 Single entry in a KeyStore. More...
class  QCA::KeyStoreEntryWatcher
 Class to monitor the availability of a KeyStoreEntry. More...
class  QCA::KeyStoreInfo
 Key store information, outside of a KeyStore object. More...
class  QCA::KeyStoreManager
 Access keystores, and monitor keystores for changes. More...

Namespaces

namespace  QCA
-

Detailed Description

-

Header file for classes that provide and manage keys.

-
Note:
You should not use this header directly from an application. You should just use #include <QtCrypto> instead.
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__keystore_8h__incl.map qca2-2.1.0/apidocs/html/qca__keystore_8h__incl.map --- qca2-2.0.3/apidocs/html/qca__keystore_8h__incl.map 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__keystore_8h__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ - - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__keystore_8h__incl.md5 qca2-2.1.0/apidocs/html/qca__keystore_8h__incl.md5 --- qca2-2.0.3/apidocs/html/qca__keystore_8h__incl.md5 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__keystore_8h__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -190ee2666249de7d649402161ccb661d \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__keystore_8h__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__keystore_8h__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__keystore_8h_source.html qca2-2.1.0/apidocs/html/qca__keystore_8h_source.html --- qca2-2.0.3/apidocs/html/qca__keystore_8h_source.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__keystore_8h_source.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,296 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_keystore.h Source File - - - - - - -
-

qca_keystore.h

Go to the documentation of this file.
00001 /*
-00002  * qca_keystore.h - Qt Cryptographic Architecture
-00003  * Copyright (C) 2003-2007  Justin Karneges <justin@affinix.com>
-00004  * Copyright (C) 2004,2005  Brad Hards <bradh@frogmouth.net>
-00005  *
-00006  * This library is free software; you can redistribute it and/or
-00007  * modify it under the terms of the GNU Lesser General Public
-00008  * License as published by the Free Software Foundation; either
-00009  * version 2.1 of the License, or (at your option) any later version.
-00010  *
-00011  * This library is distributed in the hope that it will be useful,
-00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-00014  * Lesser General Public License for more details.
-00015  *
-00016  * You should have received a copy of the GNU Lesser General Public
-00017  * License along with this library; if not, write to the Free Software
-00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-00019  * 02110-1301  USA
-00020  *
-00021  */
-00022 
-00033 #ifndef QCA_KEYSTORE_H
-00034 #define QCA_KEYSTORE_H
-00035 
-00036 #include "qca_core.h"
-00037 #include "qca_cert.h"
-00038 
-00039 namespace QCA {
-00040 
-00041 class KeyStoreTracker;
-00042 class KeyStoreManagerPrivate;
-00043 class KeyStorePrivate;
-00044 
-00140 class QCA_EXPORT KeyStoreEntry : public Algorithm
-00141 {
-00142 public:
-00146         enum Type
-00147         {
-00148                 TypeKeyBundle,
-00149                 TypeCertificate,
-00150                 TypeCRL,
-00151                 TypePGPSecretKey,
-00152                 TypePGPPublicKey
-00153         };
-00154 
-00158         KeyStoreEntry();
-00159 
-00168         KeyStoreEntry(const QString &serialized);
-00169 
-00175         KeyStoreEntry(const KeyStoreEntry &from);
-00176 
-00177         ~KeyStoreEntry();
-00178 
-00184         KeyStoreEntry & operator=(const KeyStoreEntry &from);
-00185 
-00189         bool isNull() const;
-00190 
-00200         bool isAvailable() const;
-00201 
-00217         bool isAccessible() const;
-00218 
-00222         Type type() const;
-00223 
-00227         QString name() const;
-00228 
-00232         QString id() const;
-00233 
-00237         QString storeName() const;
-00238 
-00244         QString storeId() const;
-00245 
-00249         QString toString() const;
-00250 
-00259         static KeyStoreEntry fromString(const QString &serialized);
-00260 
-00265         KeyBundle keyBundle() const;
-00266 
-00271         Certificate certificate() const;
-00272 
-00277         CRL crl() const;
-00278 
-00283         PGPKey pgpSecretKey() const;
-00284 
-00290         PGPKey pgpPublicKey() const;
-00291 
-00310         bool ensureAvailable();
-00311 
-00322         bool ensureAccess();
-00323 
-00324 private:
-00325         class Private;
-00326         Private *d;
-00327 
-00328         friend class KeyStoreTracker;
-00329 };
-00330 
-00350 class QCA_EXPORT KeyStoreEntryWatcher : public QObject
-00351 {
-00352         Q_OBJECT
-00353 public:
-00364         explicit KeyStoreEntryWatcher(const KeyStoreEntry &e, QObject *parent = 0);
-00365 
-00366         ~KeyStoreEntryWatcher();
-00367 
-00371         KeyStoreEntry entry() const;
-00372 
-00373 Q_SIGNALS:
-00378         void available();
-00379 
-00384         void unavailable();
-00385 
-00386 private:
-00387         Q_DISABLE_COPY(KeyStoreEntryWatcher)
-00388 
-00389         class Private;
-00390         friend class Private;
-00391         Private *d;
-00392 };
-00393 
-00416 class QCA_EXPORT KeyStore : public QObject, public Algorithm
-00417 {
-00418         Q_OBJECT
-00419 public:
-00423         enum Type
-00424         {
-00425                 System,      
-00426                 User,        
-00427                 Application, 
-00428                 SmartCard,   
-00429                 PGPKeyring   
-00430         };
-00431 
-00438         KeyStore(const QString &id, KeyStoreManager *keyStoreManager);
-00439 
-00440         ~KeyStore();
-00441 
-00447         bool isValid() const;
-00448 
-00452         Type type() const;
-00453 
-00457         QString name() const;
-00458 
-00462         QString id() const;
-00463 
-00469         bool isReadOnly() const;
-00470 
-00484         void startAsynchronousMode();
-00485 
-00495         QList<KeyStoreEntry> entryList() const;
-00496 
-00500         bool holdsTrustedCertificates() const;
-00501 
-00505         bool holdsIdentities() const;
-00506 
-00510         bool holdsPGPPublicKeys() const;
-00511 
-00526         QString writeEntry(const KeyBundle &kb);
-00527 
-00533         QString writeEntry(const Certificate &cert);
-00534 
-00540         QString writeEntry(const CRL &crl);
-00541 
-00549         QString writeEntry(const PGPKey &key);
-00550 
-00562         bool removeEntry(const QString &id);
-00563 
-00564 Q_SIGNALS:
-00571         void updated();
-00572 
-00576         void unavailable();
-00577 
-00585         void entryWritten(const QString &entryId);
-00586 
-00593         void entryRemoved(bool success);
-00594 
-00595 private:
-00596         Q_DISABLE_COPY(KeyStore)
-00597 
-00598         friend class KeyStorePrivate;
-00599         KeyStorePrivate *d;
-00600 
-00601         friend class KeyStoreManagerPrivate;
-00602 };
-00603 
-00623 class QCA_EXPORT KeyStoreInfo
-00624 {
-00625 public:
-00633         KeyStoreInfo();
-00634 
-00645         KeyStoreInfo(KeyStore::Type type, const QString &id, const QString &name);
-00646 
-00652         KeyStoreInfo(const KeyStoreInfo &from);
-00653 
-00654         ~KeyStoreInfo();
-00655 
-00661         KeyStoreInfo & operator=(const KeyStoreInfo &from);
-00662 
-00668         bool isNull() const;
-00669 
-00674         KeyStore::Type type() const;
-00675 
-00680         QString id() const;
-00681 
-00686         QString name() const;
-00687 
-00688 private:
-00689         class Private;
-00690         QSharedDataPointer<Private> d;
-00691 };
-00692 
-00709 class QCA_EXPORT KeyStoreManager : public QObject
-00710 {
-00711         Q_OBJECT
-00712 public:
-00718         KeyStoreManager(QObject *parent = 0);
-00719         ~KeyStoreManager();
-00720 
-00724         static void start();
-00725 
-00731         static void start(const QString &provider);
-00732 
-00736         bool isBusy() const;
-00737 
-00741         void waitForBusyFinished();
-00742 
-00746         QStringList keyStores() const;
-00747 
-00752         static QString diagnosticText();
-00753 
-00757         static void clearDiagnosticText();
-00758 
-00763         void sync();
-00764 
-00765 Q_SIGNALS:
-00769         void busyStarted();
-00770 
-00774         void busyFinished();
-00775 
-00781         void keyStoreAvailable(const QString &id);
-00782 
-00783 private:
-00784         Q_DISABLE_COPY(KeyStoreManager)
-00785 
-00786         friend class KeyStoreManagerPrivate;
-00787         KeyStoreManagerPrivate *d;
-00788 
-00789         friend class Global;
-00790         friend class KeyStorePrivate;
-00791 
-00792         static void scan();
-00793         static void shutdown();
-00794 };
-00795 
-00796 }
-00797 
-00798 #endif
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qcaprovider_8h.html qca2-2.1.0/apidocs/html/qcaprovider_8h.html --- qca2-2.0.3/apidocs/html/qcaprovider_8h.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qcaprovider_8h.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,133 +0,0 @@ - - - - -Qt Cryptographic Architecture: qcaprovider.h File Reference - - - - - - -
-

qcaprovider.h File Reference

-

Header file for provider implementation classes (plugins). -More...

-#include "qca_core.h"
-#include "qca_basic.h"
-#include "qca_publickey.h"
-#include "qca_cert.h"
-#include "qca_keystore.h"
-#include "qca_securelayer.h"
-#include "qca_securemessage.h"
-#include <limits>
-
-Include dependency graph for qcaprovider.h:
-
-
- - -
- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Classes

class  QCA::CAContext
 X.509 certificate authority provider. More...
class  QCA::CertBase
 X.509 certificate and certificate request provider base. More...
class  QCA::CertCollectionContext
 X.509 certificate collection provider. More...
class  QCA::CertContext
 X.509 certificate provider. More...
class  QCA::CertContextProps
 X.509 certificate or certificate request properties. More...
class  QCA::CipherContext
 Cipher provider. More...
class  QCA::CRLContext
 X.509 certificate revocation list provider. More...
class  QCA::CRLContextProps
 X.509 certificate revocation list properties. More...
class  QCA::CSRContext
 X.509 certificate request provider. More...
class  QCA::DHContext
 Diffie-Hellman provider. More...
class  QCA::DLGroupContext
 Discrete logarithm provider. More...
class  QCA::DSAContext
 DSA provider. More...
class  QCA::HashContext
 Hash provider. More...
class  QCA::SASLContext::HostPort
 Convenience class to hold an IP address and an associated port. More...
class  QCA::InfoContext
 Extended provider information. More...
class  QCA::KDFContext
 Key derivation function provider. More...
class  QCA::KeyStoreEntryContext
 KeyStoreEntry provider. More...
class  QCA::KeyStoreListContext
 KeyStore provider. More...
class  QCA::MACContext
 Message authentication code provider. More...
class  QCA::MessageContext
 SecureMessage provider. More...
class  QCA::PGPKeyContext
 OpenPGP key provider. More...
class  QCA::PGPKeyContextProps
 OpenPGP key properties. More...
class  QCA::PKCS12Context
 PKCS#12 provider. More...
class  QCA::PKeyBase
 Public key implementation provider base. More...
class  QCA::PKeyContext
 Public key container provider. More...
class  QCAPlugin
 Provider plugin base class. More...
class  QCA::RandomContext
 Random provider. More...
class  QCA::RSAContext
 RSA provider. More...
class  QCA::SASLContext
 SASL provider. More...
class  QCA::TLSContext::SessionInfo
 Information about an active TLS connection. More...
class  QCA::SMSContext
 SecureMessageSystem provider. More...
class  QCA::TLSContext
 TLS provider. More...
class  QCA::TLSSessionContext
 TLS "session" provider. More...

Namespaces

namespace  QCA
-

Detailed Description

-

Header file for provider implementation classes (plugins).

-
Note:
You should not use this header directly from an application. You should just use #include <QtCrypto> instead.
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qcaprovider_8h__incl.map qca2-2.1.0/apidocs/html/qcaprovider_8h__incl.map --- qca2-2.0.3/apidocs/html/qcaprovider_8h__incl.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qcaprovider_8h__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/qcaprovider_8h__incl.md5 qca2-2.1.0/apidocs/html/qcaprovider_8h__incl.md5 --- qca2-2.0.3/apidocs/html/qcaprovider_8h__incl.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qcaprovider_8h__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -c18d312f442ea45af50a0e8bd2f51363 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qcaprovider_8h__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qcaprovider_8h__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qcaprovider_8h_source.html qca2-2.1.0/apidocs/html/qcaprovider_8h_source.html --- qca2-2.0.3/apidocs/html/qcaprovider_8h_source.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qcaprovider_8h_source.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,881 +0,0 @@ - - - - -Qt Cryptographic Architecture: qcaprovider.h Source File - - - - - - -
-

qcaprovider.h

Go to the documentation of this file.
00001 /*
-00002  * qcaprovider.h - QCA Plugin API
-00003  * Copyright (C) 2003-2007  Justin Karneges <justin@affinix.com>
-00004  * Copyright (C) 2004,2005  Brad Hards <bradh@frogmouth.net>
-00005  *
-00006  * This library is free software; you can redistribute it and/or
-00007  * modify it under the terms of the GNU Lesser General Public
-00008  * License as published by the Free Software Foundation; either
-00009  * version 2.1 of the License, or (at your option) any later version.
-00010  *
-00011  * This library is distributed in the hope that it will be useful,
-00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-00014  * Lesser General Public License for more details.
-00015  *
-00016  * You should have received a copy of the GNU Lesser General Public
-00017  * License along with this library; if not, write to the Free Software
-00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-00019  * 02110-1301  USA
-00020  *
-00021  */
-00022 
-00033 #ifndef QCAPROVIDER_H
-00034 #define QCAPROVIDER_H
-00035 
-00036 #include "qca_core.h"
-00037 #include "qca_basic.h"
-00038 #include "qca_publickey.h"
-00039 #include "qca_cert.h"
-00040 #include "qca_keystore.h"
-00041 #include "qca_securelayer.h"
-00042 #include "qca_securemessage.h"
-00043 
-00044 #include <limits>
-00045 
-00046 #ifndef DOXYGEN_NO_PROVIDER_API
-00047 
-00082 class QCA_EXPORT QCAPlugin
-00083 {
-00084 public:
-00088         virtual ~QCAPlugin() {}
-00089 
-00093         virtual QCA::Provider *createProvider() = 0;
-00094 };
-00095 
-00096 Q_DECLARE_INTERFACE(QCAPlugin, "com.affinix.qca.Plugin/1.0")
-00097 
-00098 namespace QCA {
-00099 
-00110 class QCA_EXPORT InfoContext : public BasicContext
-00111 {
-00112         Q_OBJECT
-00113 public:
-00119         InfoContext(Provider *p) : BasicContext(p, "info") {}
-00120 
-00124         virtual QStringList supportedHashTypes() const;
-00125 
-00129         virtual QStringList supportedCipherTypes() const;
-00130 
-00134         virtual QStringList supportedMACTypes() const;
-00135 };
-00136 
-00147 class QCA_EXPORT RandomContext : public BasicContext
-00148 {
-00149         Q_OBJECT
-00150 public:
-00156         RandomContext(Provider *p) : BasicContext(p, "random") {}
-00157 
-00163         virtual SecureArray nextBytes(int size) = 0;
-00164 };
-00165 
-00176 class QCA_EXPORT HashContext : public BasicContext
-00177 {
-00178         Q_OBJECT
-00179 public:
-00186         HashContext(Provider *p, const QString &type) : BasicContext(p, type) {}
-00187 
-00191         virtual void clear() = 0;
-00192 
-00198         virtual void update(const MemoryRegion &a) = 0;
-00199 
-00203         virtual MemoryRegion final() = 0;
-00204 };
-00205 
-00216 class QCA_EXPORT CipherContext : public BasicContext
-00217 {
-00218         Q_OBJECT
-00219 public:
-00229         CipherContext(Provider *p, const QString &type) : BasicContext(p, type) {}
-00230 
-00238         virtual void setup(Direction dir, const SymmetricKey &key, const InitializationVector &iv) = 0;
-00239 
-00243         virtual KeyLength keyLength() const = 0;
-00244 
-00248         virtual int blockSize() const = 0;
-00249 
-00256         virtual bool update(const SecureArray &in, SecureArray *out) = 0;
-00257 
-00263         virtual bool final(SecureArray *out) = 0;
-00264 };
-00265 
-00277 class QCA_EXPORT MACContext : public BasicContext
-00278 {
-00279         Q_OBJECT
-00280 public:
-00286         MACContext(Provider *p, const QString &type) : BasicContext(p, type) {}
-00287 
-00293         virtual void setup(const SymmetricKey &key) = 0;
-00294 
-00298         virtual KeyLength keyLength() const = 0;
-00299 
-00305         virtual void update(const MemoryRegion &in) = 0;
-00306 
-00312         virtual void final(MemoryRegion *out) = 0;
-00313 
-00314 protected:
-00318         KeyLength anyKeyLength() const
-00319         {
-00320                 // this is used instead of a default implementation to make sure that
-00321                 // provider authors think about it, at least a bit.
-00322                 // See Meyers, Effective C++, Effective C++ (2nd Ed), Item 36
-00323                 return KeyLength( 0, INT_MAX, 1 );
-00324         }
-00325 };
-00326 
-00338 class QCA_EXPORT KDFContext : public BasicContext
-00339 {
-00340         Q_OBJECT
-00341 public:
-00348         KDFContext(Provider *p, const QString &type) : BasicContext(p, type) {}
-00349 
-00358         virtual SymmetricKey makeKey(const SecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount) = 0;
-00359 };
-00360 
-00371 class QCA_EXPORT DLGroupContext : public Provider::Context
-00372 {
-00373         Q_OBJECT
-00374 public:
-00380         DLGroupContext(Provider *p) : Provider::Context(p, "dlgroup") {}
-00381 
-00385         virtual QList<DLGroupSet> supportedGroupSets() const = 0;
-00386 
-00390         virtual bool isNull() const = 0;
-00391 
-00405         virtual void fetchGroup(DLGroupSet set, bool block) = 0;
-00406 
-00415         virtual void getResult(BigInteger *p, BigInteger *q, BigInteger *g) const = 0;
-00416 
-00417 Q_SIGNALS:
-00422         void finished();
-00423 };
-00424 
-00436 class QCA_EXPORT PKeyBase : public BasicContext
-00437 {
-00438         Q_OBJECT
-00439 public:
-00446         PKeyBase(Provider *p, const QString &type);
-00447 
-00453         virtual bool isNull() const = 0;
-00454 
-00458         virtual PKey::Type type() const = 0;
-00459 
-00463         virtual bool isPrivate() const = 0;
-00464 
-00470         virtual bool canExport() const = 0;
-00471 
-00478         virtual void convertToPublic() = 0;
-00479 
-00483         virtual int bits() const = 0;
-00484 
-00491         virtual int maximumEncryptSize(EncryptionAlgorithm alg) const;
-00492 
-00499         virtual SecureArray encrypt(const SecureArray &in, EncryptionAlgorithm alg);
-00500 
-00509         virtual bool decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg);
-00510 
-00517         virtual void startSign(SignatureAlgorithm alg, SignatureFormat format);
-00518 
-00525         virtual void startVerify(SignatureAlgorithm alg, SignatureFormat format);
-00526 
-00533         virtual void update(const MemoryRegion &in);
-00534 
-00540         virtual QByteArray endSign();
-00541 
-00549         virtual bool endVerify(const QByteArray &sig);
-00550 
-00559         virtual SymmetricKey deriveKey(const PKeyBase &theirs);
-00560 
-00561 Q_SIGNALS:
-00566         void finished();
-00567 };
-00568 
-00580 class QCA_EXPORT RSAContext : public PKeyBase
-00581 {
-00582         Q_OBJECT
-00583 public:
-00589         RSAContext(Provider *p) : PKeyBase(p, "rsa") {}
-00590 
-00605         virtual void createPrivate(int bits, int exp, bool block) = 0;
-00606 
-00616         virtual void createPrivate(const BigInteger &n, const BigInteger &e, const BigInteger &p, const BigInteger &q, const BigInteger &d) = 0;
-00617 
-00624         virtual void createPublic(const BigInteger &n, const BigInteger &e) = 0;
-00625 
-00629         virtual BigInteger n() const = 0;
-00630 
-00634         virtual BigInteger e() const = 0;
-00635 
-00639         virtual BigInteger p() const = 0;
-00640 
-00644         virtual BigInteger q() const = 0;
-00645 
-00649         virtual BigInteger d() const = 0;
-00650 };
-00651 
-00663 class QCA_EXPORT DSAContext : public PKeyBase
-00664 {
-00665         Q_OBJECT
-00666 public:
-00672         DSAContext(Provider *p) : PKeyBase(p, "dsa") {}
-00673 
-00687         virtual void createPrivate(const DLGroup &domain, bool block) = 0;
-00688 
-00696         virtual void createPrivate(const DLGroup &domain, const BigInteger &y, const BigInteger &x) = 0;
-00697 
-00704         virtual void createPublic(const DLGroup &domain, const BigInteger &y) = 0;
-00705 
-00709         virtual DLGroup domain() const = 0;
-00710 
-00714         virtual BigInteger y() const = 0;
-00715 
-00719         virtual BigInteger x() const = 0;
-00720 };
-00721 
-00733 class QCA_EXPORT DHContext : public PKeyBase
-00734 {
-00735         Q_OBJECT
-00736 public:
-00742         DHContext(Provider *p) : PKeyBase(p, "dh") {}
-00743 
-00757         virtual void createPrivate(const DLGroup &domain, bool block) = 0;
-00758 
-00767         virtual void createPrivate(const DLGroup &domain, const BigInteger &y, const BigInteger &x) = 0;
-00768 
-00776         virtual void createPublic(const DLGroup &domain, const BigInteger &y) = 0;
-00777 
-00781         virtual DLGroup domain() const = 0;
-00782 
-00786         virtual BigInteger y() const = 0;
-00787 
-00791         virtual BigInteger x() const = 0;
-00792 };
-00793 
-00809 class QCA_EXPORT PKeyContext : public BasicContext
-00810 {
-00811         Q_OBJECT
-00812 public:
-00818         PKeyContext(Provider *p) : BasicContext(p, "pkey") {}
-00819 
-00823         virtual QList<PKey::Type> supportedTypes() const = 0;
-00824 
-00829         virtual QList<PKey::Type> supportedIOTypes() const = 0;
-00830 
-00835         virtual QList<PBEAlgorithm> supportedPBEAlgorithms() const = 0;
-00836 
-00840         virtual PKeyBase *key() = 0;
-00841 
-00845         virtual const PKeyBase *key() const = 0;
-00846 
-00854         virtual void setKey(PKeyBase *key) = 0;
-00855 
-00867         virtual bool importKey(const PKeyBase *key) = 0;
-00868 
-00874         virtual QByteArray publicToDER() const;
-00875 
-00881         virtual QString publicToPEM() const;
-00882 
-00891         virtual ConvertResult publicFromDER(const QByteArray &a);
-00892 
-00901         virtual ConvertResult publicFromPEM(const QString &s);
-00902 
-00912         virtual SecureArray privateToDER(const SecureArray &passphrase, PBEAlgorithm pbe) const;
-00913 
-00923         virtual QString privateToPEM(const SecureArray &passphrase, PBEAlgorithm pbe) const;
-00924 
-00934         virtual ConvertResult privateFromDER(const SecureArray &a, const SecureArray &passphrase);
-00935 
-00945         virtual ConvertResult privateFromPEM(const QString &s, const SecureArray &passphrase);
-00946 };
-00947 
-00959 class QCA_EXPORT CertBase : public BasicContext
-00960 {
-00961         Q_OBJECT
-00962 public:
-00969         CertBase(Provider *p, const QString &type) : BasicContext(p, type) {}
-00970 
-00976         virtual QByteArray toDER() const = 0;
-00977 
-00983         virtual QString toPEM() const = 0;
-00984 
-00993         virtual ConvertResult fromDER(const QByteArray &a) = 0;
-00994 
-01003         virtual ConvertResult fromPEM(const QString &s) = 0;
-01004 };
-01005 
-01020 class QCA_EXPORT CertContextProps
-01021 {
-01022 public:
-01028         int version;
-01029 
-01035         QDateTime start;
-01036 
-01042         QDateTime end;
-01043 
-01047         CertificateInfoOrdered subject;
-01048 
-01054         CertificateInfoOrdered issuer;
-01055 
-01059         Constraints constraints;
-01060 
-01064         QStringList policies;
-01065 
-01071         QStringList crlLocations;
-01072 
-01078         QStringList issuerLocations;
-01079 
-01085         QStringList ocspLocations;
-01086 
-01092         BigInteger serial;
-01093 
-01098         bool isCA;
-01099 
-01105         bool isSelfSigned;
-01106 
-01110         int pathLimit;
-01111 
-01115         QByteArray sig;
-01116 
-01120         SignatureAlgorithm sigalgo;
-01121 
-01127         QByteArray subjectId;
-01128 
-01134         QByteArray issuerId;
-01135 
-01141         QString challenge;
-01142 
-01148         CertificateRequestFormat format;
-01149 };
-01150 
-01163 class QCA_EXPORT CRLContextProps
-01164 {
-01165 public:
-01169         CertificateInfoOrdered issuer;
-01170 
-01174         int number;
-01175 
-01179         QDateTime thisUpdate;
-01180 
-01184         QDateTime nextUpdate;
-01185 
-01189         QList<CRLEntry> revoked;
-01190 
-01194         QByteArray sig;
-01195 
-01199         SignatureAlgorithm sigalgo;
-01200 
-01204         QByteArray issuerId;
-01205 };
-01206 
-01207 class CRLContext;
-01208 
-01219 class QCA_EXPORT CertContext : public CertBase
-01220 {
-01221         Q_OBJECT
-01222 public:
-01228         CertContext(Provider *p) : CertBase(p, "cert") {}
-01229 
-01241         virtual bool createSelfSigned(const CertificateOptions &opts, const PKeyContext &priv) = 0;
-01242 
-01246         virtual const CertContextProps *props() const = 0;
-01247 
-01254         virtual bool compare(const CertContext *other) const = 0;
-01255 
-01260         virtual PKeyContext *subjectPublicKey() const = 0;
-01261 
-01268         virtual bool isIssuerOf(const CertContext *other) const = 0;
-01269 
-01281         virtual Validity validate(const QList<CertContext*> &trusted, const QList<CertContext*> &untrusted, const QList<CRLContext*> &crls, UsageMode u, ValidateFlags vf) const = 0;
-01282 
-01298         virtual Validity validate_chain(const QList<CertContext*> &chain, const QList<CertContext*> &trusted, const QList<CRLContext*> &crls, UsageMode u, ValidateFlags vf) const = 0;
-01299 };
-01300 
-01312 class QCA_EXPORT CSRContext : public CertBase
-01313 {
-01314         Q_OBJECT
-01315 public:
-01321         CSRContext(Provider *p) : CertBase(p, "csr") {}
-01322 
-01329         virtual bool canUseFormat(CertificateRequestFormat f) const = 0;
-01330 
-01342         virtual bool createRequest(const CertificateOptions &opts, const PKeyContext &priv) = 0;
-01343 
-01347         virtual const CertContextProps *props() const = 0;
-01348 
-01355         virtual bool compare(const CSRContext *other) const = 0;
-01356 
-01361         virtual PKeyContext *subjectPublicKey() const = 0;
-01362 
-01369         virtual QString toSPKAC() const = 0;
-01370 
-01380         virtual ConvertResult fromSPKAC(const QString &s) = 0;
-01381 };
-01382 
-01393 class QCA_EXPORT CRLContext : public CertBase
-01394 {
-01395         Q_OBJECT
-01396 public:
-01402         CRLContext(Provider *p) : CertBase(p, "crl") {}
-01403 
-01407         virtual const CRLContextProps *props() const = 0;
-01408 
-01414         virtual bool compare(const CRLContext *other) const = 0;
-01415 };
-01416 
-01428 class QCA_EXPORT CertCollectionContext : public BasicContext
-01429 {
-01430         Q_OBJECT
-01431 public:
-01437         CertCollectionContext(Provider *p) : BasicContext(p, "certcollection") {}
-01438 
-01447         virtual QByteArray toPKCS7(const QList<CertContext*> &certs, const QList<CRLContext*> &crls) const = 0;
-01448 
-01462         virtual ConvertResult fromPKCS7(const QByteArray &a, QList<CertContext*> *certs, QList<CRLContext*> *crls) const = 0;
-01463 };
-01464 
-01476 class QCA_EXPORT CAContext : public BasicContext
-01477 {
-01478         Q_OBJECT
-01479 public:
-01485         CAContext(Provider *p) : BasicContext(p, "ca") {}
-01486 
-01495         virtual void setup(const CertContext &cert, const PKeyContext &priv) = 0;
-01496 
-01501         virtual CertContext *certificate() const = 0;
-01502 
-01510         virtual CertContext *signRequest(const CSRContext &req, const QDateTime &notValidAfter) const = 0;
-01511 
-01519         virtual CertContext *createCertificate(const PKeyContext &pub, const CertificateOptions &opts) const = 0;
-01520 
-01529         virtual CRLContext *createCRL(const QDateTime &nextUpdate) const = 0;
-01530 
-01540         virtual CRLContext *updateCRL(const CRLContext &crl, const QList<CRLEntry> &entries, const QDateTime &nextUpdate) const = 0;
-01541 };
-01542 
-01553 class QCA_EXPORT PKCS12Context : public BasicContext
-01554 {
-01555         Q_OBJECT
-01556 public:
-01562         PKCS12Context(Provider *p) : BasicContext(p, "pkcs12") {}
-01563 
-01574         virtual QByteArray toPKCS12(const QString &name, const QList<const CertContext*> &chain, const PKeyContext &priv, const SecureArray &passphrase) const = 0;
-01575 
-01590         virtual ConvertResult fromPKCS12(const QByteArray &in, const SecureArray &passphrase, QString *name, QList<CertContext*> *chain, PKeyContext **priv) const = 0;
-01591 };
-01592 
-01605 class QCA_EXPORT PGPKeyContextProps
-01606 {
-01607 public:
-01611         QString keyId;
-01612 
-01617         QStringList userIds;
-01618 
-01622         bool isSecret;
-01623 
-01627         QDateTime creationDate;
-01628 
-01632         QDateTime expirationDate;
-01633 
-01639         QString fingerprint;
-01640 
-01645         bool inKeyring;
-01646 
-01651         bool isTrusted;
-01652 };
-01653 
-01664 class QCA_EXPORT PGPKeyContext : public BasicContext
-01665 {
-01666         Q_OBJECT
-01667 public:
-01673         PGPKeyContext(Provider *p) : BasicContext(p, "pgpkey") {}
-01674 
-01678         virtual const PGPKeyContextProps *props() const = 0;
-01679 
-01683         virtual QByteArray toBinary() const = 0;
-01684 
-01688         virtual QString toAscii() const = 0;
-01689 
-01698         virtual ConvertResult fromBinary(const QByteArray &a) = 0;
-01699 
-01708         virtual ConvertResult fromAscii(const QString &s) = 0;
-01709 };
-01710 
-01722 class QCA_EXPORT KeyStoreEntryContext : public BasicContext
-01723 {
-01724         Q_OBJECT
-01725 public:
-01731         KeyStoreEntryContext(Provider *p) : BasicContext(p, "keystoreentry") {}
-01732 
-01736         virtual KeyStoreEntry::Type type() const = 0;
-01737 
-01743         virtual QString id() const = 0;
-01744 
-01748         virtual QString name() const = 0;
-01749 
-01753         virtual QString storeId() const = 0;
-01754 
-01758         virtual QString storeName() const = 0;
-01759 
-01763         virtual bool isAvailable() const;
-01764 
-01773         virtual QString serialize() const = 0;
-01774 
-01779         virtual KeyBundle keyBundle() const;
-01780 
-01785         virtual Certificate certificate() const;
-01786 
-01791         virtual CRL crl() const;
-01792 
-01797         virtual PGPKey pgpSecretKey() const;
-01798 
-01804         virtual PGPKey pgpPublicKey() const;
-01805 
-01814         virtual bool ensureAccess();
-01815 };
-01816 
-01827 class QCA_EXPORT KeyStoreListContext : public Provider::Context
-01828 {
-01829         Q_OBJECT
-01830 public:
-01836         KeyStoreListContext(Provider *p) : Provider::Context(p, "keystorelist") {}
-01837 
-01841         virtual void start();
-01842 
-01851         virtual void setUpdatesEnabled(bool enabled);
-01852 
-01862         virtual QList<int> keyStores() = 0;
-01863 
-01870         virtual KeyStore::Type type(int id) const = 0;
-01871 
-01883         virtual QString storeId(int id) const = 0;
-01884 
-01891         virtual QString name(int id) const = 0;
-01892 
-01901         virtual bool isReadOnly(int id) const;
-01902 
-01912         virtual QList<KeyStoreEntry::Type> entryTypes(int id) const = 0;
-01913 
-01922         virtual QList<KeyStoreEntryContext*> entryList(int id) = 0;
-01923 
-01933         virtual KeyStoreEntryContext *entry(int id, const QString &entryId);
-01934 
-01947         virtual KeyStoreEntryContext *entryPassive(const QString &serialized);
-01948 
-01958         virtual QString writeEntry(int id, const KeyBundle &kb);
-01959 
-01969         virtual QString writeEntry(int id, const Certificate &cert);
-01970 
-01980         virtual QString writeEntry(int id, const CRL &crl);
-01981 
-01991         virtual QString writeEntry(int id, const PGPKey &key);
-01992 
-02002         virtual bool removeEntry(int id, const QString &entryId);
-02003 
-02004 Q_SIGNALS:
-02022         void busyStart();
-02023 
-02031         void busyEnd();
-02032 
-02037         void updated();
-02038 
-02044         void diagnosticText(const QString &str);
-02045 
-02052         void storeUpdated(int id);
-02053 };
-02054 
-02065 class QCA_EXPORT TLSSessionContext : public BasicContext
-02066 {
-02067         Q_OBJECT
-02068 public:
-02074         TLSSessionContext(Provider *p) : BasicContext(p, "tlssession") {}
-02075 };
-02076 
-02087 class QCA_EXPORT TLSContext : public Provider::Context
-02088 {
-02089         Q_OBJECT
-02090 public:
-02100         class SessionInfo
-02101         {
-02102         public:
-02106                 bool isCompressed;
-02107 
-02111                 TLS::Version version;
-02112 
-02118                 QString cipherSuite;
-02119 
-02123                 int cipherBits;
-02124 
-02129                 int cipherMaxBits;
-02130 
-02135                 TLSSessionContext *id;
-02136         };
-02137 
-02141         enum Result
-02142         {
-02143                 Success, 
-02144                 Error,   
-02145                 Continue 
-02146         };
-02147 
-02154         TLSContext(Provider *p, const QString &type) : Provider::Context(p, type) {}
-02155 
-02159         virtual void reset() = 0;
-02160 
-02168         virtual QStringList supportedCipherSuites(const TLS::Version &version) const = 0;
-02169 
-02173         virtual bool canCompress() const = 0;
-02174 
-02178         virtual bool canSetHostName() const = 0;
-02179 
-02183         virtual int maxSSF() const = 0;
-02184 
-02195         virtual void setup(bool serverMode, const QString &hostName, bool compress) = 0;
-02196 
-02205         virtual void setConstraints(int minSSF, int maxSSF) = 0;
-02206 
-02219         virtual void setConstraints(const QStringList &cipherSuiteList) = 0;
-02220 
-02228         virtual void setTrustedCertificates(const CertificateCollection &trusted) = 0;
-02229 
-02239         virtual void setIssuerList(const QList<CertificateInfoOrdered> &issuerList) = 0;
-02240 
-02249         virtual void setCertificate(const CertificateChain &cert, const PrivateKey &key) = 0;
-02250 
-02258         virtual void setSessionId(const TLSSessionContext &id) = 0;
-02259 
-02268         virtual void shutdown() = 0;
-02269 
-02277         virtual void setMTU(int size);
-02278 
-02291         virtual void start() = 0;
-02292 
-02318         virtual void update(const QByteArray &from_net, const QByteArray &from_app) = 0;
-02319 
-02329         virtual bool waitForResultsReady(int msecs) = 0;
-02330 
-02334         virtual Result result() const = 0;
-02335 
-02339         virtual QByteArray to_net() = 0;
-02340 
-02345         virtual int encoded() const = 0;
-02346 
-02351         virtual QByteArray to_app() = 0;
-02352 
-02356         virtual bool eof() const = 0;
-02357 
-02364         virtual bool clientHelloReceived() const = 0;
-02365 
-02371         virtual bool serverHelloReceived() const = 0;
-02372 
-02379         virtual QString hostName() const = 0;
-02380 
-02386         virtual bool certificateRequested() const = 0;
-02387 
-02393         virtual QList<CertificateInfoOrdered> issuerList() const = 0;
-02394 
-02400         virtual Validity peerCertificateValidity() const = 0;
-02401 
-02407         virtual CertificateChain peerCertificateChain() const = 0;
-02408 
-02414         virtual SessionInfo sessionInfo() const = 0;
-02415 
-02421         virtual QByteArray unprocessed() = 0;
-02422 
-02423 Q_SIGNALS:
-02427         void resultsReady();
-02428 
-02433         void dtlsTimeout();
-02434 };
-02435 
-02446 class QCA_EXPORT SASLContext : public Provider::Context
-02447 {
-02448         Q_OBJECT
-02449 public:
-02459         class HostPort
-02460         {
-02461         public:
-02465                 QString addr;
-02466 
-02470                 quint16 port;
-02471         };
-02472 
-02476         enum Result
-02477         {
-02478                 Success,   
-02479                 Error,     
-02480                 Params,    
-02481                 AuthCheck, 
-02482                 Continue   
-02483         };
-02484 
-02490         SASLContext(Provider *p) : Provider::Context(p, "sasl") {}
-02491 
-02495         virtual void reset() = 0;
-02496 
-02518         virtual void setup(const QString &service, const QString &host, const HostPort *local, const HostPort *remote, const QString &ext_id, int ext_ssf) = 0;
-02519 
-02530         virtual void setConstraints(SASL::AuthFlags f, int minSSF, int maxSSF) = 0;
-02531 
-02547         virtual void startClient(const QStringList &mechlist, bool allowClientSendFirst) = 0;
-02548 
-02564         virtual void startServer(const QString &realm, bool disableServerSendLast) = 0;
-02565 
-02579         virtual void serverFirstStep(const QString &mech, const QByteArray *clientInit) = 0;
-02580 
-02592         virtual void nextStep(const QByteArray &from_net) = 0;
-02593 
-02603         virtual void tryAgain() = 0;
-02604 
-02617         virtual void update(const QByteArray &from_net, const QByteArray &from_app) = 0;
-02618 
-02629         virtual bool waitForResultsReady(int msecs) = 0;
-02630 
-02634         virtual Result result() const = 0;
-02635 
-02639         virtual QStringList mechlist() const = 0;
-02640 
-02644         virtual QString mech() const = 0;
-02645 
-02649         virtual bool haveClientInit() const = 0;
-02650 
-02655         virtual QByteArray stepData() const = 0;
-02656 
-02661         virtual QByteArray to_net() = 0;
-02662 
-02667         virtual int encoded() const = 0;
-02668 
-02673         virtual QByteArray to_app() = 0;
-02674 
-02680         virtual int ssf() const = 0;
-02681 
-02688         virtual SASL::AuthCondition authCondition() const = 0;
-02689 
-02695         virtual SASL::Params clientParams() const = 0;
-02696 
-02705         virtual void setClientParams(const QString *user, const QString *authzid, const SecureArray *pass, const QString *realm) = 0;
-02706 
-02713         virtual QStringList realmlist() const = 0;
-02714 
-02720         virtual QString username() const = 0;
-02721 
-02727         virtual QString authzid() const = 0;
-02728 
-02729 Q_SIGNALS:
-02734         void resultsReady();
-02735 };
-02736 
-02748 class QCA_EXPORT MessageContext : public Provider::Context
-02749 {
-02750         Q_OBJECT
-02751 public:
-02755         enum Operation
-02756         {
-02757                 Encrypt,       
-02758                 Decrypt,       
-02759                 Sign,          
-02760                 Verify,        
-02761                 SignAndEncrypt 
-02762         };
-02763 
-02770         MessageContext(Provider *p, const QString &type) : Provider::Context(p, type) {}
-02771 
-02776         virtual bool canSignMultiple() const = 0;
-02777 
-02781         virtual SecureMessage::Type type() const = 0;
-02782 
-02786         virtual void reset() = 0;
-02787 
-02793         virtual void setupEncrypt(const SecureMessageKeyList &keys) = 0;
-02794 
-02803         virtual void setupSign(const SecureMessageKeyList &keys, SecureMessage::SignMode m, bool bundleSigner, bool smime) = 0;
-02804 
-02810         virtual void setupVerify(const QByteArray &detachedSig) = 0;
-02811 
-02825         virtual void start(SecureMessage::Format f, Operation op) = 0;
-02826 
-02832         virtual void update(const QByteArray &in) = 0;
-02833 
-02837         virtual QByteArray read() = 0;
-02838 
-02843         virtual int written() = 0;
-02844 
-02848         virtual void end() = 0;
-02849 
-02853         virtual bool finished() const = 0;
-02854 
-02864         virtual bool waitForFinished(int msecs) = 0;
-02865 
-02871         virtual bool success() const = 0;
-02872 
-02879         virtual SecureMessage::Error errorCode() const = 0;
-02880 
-02887         virtual QByteArray signature() const = 0;
-02888 
-02895         virtual QString hashName() const = 0;
-02896 
-02903         virtual SecureMessageSignatureList signers() const = 0;
-02904 
-02912         virtual QString diagnosticText() const;
-02913 
-02914 Q_SIGNALS:
-02919         void updated();
-02920 };
-02921 
-02933 class QCA_EXPORT SMSContext : public BasicContext
-02934 {
-02935         Q_OBJECT
-02936 public:
-02943         SMSContext(Provider *p, const QString &type) : BasicContext(p, type) {}
-02944 
-02955         virtual void setTrustedCertificates(const CertificateCollection &trusted);
-02956 
-02965         virtual void setUntrustedCertificates(const CertificateCollection &untrusted);
-02966 
-02975         virtual void setPrivateKeys(const QList<SecureMessageKey> &keys);
-02976 
-02981         virtual MessageContext *createMessage() = 0;
-02982 };
-02983 
-02984 }
-02985 #endif
-02986 
-02987 #endif
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__publickey_8h__dep__incl.map qca2-2.1.0/apidocs/html/qca__publickey_8h__dep__incl.map --- qca2-2.0.3/apidocs/html/qca__publickey_8h__dep__incl.map 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__publickey_8h__dep__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ - - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__publickey_8h__dep__incl.md5 qca2-2.1.0/apidocs/html/qca__publickey_8h__dep__incl.md5 --- qca2-2.0.3/apidocs/html/qca__publickey_8h__dep__incl.md5 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__publickey_8h__dep__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -892bf692188da677d3cf81453e781fe8 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__publickey_8h__dep__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__publickey_8h__dep__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__publickey_8h.html qca2-2.1.0/apidocs/html/qca__publickey_8h.html --- qca2-2.0.3/apidocs/html/qca__publickey_8h.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__publickey_8h.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,142 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_publickey.h File Reference - - - - - - -
-

qca_publickey.h File Reference

-

Header file for PublicKey and PrivateKey related classes. -More...

-#include <QObject>
-#include "qca_core.h"
-
-Include dependency graph for qca_publickey.h:
-
-
- - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - -
- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Classes

class  QCA::DHPrivateKey
 Diffie-Hellman Private Key. More...
class  QCA::DHPublicKey
 Diffie-Hellman Public Key. More...
class  QCA::DLGroup
 A discrete logarithm group. More...
class  QCA::DSAPrivateKey
 Digital Signature Algorithm Private Key. More...
class  QCA::DSAPublicKey
 Digital Signature Algorithm Public Key. More...
class  QCA::KeyGenerator
 Class for generating asymmetric key pairs. More...
class  QCA::PKey
 General superclass for public (PublicKey) and private (PrivateKey) keys used with asymmetric encryption techniques. More...
class  QCA::PrivateKey
 Generic private key. More...
class  QCA::PublicKey
 Generic public key. More...
class  QCA::RSAPrivateKey
 RSA Private Key. More...
class  QCA::RSAPublicKey
 RSA Public Key. More...

Namespaces

namespace  QCA

Enumerations

enum  QCA::ConvertResult { QCA::ConvertGood, -QCA::ErrorDecode, -QCA::ErrorPassphrase, -QCA::ErrorFile - }
enum  QCA::DLGroupSet {
-  QCA::DSA_512, -QCA::DSA_768, -QCA::DSA_1024, -QCA::IETF_768, -
-  QCA::IETF_1024, -QCA::IETF_1536, -QCA::IETF_2048, -QCA::IETF_3072, -
-  QCA::IETF_4096, -QCA::IETF_6144, -QCA::IETF_8192 -
- }
enum  QCA::EncryptionAlgorithm { QCA::EME_PKCS1v15, -QCA::EME_PKCS1_OAEP - }
enum  QCA::PBEAlgorithm {
-  QCA::PBEDefault, -QCA::PBES2_DES_SHA1, -QCA::PBES2_TripleDES_SHA1, -QCA::PBES2_AES128_SHA1, -
-  QCA::PBES2_AES192_SHA1, -QCA::PBES2_AES256_SHA1 -
- }
enum  QCA::SignatureAlgorithm {
-  QCA::SignatureUnknown, -QCA::EMSA1_SHA1, -QCA::EMSA3_SHA1, -QCA::EMSA3_MD5, -
-  QCA::EMSA3_MD2, -QCA::EMSA3_RIPEMD160, -QCA::EMSA3_Raw -
- }
enum  QCA::SignatureFormat { QCA::DefaultFormat, -QCA::IEEE_1363, -QCA::DERSequence - }

Functions

QCA_EXPORT QByteArray QCA::emsa3Encode (const QString &hashName, const QByteArray &digest, int size=-1)
-

Detailed Description

-

Header file for PublicKey and PrivateKey related classes.

-
Note:
You should not use this header directly from an application. You should just use #include <QtCrypto> instead.
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__publickey_8h__incl.map qca2-2.1.0/apidocs/html/qca__publickey_8h__incl.map --- qca2-2.0.3/apidocs/html/qca__publickey_8h__incl.map 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__publickey_8h__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__publickey_8h__incl.md5 qca2-2.1.0/apidocs/html/qca__publickey_8h__incl.md5 --- qca2-2.0.3/apidocs/html/qca__publickey_8h__incl.md5 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__publickey_8h__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -c31756ec405e7d82eba635fc8c1d8d5b \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__publickey_8h__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__publickey_8h__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__publickey_8h_source.html qca2-2.1.0/apidocs/html/qca__publickey_8h_source.html --- qca2-2.0.3/apidocs/html/qca__publickey_8h_source.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__publickey_8h_source.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,483 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_publickey.h Source File - - - - - - -
-

qca_publickey.h

Go to the documentation of this file.
00001 /*
-00002  * qca_publickey.h - Qt Cryptographic Architecture
-00003  * Copyright (C) 2003-2007  Justin Karneges <justin@affinix.com>
-00004  * Copyright (C) 2004,2005  Brad Hards <bradh@frogmouth.net>
-00005  *
-00006  * This library is free software; you can redistribute it and/or
-00007  * modify it under the terms of the GNU Lesser General Public
-00008  * License as published by the Free Software Foundation; either
-00009  * version 2.1 of the License, or (at your option) any later version.
-00010  *
-00011  * This library is distributed in the hope that it will be useful,
-00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-00014  * Lesser General Public License for more details.
-00015  *
-00016  * You should have received a copy of the GNU Lesser General Public
-00017  * License along with this library; if not, write to the Free Software
-00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-00019  * 02110-1301  USA
-00020  *
-00021  */
-00022 
-00033 #ifndef QCA_PUBLICKEY_H
-00034 #define QCA_PUBLICKEY_H
-00035 
-00036 #include <QObject>
-00037 #include "qca_core.h"
-00038 
-00039 namespace QCA {
-00040 
-00041 class PublicKey;
-00042 class PrivateKey;
-00043 class KeyGenerator;
-00044 class RSAPublicKey;
-00045 class RSAPrivateKey;
-00046 class DSAPublicKey;
-00047 class DSAPrivateKey;
-00048 class DHPublicKey;
-00049 class DHPrivateKey;
-00050 
-00054 enum EncryptionAlgorithm
-00055 {
-00056         EME_PKCS1v15,  
-00057         EME_PKCS1_OAEP 
-00058 };
-00059 
-00063 enum SignatureAlgorithm
-00064 {
-00065         SignatureUnknown, 
-00066         EMSA1_SHA1,       
-00067         EMSA3_SHA1,       
-00068         EMSA3_MD5,        
-00069         EMSA3_MD2,        
-00070         EMSA3_RIPEMD160,  
-00071         EMSA3_Raw         
-00072 };
-00073 
-00077 enum SignatureFormat
-00078 {
-00079         DefaultFormat, 
-00080         IEEE_1363,     
-00081         DERSequence    
-00082 };
-00083 
-00087 enum PBEAlgorithm
-00088 {
-00089         PBEDefault,           
-00090         PBES2_DES_SHA1,       
-00091         PBES2_TripleDES_SHA1, 
-00092         PBES2_AES128_SHA1,    
-00093         PBES2_AES192_SHA1,    
-00094         PBES2_AES256_SHA1     
-00095 };
-00096 
-00103 enum ConvertResult
-00104 {
-00105         ConvertGood,      
-00106         ErrorDecode,      
-00107         ErrorPassphrase,  
-00108         ErrorFile         
-00109 };
-00110 
-00119 enum DLGroupSet
-00120 {
-00121         DSA_512,    
-00122         DSA_768,    
-00123         DSA_1024,   
-00124         IETF_768,   
-00125         IETF_1024,  
-00126         IETF_1536,  
-00127         IETF_2048,  
-00128         IETF_3072,  
-00129         IETF_4096,  
-00130         IETF_6144,  
-00131         IETF_8192  
-00132 
-00133 };
-00134 
-00147 QCA_EXPORT QByteArray emsa3Encode(const QString &hashName, const QByteArray &digest, int size = -1);
-00148 
-00156 class QCA_EXPORT DLGroup
-00157 {
-00158 public:
-00159         DLGroup();
-00160 
-00168         DLGroup(const BigInteger &p, const BigInteger &q, const BigInteger &g);
-00169 
-00176         DLGroup(const BigInteger &p, const BigInteger &g);
-00177 
-00183         DLGroup(const DLGroup &from);
-00184         ~DLGroup();
-00185 
-00191         DLGroup & operator=(const DLGroup &from);
-00192 
-00199         static QList<DLGroupSet> supportedGroupSets(const QString &provider = QString());
-00200 
-00204         bool isNull() const;
-00205 
-00209         BigInteger p() const;
-00210 
-00214         BigInteger q() const;
-00215 
-00219         BigInteger g() const;
-00220 
-00221 private:
-00222         class Private;
-00223         Private *d;
-00224 };
-00225 
-00235 class QCA_EXPORT PKey : public Algorithm
-00236 {
-00237 public:
-00241         enum Type {
-00242                 RSA, 
-00243                 DSA, 
-00244                 DH   
-00245         };
-00246 
-00250         PKey();
-00251 
-00257         PKey(const PKey &from);
-00258 
-00259         ~PKey();
-00260 
-00266         PKey & operator=(const PKey &from);
-00267 
-00299         static QList<Type> supportedTypes(const QString &provider = QString());
-00300 
-00330         static QList<Type> supportedIOTypes(const QString &provider = QString());
-00331 
-00337         bool isNull() const;
-00338 
-00344         Type type() const;
-00345 
-00349         int bitSize() const;
-00350 
-00354         bool isRSA() const;
-00355 
-00359         bool isDSA() const;
-00360 
-00364         bool isDH() const;
-00365 
-00369         bool isPublic() const;  
-00370 
-00374         bool isPrivate() const;
-00375 
-00380         bool canExport() const;
-00381 
-00385         bool canKeyAgree() const;
-00386 
-00393         PublicKey toPublicKey() const;
-00394 
-00398         PrivateKey toPrivateKey() const;
-00399 
-00405         bool operator==(const PKey &a) const;
-00406 
-00412         bool operator!=(const PKey &a) const;
-00413 
-00414 protected:
-00421         PKey(const QString &type, const QString &provider);
-00422 
-00428         void set(const PKey &k);
-00429 
-00439         RSAPublicKey toRSAPublicKey() const;
-00440 
-00450         RSAPrivateKey toRSAPrivateKey() const;
-00451 
-00461         DSAPublicKey toDSAPublicKey() const;
-00462 
-00472         DSAPrivateKey toDSAPrivateKey() const;
-00473 
-00483         DHPublicKey toDHPublicKey() const;
-00484 
-00494         DHPrivateKey toDHPrivateKey() const;
-00495 
-00496 private:
-00497         void assignToPublic(PKey *dest) const;
-00498         void assignToPrivate(PKey *dest) const;
-00499 
-00500         class Private;
-00501         Private *d;
-00502 };
-00503 
-00512 class QCA_EXPORT PublicKey : public PKey
-00513 {
-00514 public:
-00518         PublicKey();
-00519 
-00525         PublicKey(const PrivateKey &k);
-00526 
-00534         PublicKey(const QString &fileName);
-00535 
-00541         PublicKey(const PublicKey &from);
-00542 
-00543         ~PublicKey();
-00544 
-00550         PublicKey & operator=(const PublicKey &from);
-00551 
-00558         RSAPublicKey toRSA() const;
-00559 
-00566         DSAPublicKey toDSA() const;
-00567 
-00574         DHPublicKey toDH() const;
-00575 
-00581         bool canEncrypt() const;
-00582 
-00588         bool canVerify() const;
-00589 
-00596         int maximumEncryptSize(EncryptionAlgorithm alg) const;
-00597 
-00604         SecureArray encrypt(const SecureArray &a, EncryptionAlgorithm alg);
-00605 
-00612         void startVerify(SignatureAlgorithm alg, SignatureFormat format = DefaultFormat);
-00613 
-00619         void update(const MemoryRegion &a);
-00620 
-00646         bool validSignature(const QByteArray &sig);
-00647 
-00661         bool verifyMessage(const MemoryRegion &a, const QByteArray &sig, SignatureAlgorithm alg, SignatureFormat format = DefaultFormat);
-00662 
-00666         QByteArray toDER() const;
-00667 
-00676         QString toPEM() const;
-00677 
-00689         bool toPEMFile(const QString &fileName) const;
-00690 
-00713         static PublicKey fromDER(const QByteArray &a, ConvertResult *result = 0, const QString &provider = QString());
-00714 
-00740         static PublicKey fromPEM(const QString &s, ConvertResult *result = 0, const QString &provider = QString());
-00741 
-00769         static PublicKey fromPEMFile(const QString &fileName, ConvertResult *result = 0, const QString &provider = QString());
-00770 
-00771 protected:
-00778         PublicKey(const QString &type, const QString &provider);
-00779 
-00780 private:
-00781         class Private;
-00782         Private *d;
-00783 };
-00784 
-00793 class QCA_EXPORT PrivateKey : public PKey
-00794 {
-00795 public:
-00799         PrivateKey();
-00800 
-00812         explicit PrivateKey(const QString &fileName, const SecureArray &passphrase = SecureArray());
-00813 
-00819         PrivateKey(const PrivateKey &from);
-00820 
-00821         ~PrivateKey();
-00822 
-00828         PrivateKey & operator=(const PrivateKey &from);
-00829 
-00833         RSAPrivateKey toRSA() const;
-00834 
-00838         DSAPrivateKey toDSA() const;
-00839 
-00843         DHPrivateKey toDH() const;
-00844 
-00850         bool canDecrypt() const;
-00851 
-00857         bool canSign() const;
-00858 
-00869         bool decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg);
-00870 
-00880         void startSign(SignatureAlgorithm alg, SignatureFormat format = DefaultFormat);
-00881 
-00890         void update(const MemoryRegion &a);
-00891 
-00898         QByteArray signature();
-00899 
-00912         QByteArray signMessage(const MemoryRegion &a, SignatureAlgorithm alg, SignatureFormat format = DefaultFormat);
-00913 
-00919         SymmetricKey deriveKey(const PublicKey &theirs);
-00920 
-00928         static QList<PBEAlgorithm> supportedPBEAlgorithms(const QString &provider = QString());
-00929 
-00940         SecureArray toDER(const SecureArray &passphrase = SecureArray(), PBEAlgorithm pbe = PBEDefault) const;
-00941 
-00954         QString toPEM(const SecureArray &passphrase = SecureArray(), PBEAlgorithm pbe = PBEDefault) const;
-00955 
-00972         bool toPEMFile(const QString &fileName, const SecureArray &passphrase = SecureArray(), PBEAlgorithm pbe = PBEDefault) const;
-00973 
-00992         static PrivateKey fromDER(const SecureArray &a, const SecureArray &passphrase = SecureArray(), ConvertResult *result = 0, const QString &provider = QString());
-00993 
-01012         static PrivateKey fromPEM(const QString &s, const SecureArray &passphrase = SecureArray(), ConvertResult *result = 0, const QString &provider = QString());
-01013 
-01036         static PrivateKey fromPEMFile(const QString &fileName, const SecureArray &passphrase = SecureArray(), ConvertResult *result = 0, const QString &provider = QString());
-01037 
-01038 protected:
-01046         PrivateKey(const QString &type, const QString &provider);
-01047 
-01048 private:
-01049         class Private;
-01050         Private *d;
-01051 };
-01052 
-01064 class QCA_EXPORT KeyGenerator : public QObject
-01065 {
-01066         Q_OBJECT
-01067 public:
-01073         KeyGenerator(QObject *parent = 0);
-01074 
-01075         ~KeyGenerator();
-01076 
-01085         bool blockingEnabled() const;
-01086 
-01095         void setBlockingEnabled(bool b);
-01096 
-01102         bool isBusy() const;
-01103 
-01120         PrivateKey createRSA(int bits, int exp = 65537, const QString &provider = QString());
-01121 
-01137         PrivateKey createDSA(const DLGroup &domain, const QString &provider = QString());
-01138 
-01153         PrivateKey createDH(const DLGroup &domain, const QString &provider = QString());
-01154 
-01161         PrivateKey key() const;
-01162 
-01171         DLGroup createDLGroup(QCA::DLGroupSet set, const QString &provider = QString());
-01172 
-01176         DLGroup dlGroup() const;
-01177 
-01178 Q_SIGNALS:
-01184         void finished();
-01185 
-01186 private:
-01187         Q_DISABLE_COPY(KeyGenerator)
-01188 
-01189         class Private;
-01190         friend class Private;
-01191         Private *d;
-01192 };
-01193 
-01202 class QCA_EXPORT RSAPublicKey : public PublicKey
-01203 {
-01204 public:
-01208         RSAPublicKey();
-01209 
-01218         RSAPublicKey(const BigInteger &n, const BigInteger &e, const QString &provider = QString());
-01219 
-01225         RSAPublicKey(const RSAPrivateKey &k);
-01226 
-01234         BigInteger n() const;
-01235 
-01242         BigInteger e() const;
-01243 };
-01244 
-01253 class QCA_EXPORT RSAPrivateKey : public PrivateKey
-01254 {
-01255 public:
-01259         RSAPrivateKey();
-01260 
-01272         RSAPrivateKey(const BigInteger &n, const BigInteger &e, const BigInteger &p, const BigInteger &q, const BigInteger &d, const QString &provider = QString());
-01273 
-01281         BigInteger n() const;
-01282 
-01289         BigInteger e() const;
-01290 
-01294         BigInteger p() const;
-01295 
-01300         BigInteger q() const;
-01301 
-01305         BigInteger d() const;
-01306 };
-01307 
-01316 class QCA_EXPORT DSAPublicKey : public PublicKey
-01317 {
-01318 public:
-01322         DSAPublicKey();
-01323 
-01332         DSAPublicKey(const DLGroup &domain, const BigInteger &y, const QString &provider = QString());
-01333 
-01339         DSAPublicKey(const DSAPrivateKey &k);
-01340 
-01344         DLGroup domain() const;
-01345 
-01349         BigInteger y() const;
-01350 };
-01351 
-01360 class QCA_EXPORT DSAPrivateKey : public PrivateKey
-01361 {
-01362 public:
-01366         DSAPrivateKey();
-01367 
-01377         DSAPrivateKey(const DLGroup &domain, const BigInteger &y, const BigInteger &x, const QString &provider = QString());
-01378 
-01382         DLGroup domain() const;
-01383 
-01387         BigInteger y() const;
-01388 
-01392         BigInteger x() const;
-01393 };
-01394 
-01403 class QCA_EXPORT DHPublicKey : public PublicKey
-01404 {
-01405 public:
-01409         DHPublicKey();
-01410 
-01419         DHPublicKey(const DLGroup &domain, const BigInteger &y, const QString &provider = QString());
-01420 
-01426         DHPublicKey(const DHPrivateKey &k);
-01427 
-01431         DLGroup domain() const;
-01432 
-01436         BigInteger y() const;
-01437 };
-01438 
-01447 class QCA_EXPORT DHPrivateKey : public PrivateKey
-01448 {
-01449 public:
-01453         DHPrivateKey();
-01454 
-01464         DHPrivateKey(const DLGroup &domain, const BigInteger &y, const BigInteger &x, const QString &provider = QString());
-01465 
-01469         DLGroup domain() const;
-01470 
-01474         BigInteger y() const;
-01475 
-01479         BigInteger x() const;
-01480 };
-01482 }
-01483 
-01484 #endif
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__securelayer_8h__dep__incl.map qca2-2.1.0/apidocs/html/qca__securelayer_8h__dep__incl.map --- qca2-2.0.3/apidocs/html/qca__securelayer_8h__dep__incl.map 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__securelayer_8h__dep__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__securelayer_8h__dep__incl.md5 qca2-2.1.0/apidocs/html/qca__securelayer_8h__dep__incl.md5 --- qca2-2.0.3/apidocs/html/qca__securelayer_8h__dep__incl.md5 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__securelayer_8h__dep__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -2de9f4d892cd44c8812be42ada48f6d3 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__securelayer_8h__dep__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__securelayer_8h__dep__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__securelayer_8h.html qca2-2.1.0/apidocs/html/qca__securelayer_8h.html --- qca2-2.0.3/apidocs/html/qca__securelayer_8h.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__securelayer_8h.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_securelayer.h File Reference - - - - - - -
-

qca_securelayer.h File Reference

-

Header file for SecureLayer and its subclasses. -More...

-#include <QObject>
-#include "qca_core.h"
-#include "qca_publickey.h"
-#include "qca_cert.h"
-
-Include dependency graph for qca_securelayer.h:
-
-
- - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - -
- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - -

Classes

class  QCA::SASL::Params
 Parameter flags for the SASL authentication. More...
class  QCA::SASL
 Simple Authentication and Security Layer protocol implementation. More...
class  QCA::SecureLayer
 Abstract interface to a security layer. More...
class  QCA::TLS
 Transport Layer Security / Secure Socket Layer. More...
class  QCA::TLSSession
 Session token, used for TLS resuming. More...

Namespaces

namespace  QCA

Enumerations

enum  QCA::SecurityLevel {
-  QCA::SL_None, -QCA::SL_Integrity, -QCA::SL_Export, -QCA::SL_Baseline, -
-  QCA::SL_High, -QCA::SL_Highest -
- }
-

Detailed Description

-

Header file for SecureLayer and its subclasses.

-
Note:
You should not use this header directly from an application. You should just use #include <QtCrypto> instead.
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__securelayer_8h__incl.map qca2-2.1.0/apidocs/html/qca__securelayer_8h__incl.map --- qca2-2.0.3/apidocs/html/qca__securelayer_8h__incl.map 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__securelayer_8h__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ - - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__securelayer_8h__incl.md5 qca2-2.1.0/apidocs/html/qca__securelayer_8h__incl.md5 --- qca2-2.0.3/apidocs/html/qca__securelayer_8h__incl.md5 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__securelayer_8h__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -0e57fd185600886d648e44c60078ef47 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__securelayer_8h__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__securelayer_8h__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__securelayer_8h_source.html qca2-2.1.0/apidocs/html/qca__securelayer_8h_source.html --- qca2-2.0.3/apidocs/html/qca__securelayer_8h_source.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__securelayer_8h_source.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,444 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_securelayer.h Source File - - - - - - -
-

qca_securelayer.h

Go to the documentation of this file.
00001 /*
-00002  * qca_securelayer.h - Qt Cryptographic Architecture
-00003  * Copyright (C) 2003-2007  Justin Karneges <justin@affinix.com>
-00004  * Copyright (C) 2004-2006  Brad Hards <bradh@frogmouth.net>
-00005  *
-00006  * This library is free software; you can redistribute it and/or
-00007  * modify it under the terms of the GNU Lesser General Public
-00008  * License as published by the Free Software Foundation; either
-00009  * version 2.1 of the License, or (at your option) any later version.
-00010  *
-00011  * This library is distributed in the hope that it will be useful,
-00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-00014  * Lesser General Public License for more details.
-00015  *
-00016  * You should have received a copy of the GNU Lesser General Public
-00017  * License along with this library; if not, write to the Free Software
-00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-00019  * 02110-1301  USA
-00020  *
-00021  */
-00022 
-00032 #ifndef QCA_SECURELAYER_H
-00033 #define QCA_SECURELAYER_H
-00034 
-00035 #include <QObject>
-00036 #include "qca_core.h"
-00037 #include "qca_publickey.h"
-00038 #include "qca_cert.h"
-00039 
-00040 namespace QCA {
-00041 
-00059 enum SecurityLevel
-00060 {
-00061         SL_None,      
-00062         SL_Integrity, 
-00063         SL_Export,    
-00064         SL_Baseline,  
-00065         SL_High,      
-00066         SL_Highest    
-00067 };
-00068 
-00104 class QCA_EXPORT SecureLayer : public QObject
-00105 {
-00106         Q_OBJECT
-00107 public:
-00114         SecureLayer(QObject *parent = 0);
-00115 
-00119         virtual bool isClosable() const;
-00120 
-00125         virtual int bytesAvailable() const = 0;
-00126 
-00131         virtual int bytesOutgoingAvailable() const = 0;
-00132 
-00140         virtual void close();
-00141 
-00149         virtual void write(const QByteArray &a) = 0;
-00150 
-00157         virtual QByteArray read() = 0;
-00158 
-00168         virtual void writeIncoming(const QByteArray &a) = 0;
-00169 
-00179         virtual QByteArray readOutgoing(int *plainBytes = 0) = 0;
-00180 
-00188         virtual QByteArray readUnprocessed();
-00189 
-00195         virtual int convertBytesWritten(qint64 encryptedBytes) = 0;
-00196 
-00197 Q_SIGNALS:
-00204         void readyRead();
-00205 
-00212         void readyReadOutgoing();
-00213 
-00218         void closed();
-00219 
-00224         void error();
-00225 
-00226 private:
-00227         Q_DISABLE_COPY(SecureLayer)
-00228 };
-00229 
-00238 class QCA_EXPORT TLSSession : public Algorithm
-00239 {
-00240 public:
-00241         TLSSession();
-00242 
-00248         TLSSession(const TLSSession &from);
-00249 
-00250         ~TLSSession();
-00251 
-00257         TLSSession & operator=(const TLSSession &from);
-00258 
-00262         bool isNull() const;
-00263 };
-00264 
-00289 class QCA_EXPORT TLS : public SecureLayer, public Algorithm
-00290 {
-00291         Q_OBJECT
-00292 public:
-00296         enum Mode
-00297         {
-00298                 Stream,  
-00299                 Datagram 
-00300         };
-00301 
-00305         enum Version
-00306         {
-00307                 TLS_v1, 
-00308                 SSL_v3, 
-00309                 SSL_v2, 
-00310                 DTLS_v1 
-00311         };
-00312 
-00316         enum Error
-00317         {
-00318                 ErrorSignerExpired,   
-00319                 ErrorSignerInvalid,   
-00320                 ErrorCertKeyMismatch, 
-00321                 ErrorInit,            
-00322                 ErrorHandshake,       
-00323                 ErrorCrypt            
-00324         };
-00325 
-00329         enum IdentityResult
-00330         {
-00331                 Valid,              
-00332                 HostMismatch,       
-00333                 InvalidCertificate, 
-00334                 NoCertificate       
-00335         };
-00336 
-00348         explicit TLS(QObject *parent = 0, const QString &provider = QString());
-00349 
-00361         explicit TLS(Mode mode, QObject *parent = 0, const QString &provider = QString());
-00362 
-00366         ~TLS();
-00367 
-00371         void reset();
-00372 
-00387         QStringList supportedCipherSuites(const Version &version = TLS_v1) const;
-00388 
-00402         void setCertificate(const CertificateChain &cert, const PrivateKey &key);
-00403 
-00412         void setCertificate(const KeyBundle &kb);
-00413 
-00417         CertificateCollection trustedCertificates() const;
-00418 
-00430         void setTrustedCertificates(const CertificateCollection &trusted);
-00431 
-00437         void setConstraints(SecurityLevel s);
-00438 
-00447         void setConstraints(int minSSF, int maxSSF);
-00448 
-00459         void setConstraints(const QStringList &cipherSuiteList);
-00460 
-00483         QList<CertificateInfoOrdered> issuerList() const;
-00484 
-00491         void setIssuerList(const QList<CertificateInfoOrdered> &issuers);
-00492 
-00498         void setSession(const TLSSession &session);
-00499 
-00505         bool canCompress() const;
-00506 
-00513         bool canSetHostName() const;
-00514 
-00522         bool compressionEnabled() const;
-00523 
-00530         void setCompressionEnabled(bool b);
-00531 
-00536         QString hostName() const;
-00537 
-00557         void startClient(const QString &host = QString());
-00558 
-00562         void startServer();
-00563 
-00573         void continueAfterStep();
-00574 
-00582         bool isHandshaken() const;
-00583 
-00589         bool isCompressed() const;
-00590 
-00594         Version version() const;
-00595 
-00602         QString cipherSuite() const;
-00603 
-00613         int cipherBits() const;
-00614 
-00621         int cipherMaxBits() const;
-00622 
-00627         TLSSession session() const;
-00628 
-00634         Error errorCode() const;
-00635 
-00653         IdentityResult peerIdentityResult() const;
-00654 
-00663         Validity peerCertificateValidity() const;
-00664 
-00669         CertificateChain localCertificateChain() const;
-00670 
-00675         PrivateKey localPrivateKey() const;
-00676 
-00681         CertificateChain peerCertificateChain() const;
-00682 
-00683         // reimplemented
-00684         virtual bool isClosable() const;
-00685         virtual int bytesAvailable() const;
-00686         virtual int bytesOutgoingAvailable() const;
-00687         virtual void close();
-00688         virtual void write(const QByteArray &a);
-00689         virtual QByteArray read();
-00690         virtual void writeIncoming(const QByteArray &a);
-00691         virtual QByteArray readOutgoing(int *plainBytes = 0);
-00692         virtual QByteArray readUnprocessed();
-00693         virtual int convertBytesWritten(qint64 encryptedBytes);
-00694 
-00701         int packetsAvailable() const;
-00702 
-00709         int packetsOutgoingAvailable() const;
-00710 
-00716         int packetMTU() const;
-00717 
-00725         void setPacketMTU(int size) const;
-00726 
-00727 Q_SIGNALS:
-00739         void hostNameReceived();
-00740 
-00752         void certificateRequested();
-00753 
-00764         void peerCertificateAvailable();
-00765 
-00777         void handshaken();
-00778 
-00779 protected:
-00786         void connectNotify(const char *signal);
-00787 
-00794         void disconnectNotify(const char *signal);
-00795 
-00796 private:
-00797         Q_DISABLE_COPY(TLS)
-00798 
-00799         class Private;
-00800         friend class Private;
-00801         Private *d;
-00802 };
-00803 
-00831 class QCA_EXPORT SASL : public SecureLayer, public Algorithm
-00832 {
-00833         Q_OBJECT
-00834 public:
-00838         enum Error
-00839         {
-00840                 ErrorInit,      
-00841                 ErrorHandshake, 
-00842                 ErrorCrypt      
-00843         };
-00844 
-00848         enum AuthCondition
-00849         {
-00850                 AuthFail,          
-00851                 NoMechanism,       
-00852                 BadProtocol,       
-00853                 BadServer,         
-00854                 BadAuth,           
-00855                 NoAuthzid,         
-00856                 TooWeak,           
-00857                 NeedEncrypt,       
-00858                 Expired,           
-00859                 Disabled,          
-00860                 NoUser,            
-00861                 RemoteUnavailable  
-00862         };
-00863 
-00867         enum AuthFlags
-00868         {
-00869                 AuthFlagsNone          = 0x00,
-00870                 AllowPlain             = 0x01,
-00871                 AllowAnonymous         = 0x02,
-00872                 RequireForwardSecrecy  = 0x04,
-00873                 RequirePassCredentials = 0x08,
-00874                 RequireMutualAuth      = 0x10,
-00875                 RequireAuthzidSupport  = 0x20  // server-only
-00876         };
-00877 
-00881         enum ClientSendMode
-00882         {
-00883                 AllowClientSendFirst,
-00884                 DisableClientSendFirst
-00885         };
-00886 
-00890         enum ServerSendMode
-00891         {
-00892                 AllowServerSendLast,
-00893                 DisableServerSendLast
-00894         };
-00895 
-00906         class QCA_EXPORT Params
-00907         {
-00908         public:
-00909                 Params();
-00910 
-00922                 Params(bool user, bool authzid, bool pass, bool realm);
-00923 
-00929                 Params(const Params &from);
-00930                 ~Params();
-00931 
-00937                 Params & operator=(const Params &from);
-00938 
-00942                 bool needUsername() const;
-00943 
-00947                 bool canSendAuthzid() const;
-00948 
-00952                 bool needPassword() const;
-00953 
-00957                 bool canSendRealm() const;
-00958 
-00959         private:
-00960                 class Private;
-00961                 Private *d;
-00962         };
-00963 
-00972         explicit SASL(QObject *parent = 0, const QString &provider = QString());
-00973 
-00974         ~SASL();
-00975 
-00979         void reset();
-00980 
-00993         void setConstraints(AuthFlags f, SecurityLevel s = SL_None);
-00994 
-01010         void setConstraints(AuthFlags f, int minSSF, int maxSSF);
-01011 
-01018         void setLocalAddress(const QString &addr, quint16 port);
-01019 
-01026         void setRemoteAddress(const QString &addr, quint16 port);
-01027 
-01033         void setExternalAuthId(const QString &authid);
-01034 
-01041         void setExternalSSF(int strength);
-01042 
-01054         void startClient(const QString &service, const QString &host, const QStringList &mechlist, ClientSendMode mode = AllowClientSendFirst);
-01055 
-01067         void startServer(const QString &service, const QString &host, const QString &realm, ServerSendMode mode = DisableServerSendLast);
-01068 
-01078         void putServerFirstStep(const QString &mech);
-01079 
-01090         void putServerFirstStep(const QString &mech, const QByteArray &clientInit);
-01091 
-01101         void putStep(const QByteArray &stepData);
-01102 
-01106         QString mechanism() const;
-01107 
-01111         QStringList mechanismList() const;
-01112 
-01116         QStringList realmList() const;
-01117 
-01121         int ssf() const;
-01122 
-01126         Error errorCode() const;
-01127 
-01131         AuthCondition authCondition() const;
-01132 
-01138         void setUsername(const QString &user);
-01139 
-01145         void setAuthzid(const QString &auth);
-01146 
-01152         void setPassword(const SecureArray &pass);
-01153 
-01159         void setRealm(const QString &realm);
-01160 
-01164         void continueAfterParams();
-01165 
-01169         void continueAfterAuthCheck();
-01170 
-01171         // reimplemented
-01172         virtual int bytesAvailable() const;
-01173         virtual int bytesOutgoingAvailable() const;
-01174         virtual void write(const QByteArray &a);
-01175         virtual QByteArray read();
-01176         virtual void writeIncoming(const QByteArray &a);
-01177         virtual QByteArray readOutgoing(int *plainBytes = 0);
-01178         virtual int convertBytesWritten(qint64 encryptedBytes);
-01179 
-01180 Q_SIGNALS:
-01193         void clientStarted(bool clientInit, const QByteArray &clientInitData);
-01194 
-01199         void serverStarted();
-01200 
-01208         void nextStep(const QByteArray &stepData);
-01209 
-01220         void needParams(const QCA::SASL::Params &params);
-01221 
-01231         void authCheck(const QString &user, const QString &authzid);
-01232 
-01236         void authenticated();
-01237 
-01238 private:
-01239         Q_DISABLE_COPY(SASL)
-01240 
-01241         class Private;
-01242         friend class Private;
-01243         Private *d;
-01244 };
-01245 
-01246 }
-01247 
-01248 #endif
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__securemessage_8h__dep__incl.map qca2-2.1.0/apidocs/html/qca__securemessage_8h__dep__incl.map --- qca2-2.0.3/apidocs/html/qca__securemessage_8h__dep__incl.map 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__securemessage_8h__dep__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__securemessage_8h__dep__incl.md5 qca2-2.1.0/apidocs/html/qca__securemessage_8h__dep__incl.md5 --- qca2-2.0.3/apidocs/html/qca__securemessage_8h__dep__incl.md5 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__securemessage_8h__dep__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -3a36290f9e88d849699bae58dfa2a879 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__securemessage_8h__dep__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__securemessage_8h__dep__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__securemessage_8h.html qca2-2.1.0/apidocs/html/qca__securemessage_8h.html --- qca2-2.0.3/apidocs/html/qca__securemessage_8h.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__securemessage_8h.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,86 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_securemessage.h File Reference - - - - - - -
-

qca_securemessage.h File Reference

-

Header file for secure message (PGP, CMS) classes. -More...

-#include <QObject>
-#include "qca_core.h"
-#include "qca_publickey.h"
-#include "qca_cert.h"
-
-Include dependency graph for qca_securemessage.h:
-
-
- - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - -
- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - -

Classes

class  QCA::CMS
 Cryptographic Message Syntax messaging system. More...
class  QCA::OpenPGP
 Pretty Good Privacy messaging system. More...
class  QCA::SecureMessage
 Class representing a secure message. More...
class  QCA::SecureMessageKey
 Key for SecureMessage system. More...
class  QCA::SecureMessageSignature
 SecureMessage signature. More...
class  QCA::SecureMessageSystem
 Abstract superclass for secure messaging systems. More...

Namespaces

namespace  QCA

Typedefs

typedef QList< SecureMessageKey > QCA::SecureMessageKeyList
typedef QList
-< SecureMessageSignature > 
QCA::SecureMessageSignatureList
-

Detailed Description

-

Header file for secure message (PGP, CMS) classes.

-
Note:
You should not use this header directly from an application. You should just use #include <QtCrypto> instead.
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__securemessage_8h__incl.map qca2-2.1.0/apidocs/html/qca__securemessage_8h__incl.map --- qca2-2.0.3/apidocs/html/qca__securemessage_8h__incl.map 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__securemessage_8h__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ - - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__securemessage_8h__incl.md5 qca2-2.1.0/apidocs/html/qca__securemessage_8h__incl.md5 --- qca2-2.0.3/apidocs/html/qca__securemessage_8h__incl.md5 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__securemessage_8h__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -0209d5807c2449012a1169647d37c08f \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__securemessage_8h__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__securemessage_8h__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__securemessage_8h_source.html qca2-2.1.0/apidocs/html/qca__securemessage_8h_source.html --- qca2-2.0.3/apidocs/html/qca__securemessage_8h_source.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__securemessage_8h_source.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,346 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_securemessage.h Source File - - - - - - -
-

qca_securemessage.h

Go to the documentation of this file.
00001 /*
-00002  * qca_securemessage.h - Qt Cryptographic Architecture
-00003  * Copyright (C) 2003-2007  Justin Karneges <justin@affinix.com>
-00004  * Copyright (C) 2004,2005  Brad Hards <bradh@frogmouth.net>
-00005  *
-00006  * This library is free software; you can redistribute it and/or
-00007  * modify it under the terms of the GNU Lesser General Public
-00008  * License as published by the Free Software Foundation; either
-00009  * version 2.1 of the License, or (at your option) any later version.
-00010  *
-00011  * This library is distributed in the hope that it will be useful,
-00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-00014  * Lesser General Public License for more details.
-00015  *
-00016  * You should have received a copy of the GNU Lesser General Public
-00017  * License along with this library; if not, write to the Free Software
-00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-00019  * 02110-1301  USA
-00020  *
-00021  */
-00022 
-00033 #ifndef QCA_SECUREMESSAGE_H
-00034 #define QCA_SECUREMESSAGE_H
-00035 
-00036 #include <QObject>
-00037 #include "qca_core.h"
-00038 #include "qca_publickey.h"
-00039 #include "qca_cert.h"
-00040 
-00041 class QDateTime;
-00042 
-00043 namespace QCA {
-00044 
-00045 class SecureMessageSystem;
-00046 
-00054 class QCA_EXPORT SecureMessageKey
-00055 {
-00056 public:
-00060         enum Type
-00061         {
-00062                 None, 
-00063                 PGP,  
-00064                 X509  
-00065         };
-00066 
-00070         SecureMessageKey();
-00071 
-00077         SecureMessageKey(const SecureMessageKey &from);
-00078 
-00079         ~SecureMessageKey();
-00080 
-00086         SecureMessageKey & operator=(const SecureMessageKey &from);
-00087 
-00091         bool isNull() const;
-00092 
-00096         Type type() const;
-00097 
-00101         PGPKey pgpPublicKey() const;
-00102 
-00106         PGPKey pgpSecretKey() const;
-00107 
-00113         void setPGPPublicKey(const PGPKey &pub);
-00114 
-00120         void setPGPSecretKey(const PGPKey &sec);
-00121 
-00125         CertificateChain x509CertificateChain() const;
-00126 
-00130         PrivateKey x509PrivateKey() const;
-00131 
-00137         void setX509CertificateChain(const CertificateChain &c);
-00138 
-00144         void setX509PrivateKey(const PrivateKey &k);
-00145 
-00151         void setX509KeyBundle(const KeyBundle &kb);
-00152 
-00156         bool havePrivate() const;
-00157 
-00165         QString name() const;
-00166 
-00167 private:
-00168         class Private;
-00169         QSharedDataPointer<Private> d;
-00170 };
-00171 
-00175 typedef QList<SecureMessageKey> SecureMessageKeyList;
-00176 
-00184 class QCA_EXPORT SecureMessageSignature
-00185 {
-00186 public:
-00190         enum IdentityResult
-00191         {
-00192                 Valid,            
-00193                 InvalidSignature, 
-00194                 InvalidKey,       
-00195                 NoKey             
-00196         };
-00197 
-00204         SecureMessageSignature();
-00205 
-00217         SecureMessageSignature(IdentityResult r, Validity v, const SecureMessageKey &key, const QDateTime &ts);
-00218 
-00224         SecureMessageSignature(const SecureMessageSignature &from);
-00225 
-00226         ~SecureMessageSignature();
-00227 
-00233         SecureMessageSignature & operator=(const SecureMessageSignature &from);
-00234 
-00238         IdentityResult identityResult() const;
-00239 
-00243         Validity keyValidity() const;
-00244 
-00248         SecureMessageKey key() const;
-00249 
-00253         QDateTime timestamp() const;
-00254 
-00255 private:
-00256         class Private;
-00257         QSharedDataPointer<Private> d;
-00258 };
-00259 
-00263 typedef QList<SecureMessageSignature> SecureMessageSignatureList;
-00264 
-00265 
-00320 class QCA_EXPORT SecureMessage : public QObject, public Algorithm
-00321 {
-00322         Q_OBJECT
-00323 public:
-00327         enum Type
-00328         {
-00329                 OpenPGP, 
-00330                 CMS      
-00331         };
-00332 
-00336         enum SignMode
-00337         {
-00338                 Message,    
-00339                 Clearsign,  
-00340                 Detached    
-00341         };
-00342 
-00346         enum Format
-00347         {
-00348                 Binary, 
-00349                 Ascii   
-00350         };
-00351 
-00355         enum Error
-00356         {
-00357                 ErrorPassphrase,       
-00358                 ErrorFormat,           
-00359                 ErrorSignerExpired,    
-00360                 ErrorSignerInvalid,    
-00361                 ErrorEncryptExpired,   
-00362                 ErrorEncryptUntrusted, 
-00363                 ErrorEncryptInvalid,   
-00364                 ErrorNeedCard,         
-00365                 ErrorCertKeyMismatch,  
-00366                 ErrorUnknown           
-00367         };
-00368 
-00380         SecureMessage(SecureMessageSystem *system);
-00381         ~SecureMessage();
-00382 
-00386         Type type() const;
-00387 
-00398         bool canSignMultiple() const;
-00399 
-00407         bool canClearsign() const;
-00408 
-00418         bool canSignAndEncrypt() const;
-00419 
-00424         void reset();
-00425 
-00430         bool bundleSignerEnabled() const;
-00431 
-00435         bool smimeAttributesEnabled() const;
-00436 
-00440         Format format() const;
-00441 
-00446         SecureMessageKeyList recipientKeys() const;
-00447 
-00452         SecureMessageKeyList signerKeys() const;
-00453 
-00465         void setBundleSignerEnabled(bool b);
-00466 
-00477         void setSMIMEAttributesEnabled(bool b);
-00478 
-00486         void setFormat(Format f);
-00487 
-00495         void setRecipient(const SecureMessageKey &key);
-00496 
-00506         void setRecipients(const SecureMessageKeyList &keys);
-00507 
-00518         void setSigner(const SecureMessageKey &key);
-00519 
-00532         void setSigners(const SecureMessageKeyList &keys);
-00533 
-00554         void startEncrypt();
-00555 
-00580         void startDecrypt();
-00581 
-00606         void startSign(SignMode m = Message);
-00607 
-00615         void startVerify(const QByteArray &detachedSig = QByteArray());
-00616 
-00626         void startSignAndEncrypt();
-00627 
-00637         void update(const QByteArray &in);
-00638 
-00646         QByteArray read();
-00647 
-00651         int bytesAvailable() const;
-00652 
-00665         void end();
-00666 
-00684         bool waitForFinished(int msecs = 30000);
-00685 
-00694         bool success() const;
-00695 
-00702         Error errorCode() const;
-00703 
-00710         QByteArray signature() const;
-00711 
-00715         QString hashName() const;
-00716 
-00725         bool wasSigned() const;
-00726 
-00733         bool verifySuccess() const;
-00734 
-00738         SecureMessageSignature signer() const;
-00739 
-00747         SecureMessageSignatureList signers() const;
-00748 
-00754         QString diagnosticText() const;
-00755 
-00756 Q_SIGNALS:
-00766         void readyRead();
-00767 
-00774         void bytesWritten(int bytes);
-00775 
-00780         void finished();
-00781 
-00782 private:
-00783         Q_DISABLE_COPY(SecureMessage)
-00784 
-00785         class Private;
-00786         friend class Private;
-00787         Private *d;
-00788 };
-00789 
-00800 class QCA_EXPORT SecureMessageSystem : public QObject, public Algorithm
-00801 {
-00802         Q_OBJECT
-00803 public:
-00804         ~SecureMessageSystem();
-00805 
-00806 protected:
-00820         SecureMessageSystem(QObject *parent, const QString &type, const QString &provider);
-00821 
-00822 private:
-00823         Q_DISABLE_COPY(SecureMessageSystem)
-00824 };
-00825 
-00837 class QCA_EXPORT OpenPGP : public SecureMessageSystem
-00838 {
-00839         Q_OBJECT
-00840 public:
-00848         explicit OpenPGP(QObject *parent = 0, const QString &provider = QString());
-00849         ~OpenPGP();
-00850 
-00851 private:
-00852         Q_DISABLE_COPY(OpenPGP)
-00853 
-00854         class Private;
-00855         Private *d;
-00856 };
-00857 
-00883 class QCA_EXPORT CMS : public SecureMessageSystem
-00884 {
-00885         Q_OBJECT
-00886 public:
-00894         explicit CMS(QObject *parent = 0, const QString &provider = QString());
-00895         ~CMS();
-00896 
-00900         CertificateCollection trustedCertificates() const;
-00901 
-00905         CertificateCollection untrustedCertificates() const;
-00906 
-00910         SecureMessageKeyList privateKeys() const;
-00911 
-00919         void setTrustedCertificates(const CertificateCollection &trusted);
-00920 
-00933         void setUntrustedCertificates(const CertificateCollection &untrusted);
-00934 
-00944         void setPrivateKeys(const SecureMessageKeyList &keys);
-00945 
-00946 private:
-00947         Q_DISABLE_COPY(CMS)
-00948 
-00949         class Private;
-00950         Private *d;
-00951 };
-00952 
-00953 }
-00954 
-00955 #endif
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__support_8h__dep__incl.map qca2-2.1.0/apidocs/html/qca__support_8h__dep__incl.map --- qca2-2.0.3/apidocs/html/qca__support_8h__dep__incl.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__support_8h__dep__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__support_8h__dep__incl.md5 qca2-2.1.0/apidocs/html/qca__support_8h__dep__incl.md5 --- qca2-2.0.3/apidocs/html/qca__support_8h__dep__incl.md5 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__support_8h__dep__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -0702f94c62fbe0aea372a2d3b59fb5e5 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__support_8h__dep__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__support_8h__dep__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__support_8h.html qca2-2.1.0/apidocs/html/qca__support_8h.html --- qca2-2.0.3/apidocs/html/qca__support_8h.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__support_8h.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_support.h File Reference - - - - - - -
-

qca_support.h File Reference

-

Header file for "support" classes used in QCA. -More...

-#include <QByteArray>
-#include <QString>
-#include <QObject>
-#include <QVariant>
-#include <QVariantList>
-#include <QStringList>
-#include <QList>
-#include <QMetaObject>
-#include <QThread>
-#include "qca_export.h"
-#include "qca_tools.h"
-
-Include dependency graph for qca_support.h:
-
-
- - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - -
- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - -

Classes

class  QCA::AbstractLogDevice
 An abstract log device. More...
class  QCA::Console
 QCA Console system More...
class  QCA::ConsolePrompt
 Console prompt handler. More...
class  QCA::ConsoleReference
 Manager for a Console. More...
class  QCA::DirWatch
 Support class to monitor a directory for activity. More...
class  QCA::FileWatch
 Support class to monitor a file for activity. More...
class  QCA::Logger
 A simple logging system. More...
class  QCA::Synchronizer
 Enable synchronization between two threads. More...
class  QCA::SyncThread
 Convenience class to run a thread and interact with it synchronously. More...

Namespaces

namespace  QCA
-

Detailed Description

-

Header file for "support" classes used in QCA.

-

The classes in this header do not have any cryptographic content - they are used in QCA, and are included for convenience.

-
Note:
You should not use this header directly from an application. You should just use #include <QtCrypto> instead.
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__support_8h__incl.map qca2-2.1.0/apidocs/html/qca__support_8h__incl.map --- qca2-2.0.3/apidocs/html/qca__support_8h__incl.map 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__support_8h__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__support_8h__incl.md5 qca2-2.1.0/apidocs/html/qca__support_8h__incl.md5 --- qca2-2.0.3/apidocs/html/qca__support_8h__incl.md5 2010-11-27 21:30:34.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__support_8h__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -bcef3d003358a0065588298ecdaad995 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__support_8h__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__support_8h__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__support_8h_source.html qca2-2.1.0/apidocs/html/qca__support_8h_source.html --- qca2-2.0.3/apidocs/html/qca__support_8h_source.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__support_8h_source.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,385 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_support.h Source File - - - - - - -
-

qca_support.h

Go to the documentation of this file.
00001 /*
-00002  * qca_support.h - Qt Cryptographic Architecture
-00003  * Copyright (C) 2003-2005  Justin Karneges <justin@affinix.com>
-00004  * Copyright (C) 2004,2005, 2007  Brad Hards <bradh@frogmouth.net>
-00005  *
-00006  * This library is free software; you can redistribute it and/or
-00007  * modify it under the terms of the GNU Lesser General Public
-00008  * License as published by the Free Software Foundation; either
-00009  * version 2.1 of the License, or (at your option) any later version.
-00010  *
-00011  * This library is distributed in the hope that it will be useful,
-00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-00014  * Lesser General Public License for more details.
-00015  *
-00016  * You should have received a copy of the GNU Lesser General Public
-00017  * License along with this library; if not, write to the Free Software
-00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-00019  * 02110-1301  USA
-00020  *
-00021  */
-00022 
-00036 #ifndef QCA_SUPPORT_H
-00037 #define QCA_SUPPORT_H
-00038 
-00039 #include <QByteArray>
-00040 #include <QString>
-00041 #include <QObject>
-00042 #include <QVariant>
-00043 #include <QVariantList>
-00044 #include <QStringList>
-00045 #include <QList>
-00046 #include <QMetaObject>
-00047 #include <QThread>
-00048 #include "qca_export.h"
-00049 #include "qca_tools.h"
-00050 
-00051 namespace QCA {
-00052 
-00101 QCA_EXPORT QByteArray methodReturnType(const QMetaObject *obj, const QByteArray &method, const QList<QByteArray> argTypes);
-00102 
-00144 QCA_EXPORT bool invokeMethodWithVariants(QObject *obj, const QByteArray &method, const QVariantList &args, QVariant *ret, Qt::ConnectionType type = Qt::AutoConnection);
-00145 
-00272 class QCA_EXPORT SyncThread : public QThread
-00273 {
-00274         Q_OBJECT
-00275 public:
-00281         SyncThread(QObject *parent = 0);
-00282 
-00288         ~SyncThread();
-00289 
-00295         void start();
-00296 
-00302         void stop();
-00303 
-00322         QVariant call(QObject *obj, const QByteArray &method, const QVariantList &args = QVariantList(), bool *ok = 0);
-00323 
-00324 protected:
-00328         virtual void atStart() = 0;
-00329 
-00333         virtual void atEnd() = 0;
-00334 
-00338         virtual void run();
-00339 
-00340 private:
-00341         Q_DISABLE_COPY(SyncThread)
-00342 
-00343         class Private;
-00344         friend class Private;
-00345         Private *d;
-00346 };
-00347 
-00353 class QCA_EXPORT Synchronizer : public QObject
-00354 {
-00355         Q_OBJECT
-00356 public:
-00362         Synchronizer(QObject *parent);
-00363         ~Synchronizer();
-00364 
-00372         bool waitForCondition(int msecs = -1);
-00373 
-00377         void conditionMet();
-00378 
-00379 private:
-00380         Q_DISABLE_COPY(Synchronizer)
-00381 
-00382         class Private;
-00383         Private *d;
-00384 };
-00385 
-00401 class QCA_EXPORT DirWatch : public QObject
-00402 {
-00403         Q_OBJECT
-00404 public:
-00412         explicit DirWatch(const QString &dir = QString(), QObject *parent = 0);
-00413         ~DirWatch();
-00414 
-00418         QString dirName() const;
-00419 
-00425         void setDirName(const QString &dir);
-00426 
-00427 Q_SIGNALS:
-00434         void changed();
-00435 
-00436 private:
-00437         Q_DISABLE_COPY(DirWatch)
-00438 
-00439         class Private;
-00440         friend class Private;
-00441         Private *d;
-00442 };
-00443 
-00459 class QCA_EXPORT FileWatch : public QObject
-00460 {
-00461         Q_OBJECT
-00462 public:
-00470         explicit FileWatch(const QString &file = QString(), QObject *parent = 0);
-00471         ~FileWatch();
-00472 
-00476         QString fileName() const;
-00477 
-00483         void setFileName(const QString &file);
-00484 
-00485 Q_SIGNALS:
-00490         void changed();
-00491 
-00492 private:
-00493         Q_DISABLE_COPY(FileWatch)
-00494 
-00495         class Private;
-00496         friend class Private;
-00497         Private *d;
-00498 };
-00499 
-00500 class ConsolePrivate;
-00501 class ConsoleReferencePrivate;
-00502 class ConsoleReference;
-00503 
-00552 class QCA_EXPORT Console : public QObject
-00553 {
-00554         Q_OBJECT
-00555 public:
-00559         enum Type
-00560         {
-00561                 Tty,         
-00562                 Stdio        
-00563         };
-00567         enum ChannelMode
-00568         {
-00569                 Read,        
-00570                 ReadWrite    
-00571         };
-00572 
-00576         enum TerminalMode
-00577         {
-00578                 Default,     
-00579                 Interactive  
-00580         };
-00581 
-00599         Console(Type type, ChannelMode cmode, TerminalMode tmode, QObject *parent = 0);
-00600         ~Console();
-00601 
-00605         Type type() const;
-00606 
-00610         ChannelMode channelMode() const;
-00611 
-00615         TerminalMode terminalMode() const;
-00616 
-00622         static bool isStdinRedirected();
-00623 
-00629         static bool isStdoutRedirected();
-00630 
-00637         static Console *ttyInstance();
-00638 
-00645         static Console *stdioInstance();
-00646 
-00652         void release();
-00653 
-00658         QByteArray bytesLeftToRead();
-00659 
-00664         QByteArray bytesLeftToWrite();
-00665 
-00666 private:
-00667         Q_DISABLE_COPY(Console)
-00668 
-00669         friend class ConsolePrivate;
-00670         ConsolePrivate *d;
-00671 
-00672         friend class ConsoleReference;
-00673 };
-00674 
-00684 class QCA_EXPORT ConsoleReference : public QObject
-00685 {
-00686         Q_OBJECT
-00687 public:
-00691         enum SecurityMode
-00692         {
-00693                 SecurityDisabled,
-00694                 SecurityEnabled
-00695         };
-00696 
-00702         ConsoleReference(QObject *parent = 0);
-00703         ~ConsoleReference();
-00704 
-00718         bool start(Console *console, SecurityMode mode = SecurityDisabled);
-00719 
-00723         void stop();
-00724 
-00730         Console *console() const;
-00731 
-00738         SecurityMode securityMode() const;
-00739 
-00749         QByteArray read(int bytes = -1);
-00750 
-00759         void write(const QByteArray &a);
-00760 
-00769         SecureArray readSecure(int bytes = -1);
-00770 
-00778         void writeSecure(const SecureArray &a);
-00779 
-00786         void closeOutput();
-00787 
-00792         int bytesAvailable() const;
-00793 
-00798         int bytesToWrite() const;
-00799 
-00800 Q_SIGNALS:
-00805         void readyRead();
-00806 
-00814         void bytesWritten(int bytes);
-00815 
-00819         void inputClosed();
-00820 
-00824         void outputClosed();
-00825 
-00826 private:
-00827         Q_DISABLE_COPY(ConsoleReference)
-00828 
-00829         friend class ConsoleReferencePrivate;
-00830         ConsoleReferencePrivate *d;
-00831 
-00832         friend class Console;
-00833 };
-00834 
-00855 class QCA_EXPORT ConsolePrompt : public QObject
-00856 {
-00857         Q_OBJECT
-00858 public:
-00864         ConsolePrompt(QObject *parent = 0);
-00865         ~ConsolePrompt();
-00866 
-00876         void getHidden(const QString &promptStr);
-00877 
-00883         void getChar();
-00884 
-00891         void waitForFinished();
-00892 
-00900         SecureArray result() const;
-00901 
-00909         QChar resultChar() const;
-00910 
-00911 Q_SIGNALS:
-00921         void finished();
-00922 
-00923 private:
-00924         Q_DISABLE_COPY(ConsolePrompt)
-00925 
-00926         class Private;
-00927         friend class Private;
-00928         Private *d;
-00929 };
-00930 
-00931 class AbstractLogDevice;
-00932 
-00954 class QCA_EXPORT Logger : public QObject
-00955 {
-00956         Q_OBJECT
-00957 public:
-00964         enum Severity
-00965         {
-00966                 Quiet = 0,       
-00967                 Emergency = 1,   
-00968                 Alert = 2,       
-00969                 Critical = 3,    
-00970                 Error = 4,       
-00971                 Warning = 5,     
-00972                 Notice = 6,      
-00973                 Information = 7, 
-00974                 Debug = 8        
-00975         };
-00976 
-00982         inline Severity level() const { return m_logLevel; }
-00983 
-00991         void setLevel(Severity level);
-00992 
-00998         void logTextMessage(const QString &message, Severity = Information);
-00999 
-01009         void logBinaryMessage(const QByteArray &blob, Severity = Information);
-01010 
-01016         void registerLogDevice(AbstractLogDevice *logger);
-01017 
-01025         void unregisterLogDevice(const QString &loggerName);
-01026 
-01030         QStringList currentLogDevices() const;
-01031 
-01032 private:
-01033         Q_DISABLE_COPY(Logger)
-01034 
-01035         friend class Global;
-01036 
-01040         Logger();
-01041 
-01042         ~Logger();
-01043 
-01044         QStringList m_loggerNames;
-01045         QList<AbstractLogDevice*> m_loggers;
-01046         Severity m_logLevel;
-01047 };
-01048 
-01056 class QCA_EXPORT AbstractLogDevice : public QObject
-01057 {
-01058         Q_OBJECT
-01059 public:
-01063         QString name() const;
-01064 
-01075         virtual void logTextMessage(const QString &message, Logger::Severity severity);
-01076 
-01087         virtual void logBinaryMessage(const QByteArray &blob, Logger::Severity severity);
-01088 
-01089 protected:
-01096         explicit AbstractLogDevice(const QString &name, QObject *parent = 0);
-01097 
-01098         virtual ~AbstractLogDevice() = 0;
-01099 
-01100 private:
-01101         Q_DISABLE_COPY(AbstractLogDevice)
-01102 
-01103         class Private;
-01104         Private *d;
-01105 
-01106         QString m_name;
-01107 };
-01108 
-01109 }
-01110 
-01111 #endif
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__textfilter_8h.html qca2-2.1.0/apidocs/html/qca__textfilter_8h.html --- qca2-2.0.3/apidocs/html/qca__textfilter_8h.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__textfilter_8h.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_textfilter.h File Reference - - - - - - -
-

qca_textfilter.h File Reference

-

Header file for text encoding/decoding classes. -More...

-#include "qca_core.h"
-
-Include dependency graph for qca_textfilter.h:
-
-
- - -
- -

Go to the source code of this file.

- - - - - - - - - - -

Classes

class  QCA::Base64
 Base64 encoding / decoding More...
class  QCA::Hex
 Hexadecimal encoding / decoding. More...
class  QCA::TextFilter
 Superclass for text based filtering algorithms. More...

Namespaces

namespace  QCA
-

Detailed Description

-

Header file for text encoding/decoding classes.

-
Note:
You should not use this header directly from an application. You should just use #include <QtCrypto> instead.
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__textfilter_8h__incl.map qca2-2.1.0/apidocs/html/qca__textfilter_8h__incl.map --- qca2-2.0.3/apidocs/html/qca__textfilter_8h__incl.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__textfilter_8h__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__textfilter_8h__incl.md5 qca2-2.1.0/apidocs/html/qca__textfilter_8h__incl.md5 --- qca2-2.0.3/apidocs/html/qca__textfilter_8h__incl.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__textfilter_8h__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -4e9465e5a037520085360ae9b48379a1 \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__textfilter_8h__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__textfilter_8h__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__textfilter_8h_source.html qca2-2.1.0/apidocs/html/qca__textfilter_8h_source.html --- qca2-2.0.3/apidocs/html/qca__textfilter_8h_source.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__textfilter_8h_source.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,151 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_textfilter.h Source File - - - - - - -
-

qca_textfilter.h

Go to the documentation of this file.
00001 /*
-00002  * qca_textfilter.h - Qt Cryptographic Architecture
-00003  * Copyright (C) 2003-2005  Justin Karneges <justin@affinix.com>
-00004  * Copyright (C) 2004,2005  Brad Hards <bradh@frogmouth.net>
-00005  *
-00006  * This library is free software; you can redistribute it and/or
-00007  * modify it under the terms of the GNU Lesser General Public
-00008  * License as published by the Free Software Foundation; either
-00009  * version 2.1 of the License, or (at your option) any later version.
-00010  *
-00011  * This library is distributed in the hope that it will be useful,
-00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-00014  * Lesser General Public License for more details.
-00015  *
-00016  * You should have received a copy of the GNU Lesser General Public
-00017  * License along with this library; if not, write to the Free Software
-00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-00019  * 02110-1301  USA
-00020  *
-00021  */
-00022 
-00033 #ifndef QCA_TEXTFILTER_H
-00034 #define QCA_TEXTFILTER_H
-00035 
-00036 #include "qca_core.h"
-00037 
-00038 namespace QCA {
-00039 
-00051 class QCA_EXPORT TextFilter : public Filter
-00052 {
-00053 public:
-00060         TextFilter(Direction dir);
-00061 
-00068         void setup(Direction dir);
-00069 
-00073         Direction direction() const;
-00074 
-00086         MemoryRegion encode(const MemoryRegion &a);
-00087 
-00099         MemoryRegion decode(const MemoryRegion &a);
-00100 
-00111         QString arrayToString(const MemoryRegion &a);
-00112 
-00123         MemoryRegion stringToArray(const QString &s);
-00124 
-00135         QString encodeString(const QString &s);
-00136 
-00147         QString decodeString(const QString &s);
-00148 
-00149 protected:
-00154         Direction _dir;
-00155 };
-00156 
-00164 class QCA_EXPORT Hex : public TextFilter
-00165 {
-00166 public:
-00175         Hex(Direction dir = Encode);
-00176 
-00182         virtual void clear();
-00183 
-00198         virtual MemoryRegion update(const MemoryRegion &a);
-00199 
-00208         virtual MemoryRegion final();
-00209 
-00215         virtual bool ok() const;
-00216 
-00217 private:
-00218         Q_DISABLE_COPY(Hex)
-00219 
-00220         uchar val;
-00221         bool partial;
-00222         bool _ok;
-00223 };
-00224 
-00232 class QCA_EXPORT Base64 : public TextFilter
-00233 {
-00234 public:
-00243         Base64(Direction dir = Encode);
-00244 
-00248         bool lineBreaksEnabled() const;
-00249 
-00253         int lineBreaksColumn() const;
-00254 
-00263         void setLineBreaksEnabled(bool b);
-00264 
-00271         void setLineBreaksColumn(int column);
-00272 
-00277         virtual void clear();
-00278 
-00293         virtual MemoryRegion update(const MemoryRegion &a);
-00294 
-00303         virtual MemoryRegion final();
-00304 
-00310         virtual bool ok() const;
-00311 
-00312 private:
-00313         Q_DISABLE_COPY(Base64)
-00314 
-00315         QByteArray partial;
-00316         bool _ok;
-00317         int col;
-00318         bool _lb_enabled;
-00319         int _lb_column;
-00320 
-00321         class Private;
-00322         Private *d;
-00323 };
-00324 
-00325 }
-00326 
-00327 #endif
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__tools_8h__dep__incl.map qca2-2.1.0/apidocs/html/qca__tools_8h__dep__incl.map --- qca2-2.0.3/apidocs/html/qca__tools_8h__dep__incl.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__tools_8h__dep__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff -Nru qca2-2.0.3/apidocs/html/qca__tools_8h__dep__incl.md5 qca2-2.1.0/apidocs/html/qca__tools_8h__dep__incl.md5 --- qca2-2.0.3/apidocs/html/qca__tools_8h__dep__incl.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__tools_8h__dep__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -862fff667d62e8b5133f510ee679283b \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__tools_8h__dep__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__tools_8h__dep__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__tools_8h.html qca2-2.1.0/apidocs/html/qca__tools_8h.html --- qca2-2.0.3/apidocs/html/qca__tools_8h.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__tools_8h.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,173 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_tools.h File Reference - - - - - - -
-

qca_tools.h File Reference

-

Header file for "tool" classes used in QCA. -More...

-#include <QSharedData>
-#include <QSharedDataPointer>
-#include <QMetaType>
-#include "qca_export.h"
-
-Include dependency graph for qca_tools.h:
-
-
- - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - -
- -

Go to the source code of this file.

- - - - - - - - - - - - - - - -

Classes

class  QCA::BigInteger
 Arbitrary precision integer. More...
class  QCA::MemoryRegion
 Array of bytes that may be optionally secured. More...
class  QCA::SecureArray
 Secure array of bytes. More...

Namespaces

namespace  QCA

Functions

QCA_EXPORT const SecureArray QCA::operator+ (const SecureArray &a, const SecureArray &b)
QCA_EXPORT void * qca_secure_alloc (int bytes)
QCA_EXPORT void qca_secure_free (void *p)
QCA_EXPORT void * qca_secure_realloc (void *p, int bytes)
-

Detailed Description

-

Header file for "tool" classes used in QCA.

-

These classes differ from those in qca_support.h, in that they have some cryptographic relationship, and require secure memory.

-
Note:
You should not use this header directly from an application. You should just use #include <QtCrypto> instead.
-

Function Documentation

- -
-
- - - - - - - - - -
QCA_EXPORT void* qca_secure_alloc (int  bytes ) 
-
-
- -

Allocate a block of memory from the secure memory pool.

-

This is intended to be used when working with C libraries.

-
Parameters:
- - -
bytes the number of bytes to allocate
-
-
- -
-
- -
-
- - - - - - - - - -
QCA_EXPORT void qca_secure_free (void *  p ) 
-
-
- -

Free (de-allocate) a block of memory that has been previously allocated from the secure memory pool.

-

This is intended to be used when working with C libraries.

-
Parameters:
- - -
p pointer to the block of memory to be free'd
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
QCA_EXPORT void* qca_secure_realloc (void *  p,
int  bytes 
)
-
-
- -

Resize (re-allocate) a block of memory that has been previously allocated from the secure memory pool.

-
Parameters:
- - - -
p pointer to the block of memory to be resized.
bytes the new size that is required.
-
-
- -
-
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qca__tools_8h__incl.map qca2-2.1.0/apidocs/html/qca__tools_8h__incl.map --- qca2-2.0.3/apidocs/html/qca__tools_8h__incl.map 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__tools_8h__incl.map 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - - - diff -Nru qca2-2.0.3/apidocs/html/qca__tools_8h__incl.md5 qca2-2.1.0/apidocs/html/qca__tools_8h__incl.md5 --- qca2-2.0.3/apidocs/html/qca__tools_8h__incl.md5 2010-11-27 21:30:35.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__tools_8h__incl.md5 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -473aeab40f1517778d3e569069cb6f3b \ No newline at end of file Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/qca__tools_8h__incl.png and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/qca__tools_8h__incl.png differ diff -Nru qca2-2.0.3/apidocs/html/qca__tools_8h_source.html qca2-2.1.0/apidocs/html/qca__tools_8h_source.html --- qca2-2.0.3/apidocs/html/qca__tools_8h_source.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qca__tools_8h_source.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,286 +0,0 @@ - - - - -Qt Cryptographic Architecture: qca_tools.h Source File - - - - - - -
-

qca_tools.h

Go to the documentation of this file.
00001 /*
-00002  * qca_tools.h - Qt Cryptographic Architecture
-00003  * Copyright (C) 2003-2007  Justin Karneges <justin@affinix.com>
-00004  * Copyright (C) 2004,2005  Brad Hards <bradh@frogmouth.net>
-00005  *
-00006  * This library is free software; you can redistribute it and/or
-00007  * modify it under the terms of the GNU Lesser General Public
-00008  * License as published by the Free Software Foundation; either
-00009  * version 2.1 of the License, or (at your option) any later version.
-00010  *
-00011  * This library is distributed in the hope that it will be useful,
-00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-00014  * Lesser General Public License for more details.
-00015  *
-00016  * You should have received a copy of the GNU Lesser General Public
-00017  * License along with this library; if not, write to the Free Software
-00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-00019  * 02110-1301  USA
-00020  *
-00021  */
-00022 
-00036 #ifndef QCA_TOOLS_H
-00037 #define QCA_TOOLS_H
-00038 
-00039 #include <QSharedData>
-00040 #include <QSharedDataPointer>
-00041 #include <QMetaType>
-00042 #include "qca_export.h"
-00043 
-00044 class QString;
-00045 class QByteArray;
-00046 class QTextStream;
-00047 
-00055 QCA_EXPORT void *qca_secure_alloc(int bytes);
-00056 
-00065 QCA_EXPORT void qca_secure_free(void *p);
-00066 
-00074 QCA_EXPORT void *qca_secure_realloc(void *p, int bytes);
-00075 
-00076 namespace QCA {
-00077 
-00090 class QCA_EXPORT MemoryRegion
-00091 {
-00092 public:
-00093         MemoryRegion();
-00094 
-00101         MemoryRegion(const char *str);
-00102 
-00109         MemoryRegion(const QByteArray &from);
-00110 
-00116         MemoryRegion(const MemoryRegion &from);
-00117         ~MemoryRegion();
-00118 
-00124         MemoryRegion & operator=(const MemoryRegion &from);
-00125 
-00131         MemoryRegion & operator=(const QByteArray &from);
-00132 
-00141         bool isNull() const;
-00142 
-00151         bool isSecure() const;
-00152 
-00161         QByteArray toByteArray() const;
-00162 
-00166         bool isEmpty() const;
-00167 
-00171         int size() const;
-00172 
-00182         const char *data() const;
-00183 
-00192         const char *constData() const;
-00193 
-00204         const char & at(int index) const;
-00205 
-00206 protected:
-00218         MemoryRegion(bool secure);
-00219 
-00229         MemoryRegion(int size, bool secure);
-00230 
-00243         MemoryRegion(const QByteArray &from, bool secure);
-00244 
-00250         char *data();
-00251 
-00262         char & at(int index);
-00263 
-00269         bool resize(int size);
-00270 
-00280         void set(const QByteArray &from, bool secure);
-00281 
-00293         void setSecure(bool secure);
-00294 
-00295 private:
-00296         bool _secure;
-00297         class Private;
-00298         QSharedDataPointer<Private> d;
-00299 };
-00300 
-00316 class QCA_EXPORT SecureArray : public MemoryRegion
-00317 {
-00318 public:
-00322         SecureArray();
-00323 
-00330         explicit SecureArray(int size, char ch = 0);
-00331 
-00339         SecureArray(const char *str);
-00340 
-00350         SecureArray(const QByteArray &a);
-00351 
-00361         SecureArray(const MemoryRegion &a);
-00362 
-00368         SecureArray(const SecureArray &from);
-00369 
-00370         ~SecureArray();
-00371 
-00377         SecureArray & operator=(const SecureArray &from);
-00378 
-00384         SecureArray & operator=(const QByteArray &a);
-00385 
-00389         void clear();
-00390 
-00396         char & operator[](int index);
-00397 
-00403         const char & operator[](int index) const;
-00404 
-00412         char *data();
-00413 
-00421         const char *data() const;
-00422 
-00430         const char *constData() const;
-00431 
-00437         char & at(int index);
-00438 
-00444         const char & at(int index) const;
-00445 
-00449         int size() const;
-00450 
-00460         bool isEmpty() const;
-00461 
-00470         bool resize(int size);
-00471 
-00486         void fill(char fillChar, int fillToPosition = -1);
-00487 
-00493         QByteArray toByteArray() const;
-00494 
-00500         SecureArray & append(const SecureArray &a);
-00501 
-00508         bool operator==(const MemoryRegion &other) const;
-00509         
-00516         inline bool operator!=(const MemoryRegion &other) const
-00517         {
-00518                 return !(*this == other);
-00519         }
-00520 
-00526         SecureArray & operator+=(const SecureArray &a);
-00527 
-00528 protected:
-00535         void set(const SecureArray &from);
-00536 
-00543         void set(const QByteArray &from);
-00544 };
-00545 
-00552 QCA_EXPORT const SecureArray operator+(const SecureArray &a, const SecureArray &b);
-00553 
-00570 class QCA_EXPORT BigInteger
-00571 {
-00572 public:
-00576         BigInteger();
-00577 
-00583         BigInteger(int n);
-00584 
-00594         BigInteger(const char *c);
-00595 
-00601         BigInteger(const QString &s);
-00602 
-00608         BigInteger(const QCA::SecureArray &a);
-00609 
-00615         BigInteger(const BigInteger &from);
-00616 
-00617         ~BigInteger();
-00618 
-00630         BigInteger & operator=(const BigInteger &from);
-00631 
-00643         BigInteger & operator=(const QString &s);
-00644 
-00657         BigInteger & operator+=(const BigInteger &b);
-00658 
-00671         BigInteger & operator-=(const BigInteger &b);
-00672 
-00678         BigInteger & operator*=(const BigInteger &b);
-00679 
-00685         BigInteger & operator/=(const BigInteger &b);
-00686 
-00692         BigInteger & operator%=(const BigInteger &b);
-00693 
-00701         QCA::SecureArray toArray() const;
-00702 
-00712         void fromArray(const QCA::SecureArray &a);
-00713 
-00723         QString toString() const;
-00724 
-00737         bool fromString(const QString &s);
-00738 
-00761         int compare(const BigInteger &n) const;
-00762 
-00769         inline bool operator==(const BigInteger &other) const
-00770         {
-00771                 return (compare(other) == 0);
-00772         }
-00773 
-00780         inline bool operator!=(const BigInteger &other) const
-00781         {
-00782                 return !(*this == other);
-00783         }
-00784 
-00792         inline bool operator<=(const BigInteger &other) const
-00793         {
-00794                 return (compare(other) <= 0);
-00795         }
-00796 
-00804         inline bool operator>=(const BigInteger &other) const
-00805         {
-00806                 return (compare(other) >= 0);
-00807         }
-00808 
-00816         inline bool operator<(const BigInteger &other) const
-00817         {
-00818                 return (compare(other) < 0);
-00819         }
-00820 
-00828         inline bool operator>(const BigInteger &other) const
-00829         {
-00830                 return (compare(other) > 0);
-00831         }
-00832 
-00833 private:
-00834         class Private;
-00835         QSharedDataPointer<Private> d;
-00836 };
-00837 
-00838 
-00839 
-00848 QCA_EXPORT QTextStream &operator<<(QTextStream &stream, const BigInteger &b);
-00849 
-00850 
-00851 }
-00852 
-00853 #endif
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qpipe_8h.html qca2-2.1.0/apidocs/html/qpipe_8h.html --- qca2-2.0.3/apidocs/html/qpipe_8h.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qpipe_8h.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ - - - - -Qt Cryptographic Architecture: qpipe.h File Reference - - - - - - -
-

qpipe.h File Reference

-

Header file for the QPipe FIFO class. -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

Classes

class  QCA::QPipe
 A FIFO buffer (named pipe) abstraction. More...
class  QCA::QPipeDevice
 Unbuffered direct pipe. More...
class  QCA::QPipeEnd
 A buffered higher-level pipe end. More...

Namespaces

namespace  QCA
-

Detailed Description

-

Header file for the QPipe FIFO class.

-
Note:
You should not use this header directly from an application. You should just use #include <QtCrypto> instead.
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/qpipe_8h_source.html qca2-2.1.0/apidocs/html/qpipe_8h_source.html --- qca2-2.0.3/apidocs/html/qpipe_8h_source.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/qpipe_8h_source.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,256 +0,0 @@ - - - - -Qt Cryptographic Architecture: qpipe.h Source File - - - - - - -
-

qpipe.h

Go to the documentation of this file.
00001 /*
-00002  * Copyright (C) 2003-2007  Justin Karneges <justin@affinix.com>
-00003  *
-00004  * This library is free software; you can redistribute it and/or
-00005  * modify it under the terms of the GNU Lesser General Public
-00006  * License as published by the Free Software Foundation; either
-00007  * version 2.1 of the License, or (at your option) any later version.
-00008  *
-00009  * This library is distributed in the hope that it will be useful,
-00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-00012  * Lesser General Public License for more details.
-00013  *
-00014  * You should have received a copy of the GNU Lesser General Public
-00015  * License along with this library; if not, write to the Free Software
-00016  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-00017  * 02110-1301  USA
-00018  *
-00019  */
-00020 
-00031 #ifndef QPIPE_H
-00032 #define QPIPE_H
-00033 
-00034 #ifndef DOXYGEN_SHOULD_SKIP_THIS
-00035 
-00036 #ifndef QPIPE_NO_SECURE
-00037 # define QPIPE_SECURE
-00038 #endif
-00039 
-00040 #ifdef QPIPE_SECURE
-00041 # include "QtCrypto"
-00042 #else
-00043 # define QCA_EXPORT
-00044 #endif
-00045 
-00046 // defs adapted qprocess_p.h
-00047 #ifdef Q_OS_WIN
-00048 #include <windows.h>
-00049 typedef HANDLE Q_PIPE_ID;
-00050 #define INVALID_Q_PIPE_ID INVALID_HANDLE_VALUE
-00051 #else
-00052 typedef int Q_PIPE_ID;
-00053 #define INVALID_Q_PIPE_ID -1
-00054 #endif
-00055 
-00056 #endif
-00057 
-00058 // Note: for Windows console, I/O must be in UTF-8.  Reads are guaranteed to
-00059 //   to completely decode (no partial characters).  Likewise, writes must
-00060 //   not contain partial characters.
-00061 
-00062 namespace QCA {
-00063 
-00064 
-00075 class QCA_EXPORT QPipeDevice : public QObject
-00076 {
-00077         Q_OBJECT
-00078 public:
-00082         enum Type
-00083         {
-00084                 Read, 
-00085                 Write 
-00086         };
-00087 
-00093         QPipeDevice(QObject *parent = 0);
-00094         ~QPipeDevice();
-00095 
-00099         Type type() const;
-00100 
-00104         bool isValid() const;
-00105 
-00115         Q_PIPE_ID id() const;
-00116 
-00124         int idAsInt() const;
-00125 
-00132         void take(Q_PIPE_ID id, Type t);
-00133 
-00137         void enable();
-00138 
-00142         void close();
-00143 
-00147         void release();
-00148 
-00156         bool setInheritable(bool enabled);
-00157 
-00161         int bytesAvailable() const;
-00162 
-00171         int read(char *data, int maxsize);
-00172 
-00183         int write(const char *data, int size);
-00184 
-00193         int writeResult(int *written) const;
-00194 
-00195 Q_SIGNALS:
-00199         void notify();
-00200 
-00201 private:
-00202         Q_DISABLE_COPY(QPipeDevice)
-00203 
-00204         class Private;
-00205         friend class Private;
-00206         Private *d;
-00207 };
-00208 
-00218 class QCA_EXPORT QPipeEnd : public QObject
-00219 {
-00220         Q_OBJECT
-00221 public:
-00222 
-00226         enum Error
-00227         {
-00228                 ErrorEOF,    
-00229                 ErrorBroken  
-00230         };
-00231 
-00237         QPipeEnd(QObject *parent = 0);
-00238 
-00239         ~QPipeEnd();
-00240 
-00244         void reset();
-00245 
-00249         QPipeDevice::Type type() const;
-00250 
-00257         bool isValid() const;
-00258 
-00262         Q_PIPE_ID id() const;
-00263 
-00267         int idAsInt() const;
-00268 
-00275         void take(Q_PIPE_ID id, QPipeDevice::Type t);
-00276 
-00277 #ifdef QPIPE_SECURE
-00278 
-00286         void setSecurityEnabled(bool secure);
-00287 #endif
-00288 
-00295         void enable();
-00296 
-00302         void close();
-00303 
-00310         void release();
-00311 
-00320         bool setInheritable(bool enabled);
-00321 
-00325         void finalize();
-00326 
-00330         void finalizeAndRelease();
-00331 
-00340         int bytesAvailable() const;
-00341 
-00350         int bytesToWrite() const;
-00351 
-00362         QByteArray read(int bytes = -1);
-00363 
-00373         void write(const QByteArray &a);
-00374 
-00375 #ifdef QPIPE_SECURE
-00376 
-00386         SecureArray readSecure(int bytes = -1);
-00387 
-00397         void writeSecure(const SecureArray &a);
-00398 #endif
-00399 
-00406         QByteArray takeBytesToWrite();
-00407 
-00408 #ifdef QPIPE_SECURE
-00409 
-00415         SecureArray takeBytesToWriteSecure();
-00416 #endif
-00417 
-00418 Q_SIGNALS:
-00425         void readyRead();
-00426 
-00433         void bytesWritten(int bytes);
-00434 
-00446         void closed();
-00447 
-00454         void error(QCA::QPipeEnd::Error e);
-00455 
-00456 private:
-00457         Q_DISABLE_COPY(QPipeEnd)
-00458 
-00459         class Private;
-00460         friend class Private;
-00461         Private *d;
-00462 };
-00463 
-00480 class QCA_EXPORT QPipe
-00481 {
-00482 public:
-00490         QPipe(QObject *parent = 0);
-00491 
-00492         ~QPipe();
-00493 
-00500         void reset();
-00501 
-00502 #ifdef QPIPE_SECURE
-00503 
-00508         bool create(bool secure = false);
-00509 #else
-00510 
-00513         bool create();
-00514 #endif
-00515 
-00519         QPipeEnd & readEnd() { return i; }
-00520 
-00524         QPipeEnd & writeEnd() { return o; }
-00525 
-00526 private:
-00527         Q_DISABLE_COPY(QPipe)
-00528 
-00529         QPipeEnd i, o;
-00530 };
-00531 
-00532 }
-00533 
-00534 #endif
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/randomtest.cpp-example.html qca2-2.1.0/apidocs/html/randomtest.cpp-example.html --- qca2-2.0.3/apidocs/html/randomtest.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/randomtest.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ - - - - -Qt Cryptographic Architecture: randomtest.cpp - - - - - - -
-

randomtest.cpp

The code below shows the normal way to use the QCA::Random class.

-
/*
- Copyright (C) 2004, 2006 Brad Hards <bradh@frogmouth.net>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-// QtCrypto has the declarations for all of QCA
-#include <QtCrypto>
-
-#include <QCoreApplication>
-#include <QDebug>
-
-#include <iostream>
-
-int main(int argc, char **argv)
-{
-        // the Initializer object sets things up, and
-        // also does cleanup when it goes out of scope
-        QCA::Initializer init;
-
-        QCoreApplication app(argc, argv);
-
-        qDebug() << "This example generates random numbers";
-
-        int randInt;
-        // This is the standard way to generate a random integer.
-        randInt = QCA::Random::randomInt();
-        qDebug() << "A random number: " << randInt;
-
-        // If you wanted a random character (octet), you could
-        // use something like:
-        unsigned char randChar;
-        randChar = QCA::Random::randomChar();
-        // It might not be printable, so this may not produce output
-        std::cout << "A random character: " << randChar << std::endl;
-
-        QCA::SecureArray tenBytes(10);
-        // If you need more random values, you may want to
-        // get an array, as shown below.
-        tenBytes = QCA::Random::randomArray(10);
-
-        // To make this viewable, we convert to hexadecimal.
-        std::cout << "A random 10 byte array (in hex): ";
-        std::cout << QCA::Hex().arrayToString(tenBytes).toAscii().data() << std::endl;
-
-        // Under some circumstances, you may want to create a
-        // Random object, rather than a static public member function.
-        // This isn't normally the easiest way, but it does work
-        QCA::Random myRandomObject;
-        randChar = myRandomObject.nextByte();
-        tenBytes = myRandomObject.nextBytes(10);
-        return 0;
-}
-
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/rsatest.cpp-example.html qca2-2.1.0/apidocs/html/rsatest.cpp-example.html --- qca2-2.0.3/apidocs/html/rsatest.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/rsatest.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,185 +0,0 @@ - - - - -Qt Cryptographic Architecture: rsatest.cpp - - - - - - -
-

rsatest.cpp

The code below shows some of the capabilities for how to use RSA. This example also shows how to export and import a key to a file, using PEM encoding.

-
/*
- Copyright (C) 2003 Justin Karneges <justin@affinix.com>
- Copyright (C) 2005 Brad Hards <bradh@frogmouth.net>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include <QtCrypto>
-#include <QCoreApplication>
-
-#include <iostream>
-
-int main(int argc, char **argv)
-{
-    // The Initializer object sets things up, and also
-    // does cleanup when it goes out of scope
-    QCA::Initializer init;
-
-    QCoreApplication app(argc, argv);
-
-    // we use the first argument if provided, or
-    // use "hello" if no arguments
-    QCA::SecureArray arg = (argc >= 2) ? argv[1] : "hello";
-
-    // We demonstrate PEM usage here, so we need to test for
-    // supportedIOTypes, not just supportedTypes
-    if(!QCA::isSupported("pkey") ||
-       !QCA::PKey::supportedIOTypes().contains(QCA::PKey::RSA))
-        std::cout << "RSA not supported!\n";
-    else {
-        // When creating a public / private key pair, you make the
-        // private key, and then extract the public key component from it
-        // Using RSA is very common, however DSA can provide equivalent
-        // signature/verification. This example applies to DSA to the
-        // extent that the operations work on that key type.
-
-        // QCA provides KeyGenerator as a convenient source of new keys,
-        // however you could also import an existing key instead.
-        QCA::PrivateKey seckey = QCA::KeyGenerator().createRSA(1024);
-        if(seckey.isNull()) {
-            std::cout << "Failed to make private RSA key" << std::endl;
-            return 1;
-        }
-
-        QCA::PublicKey pubkey = seckey.toPublicKey();
-
-        // check if the key can encrypt
-        if(!pubkey.canEncrypt()) {
-            std::cout << "Error: this kind of key cannot encrypt" << std::endl;
-            return 1;
-        }
-
-        // encrypt some data - note that only the public key is required
-        // you must also choose the algorithm to be used
-        QCA::SecureArray result = pubkey.encrypt(arg, QCA::EME_PKCS1_OAEP);
-        if(result.isEmpty()) {
-            std::cout << "Error encrypting" << std::endl;
-            return 1;
-        }
-
-        // output the encrypted data
-        QString rstr = QCA::arrayToHex(result.toByteArray());
-        std::cout << "\"" << arg.data() << "\" encrypted with RSA is \"";
-        std::cout << qPrintable(rstr) << "\"" << std::endl;
-
-        // save the private key - in a real example, make sure this goes
-        // somewhere secure and has a good pass phrase
-        // You can use the same technique with the public key too.
-        QCA::SecureArray passPhrase = "pass phrase";
-        seckey.toPEMFile("keyprivate.pem", passPhrase);
-
-        // Read that key back in, checking if the read succeeded
-        QCA::ConvertResult conversionResult;
-        QCA::PrivateKey privateKey = QCA::PrivateKey::fromPEMFile( "keyprivate.pem",
-                                                                   passPhrase,
-                                                                   &conversionResult);
-        if (! (QCA::ConvertGood == conversionResult) ) {
-            std::cout << "Private key read failed" << std::endl;
-        }
-
-        // now decrypt that encrypted data using the private key that
-        // we read in. The algorithm is the same.
-        QCA::SecureArray decrypt;
-        if(0 == privateKey.decrypt(result, &decrypt, QCA::EME_PKCS1_OAEP)) {
-            std::cout << "Error decrypting.\n";
-            return 1;
-        }
-
-        // output the resulting decrypted string
-        std::cout << "\"" << qPrintable(rstr) << "\" decrypted with RSA is \"";
-        std::cout << decrypt.data() << "\"" << std::endl;
-
-
-        // Some private keys can also be used for producing signatures
-        if(!privateKey.canSign()) {
-            std::cout << "Error: this kind of key cannot sign" << std::endl;
-            return 1;
-        }
-        privateKey.startSign( QCA::EMSA3_MD5 );
-        privateKey.update( arg ); // just reuse the same message
-        QByteArray argSig = privateKey.signature();
-
-        // instead of using the startSign(), update(), signature() calls,
-        // you may be better doing the whole thing in one go, using the
-        // signMessage call. Of course you need the whole message in one
-        // hit, which may or may not be a problem
-
-        // output the resulting signature
-        rstr = QCA::arrayToHex(argSig);
-        std::cout << "Signature for \"" << arg.data() << "\" using RSA, is ";
-        std::cout << "\"" << qPrintable( rstr ) << "\"" << std::endl;
-
-        // to check a signature, we must check that the key is
-        // appropriate
-        if(pubkey.canVerify()) {
-            pubkey.startVerify( QCA::EMSA3_MD5 );
-            pubkey.update( arg );
-            if ( pubkey.validSignature( argSig ) ) {
-                std::cout << "Signature is valid" << std::endl;
-            } else {
-                std::cout << "Bad signature" << std::endl;
-            }
-        }
-
-        // We can also do the verification in a single step if we
-        // have all the message
-        if ( pubkey.canVerify() &&
-             pubkey.verifyMessage( arg, argSig, QCA::EMSA3_MD5 ) ) {
-            std::cout << "Signature is valid" << std::endl;
-        } else {
-            std::cout << "Signature could not be verified" << std::endl;
-        }
-
-    }
-
-    return 0;
-}
-
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/saslclient.cpp-example.html qca2-2.1.0/apidocs/html/saslclient.cpp-example.html --- qca2-2.0.3/apidocs/html/saslclient.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/saslclient.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,597 +0,0 @@ - - - - -Qt Cryptographic Architecture: saslclient.cpp - - - - - - -
-

saslclient.cpp

The code below shows how to create a SASL client.

-
/*
- Copyright (C) 2003-2008  Justin Karneges <justin@affinix.com>
- Copyright (C) 2006  Michail Pishchagin
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include <QCoreApplication>
-#include <QTimer>
-#include <QTcpSocket>
-#include <QTcpServer>
-#include <stdio.h>
-
-// QtCrypto has the declarations for all of QCA
-#include <QtCrypto>
-
-static QString prompt(const QString &s)
-{
-        printf("* %s ", qPrintable(s));
-        fflush(stdout);
-        char line[256];
-        fgets(line, 255, stdin);
-        QString result = line;
-        if(result[result.length()-1] == '\n')
-                result.truncate(result.length()-1);
-        return result;
-}
-
-static QString socketErrorToString(QAbstractSocket::SocketError x)
-{
-        QString s;
-        switch(x)
-        {
-                case QAbstractSocket::ConnectionRefusedError:
-                        s = "connection refused or timed out"; break;
-                case QAbstractSocket::RemoteHostClosedError:
-                        s = "remote host closed the connection"; break;
-                case QAbstractSocket::HostNotFoundError:
-                        s = "host not found"; break;
-                case QAbstractSocket::SocketAccessError:
-                        s = "access error"; break;
-                case QAbstractSocket::SocketResourceError:
-                        s = "too many sockets"; break;
-                case QAbstractSocket::SocketTimeoutError:
-                        s = "operation timed out"; break;
-                case QAbstractSocket::DatagramTooLargeError:
-                        s = "datagram was larger than system limit"; break;
-                case QAbstractSocket::NetworkError:
-                        s = "network error"; break;
-                case QAbstractSocket::AddressInUseError:
-                        s = "address is already in use"; break;
-                case QAbstractSocket::SocketAddressNotAvailableError:
-                        s = "address does not belong to the host"; break;
-                case QAbstractSocket::UnsupportedSocketOperationError:
-                        s = "operation is not supported by the local operating system"; break;
-                default:
-                        s = "unknown socket error"; break;
-        }
-        return s;
-}
-
-static QString saslAuthConditionToString(QCA::SASL::AuthCondition x)
-{
-        QString s;
-        switch(x)
-        {
-                case QCA::SASL::NoMechanism:
-                        s = "no appropriate mechanism could be negotiated"; break;
-                case QCA::SASL::BadProtocol:
-                        s = "bad SASL protocol"; break;
-                case QCA::SASL::BadServer:
-                        s = "server failed mutual authentication"; break;
-                // AuthFail or unknown (including those defined for server only)
-                default:
-                        s = "generic authentication failure"; break;
-        };
-        return s;
-}
-
-class ClientTest : public QObject
-{
-        Q_OBJECT
-
-private:
-        QString host, proto, authzid, realm, user, pass;
-        int port;
-        bool no_authzid, no_realm;
-        int mode; // 0 = receive mechanism list, 1 = sasl negotiation, 2 = app
-        QTcpSocket *sock;
-        QCA::SASL *sasl;
-        QByteArray inbuf;
-        bool sock_done;
-        int waitCycles;
-
-public:
-        ClientTest(const QString &_host, int _port, const QString &_proto, const QString &_authzid, const QString &_realm, const QString &_user, const QString &_pass, bool _no_authzid, bool _no_realm) :
-                host(_host),
-                proto(_proto),
-                authzid(_authzid),
-                realm(_realm),
-                user(_user),
-                pass(_pass),
-                port(_port),
-                no_authzid(_no_authzid),
-                no_realm(_no_realm),
-                sock_done(false),
-                waitCycles(0)
-        {
-                sock = new QTcpSocket(this);
-                connect(sock, SIGNAL(connected()), SLOT(sock_connected()));
-                connect(sock, SIGNAL(readyRead()), SLOT(sock_readyRead()));
-                connect(sock, SIGNAL(error(QAbstractSocket::SocketError)), SLOT(sock_error(QAbstractSocket::SocketError)));
-
-                sasl = new QCA::SASL(this);
-                connect(sasl, SIGNAL(clientStarted(bool, const QByteArray &)), SLOT(sasl_clientFirstStep(bool, const QByteArray &)));
-                connect(sasl, SIGNAL(nextStep(const QByteArray &)), SLOT(sasl_nextStep(const QByteArray &)));
-                connect(sasl, SIGNAL(needParams(const QCA::SASL::Params &)), SLOT(sasl_needParams(const QCA::SASL::Params &)));
-                connect(sasl, SIGNAL(authenticated()), SLOT(sasl_authenticated()));
-                connect(sasl, SIGNAL(readyRead()), SLOT(sasl_readyRead()));
-                connect(sasl, SIGNAL(readyReadOutgoing()), SLOT(sasl_readyReadOutgoing()));
-                connect(sasl, SIGNAL(error()), SLOT(sasl_error()));
-        }
-
-public slots:
-        void start()
-        {
-                mode = 0; // mech list mode
-
-                int flags = 0;
-                flags |= QCA::SASL::AllowPlain;
-                flags |= QCA::SASL::AllowAnonymous;
-                sasl->setConstraints((QCA::SASL::AuthFlags)flags, 0, 256);
-
-                if(!user.isEmpty())
-                        sasl->setUsername(user);
-                if(!authzid.isEmpty())
-                        sasl->setAuthzid(authzid);
-                if(!pass.isEmpty())
-                        sasl->setPassword(pass.toUtf8());
-                if(!realm.isEmpty())
-                        sasl->setRealm(realm);
-
-                printf("Connecting to %s:%d, for protocol %s\n", qPrintable(host), port, qPrintable(proto));
-                sock->connectToHost(host, port);
-        }
-
-signals:
-        void quit();
-
-private slots:
-        void sock_connected()
-        {
-                printf("Connected to server.  Awaiting mechanism list...\n");
-        }
-
-        void sock_error(QAbstractSocket::SocketError x)
-        {
-                if(x == QAbstractSocket::RemoteHostClosedError)
-                {
-                        if(mode == 2) // app mode, where disconnect means completion
-                        {
-                                sock_done = true;
-                                tryFinished();
-                                return;
-                        }
-                        else // any other mode, where disconnect is an error
-                        {
-                                printf("Error: server closed connection unexpectedly.\n");
-                                emit quit();
-                                return;
-                        }
-                }
-
-                printf("Error: socket: %s\n", qPrintable(socketErrorToString(x)));
-                emit quit();
-        }
-
-        void sock_readyRead()
-        {
-                if(mode == 2) // app mode
-                {
-                        QByteArray a = sock->readAll();
-                        printf("Read %d bytes\n", a.size());
-
-                        // there is a possible flaw in the qca 2.0 api, in
-                        //   that if sasl data is received from the peer
-                        //   followed by a disconnect from the peer, there is
-                        //   no clear approach to salvaging the bytes.  tls is
-                        //   not affected because tls has the concept of
-                        //   closing a session.  with sasl, there is no
-                        //   closing, and since the qca api is asynchronous,
-                        //   we could potentially wait forever for decoded
-                        //   data, if the last write was a partial packet.
-                        //
-                        // for now, we can perform a simple workaround of
-                        //   waiting at least three event loop cycles for
-                        //   decoded data before giving up and assuming the
-                        //   last write was partial.  the fact is, all current
-                        //   qca sasl providers respond within this time
-                        //   frame, so this fix should work fine for now.  in
-                        //   qca 2.1, we should revise the api to handle this
-                        //   situation better.
-                        //
-                        // further note: i guess this only affects application
-                        //   protocols that have no close message of their
-                        //   own, and rely on the tcp-level close.  examples
-                        //   are http, and of course this qcatest protocol.
-                        if(waitCycles == 0)
-                        {
-                                waitCycles = 3;
-                                QMetaObject::invokeMethod(this, "waitWriteIncoming", Qt::QueuedConnection);
-                        }
-
-                        sasl->writeIncoming(a);
-                }
-                else // mech list or sasl negotiation mode
-                {
-                        if(sock->canReadLine())
-                        {
-                                QString line = sock->readLine();
-                                line.truncate(line.length() - 1); // chop the newline
-                                handleLine(line);
-                        }
-                }
-        }
-
-        void sasl_clientFirstStep(bool clientInit, const QByteArray &clientInitData)
-        {
-                printf("Choosing mech: %s\n", qPrintable(sasl->mechanism()));
-                QString line = sasl->mechanism();
-                if(clientInit)
-                {
-                        line += ' ';
-                        line += arrayToString(clientInitData);
-                }
-                sendLine(line);
-        }
-
-        void sasl_nextStep(const QByteArray &stepData)
-        {
-                QString line = "C";
-                if(!stepData.isEmpty())
-                {
-                        line += ',';
-                        line += arrayToString(stepData);
-                }
-                sendLine(line);
-        }
-
-        void sasl_needParams(const QCA::SASL::Params &params)
-        {
-                if(params.needUsername())
-                {
-                        user = prompt("Username:");
-                        sasl->setUsername(user);
-                }
-
-                if(params.canSendAuthzid() && !no_authzid)
-                {
-                        authzid = prompt("Authorize As (enter to skip):");
-                        if(!authzid.isEmpty())
-                                sasl->setAuthzid(authzid);
-                }
-
-                if(params.needPassword())
-                {
-                        QCA::ConsolePrompt prompt;
-                        prompt.getHidden("* Password");
-                        prompt.waitForFinished();
-                        QCA::SecureArray pass = prompt.result();
-                        sasl->setPassword(pass);
-                }
-
-                if(params.canSendRealm() && !no_realm)
-                {
-                        QStringList realms = sasl->realmList();
-                        printf("Available realms:\n");
-                        if(realms.isEmpty())
-                                printf("  (none specified)\n");
-                        foreach(const QString &s, realms)
-                                printf("  %s\n", qPrintable(s));
-                        realm = prompt("Realm (enter to skip):");
-                        if(!realm.isEmpty())
-                                sasl->setRealm(realm);
-                }
-
-                sasl->continueAfterParams();
-        }
-
-        void sasl_authenticated()
-        {
-                printf("SASL success!\n");
-                printf("SSF: %d\n", sasl->ssf());
-        }
-
-        void sasl_readyRead()
-        {
-                QByteArray a = sasl->read();
-                inbuf += a;
-                processInbuf();
-        }
-
-        void sasl_readyReadOutgoing()
-        {
-                QByteArray a = sasl->readOutgoing();
-                sock->write(a);
-        }
-
-        void sasl_error()
-        {
-                int e = sasl->errorCode();
-                if(e == QCA::SASL::ErrorInit)
-                        printf("Error: sasl: initialization failed.\n");
-                else if(e == QCA::SASL::ErrorHandshake)
-                        printf("Error: sasl: %s.\n", qPrintable(saslAuthConditionToString(sasl->authCondition())));
-                else if(e == QCA::SASL::ErrorCrypt)
-                        printf("Error: sasl: broken security layer.\n");
-                else
-                        printf("Error: sasl: unknown error.\n");
-
-                emit quit();
-        }
-
-        void waitWriteIncoming()
-        {
-                --waitCycles;
-                if(waitCycles > 0)
-                {
-                        QMetaObject::invokeMethod(this, "waitWriteIncoming", Qt::QueuedConnection);
-                        return;
-                }
-
-                tryFinished();
-        }
-
-private:
-        void tryFinished()
-        {
-                if(sock_done && waitCycles == 0)
-                {
-                        printf("Finished, server closed connection.\n");
-
-                        // if we give up on waiting for a response to
-                        //   writeIncoming, then it might come late.  in
-                        //   theory this shouldn't happen if we wait enough
-                        //   cycles, but if one were to arrive then it could
-                        //   occur between the request to quit the app and
-                        //   the actual quit of the app.  to assist with
-                        //   debugging, then, we'll explicitly stop listening
-                        //   for signals here.  otherwise the response may
-                        //   still be received and displayed, giving a false
-                        //   sense of correctness.
-                        sasl->disconnect(this);
-
-                        emit quit();
-                }
-        }
-
-        QString arrayToString(const QByteArray &ba)
-        {
-                return QCA::Base64().arrayToString(ba);
-        }
-
-        QByteArray stringToArray(const QString &s)
-        {
-                return QCA::Base64().stringToArray(s).toByteArray();
-        }
-
-        void sendLine(const QString &line)
-        {
-                printf("Writing: {%s}\n", qPrintable(line));
-                QString s = line + '\n';
-                QByteArray a = s.toUtf8();
-                if(mode == 2) // app mode
-                        sasl->write(a); // write to sasl
-                else // mech list or sasl negotiation
-                        sock->write(a); // write to socket
-        }
-
-        void processInbuf()
-        {
-                // collect completed lines from inbuf
-                QStringList list;
-                int at;
-                while((at = inbuf.indexOf('\n')) != -1)
-                {
-                        list += QString::fromUtf8(inbuf.mid(0, at));
-                        inbuf = inbuf.mid(at + 1);
-                }
-
-                // process the lines
-                foreach(const QString &line, list)
-                        handleLine(line);
-        }
-
-        void handleLine(const QString &line)
-        {
-                printf("Reading: [%s]\n", qPrintable(line));
-                if(mode == 0)
-                {
-                        // first line is the method list
-                        QStringList mechlist = line.split(' ');
-                        mode = 1; // switch to sasl negotiation mode
-                        sasl->startClient(proto, host, mechlist);
-                }
-                else if(mode == 1)
-                {
-                        QString type, rest;
-                        int n = line.indexOf(',');
-                        if(n != -1)
-                        {
-                                type = line.mid(0, n);
-                                rest = line.mid(n + 1);
-                        }
-                        else
-                                type = line;
-        
-                        if(type == "C")
-                        {
-                                sasl->putStep(stringToArray(rest));
-                        }
-                        else if(type == "E")
-                        {
-                                if(!rest.isEmpty())
-                                        printf("Error: server says: %s.\n", qPrintable(rest));
-                                else
-                                        printf("Error: server error, unspecified.\n");
-                                emit quit();
-                                return;
-                        }
-                        else if(type == "A")
-                        {
-                                printf("Authentication success.\n");
-                                mode = 2; // switch to app mode
-
-                                // at this point, the server may send us text
-                                //   lines for us to display and then close.
-
-                                sock_readyRead(); // any extra data?
-                                return;
-                        }
-                        else
-                        {
-                                printf("Error: Bad format from peer, closing.\n");
-                                emit quit();
-                                return;
-                        }
-                }
-        }
-};
-
-void usage()
-{
-        printf("usage: saslclient (options) host(:port) (user) (pass)\n");
-        printf("options: --proto=x, --authzid=x, --realm=x\n");
-}
-
-int main(int argc, char **argv)
-{
-        QCA::Initializer init;
-        QCoreApplication qapp(argc, argv);
-
-        QStringList args = qapp.arguments();
-        args.removeFirst();
-
-        // options
-        QString proto = "qcatest"; // default protocol
-        QString authzid, realm;
-        bool no_authzid = false;
-        bool no_realm = false;
-        for(int n = 0; n < args.count(); ++n)
-        {
-                if(!args[n].startsWith("--"))
-                        continue;
-
-                QString opt = args[n].mid(2);
-                QString var, val;
-                int at = opt.indexOf('=');
-                if(at != -1)
-                {
-                        var = opt.mid(0, at);
-                        val = opt.mid(at + 1);
-                }
-                else
-                        var = opt;
-
-                if(var == "proto")
-                {
-                        proto = val;
-                }
-                else if(var == "authzid")
-                {
-                        // specifying empty authzid means force unspecified
-                        if(val.isEmpty())
-                                no_authzid = true;
-                        else
-                                authzid = val;
-                }
-                else if(var == "realm")
-                {
-                        // specifying empty realm means force unspecified
-                        if(val.isEmpty())
-                                no_realm = true;
-                        else
-                                realm = val;
-                }
-
-                args.removeAt(n);
-                --n; // adjust position
-        }
-
-        if(args.count() < 1)
-        {
-                usage();
-                return 0;
-        }
-
-        QString host, user, pass;
-        int port = 8001; // default port
-
-        QString hostinput = args[0];
-        if(args.count() >= 2)
-                user = args[1];
-        if(args.count() >= 3)
-                pass = args[2];
-
-        int at = hostinput.indexOf(':');
-        if(at != -1)
-        {
-                host = hostinput.mid(0, at);
-                port = hostinput.mid(at + 1).toInt();
-        }
-        else
-                host = hostinput;
-
-        if(!QCA::isSupported("sasl"))
-        {
-                printf("Error: SASL support not found.\n");
-                return 1;
-        }
-
-        ClientTest client(host, port, proto, authzid, realm, user, pass, no_authzid, no_realm);
-        QObject::connect(&client, SIGNAL(quit()), &qapp, SLOT(quit()));
-        QTimer::singleShot(0, &client, SLOT(start()));
-        qapp.exec();
-
-        return 0;
-}
-
-#include "saslclient.moc"
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/saslserver.cpp-example.html qca2-2.1.0/apidocs/html/saslserver.cpp-example.html --- qca2-2.0.3/apidocs/html/saslserver.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/saslserver.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,542 +0,0 @@ - - - - -Qt Cryptographic Architecture: saslserver.cpp - - - - - - -
-

saslserver.cpp

The code below shows how to create a SASL server.

-
/*
- Copyright (C) 2003-2008  Justin Karneges <justin@affinix.com>
- Copyright (C) 2006  Michail Pishchagin
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include <QCoreApplication>
-#include <QTimer>
-#include <QTcpSocket>
-#include <QTcpServer>
-#include <stdio.h>
-
-// QtCrypto has the declarations for all of QCA
-#include <QtCrypto>
-
-static QString socketErrorToString(QAbstractSocket::SocketError x)
-{
-        QString s;
-        switch(x)
-        {
-                case QAbstractSocket::ConnectionRefusedError:
-                        s = "connection refused or timed out"; break;
-                case QAbstractSocket::RemoteHostClosedError:
-                        s = "remote host closed the connection"; break;
-                case QAbstractSocket::HostNotFoundError:
-                        s = "host not found"; break;
-                case QAbstractSocket::SocketAccessError:
-                        s = "access error"; break;
-                case QAbstractSocket::SocketResourceError:
-                        s = "too many sockets"; break;
-                case QAbstractSocket::SocketTimeoutError:
-                        s = "operation timed out"; break;
-                case QAbstractSocket::DatagramTooLargeError:
-                        s = "datagram was larger than system limit"; break;
-                case QAbstractSocket::NetworkError:
-                        s = "network error"; break;
-                case QAbstractSocket::AddressInUseError:
-                        s = "address is already in use"; break;
-                case QAbstractSocket::SocketAddressNotAvailableError:
-                        s = "address does not belong to the host"; break;
-                case QAbstractSocket::UnsupportedSocketOperationError:
-                        s = "operation is not supported by the local operating system"; break;
-                default:
-                        s = "unknown socket error"; break;
-        }
-        return s;
-}
-
-static QString saslAuthConditionToString(QCA::SASL::AuthCondition x)
-{
-        QString s;
-        switch(x)
-        {
-                case QCA::SASL::NoMechanism:
-                        s = "no appropriate mechanism could be negotiated"; break;
-                case QCA::SASL::BadProtocol:
-                        s = "bad SASL protocol"; break;
-                case QCA::SASL::BadAuth:
-                        s = "authentication failed"; break;
-                case QCA::SASL::NoAuthzid:
-                        s = "authorization failed"; break;
-                case QCA::SASL::TooWeak:
-                        s = "mechanism too weak for this user"; break;
-                case QCA::SASL::NeedEncrypt:
-                        s = "encryption is needed to use this mechanism"; break;
-                case QCA::SASL::Expired:
-                        s = "passphrase expired"; break;
-                case QCA::SASL::Disabled:
-                        s = "account is disabled"; break;
-                case QCA::SASL::NoUser:
-                        s = "user not found"; break;
-                case QCA::SASL::RemoteUnavailable:
-                        s = "needed remote service is unavailable"; break;
-                // AuthFail or unknown (including those defined for client only)
-                default:
-                        s = "generic authentication failure"; break;
-        };
-        return s;
-}
-
-// --- ServerTest declaration
-
-class ServerTest : public QObject
-{
-        Q_OBJECT
-
-private:
-        QString host, proto, realm, str;
-        int port;
-        QTcpServer *tcpServer;
-        QList<int> ids;
-
-public:
-        ServerTest(const QString &_host, int _port, const QString &_proto, const QString &_realm, const QString &_str);
-
-        int reserveId();
-        void releaseId(int id);
-
-public slots:
-        void start();
-
-signals:
-        void quit();
-
-private slots:
-        void server_newConnection();
-};
-
-// --- ServerTestHandler
-
-class ServerTestHandler : public QObject
-{
-        Q_OBJECT
-
-private:
-        ServerTest *serverTest;
-        QTcpSocket *sock;
-        QCA::SASL *sasl;
-        int id;
-        QString host, proto, realm, str;
-        int mode; // 0 = receive mechanism list, 1 = sasl negotiation, 2 = app
-        int toWrite;
-
-public:
-        ServerTestHandler(ServerTest *_serverTest, QTcpSocket *_sock, const QString &_host, const QString &_proto, const QString &_realm, const QString &_str) :
-                serverTest(_serverTest),
-                sock(_sock),
-                host(_host),
-                proto(_proto),
-                realm(_realm),
-                str(_str)
-        {
-                id = serverTest->reserveId();
-
-                sock->setParent(this);
-                connect(sock, SIGNAL(disconnected()), SLOT(sock_disconnected()));
-                connect(sock, SIGNAL(readyRead()), SLOT(sock_readyRead()));
-                connect(sock, SIGNAL(error(QAbstractSocket::SocketError)), SLOT(sock_error(QAbstractSocket::SocketError)));
-                connect(sock, SIGNAL(bytesWritten(qint64)), SLOT(sock_bytesWritten(qint64)));
-
-                sasl = new QCA::SASL(this);
-                connect(sasl, SIGNAL(authCheck(const QString &, const QString &)), SLOT(sasl_authCheck(const QString &, const QString &)));
-                connect(sasl, SIGNAL(nextStep(const QByteArray &)), SLOT(sasl_nextStep(const QByteArray &)));
-                connect(sasl, SIGNAL(authenticated()), SLOT(sasl_authenticated()));
-                connect(sasl, SIGNAL(readyRead()), SLOT(sasl_readyRead()));
-                connect(sasl, SIGNAL(readyReadOutgoing()), SLOT(sasl_readyReadOutgoing()));
-                connect(sasl, SIGNAL(error()), SLOT(sasl_error()));
-                connect(sasl, SIGNAL(serverStarted()), SLOT(sasl_serverStarted()));
-
-                mode = 0; // mech list mode
-                toWrite = 0;
-
-                int flags = 0;
-                flags |= QCA::SASL::AllowPlain;
-                flags |= QCA::SASL::AllowAnonymous;
-                sasl->setConstraints((QCA::SASL::AuthFlags)flags, 0, 256);
-
-                printf("%d: Connection received!  Starting SASL handshake...\n", id);
-                sasl->startServer(proto, host, realm);
-        }
-
-        ~ServerTestHandler()
-        {
-                serverTest->releaseId(id);
-        }
-
-private slots:
-        void sasl_serverStarted()
-        {
-                sendLine(sasl->mechanismList().join(" "));
-        }
-
-        void sock_disconnected()
-        {
-                printf("%d: Connection closed.\n", id);
-                discard();
-        }
-
-        void sock_error(QAbstractSocket::SocketError x)
-        {
-                if(x == QAbstractSocket::RemoteHostClosedError)
-                {
-                        printf("%d: Error: client closed connection unexpectedly.\n", id);
-                        discard();
-                        return;
-                }
-
-                printf("%d: Error: socket: %s\n", id, qPrintable(socketErrorToString(x)));
-                discard();
-        }
-
-        void sock_readyRead()
-        {
-                if(sock->canReadLine())
-                {
-                        QString line = sock->readLine();
-                        line.truncate(line.length() - 1); // chop the newline
-                        handleLine(line);
-                }
-        }
-
-        void sock_bytesWritten(qint64 x)
-        {
-                if(mode == 2) // app mode
-                {
-                        toWrite -= sasl->convertBytesWritten(x);
-                        if(toWrite == 0)
-                        {
-                                printf("%d: Sent, closing.\n", id);
-                                sock->close();
-                        }
-                }
-        }
-
-        void sasl_nextStep(const QByteArray &stepData)
-        {
-                QString line = "C";
-                if(!stepData.isEmpty())
-                {
-                        line += ',';
-                        line += arrayToString(stepData);
-                }
-                sendLine(line);
-        }
-
-        void sasl_authCheck(const QString &user, const QString &authzid)
-        {
-                printf("%d: AuthCheck: User: [%s], Authzid: [%s]\n", id, qPrintable(user), qPrintable(authzid));
-
-                // user - who has logged in, confirmed by sasl
-                // authzid - the identity the user wishes to act as, which
-                //   could be another user or just any arbitrary string (in
-                //   XMPP, this field holds a Jabber ID, for example).  this
-                //   field is not necessarily confirmed by sasl, and the
-                //   decision about whether the user can act as the authzid
-                //   must be made by the app.
-
-                // for this simple example program, we allow anyone to use
-                //   the service, and simply continue onward with the
-                //   negotiation.
-                sasl->continueAfterAuthCheck();
-        }
-
-        void sasl_authenticated()
-        {
-                sendLine("A");
-                printf("%d: Authentication success.\n", id);
-                mode = 2; // switch to app mode
-                printf("%d: SSF: %d\n", id, sasl->ssf());
-                sendLine(str);
-        }
-
-        void sasl_readyRead()
-        {
-                QByteArray a = sasl->read();
-                printf("%d: Warning, client sent %d bytes unexpectedly.\n", id, a.size());
-        }
-
-        void sasl_readyReadOutgoing()
-        {
-                sock->write(sasl->readOutgoing());
-        }
-
-        void sasl_error()
-        {
-                int e = sasl->errorCode();
-                if(e == QCA::SASL::ErrorInit)
-                {
-                        printf("%d: Error: sasl: initialization failed.\n", id);
-                }
-                else if(e == QCA::SASL::ErrorHandshake)
-                {
-                        QString errstr = saslAuthConditionToString(sasl->authCondition());
-                        sendLine(QString("E,") + errstr);
-                        printf("%d: Error: sasl: %s.\n", id, qPrintable(errstr));
-                }
-                else if(e == QCA::SASL::ErrorCrypt)
-                {
-                        printf("%d: Error: sasl: broken security layer.\n", id);
-                }
-                else
-                {
-                        printf("%d: Error: sasl: unknown error.\n", id);
-                }
-
-                sock->close();
-        }
-
-private:
-        void discard()
-        {
-                deleteLater();
-        }
-
-        void handleLine(const QString &line)
-        {
-                printf("%d: Reading: [%s]\n", id, qPrintable(line));
-                if(mode == 0)
-                {
-                        int n = line.indexOf(' ');
-                        if(n != -1)
-                        {
-                                QString mech = line.mid(0, n);
-                                QString rest = line.mid(n + 1).toUtf8();
-                                sasl->putServerFirstStep(mech, stringToArray(rest));
-                        }
-                        else
-                                sasl->putServerFirstStep(line);
-                        ++mode;
-                }
-                else if(mode == 1)
-                {
-                        QString type, rest;
-                        int n = line.indexOf(',');
-                        if(n != -1)
-                        {
-                                type = line.mid(0, n);
-                                rest = line.mid(n + 1);
-                        }
-                        else
-                        {
-                                type = line;
-                                rest = "";
-                        }
-
-                        if(type == "C")
-                        {
-                                sasl->putStep(stringToArray(rest));
-                        }
-                        else
-                        {
-                                printf("%d: Bad format from peer, closing.\n", id);
-                                sock->close();
-                                return;
-                        }
-                }
-        }
-
-        QString arrayToString(const QByteArray &ba)
-        {
-                QCA::Base64 encoder;
-                return encoder.arrayToString(ba);
-        }
-
-        QByteArray stringToArray(const QString &s)
-        {
-                QCA::Base64 decoder(QCA::Decode);
-                return decoder.stringToArray(s).toByteArray();
-        }
-
-        void sendLine(const QString &line)
-        {
-                printf("%d: Writing: {%s}\n", id, qPrintable(line));
-                QString s = line + '\n';
-                QByteArray a = s.toUtf8();
-                if(mode == 2) // app mode
-                {
-                        toWrite += a.size();
-                        sasl->write(a); // write to sasl
-                }
-                else // mech list or sasl negotiation
-                        sock->write(a); // write to socket
-        }
-};
-
-// --- ServerTest implementation
-
-ServerTest::ServerTest(const QString &_host, int _port, const QString &_proto, const QString &_realm, const QString &_str) :
-        host(_host),
-        proto(_proto),
-        realm(_realm),
-        str(_str),
-        port(_port)
-{
-        tcpServer = new QTcpServer(this);
-        connect(tcpServer, SIGNAL(newConnection()), SLOT(server_newConnection()));
-}
-
-int ServerTest::reserveId()
-{
-        int n = 0;
-        while(ids.contains(n))
-                ++n;
-        ids += n;
-        return n;
-}
-
-void ServerTest::releaseId(int id)
-{
-        ids.removeAll(id);
-}
-
-void ServerTest::start()
-{
-        if(!tcpServer->listen(QHostAddress::Any, port))
-        {
-                printf("Error: unable to bind to port %d.\n", port);
-                emit quit();
-                return;
-        }
-
-        printf("Serving on %s:%d, for protocol %s ...\n", qPrintable(host), port, qPrintable(proto));
-}
-
-void ServerTest::server_newConnection()
-{
-        QTcpSocket *sock = tcpServer->nextPendingConnection();
-        new ServerTestHandler(this, sock, host, proto, realm, str);
-}
-
-// ---
-
-void usage()
-{
-        printf("usage: saslserver host (message)\n");
-        printf("options: --proto=x, --realm=x\n");
-}
-
-int main(int argc, char **argv)
-{
-        QCA::Initializer init;
-        QCoreApplication qapp(argc, argv);
-
-        QCA::setAppName("saslserver");
-
-        QStringList args = qapp.arguments();
-        args.removeFirst();
-
-        // options
-        QString proto = "qcatest"; // default protocol
-        QString realm;
-        for(int n = 0; n < args.count(); ++n)
-        {
-                if(!args[n].startsWith("--"))
-                        continue;
-
-                QString opt = args[n].mid(2);
-                QString var, val;
-                int at = opt.indexOf('=');
-                if(at != -1)
-                {
-                        var = opt.mid(0, at);
-                        val = opt.mid(at + 1);
-                }
-                else
-                        var = opt;
-
-                if(var == "proto")
-                        proto = val;
-                else if(var == "realm")
-                        realm = val;
-
-                args.removeAt(n);
-                --n; // adjust position
-        }
-
-        if(args.count() < 1)
-        {
-                usage();
-                return 0;
-        }
-
-        QString host;
-        int port = 8001; // default port
-
-        QString hostinput = args[0];
-        QString str = "Hello, World";
-        if(args.count() >= 2)
-                str = args[1];
-
-        int at = hostinput.indexOf(':');
-        if(at != -1)
-        {
-                host = hostinput.mid(0, at);
-                port = hostinput.mid(at + 1).toInt();
-        }
-        else
-                host = hostinput;
-
-        if(!QCA::isSupported("sasl"))
-        {
-                printf("Error: SASL support not found.\n");
-                return 1;
-        }
-
-        ServerTest server(host, port, proto, realm, str);
-        QObject::connect(&server, SIGNAL(quit()), &qapp, SLOT(quit()));
-        QTimer::singleShot(0, &server, SLOT(start()));
-        qapp.exec();
-
-        return 0;
-}
-
-#include "saslserver.moc"
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/sslservtest.cpp-example.html qca2-2.1.0/apidocs/html/sslservtest.cpp-example.html --- qca2-2.0.3/apidocs/html/sslservtest.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/sslservtest.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,302 +0,0 @@ - - - - -Qt Cryptographic Architecture: sslservtest.cpp - - - - - - -
-

sslservtest.cpp

The code below shows how to create an SSL server.Note that this server returns a self-signed certificate for "example.com", and that the certificate is expired.

-

The design used here only allows for one connection at a time. If you want to allow for more, you should probably create a "TlsConnection" object that agregates a QCA::TLS object and a QTcpSocket (plus a little bit of state information) that handles a single connection. Then just create a TlsConnection for each server connection.

-
/*
- Copyright (C) 2003 Justin Karneges <justin@affinix.com>
- Copyright (C) 2006 Brad Hards <bradh@frogmouth.net>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include <QtCrypto>
-
-#include <QCoreApplication>
-#include <QDebug>
-#include <QHostAddress>
-#include <QTcpServer>
-#include <QTcpSocket>
-#include <QTimer>
-
-char pemdata_cert[] =
-        "-----BEGIN CERTIFICATE-----\n"
-        "MIICeTCCAeKgAwIBAgIRAKKKnOj6Aarmwf0phApitVAwDQYJKoZIhvcNAQEFBQAw\n"
-        "ODELMAkGA1UEBhMCVVMxFDASBgNVBAoTC0V4YW1wbGUgT3JnMRMwEQYDVQQDEwpF\n"
-        "eGFtcGxlIENBMB4XDTA2MDMxNTA3MDU1MloXDTA3MDMxNTA3MDU1MlowOjEVMBMG\n"
-        "A1UEAxMMRXhhbXBsZSBVc2VyMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRXhhbXBs\n"
-        "ZSBPcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAPkKn0FfHMvRZv+3uFcw\n"
-        "VrOadJmANzLVeVW/DHZp4CXokXSksM66ZMqFuQRBk5rnIZZpZmVp1tTRDVt9sEAY\n"
-        "YNa8CRM4HXkVlU0lCKdey18CSq2VuSvNtw8dDpoBmQt3nr9tePvKHnpS3nm6YjR2\n"
-        "NEvIKt1P4mHzYXLmwoF24C1bAgMBAAGjgYAwfjAdBgNVHQ4EFgQUmQIdzyDaPYWF\n"
-        "fPJ8PPOOm1eSsucwHwYDVR0jBBgwFoAUkCglAizTO7iqwLeaO6r/8kJuqhMwDAYD\n"
-        "VR0TAQH/BAIwADAeBgNVHREEFzAVgRNleGFtcGxlQGV4YW1wbGUuY29tMA4GA1Ud\n"
-        "DwEB/wQEAwIF4DANBgkqhkiG9w0BAQUFAAOBgQAuhbiUgy2a++EUccaonID7eTJZ\n"
-        "F3D5qXMqUpQxlYxU8du+9AxDD7nFxTMkQC2pzfmEc1znRNmJ1ZeLRL72VYsVndcT\n"
-        "psyM8ABkvPp1d2jWIyccVjGpt+/RN5IPKm/YIbtIZcywvWuXrOp1lanVmppLfPnO\n"
-        "6yneBkC9iqjOv/+Q+A==\n"
-        "-----END CERTIFICATE-----\n";
-
-char pemdata_privkey[] =
-        "-----BEGIN PRIVATE KEY-----\n"
-        "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAPkKn0FfHMvRZv+3\n"
-        "uFcwVrOadJmANzLVeVW/DHZp4CXokXSksM66ZMqFuQRBk5rnIZZpZmVp1tTRDVt9\n"
-        "sEAYYNa8CRM4HXkVlU0lCKdey18CSq2VuSvNtw8dDpoBmQt3nr9tePvKHnpS3nm6\n"
-        "YjR2NEvIKt1P4mHzYXLmwoF24C1bAgMBAAECgYEAyIjJHDaeVXDU42zovyxpZE4n\n"
-        "PcOEryY+gdFJE8DFgUD4f1huFsj4iCuNg+PaG42p+hf9IARNvSho/RcEaVg4AJrV\n"
-        "jRP8r7fSqcIGr6lGuvDFFv3SU5ddy84g5oqLYGKvuPSHMGfVsZSxAwOrzD4bH19L\n"
-        "SNqtNcpdBsBd7ZiEE4ECQQD/oJGui9D5Dx3QVcS+QV4F8wuyN9jYIANmX/17o0fl\n"
-        "BL0bwRU4RICwadrcybi5N0JQLIYSUm2HGqNvAJbtnuQxAkEA+WeYLLYPeawcy+WU\n"
-        "kGcOR7BUjHiG71+6cvU4XIDW2bezA04fqWXkZRFAwHTMpQb785/XalFftgS21kql\n"
-        "8yLDSwJAHkeT2hwftdDPlEUEmBDAJW5DvWmWGwu3u2G1cfbGZl9oUyhM7ixXHg57\n"
-        "6VlPs0jTZxHPE86FwNIr99MXDbCbkQJBAMDFOJK+ecGirXNP1P+0GA6DFSap9inJ\n"
-        "BRTbwx+EmgwX966DUOefEOSpbDIVVSPs/Qr2LgtIMEFA7Y0+j3wZD3cCQBsTwccd\n"
-        "ASQx59xakpq11eOlTYz14rjwodr4QMyj26WxEPJtz7hKokx/+EH6fWuPIUSrROM5\n"
-        "07y2gaVbYxtis0s=\n"
-        "-----END PRIVATE KEY-----\n";
-
-class SecureServer : public QObject
-{
-    Q_OBJECT
-
-public:
-    enum { Idle, Handshaking, Active, Closing };
-
-    SecureServer(quint16 _port) : port(_port)
-    {
-        server = new QTcpServer;
-        connect( server, SIGNAL(newConnection()), SLOT(server_handleConnection()) );
-
-        ssl = new QCA::TLS;
-        connect(ssl, SIGNAL(handshaken()), SLOT(ssl_handshaken()));
-        connect(ssl, SIGNAL(readyRead()), SLOT(ssl_readyRead()));
-        connect(ssl, SIGNAL(readyReadOutgoing()), SLOT(ssl_readyReadOutgoing()));
-        connect(ssl, SIGNAL(closed()), SLOT(ssl_closed()));
-        connect(ssl, SIGNAL(error()), SLOT(ssl_error()));
-
-        cert = QCA::Certificate::fromPEM(pemdata_cert);
-        privkey = QCA::PrivateKey::fromPEM(pemdata_privkey);
-
-        mode = Idle;
-    }
-
-    ~SecureServer()
-    {
-        delete ssl;
-        delete server;
-    }
-
-    void start()
-    {
-        if(cert.isNull()) {
-            qDebug() << "Error loading cert!";
-            QTimer::singleShot(0, this, SIGNAL(quit()));
-            return;
-        }
-        if(privkey.isNull()) {
-            qDebug() << "Error loading private key!";
-            QTimer::singleShot(0, this, SIGNAL(quit()));
-            return;
-        }
-        if(false == server->listen(QHostAddress::Any, port)) {
-            qDebug() << "Error binding to port " << port;
-            QTimer::singleShot(0, this, SIGNAL(quit()));
-            return;
-        }
-        qDebug() << "Listening on port" << port;
-    }
-
-signals:
-    void quit();
-
-private slots:
-    void sock_readyRead()
-    {
-        QByteArray buf(sock->bytesAvailable(), 0x00);
-
-        int num = sock->read(buf.data(), buf.size());
-
-        if ( -1 == num )
-            qDebug() << "Error reading data from socket";
-
-        if (num < buf.size() )
-            buf.resize(num);
-
-        ssl->writeIncoming(buf);
-    }
-
-    void server_handleConnection()
-    {
-        // Note: only 1 connection supported at a time in this example!
-        if(mode != Idle) {
-            QTcpSocket* tmp = server->nextPendingConnection();
-            tmp->close();
-            connect(tmp, SIGNAL(disconnected()), tmp, SLOT(deleteLater()));
-            qDebug() << "throwing away extra connection";
-            return;
-        }
-        mode = Handshaking;
-        sock = server->nextPendingConnection();
-        connect(sock, SIGNAL(readyRead()), SLOT(sock_readyRead()));
-        connect(sock, SIGNAL(disconnected()), SLOT(sock_disconnected()));
-        connect(sock, SIGNAL(error(QAbstractSocket::SocketError)),
-                SLOT(sock_error(QAbstractSocket::SocketError)));
-        connect(sock, SIGNAL(bytesWritten(qint64)), SLOT(sock_bytesWritten(qint64)));
-
-        qDebug() << "Connection received!  Starting TLS handshake.";
-        ssl->setCertificate(cert, privkey);
-        ssl->startServer();
-    }
-
-    void sock_disconnected()
-    {
-        qDebug() << "Connection closed.";
-    }
-
-    void sock_bytesWritten(qint64 x)
-    {
-        if(mode == Active && sent) {
-            qint64 bytes = ssl->convertBytesWritten(x);
-            bytesLeft -= bytes;
-
-            if(bytesLeft == 0) {
-                mode = Closing;
-                qDebug() << "Data transfer complete - SSL shutting down";
-                ssl->close();
-            }
-        }
-    }
-
-    void sock_error(QAbstractSocket::SocketError error)
-    {
-        qDebug() << "Socket error: " << (unsigned) error;
-    }
-
-    void ssl_handshaken()
-    {
-        qDebug() << "Successful SSL handshake.  Waiting for newline.";
-        bytesLeft = 0;
-        sent = false;
-        mode = Active;
-        ssl->continueAfterStep();
-    }
-
-    void ssl_readyRead()
-    {
-        QByteArray a = ssl->read();
-        QByteArray b =
-            "<html>\n"
-            "<head><title>Test</title></head>\n"
-            "<body>this is only a test</body>\n"
-            "</html>\n";
-
-        qDebug() << "Sending test response.";
-        sent = true;
-        ssl->write(b);
-    }
-
-    void ssl_readyReadOutgoing()
-    {
-        int plainBytes;
-        QByteArray outgoingData = ssl->readOutgoing(&plainBytes);
-        sock->write( outgoingData );
-    }
-
-    void ssl_closed()
-    {
-        qDebug() << "Closing socket.";
-        sock->close();
-        mode = Idle;
-    }
-
-    void ssl_error()
-    {
-        if(ssl->errorCode() == QCA::TLS::ErrorHandshake) {
-            qDebug() << "SSL Handshake Error!  Closing.";
-            sock->close();
-        }
-        else {
-            qDebug() << "SSL Error!  Closing.";
-            sock->close();
-        }
-        mode = Idle;
-    }
-
-private:
-    quint16 port;
-    QTcpServer *server;
-    QTcpSocket *sock;
-    QCA::TLS *ssl;
-    QCA::Certificate cert;
-    QCA::PrivateKey privkey;
-
-    bool sent;
-    int mode;
-    qint64 bytesLeft;
-};
-
-#include "sslservtest.moc"
-
-int main(int argc, char **argv)
-{
-    QCA::Initializer init;
-
-    QCoreApplication app(argc, argv);
-    int port = argc > 1 ? QString(argv[1]).toInt() : 8000;
-
-    if(!QCA::isSupported("tls")) {
-        qDebug() << "TLS not supported!";
-        return 1;
-    }
-
-    SecureServer *server = new SecureServer(port);
-    QObject::connect(server, SIGNAL(quit()), &app, SLOT(quit()));
-    server->start();
-    app.exec();
-    delete server;
-
-    return 0;
-}
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - diff -Nru qca2-2.0.3/apidocs/html/ssltest.cpp-example.html qca2-2.1.0/apidocs/html/ssltest.cpp-example.html --- qca2-2.0.3/apidocs/html/ssltest.cpp-example.html 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/ssltest.cpp-example.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,364 +0,0 @@ - - - - -Qt Cryptographic Architecture: ssltest.cpp - - - - - - -
-

ssltest.cpp

The code below shows how to create an SSL client

-
/*
- Copyright (C) 2003-2005 Justin Karneges <justin@affinix.com>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include <QtCrypto>
-
-#include <QCoreApplication>
-#include <QTcpSocket>
-
-char exampleCA_cert[] =
-        "-----BEGIN CERTIFICATE-----\n"
-        "MIICSzCCAbSgAwIBAgIBADANBgkqhkiG9w0BAQUFADA4MRMwEQYDVQQDEwpFeGFt\n"
-        "cGxlIENBMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRXhhbXBsZSBPcmcwHhcNMDYw\n"
-        "MzE1MDY1ODMyWhcNMDYwNDE1MDY1ODMyWjA4MRMwEQYDVQQDEwpFeGFtcGxlIENB\n"
-        "MQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRXhhbXBsZSBPcmcwgZ8wDQYJKoZIhvcN\n"
-        "AQEBBQADgY0AMIGJAoGBAL6ULdOxmpeZ+G/ypV12eNO4qnHSVIPTrYPkQuweXqPy\n"
-        "atwGFheG+hLVsNIh9GGOS0tCe7a3hBBKN0BJg1ppfk2x39cDx7hefYqjBuZvp/0O\n"
-        "8Ja3qlQiJLezITZKLxMBrsibcvcuH8zpfUdys2yaN+YGeqNfjQuoNN3Byl1TwuGJ\n"
-        "AgMBAAGjZTBjMB0GA1UdDgQWBBSQKCUCLNM7uKrAt5o7qv/yQm6qEzASBgNVHRMB\n"
-        "Af8ECDAGAQEBAgEIMB4GA1UdEQQXMBWBE2V4YW1wbGVAZXhhbXBsZS5jb20wDgYD\n"
-        "VR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4GBAAh+SIeT1Ao5qInw8oMSoTdO\n"
-        "lQ6h67ec/Jk5KmK4OoskuimmHI0Sp0C5kOCLehXbsVWW8pXsNC2fv0d2HkdaSUcX\n"
-        "hwLzqgyZXd4mupIYlaOTZhuHDwWPCAOZS4LVsi2tndTRHKCP12441JjNKhmZRhkR\n"
-        "u5zzD60nWgM9dKTaxuZM\n"
-        "-----END CERTIFICATE-----\n";
-
-void showCertInfo(const QCA::Certificate &cert)
-{
-        printf("-- Cert --\n");
-        printf(" CN: %s\n", qPrintable(cert.commonName()));
-        printf(" Valid from: %s, until %s\n",
-                qPrintable(cert.notValidBefore().toString()),
-                qPrintable(cert.notValidAfter().toString()));
-        printf(" PEM:\n%s\n", qPrintable(cert.toPEM()));
-}
-
-static QString validityToString(QCA::Validity v)
-{
-        QString s;
-        switch(v)
-        {
-                case QCA::ValidityGood:
-                        s = "Validated";
-                        break;
-                case QCA::ErrorRejected:
-                        s = "Root CA is marked to reject the specified purpose";
-                        break;
-                case QCA::ErrorUntrusted:
-                        s = "Certificate not trusted for the required purpose";
-                        break;
-                case QCA::ErrorSignatureFailed:
-                        s = "Invalid signature";
-                        break;
-                case QCA::ErrorInvalidCA:
-                        s = "Invalid CA certificate";
-                        break;
-                case QCA::ErrorInvalidPurpose:
-                        s = "Invalid certificate purpose";
-                        break;
-                case QCA::ErrorSelfSigned:
-                        s = "Certificate is self-signed";
-                        break;
-                case QCA::ErrorRevoked:
-                        s = "Certificate has been revoked";
-                        break;
-                case QCA::ErrorPathLengthExceeded:
-                        s = "Maximum certificate chain length exceeded";
-                        break;
-                case QCA::ErrorExpired:
-                        s = "Certificate has expired";
-                        break;
-                case QCA::ErrorExpiredCA:
-                        s = "CA has expired";
-                        break;
-                case QCA::ErrorValidityUnknown:
-                default:
-                        s = "General certificate validation error";
-                        break;
-        }
-        return s;
-}
-
-class SecureTest : public QObject
-{
-        Q_OBJECT
-public:
-        SecureTest()
-        {
-                sock_done = false;
-                ssl_done = false;
-
-                sock = new QTcpSocket;
-                connect(sock, SIGNAL(connected()), SLOT(sock_connected()));
-                connect(sock, SIGNAL(readyRead()), SLOT(sock_readyRead()));
-                connect(sock, SIGNAL(error(QAbstractSocket::SocketError)),
-                        SLOT(sock_error(QAbstractSocket::SocketError)));
-
-                ssl = new QCA::TLS;
-                connect(ssl, SIGNAL(certificateRequested()), SLOT(ssl_certificateRequested()));
-                connect(ssl, SIGNAL(handshaken()), SLOT(ssl_handshaken()));
-                connect(ssl, SIGNAL(readyRead()), SLOT(ssl_readyRead()));
-                connect(ssl, SIGNAL(readyReadOutgoing()),
-                        SLOT(ssl_readyReadOutgoing()));
-                connect(ssl, SIGNAL(closed()), SLOT(ssl_closed()));
-                connect(ssl, SIGNAL(error()), SLOT(ssl_error()));
-        }
-
-        ~SecureTest()
-        {
-                delete ssl;
-                delete sock;
-        }
-
-        void start(const QString &_host)
-        {
-                int n = _host.indexOf(':');
-                int port;
-                if(n != -1)
-                {
-                        host = _host.mid(0, n);
-                        port = _host.mid(n+1).toInt();
-                }
-                else
-                {
-                        host = _host;
-                        port = 443;
-                }
-
-                printf("Trying %s:%d...\n", qPrintable(host), port);
-                sock->connectToHost(host, port);
-        }
-
-signals:
-        void quit();
-
-private slots:
-        void sock_connected()
-        {
-                // We just do this to help doxygen...
-                QCA::TLS *ssl = SecureTest::ssl;
-
-                printf("Connected, starting TLS handshake...\n");
-
-                QCA::CertificateCollection rootCerts = QCA::systemStore();
-
-                // We add this one to show how, and to make it work with
-                // the server example.
-                rootCerts.addCertificate(QCA::Certificate::fromPEM(exampleCA_cert));
-
-                if(!QCA::haveSystemStore())
-                        printf("Warning: no root certs\n");
-                else
-                        ssl->setTrustedCertificates(rootCerts);
-
-                ssl->startClient(host);
-        }
-
-        void sock_readyRead()
-        {
-                // We just do this to help doxygen...
-                QCA::TLS *ssl = SecureTest::ssl;
-
-                ssl->writeIncoming(sock->readAll());
-        }
-
-        void sock_connectionClosed()
-        {
-                printf("\nConnection closed.\n");
-                sock_done = true;
-
-                if(ssl_done && sock_done)
-                        emit quit();
-        }
-
-        void sock_error(QAbstractSocket::SocketError x)
-        {
-                if(x == QAbstractSocket::RemoteHostClosedError)
-                {
-                        sock_connectionClosed();
-                        return;
-                }
-
-                printf("\nSocket error.\n");
-                emit quit();
-        }
-
-        void ssl_handshaken()
-        {
-                // We just do this to help doxygen...
-                QCA::TLS *ssl = SecureTest::ssl;
-
-                QCA::TLS::IdentityResult r = ssl->peerIdentityResult();
-
-                printf("Successful SSL handshake using %s (%i of %i bits)\n",
-                       qPrintable(ssl->cipherSuite()),
-                       ssl->cipherBits(),
-                       ssl->cipherMaxBits() );
-                if(r != QCA::TLS::NoCertificate)
-                {
-                        cert = ssl->peerCertificateChain().primary();
-                        if(!cert.isNull())
-                                showCertInfo(cert);
-                }
-
-                QString str = "Peer Identity: ";
-                if(r == QCA::TLS::Valid)
-                        str += "Valid";
-                else if(r == QCA::TLS::HostMismatch)
-                        str += "Error: Wrong certificate";
-                else if(r == QCA::TLS::InvalidCertificate)
-                        str += "Error: Invalid certificate.\n -> Reason: " +
-                                validityToString(ssl->peerCertificateValidity());
-                else
-                        str += "Error: No certificate";
-                printf("%s\n", qPrintable(str));
-
-                ssl->continueAfterStep();
-
-                printf("Let's try a GET request now.\n");
-                QString req = "GET / HTTP/1.0\nHost: " + host + "\n\n";
-                ssl->write(req.toLatin1());
-        }
-
-        void ssl_certificateRequested()
-        {
-                // We just do this to help doxygen...
-                QCA::TLS *ssl = SecureTest::ssl;
-
-                printf("Server requested client certificate.\n");
-                QList<QCA::CertificateInfoOrdered> issuerList = ssl->issuerList();
-                if(!issuerList.isEmpty())
-                {
-                        printf("Allowed issuers:\n");
-                        foreach(QCA::CertificateInfoOrdered i, issuerList)
-                                printf("  %s\n", qPrintable(i.toString()));
-                }
-
-                ssl->continueAfterStep();
-        }
-
-        void ssl_readyRead()
-        {
-                // We just do this to help doxygen...
-                QCA::TLS *ssl = SecureTest::ssl;
-
-                QByteArray a = ssl->read();
-                printf("%s", a.data());
-        }
-
-        void ssl_readyReadOutgoing()
-        {
-                // We just do this to help doxygen...
-                QCA::TLS *ssl = SecureTest::ssl;
-
-                sock->write(ssl->readOutgoing());
-        }
-
-        void ssl_closed()
-        {
-                printf("SSL session closed.\n");
-                ssl_done = true;
-
-                if(ssl_done && sock_done)
-                        emit quit();
-        }
-
-        void ssl_error()
-        {
-                // We just do this to help doxygen...
-                QCA::TLS *ssl = SecureTest::ssl;
-
-                int x = ssl->errorCode();
-                if(x == QCA::TLS::ErrorHandshake)
-                {
-                        printf("SSL Handshake Error!\n");
-                        emit quit();
-                }
-                else
-                {
-                        printf("SSL Error!\n");
-                        emit quit();
-                }
-        }
-
-private:
-        QString host;
-        QTcpSocket *sock;
-        QCA::TLS *ssl;
-        QCA::Certificate cert;
-        bool sock_done, ssl_done;
-};
-
-#include "ssltest.moc"
-
-int main(int argc, char **argv)
-{
-        QCA::Initializer init;
-
-        QCoreApplication app(argc, argv);
-        QString host = argc > 1 ? argv[1] : "andbit.net";
-
-        if(!QCA::isSupported("tls"))
-        {
-                printf("TLS not supported!\n");
-                return 1;
-        }
-
-        SecureTest *s = new SecureTest;
-        QObject::connect(s, SIGNAL(quit()), &app, SLOT(quit()));
-        s->start(host);
-        app.exec();
-        delete s;
-
-        return 0;
-}
-
-
Generated on Sat Nov 27 13:41:18 2010 for Qt Cryptographic Architecture by  - -doxygen 1.6.3
- - Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/tab_b.gif and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/tab_b.gif differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/tab_l.gif and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/tab_l.gif differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/apidocs/html/tab_r.gif and /tmp/TUoR4IBecB/qca2-2.1.0/apidocs/html/tab_r.gif differ diff -Nru qca2-2.0.3/apidocs/html/tabs.css qca2-2.1.0/apidocs/html/tabs.css --- qca2-2.0.3/apidocs/html/tabs.css 2010-11-27 21:41:18.000000000 +0000 +++ qca2-2.1.0/apidocs/html/tabs.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,105 +0,0 @@ -/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ - -DIV.tabs -{ - float : left; - width : 100%; - background : url("tab_b.gif") repeat-x bottom; - margin-bottom : 4px; -} - -DIV.tabs UL -{ - margin : 0px; - padding-left : 10px; - list-style : none; -} - -DIV.tabs LI, DIV.tabs FORM -{ - display : inline; - margin : 0px; - padding : 0px; -} - -DIV.tabs FORM -{ - float : right; -} - -DIV.tabs A -{ - float : left; - background : url("tab_r.gif") no-repeat right top; - border-bottom : 1px solid #84B0C7; - font-size : 80%; - font-weight : bold; - text-decoration : none; -} - -DIV.tabs A:hover -{ - background-position: 100% -150px; -} - -DIV.tabs A:link, DIV.tabs A:visited, -DIV.tabs A:active, DIV.tabs A:hover -{ - color: #1A419D; -} - -DIV.tabs SPAN -{ - float : left; - display : block; - background : url("tab_l.gif") no-repeat left top; - padding : 5px 9px; - white-space : nowrap; -} - -DIV.tabs #MSearchBox -{ - float : right; - display : inline; - font-size : 1em; -} - -DIV.tabs TD -{ - font-size : 80%; - font-weight : bold; - text-decoration : none; -} - - - -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -DIV.tabs SPAN {float : none;} -/* End IE5-Mac hack */ - -DIV.tabs A:hover SPAN -{ - background-position: 0% -150px; -} - -DIV.tabs LI.current A -{ - background-position: 100% -150px; - border-width : 0px; -} - -DIV.tabs LI.current SPAN -{ - background-position: 0% -150px; - padding-bottom : 6px; -} - -DIV.navpath -{ - background : none; - border : none; - border-bottom : 1px solid #84B0C7; - text-align : center; - margin : 2px; - padding : 2px; -} diff -Nru qca2-2.0.3/app.pri qca2-2.1.0/app.pri --- qca2-2.0.3/app.pri 2009-04-24 21:12:15.000000000 +0000 +++ qca2-2.1.0/app.pri 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -include(confapp.pri) - -mac:QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.3 - -exists(crypto.prf) { - # our apps should build against the qca in this tree - include(crypto.prf) -} else { - # attempt to use system-wide qca - CONFIG *= crypto -} diff -Nru qca2-2.0.3/cmake/modules/COPYING-CMAKE-SCRIPTS qca2-2.1.0/cmake/modules/COPYING-CMAKE-SCRIPTS --- qca2-2.0.3/cmake/modules/COPYING-CMAKE-SCRIPTS 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/cmake/modules/COPYING-CMAKE-SCRIPTS 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,22 @@ +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff -Nru qca2-2.0.3/cmake/modules/ECMQt4To5Porting.cmake qca2-2.1.0/cmake/modules/ECMQt4To5Porting.cmake --- qca2-2.0.3/cmake/modules/ECMQt4To5Porting.cmake 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/cmake/modules/ECMQt4To5Porting.cmake 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,238 @@ +#============================================================================= +# Copyright 2005-2011 Kitware, Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the name of Kitware, Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#============================================================================= + +# The automoc_qt4 macro is superceded by CMAKE_AUTOMOC from CMake 2.8.6 +# A Qt 5 version is not provided by CMake or Qt. + +include(MacroAddFileDependencies) + +MACRO (QT4_GET_MOC_FLAGS _moc_flags) + SET(${_moc_flags}) + GET_DIRECTORY_PROPERTY(_inc_DIRS INCLUDE_DIRECTORIES) + + FOREACH(_current ${_inc_DIRS}) + IF("${_current}" MATCHES "\\.framework/?$") + STRING(REGEX REPLACE "/[^/]+\\.framework" "" framework_path "${_current}") + SET(${_moc_flags} ${${_moc_flags}} "-F${framework_path}") + ELSE("${_current}" MATCHES "\\.framework/?$") + SET(${_moc_flags} ${${_moc_flags}} "-I${_current}") + ENDIF("${_current}" MATCHES "\\.framework/?$") + ENDFOREACH(_current ${_inc_DIRS}) + + GET_DIRECTORY_PROPERTY(_defines COMPILE_DEFINITIONS) + FOREACH(_current ${_defines}) + SET(${_moc_flags} ${${_moc_flags}} "-D${_current}") + ENDFOREACH(_current ${_defines}) + + IF(Q_WS_WIN) + SET(${_moc_flags} ${${_moc_flags}} -DWIN32) + ENDIF(Q_WS_WIN) + +ENDMACRO(QT4_GET_MOC_FLAGS) + +# helper macro to set up a moc rule +MACRO (QT4_CREATE_MOC_COMMAND infile outfile moc_flags moc_options) + # For Windows, create a parameters file to work around command line length limit + IF (WIN32) + # Pass the parameters in a file. Set the working directory to + # be that containing the parameters file and reference it by + # just the file name. This is necessary because the moc tool on + # MinGW builds does not seem to handle spaces in the path to the + # file given with the @ syntax. + GET_FILENAME_COMPONENT(_moc_outfile_name "${outfile}" NAME) + GET_FILENAME_COMPONENT(_moc_outfile_dir "${outfile}" PATH) + IF(_moc_outfile_dir) + SET(_moc_working_dir WORKING_DIRECTORY ${_moc_outfile_dir}) + ENDIF(_moc_outfile_dir) + SET (_moc_parameters_file ${outfile}_parameters) + SET (_moc_parameters ${moc_flags} ${moc_options} -o "${outfile}" "${infile}") + STRING (REPLACE ";" "\n" _moc_parameters "${_moc_parameters}") + FILE (WRITE ${_moc_parameters_file} "${_moc_parameters}") + ADD_CUSTOM_COMMAND(OUTPUT ${outfile} + COMMAND ${QT_MOC_EXECUTABLE} @${_moc_outfile_name}_parameters + DEPENDS ${infile} + ${_moc_working_dir} + VERBATIM) + ELSE (WIN32) + ADD_CUSTOM_COMMAND(OUTPUT ${outfile} + COMMAND ${QT_MOC_EXECUTABLE} + ARGS ${moc_flags} ${moc_options} -o ${outfile} ${infile} + DEPENDS ${infile} VERBATIM) + ENDIF (WIN32) +ENDMACRO (QT4_CREATE_MOC_COMMAND) + + +MACRO(QT4_AUTOMOC) + QT4_GET_MOC_FLAGS(_moc_INCS) + + SET(_matching_FILES ) + FOREACH (_current_FILE ${ARGN}) + + GET_FILENAME_COMPONENT(_abs_FILE ${_current_FILE} ABSOLUTE) + # if "SKIP_AUTOMOC" is set to true, we will not handle this file here. + # This is required to make uic work correctly: + # we need to add generated .cpp files to the sources (to compile them), + # but we cannot let automoc handle them, as the .cpp files don't exist yet when + # cmake is run for the very first time on them -> however the .cpp files might + # exist at a later run. at that time we need to skip them, so that we don't add two + # different rules for the same moc file + GET_SOURCE_FILE_PROPERTY(_skip ${_abs_FILE} SKIP_AUTOMOC) + + IF ( NOT _skip AND EXISTS ${_abs_FILE} ) + + FILE(READ ${_abs_FILE} _contents) + + GET_FILENAME_COMPONENT(_abs_PATH ${_abs_FILE} PATH) + + STRING(REGEX MATCHALL "# *include +[^ ]+\\.moc[\">]" _match "${_contents}") + IF(_match) + FOREACH (_current_MOC_INC ${_match}) + STRING(REGEX MATCH "[^ <\"]+\\.moc" _current_MOC "${_current_MOC_INC}") + + GET_FILENAME_COMPONENT(_basename ${_current_MOC} NAME_WE) + IF(EXISTS ${_abs_PATH}/${_basename}.hpp) + SET(_header ${_abs_PATH}/${_basename}.hpp) + ELSE(EXISTS ${_abs_PATH}/${_basename}.hpp) + SET(_header ${_abs_PATH}/${_basename}.h) + ENDIF(EXISTS ${_abs_PATH}/${_basename}.hpp) + SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC}) + QT4_CREATE_MOC_COMMAND(${_header} ${_moc} "${_moc_INCS}" "") + MACRO_ADD_FILE_DEPENDENCIES(${_abs_FILE} ${_moc}) + ENDFOREACH (_current_MOC_INC) + ENDIF(_match) + ENDIF ( NOT _skip AND EXISTS ${_abs_FILE} ) + ENDFOREACH (_current_FILE) +ENDMACRO(QT4_AUTOMOC) + + +# Portability helpers. + +set(QT_QTGUI_LIBRARIES + ${Qt5Gui_LIBRARIES} + ${Qt5Widgets_LIBRARIES} + ${Qt5PrintSupport_LIBRARIES} + ${Qt5Svg_LIBRARIES} +) + +set(QT_INCLUDES + ${Qt5Gui_INCLUDE_DIRS} + ${Qt5Widgets_INCLUDE_DIRS} + ${Qt5PrintSupport_INCLUDE_DIRS} + ${Qt5Svg_INCLUDE_DIRS} +) +set(QT_QTGUI_LIBRARY ${QT_QTGUI_LIBRARIES}) + +set(_qt_modules + Core + Declarative + Widgets + Script + ScriptTools + DBus + Network + Test + Designer + Concurrent + Xml + UiTools + Qml + Quick1 + WebKit + WebKitWidgets + Sql + OpenGL +) + +foreach(_module ${_qt_modules}) + string(TOUPPER ${_module} _module_upper) + set(QT_QT${_module_upper}_LIBRARIES ${Qt5${_module}_LIBRARIES}) + set(QT_QT${_module_upper}_LIBRARY ${QT_QT${_module_upper}_LIBRARIES}) + list(APPEND QT_INCLUDES ${Qt5${_module}_INCLUDE_DIRS}) + set(QT_QT${_module_upper}_FOUND ${Qt5${_module}_FOUND}) +endforeach() + +list(APPEND QT_QTCORE_LIBRARIES ${Qt5Concurrent_LIBRARIES}) +list(APPEND QT_QTCORE_LIBRARY ${Qt5Concurrent_LIBRARIES}) + +list(APPEND QT_QTWEBKIT_LIBRARIES ${Qt5WebKitWidgets_LIBRARIES}) +list(APPEND QT_QTWEBKIT_LIBRARY ${Qt5WebKitWidgets_LIBRARIES}) + +set(QT_QTDECLARATIVE_LIBRARIES ${Qt5Quick1_LIBRARIES}) +set(QT_QTDECLARATIVE_LIBRARY ${Qt5Quick1_LIBRARIES}) + +get_target_property(QT_QMAKE_EXECUTABLE Qt5::qmake LOCATION) +get_target_property(QT_RCC_EXECUTABLE Qt5::rcc LOCATION) +if (TARGET Qt5::uic) + get_target_property(QT_UIC_EXECUTABLE Qt5::uic LOCATION) +endif() + +if (TARGET Qt5::qdbuscpp2xml) + get_target_property(QT_QDBUSCPP2XML_EXECUTABLE Qt5::qdbuscpp2xml LOCATION) +endif() + +if (TARGET Qt5::qdbusxml2cpp) + get_target_property(QT_QDBUSXML2CPP_EXECUTABLE Qt5::qdbusxml2cpp LOCATION) +endif() + +add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0) + +macro(qt4_wrap_ui) + qt5_wrap_ui(${ARGN}) +endmacro() + +macro(qt4_wrap_cpp) + qt5_wrap_cpp(${ARGN}) +endmacro() + +macro(qt4_generate_moc) + qt5_generate_moc(${ARGN}) +endmacro() + +macro(qt4_add_dbus_adaptor) + qt5_add_dbus_adaptor(${ARGN}) +endmacro() + +macro(qt4_add_dbus_interfaces) + qt5_add_dbus_interfaces(${ARGN}) +endmacro() + +macro(qt4_add_dbus_interface) + qt5_add_dbus_interface(${ARGN}) +endmacro() + +macro(qt4_generate_dbus_interface) + qt5_generate_dbus_interface(${ARGN}) +endmacro() + +macro(qt4_add_resources) + qt5_add_resources(${ARGN}) +endmacro() diff -Nru qca2-2.0.3/cmake/modules/FindBotan.cmake qca2-2.1.0/cmake/modules/FindBotan.cmake --- qca2-2.0.3/cmake/modules/FindBotan.cmake 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/cmake/modules/FindBotan.cmake 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,49 @@ + +# - Try to find the Gcrypt library +# Once run this will define +# +# BOTAN_FOUND - set if the system has the gcrypt library +# BOTAN_CFLAGS - the required gcrypt compilation flags +# BOTAN_LIBRARIES - the linker libraries needed to use the gcrypt library +# +# Copyright (c) 2006 Brad Hards +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +# libgcrypt is moving to pkg-config, but earlier version don't have it + +#search in typical paths for libgcrypt-config +FIND_PROGRAM(BOTANCONFIG_EXECUTABLE NAMES botan-config botan-config-1.10) +mark_as_advanced(BOTANCONFIG_EXECUTABLE) + +#reset variables +set(BOTAN_LIBRARIES) +set(BOTAN_CFLAGS) + +# if botan-config has been found +IF(BOTANCONFIG_EXECUTABLE) + + EXEC_PROGRAM(${BOTANCONFIG_EXECUTABLE} ARGS --libs RETURN_VALUE _return_VALUE OUTPUT_VARIABLE BOTAN_LIBRARIES) + + EXEC_PROGRAM(${BOTANCONFIG_EXECUTABLE} ARGS --cflags RETURN_VALUE _return_VALUE OUTPUT_VARIABLE BOTAN_CFLAGS) + + IF(BOTAN_LIBRARIES) + SET(BOTAN_FOUND TRUE) + ENDIF(BOTAN_LIBRARIES) + + MARK_AS_ADVANCED(BOTAN_CFLAGS BOTAN_LIBRARIES) + +ENDIF(BOTANCONFIG_EXECUTABLE) + +if (BOTAN_FOUND) + if (NOT Botan_FIND_QUIETLY) + message(STATUS "Found Botan: ${BOTAN_LIBRARIES}") + endif (NOT Botan_FIND_QUIETLY) +else (BOTAN_FOUND) + if (Botan_FIND_REQUIRED) + message(FATAL_ERROR "Could not find Botan libraries") + endif (Botan_FIND_REQUIRED) +endif (BOTAN_FOUND) + + diff -Nru qca2-2.0.3/cmake/modules/FindCarbon.cmake qca2-2.1.0/cmake/modules/FindCarbon.cmake --- qca2-2.0.3/cmake/modules/FindCarbon.cmake 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/cmake/modules/FindCarbon.cmake 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,13 @@ +# Copyright (c) 2006, Benjamin Reed, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +INCLUDE(CMakeFindFrameworks) + +CMAKE_FIND_FRAMEWORKS(Carbon) + +if (Carbon_FRAMEWORKS) + set(CARBON_LIBRARY "-framework Carbon" CACHE FILEPATH "Carbon framework" FORCE) + set(CARBON_FOUND 1) +endif (Carbon_FRAMEWORKS) diff -Nru qca2-2.0.3/cmake/modules/FindLibGcrypt.cmake qca2-2.1.0/cmake/modules/FindLibGcrypt.cmake --- qca2-2.0.3/cmake/modules/FindLibGcrypt.cmake 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/cmake/modules/FindLibGcrypt.cmake 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,52 @@ + +# - Try to find the Gcrypt library +# Once run this will define +# +# LIBGCRYPT_FOUND - set if the system has the gcrypt library +# LIBGCRYPT_CFLAGS - the required gcrypt compilation flags +# LIBGCRYPT_LIBRARIES - the linker libraries needed to use the gcrypt library +# +# Copyright (c) 2006 Brad Hards +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +# libgcrypt is moving to pkg-config, but earlier version don't have it + +#search in typical paths for libgcrypt-config +FIND_PROGRAM(LIBGCRYPTCONFIG_EXECUTABLE NAMES libgcrypt-config) +mark_as_advanced(LIBGCRYPTCONFIG_EXECUTABLE) + +#reset variables +set(LIBGCRYPT_LIBRARIES) +set(LIBGCRYPT_CFLAGS) + +# if libgcrypt-config has been found +IF(LIBGCRYPTCONFIG_EXECUTABLE) + + # workaround for MinGW/MSYS + # CMake can't starts shell scripts on windows so it need to use sh.exe + EXECUTE_PROCESS(COMMAND sh ${LIBGCRYPTCONFIG_EXECUTABLE} --libs RESULT_VARIABLE _return_VALUE OUTPUT_VARIABLE LIBGCRYPT_LIBRARIES OUTPUT_STRIP_TRAILING_WHITESPACE) + EXECUTE_PROCESS(COMMAND sh ${LIBGCRYPTCONFIG_EXECUTABLE} --cflags RESULT_VARIABLE _return_VALUE OUTPUT_VARIABLE LIBGCRYPT_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) + + IF(NOT LIBGCRYPT_CFLAGS AND NOT _return_VALUE) + SET(LIBGCRYPT_CFLAGS " ") + ENDIF(NOT LIBGCRYPT_CFLAGS AND NOT _return_VALUE) + + IF(LIBGCRYPT_LIBRARIES AND LIBGCRYPT_CFLAGS) + SET(LIBGCRYPT_FOUND TRUE) + ENDIF(LIBGCRYPT_LIBRARIES AND LIBGCRYPT_CFLAGS) + +ENDIF(LIBGCRYPTCONFIG_EXECUTABLE) + +if (LIBGCRYPT_FOUND) + if (NOT LibGcrypt_FIND_QUIETLY) + message(STATUS "Found libgcrypt: ${LIBGCRYPT_LIBRARIES}") + endif (NOT LibGcrypt_FIND_QUIETLY) +else (LIBGCRYPT_FOUND) + if (LibGcrypt_FIND_REQUIRED) + message(FATAL_ERROR "Could not find libgcrypt libraries") + endif (LibGcrypt_FIND_REQUIRED) +endif (LIBGCRYPT_FOUND) + +MARK_AS_ADVANCED(LIBGCRYPT_CFLAGS LIBGCRYPT_LIBRARIES) diff -Nru qca2-2.0.3/cmake/modules/FindNss.cmake qca2-2.1.0/cmake/modules/FindNss.cmake --- qca2-2.0.3/cmake/modules/FindNss.cmake 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/cmake/modules/FindNss.cmake 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,37 @@ +# - Try to find the NSS library +# Once done this will define +# +# NSS_FOUND - system has mozilla-nss lib +# NSS_INCLUDE_DIRS - the mozilla-nss include directories +# NSS_LDFLAGS - Link these to use mozilla-nss +# NSS_CFLAGS_OTHER - Compiler switches required for using NSS +# +# Copyright (c) 2006, Laurent Montel, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if(NSS_INCLUDE_DIRS AND NSS_LDFLAGS) + + # in cache already + SET(NSS_FOUND TRUE) + +else() + if(NOT WIN32) + find_package(PkgConfig REQUIRED) + pkg_search_module(NSS nss) + endif(NOT WIN32) + + if (NSS_FOUND) + if (NOT Nss_FIND_QUIETLY) + message(STATUS "Found NSS: ${NSS_LDFLAGS}") + endif (NOT Nss_FIND_QUIETLY) + else (NSS_FOUND) + if (Nss_FIND_REQUIRED) + message(FATAL_ERROR "Could NOT find NSS") + endif (Nss_FIND_REQUIRED) + endif (NSS_FOUND) + + mark_as_advanced(NSS_INCLUDE_DIRS NSS_LDFLAGS NSS_CFLAGS_OTHER) + +endif() diff -Nru qca2-2.0.3/cmake/modules/FindPkcs11Helper.cmake qca2-2.1.0/cmake/modules/FindPkcs11Helper.cmake --- qca2-2.0.3/cmake/modules/FindPkcs11Helper.cmake 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/cmake/modules/FindPkcs11Helper.cmake 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,40 @@ +# - Try to find the pkcs11-helper library +# Once done this will define +# +# PKCS11H_FOUND - system has pkcs11-helper +# PKCS11H_INCLUDE_DIRS - the pkcs11-helper include directories +# PKCS11H_LDFLAGS - Link to these to use pkcs11-helper +# PKCS11H_CFLAGS_OTHER - Compiler switches required for using pkcs11-helper +# +# Copyright (c) 2006, Laurent Montel, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# +# pkcs11-helper can be found at http://www.opensc-project.org/pkcs11-helper +# + +if(PKCS11H_INCLUDE_DIRS AND PKCS11H_LDFLAGS) + + # in cache already + SET(PKCS11H_FOUND TRUE) + +else() + if(NOT WIN32) + find_package(PkgConfig REQUIRED) + pkg_search_module(PKCS11H libpkcs11-helper-1) + endif(NOT WIN32) + + if (PKCS11H_FOUND) + if (NOT Pkcs11Helper_FIND_QUIETLY) + message(STATUS "Found pkcs11-helper: ${PKCS11H_LDFLAGS}") + endif (NOT Pkcs11Helper_FIND_QUIETLY) + else (PKCS11H_FOUND) + if (Pkcs11Helper_FIND_REQUIRED) + message(FATAL_ERROR "Could NOT find pkcs11-helper") + endif (Pkcs11Helper_FIND_REQUIRED) + endif (PKCS11H_FOUND) + + mark_as_advanced(PKCS11H_INCLUDE_DIRS PKCS11H_LDFLAGS PKCS11H_CFLAGS_OTHER) + +endif() diff -Nru qca2-2.0.3/cmake/modules/FindQt5Transitional.cmake qca2-2.1.0/cmake/modules/FindQt5Transitional.cmake --- qca2-2.0.3/cmake/modules/FindQt5Transitional.cmake 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/cmake/modules/FindQt5Transitional.cmake 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,125 @@ + +find_package(Qt5Core QUIET) +mark_as_advanced(Qt5Core_DIR) + +if (Qt5Core_FOUND) + if (NOT Qt5Transitional_FIND_COMPONENTS) + set(_components + Core + Gui + DBus + Designer + Declarative + Script + ScriptTools + Network + Test + Xml + Svg + Sql + Widgets + PrintSupport + Concurrent + UiTools + WebKit + WebKitWidgets + OpenGL + ) + foreach(_component ${_components}) + find_package(Qt5${_component}) + mark_as_advanced(Qt5${_component}_DIR) + list(APPEND QT_LIBRARIES ${Qt5${_component}_LIBRARIES}) + endforeach() + else() + set(_components ${Qt5Transitional_FIND_COMPONENTS}) + foreach(_component ${Qt5Transitional_FIND_COMPONENTS}) + find_package(Qt5${_component} REQUIRED) + mark_as_advanced(Qt5${_component}_DIR) + if ("${_component}" STREQUAL "WebKit") + find_package(Qt5WebKitWidgets REQUIRED) + mark_as_advanced(Qt5WebKitWidgets_DIR) + list(APPEND QT_LIBRARIES ${Qt5WebKitWidgets_LIBRARIES} ) + endif() + if ("${_component}" STREQUAL "Gui") + find_package(Qt5Widgets REQUIRED) + find_package(Qt5PrintSupport REQUIRED) + find_package(Qt5Svg REQUIRED) + mark_as_advanced(Qt5Widgets_DIR Qt5PrintSupport_DIR Qt5Svg_DIR) + list(APPEND QT_LIBRARIES ${Qt5Widgets_LIBRARIES} + ${Qt5PrintSupport_LIBRARIES} + ${Qt5Svg_LIBRARIES} ) + endif() +# Core module was separated to Core and Concurrent in Qt5. +# But QCA doesn't use any classes from QtConcurrent. +# So QtConcurrent mustn't be used in QCA. +# Uncomment this if Concurrent support will be added. + +# if ("${_component}" STREQUAL "Core") +# find_package(Qt5Concurrent REQUIRED) +# list(APPEND QT_LIBRARIES ${Qt5Concurrent_LIBRARIES} ) +# endif() + endforeach() + endif() + + set(Qt5Transitional_FOUND TRUE) + set(QT5_BUILD TRUE) + + # Temporary until upstream does this: + foreach(_component ${_components}) + if (TARGET Qt5::${_component}) + set_property(TARGET Qt5::${_component} + APPEND PROPERTY + INTERFACE_INCLUDE_DIRECTORIES ${Qt5${_component}_INCLUDE_DIRS}) + set_property(TARGET Qt5::${_component} + APPEND PROPERTY + INTERFACE_COMPILE_DEFINITIONS ${Qt5${_component}_COMPILE_DEFINITIONS}) + endif() + endforeach() + + set_property(TARGET Qt5::Core + PROPERTY + INTERFACE_POSITION_INDEPENDENT_CODE ON + ) + + if (WIN32 AND NOT Qt5_NO_LINK_QTMAIN) + set(_isExe $,EXECUTABLE>) + set(_isWin32 $>) + set(_isNotExcluded $>>) + get_target_property(_configs Qt5::Core IMPORTED_CONFIGURATIONS) + foreach(_config ${_configs}) + set_property(TARGET Qt5::Core APPEND PROPERTY + IMPORTED_LINK_INTERFACE_LIBRARIES_${_config} + $<$:Qt5::WinMain> + ) + endforeach() + unset(_configs) + unset(_isExe) + unset(_isWin32) + unset(_isNotExcluded) + endif() + # End upstreamed stuff. + + get_filename_component(_modules_dir "${CMAKE_CURRENT_LIST_DIR}/../modules" ABSOLUTE) + include("${_modules_dir}/ECMQt4To5Porting.cmake") # TODO: Port away from this. + include_directories(${QT_INCLUDES}) # TODO: Port away from this. + + if (Qt5_POSITION_INDEPENDENT_CODE) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) + endif() + +else() + foreach(_component ${Qt5Transitional_FIND_COMPONENTS}) + if("${_component}" STREQUAL "Widgets") # new in Qt5 + set(_component Gui) + elseif("${_component}" STREQUAL "Concurrent") # new in Qt5 + set(_component Core) + endif() + list(APPEND _components Qt${_component}) + endforeach() + find_package(Qt4 ${QT_MIN_VERSION} REQUIRED ${_components}) + include_directories(${QT_INCLUDES}) + + if(QT4_FOUND) + set(Qt5Transitional_FOUND TRUE) + endif() +endif() diff -Nru qca2-2.0.3/cmake/modules/FindSasl2.cmake qca2-2.1.0/cmake/modules/FindSasl2.cmake --- qca2-2.0.3/cmake/modules/FindSasl2.cmake 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/cmake/modules/FindSasl2.cmake 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,41 @@ +# - Try to find the sasl2 directory library +# Once done this will define +# +# SASL2_FOUND - system has SASL2 +# SASL2_INCLUDE_DIR - the SASL2 include directory +# SASL2_LIBRARIES - The libraries needed to use SASL2 +# +# Copyright (c) 2006, Laurent Montel, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + + +if (SASL2_INCLUDE_DIR) + # Already in cache, be silent + set(SASL2_FIND_QUIETLY TRUE) +endif (SASL2_INCLUDE_DIR) + +FIND_PATH(SASL2_INCLUDE_DIR sasl/sasl.h) + +FIND_LIBRARY(SASL2_LIBRARIES NAMES sasl2) + + +if (SASL2_INCLUDE_DIR AND SASL2_LIBRARIES) + set(SASL2_FOUND TRUE) +endif (SASL2_INCLUDE_DIR AND SASL2_LIBRARIES) + + +if (SASL2_FOUND) + if (NOT Sasl2_FIND_QUIETLY) + message(STATUS "Found Sasl2: ${SASL2_LIBRARIES}") + endif (NOT Sasl2_FIND_QUIETLY) +else (SASL2_FOUND) + if (Sasl2_FIND_REQUIRED) + message(FATAL_ERROR "Could not find sasl2 libraries") + endif (Sasl2_FIND_REQUIRED) +endif (SASL2_FOUND) + + +MARK_AS_ADVANCED(SASL2_INCLUDE_DIR SASL2_LIBRARIES) + diff -Nru qca2-2.0.3/cmake/modules/QcaMacro.cmake qca2-2.1.0/cmake/modules/QcaMacro.cmake --- qca2-2.0.3/cmake/modules/QcaMacro.cmake 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/cmake/modules/QcaMacro.cmake 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,119 @@ + +IF (Qt5Core_FOUND) + # FindQt4.cmake wasn't used, so define it here + MACRO (QT4_GET_MOC_INC_DIRS _moc_INC_DIRS) + SET(${_moc_INC_DIRS}) + GET_DIRECTORY_PROPERTY(_inc_DIRS INCLUDE_DIRECTORIES) + + FOREACH(_current ${_inc_DIRS}) + SET(${_moc_INC_DIRS} ${${_moc_INC_DIRS}} "-I" ${_current}) + ENDFOREACH(_current ${_inc_DIRS}) + ENDMACRO(QT4_GET_MOC_INC_DIRS) + + MACRO(SETUP_QT5_DIRS) + GET_TARGET_PROPERTY(QMAKE_EXECUTABLE ${Qt5Core_QMAKE_EXECUTABLE} LOCATION) + EXEC_PROGRAM( ${QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_LIBS" OUTPUT_VARIABLE QT_LIBRARY_DIR ) + EXEC_PROGRAM( ${QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_PREFIX" OUTPUT_VARIABLE QT_PREFIX_DIR ) + EXEC_PROGRAM( ${QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_PLUGINS" OUTPUT_VARIABLE QT_PLUGINS_DIR ) + EXEC_PROGRAM( ${QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_BINS" OUTPUT_VARIABLE QT_BINARY_DIR ) + EXEC_PROGRAM( ${QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_HEADERS" OUTPUT_VARIABLE QT_HEADERS_DIR ) + EXEC_PROGRAM( ${QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_DOCS" OUTPUT_VARIABLE QT_DOC_DIR ) + EXEC_PROGRAM( ${QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_DATA" OUTPUT_VARIABLE QT_DATA_DIR ) + EXEC_PROGRAM( ${QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_ARCHDATA" OUTPUT_VARIABLE QT_ARCHDATA_DIR ) + SET( QT_MKSPECS_DIR "${QT_ARCHDATA_DIR}/mkspecs" ) + ENDMACRO(SETUP_QT5_DIRS) +ELSE (Qt5Core_FOUND) + # Cmake FindQt4 module doesn't provide QT_INSTALL_PREFIX and QT_INSTALL_DATA vars + # It will be done here + MACRO(SETUP_QT4_DIRS) + _qt4_query_qmake(QT_INSTALL_PREFIX QT_PREFIX_DIR) + _qt4_query_qmake(QT_INSTALL_DATA QT_DATA_DIR) + ENDMACRO(SETUP_QT4_DIRS) +ENDIF() + +MACRO(MY_AUTOMOC _srcsList) + # QT4_GET_MOC_INC_DIRS(_moc_INCS) + FOREACH (_current_FILE ${${_srcsList}}) + GET_FILENAME_COMPONENT(_abs_FILE ${_current_FILE} ABSOLUTE) + GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE) + SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc) + # SET(extra_moc_argument) + # if(WIN32) + # SET(extra_moc_argument -DWIN32) + # endif(WIN32) + QT4_GENERATE_MOC(${_abs_FILE} ${_moc}) + # ADD_CUSTOM_COMMAND(OUTPUT ${_moc} + # COMMAND ${QT_MOC_EXECUTABLE} + # ARGS ${extra_moc_argument} ${_moc_INCS} -o ${_moc} ${_abs_FILE} + # DEPENDS ${_current_FILE} + # ) + LIST(APPEND ${_srcsList} ${_moc}) + ENDFOREACH (_current_FILE) +ENDMACRO(MY_AUTOMOC) + +macro(set_enabled_plugin PLUGIN ENABLED) + # To nice looks + if(ENABLED) + set(ENABLED "on") + else(ENABLED) + set(ENABLED "off") + endif(ENABLED) + set(WITH_${PLUGIN}_PLUGIN_INTERNAL ${ENABLED} CACHE INTERNAL "") +endmacro(set_enabled_plugin) + +macro(enable_plugin PLUGIN) + set_enabled_plugin(${PLUGIN} "on") +endmacro(enable_plugin) + +macro(disable_plugin PLUGIN) + set_enabled_plugin(${PLUGIN} "off") +endmacro(disable_plugin) + +# it used to build examples and tools +macro(target_link_qca_libraries TARGET) + # Link with QCA library + target_link_libraries(${TARGET} ${QT_QTCORE_LIBRARY}) + target_link_libraries(${TARGET} ${QCA_LIB_NAME}) + + # Statically link with all enabled QCA plugins + if(STATIC_PLUGINS) + target_link_libraries(${TARGET} ${QT_QTCORE_LIB_DEPENDENCIES}) + foreach(PLUGIN IN LISTS PLUGINS) + # Check plugin for enabled + if(WITH_${PLUGIN}_PLUGIN_INTERNAL) + target_link_libraries(${TARGET} qca-${PLUGIN}) + endif(WITH_${PLUGIN}_PLUGIN_INTERNAL) + endforeach(PLUGIN) + endif(STATIC_PLUGINS) +endmacro(target_link_qca_libraries) + +# it used to build unittests +macro(target_link_qca_test_libraries TARGET) + target_link_qca_libraries(${TARGET}) + target_link_libraries(${TARGET} ${QT_QTTEST_LIBRARY}) +endmacro(target_link_qca_test_libraries) + +# it used to build unittests +macro(add_qca_test TARGET DESCRIPTION) + add_test(NAME "${DESCRIPTION}" + WORKING_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" + COMMAND "${TARGET}") +endmacro(add_qca_test) + +macro(install_pdb TARGET INSTALL_PATH) + if(MSVC) + get_target_property(LOCATION ${TARGET} LOCATION_DEBUG) + string(REGEX REPLACE "\\.[^.]*$" ".pdb" LOCATION "${LOCATION}") + install(FILES ${LOCATION} DESTINATION ${INSTALL_PATH} CONFIGURATIONS Debug) + + get_target_property(LOCATION ${TARGET} LOCATION_RELWITHDEBINFO) + string(REGEX REPLACE "\\.[^.]*$" ".pdb" LOCATION "${LOCATION}") + install(FILES ${LOCATION} DESTINATION ${INSTALL_PATH} CONFIGURATIONS RelWithDebInfo) + endif(MSVC) +endmacro(install_pdb) + +macro(normalize_path PATH) + get_filename_component(${PATH} "${${PATH}}" ABSOLUTE) + # Strip trailing slashes + string(REGEX REPLACE "/+$" "" PATH ${PATH}) +endmacro() diff -Nru qca2-2.0.3/CMakeLists.txt qca2-2.1.0/CMakeLists.txt --- qca2-2.0.3/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,443 @@ +# Checking for user explicity defined CMAKE_INSTALL_PREFIX +# It must be done before project(...) +if(NOT CMAKE_INSTALL_PREFIX) + set(QCA_INSTALL_IN_QT_PREFIX ON) + # If CMAKE_INSTALL_PREFIX is set in cmake arguments + unset(CMAKE_INSTALL_PREFIX CACHE) +endif(NOT CMAKE_INSTALL_PREFIX) + +project(qca) + +cmake_minimum_required(VERSION 2.6.0) + +set(QCA_LIB_MAJOR_VERSION "2") +set(QCA_LIB_MINOR_VERSION "1") +set(QCA_LIB_PATCH_VERSION "0") + +# Do not automatically link Qt executables to qtmain target on Windows. +# QCA exucatables use console mode only. Not need to link against +# qtmain.lib. +cmake_policy(SET CMP0020 OLD) + +option(BUILD_TESTS "Create test" ON) +option(BUILD_TOOLS "Compile mozcerts and qcatool" ON) +set(BUILD_PLUGINS "auto" CACHE STRING "Plugins for building (also possible values: none, all and auto)") +option(BUILD_SHARED_LIBS "Build shared library" ON) +option(DEVELOPER_MODE "Special developer mode" OFF) + +if(APPLE) + option(OSX_FRAMEWORK "Build a Mac OS X Framework" ON) +else() + set(OSX_FRAMEWORK OFF) +endif() + +find_package(Doxygen) + +string(TOLOWER "${BUILD_PLUGINS}" BUILD_PLUGINS) +if(NOT BUILD_PLUGINS) + set(BUILD_PLUGINS "none") +endif(NOT BUILD_PLUGINS) + +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" ) + +option(QT4_BUILD "Force building with Qt4 even if Qt5 is found") +if (NOT QT4_BUILD) + find_package(Qt5Core QUIET) + mark_as_advanced(Qt5Core_DIR) +endif() + +include(QcaMacro) + +if (Qt5Core_FOUND) + message(STATUS "Building with Qt5 support") + # Got from ECM + # Distros have no ECM. So I just copied required cmake modules. + find_package(Qt5Transitional REQUIRED Core Network) + include(ECMQt4To5Porting) + + include(GNUInstallDirs) + setup_qt5_dirs() + set(QCA_QT_PC_VERSION "Qt5Core") +else() + set(QT_MIN_VERSION "4.7.0") + set(QT_USE_IMPORTED_TARGETS ON) + if(BUILD_TESTS) + find_package(Qt4 REQUIRED QtCore QtNetwork QtTest) + else(BUILD_TESTS) + find_package(Qt4 REQUIRED QtCore) + endif(BUILD_TESTS) + # WORKAROUND: Seems it must be done in Qt4 find module but didn't + mark_as_advanced(QT_QMAKE_EXECUTABLE) + + # properly set up compile flags (QT_DEBUG/QT_NO_DEBUG, ...) + include(${QT_USE_FILE}) + setup_qt4_dirs() + set(QCA_QT_PC_VERSION "QtCore") +endif() + +# QCA can be shared but plugins will be static +# if Qt is static. +if(NOT BUILD_SHARED_LIBS OR QT_IS_STATIC) + set(STATIC_PLUGINS ON) + add_definitions(-DQT_STATICPLUGIN) + set(PLUGIN_TYPE "STATIC") +else(NOT BUILD_SHARED_LIBS OR QT_IS_STATIC) + set(PLUGIN_TYPE "MODULE") +endif(NOT BUILD_SHARED_LIBS OR QT_IS_STATIC) + +set(QCA_SUFFIX "" CACHE STRING "QCA common suffix") +if(QCA_SUFFIX) + set(QCA_LIB_NAME qca-${QCA_SUFFIX}) + set(QCA_TOOL_NAME qcatool-${QCA_SUFFIX}) + set(MOZCERTS_NAME mozcerts-${QCA_SUFFIX}) + set(QCA_PC_NAME qca2-${QCA_SUFFIX}.pc) +else(QCA_SUFFIX) + set(QCA_LIB_NAME qca) + set(QCA_TOOL_NAME qcatool) + set(MOZCERTS_NAME mozcerts) + set(QCA_PC_NAME qca2.pc) +endif(QCA_SUFFIX) + +set(QCA_LIB_VERSION_STRING "${QCA_LIB_MAJOR_VERSION}.${QCA_LIB_MINOR_VERSION}.${QCA_LIB_PATCH_VERSION}") + +configure_file("include/QtCrypto/qca_version.h.in" "${CMAKE_BINARY_DIR}/qca_version.h") + +if (WIN32) + set(CMAKE_DEBUG_POSTFIX "d") + add_definitions(-DWIN32_LEAN_AND_MEAN) +elseif (APPLE) + set(CMAKE_DEBUG_POSTFIX "_debug") +endif (WIN32) + +if (CMAKE_COMPILER_IS_GNUCXX) + if (CMAKE_SYSTEM_NAME MATCHES Linux) + add_definitions (-D_BSD_SOURCE) + set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-long-long -ansi -Wundef -Wcast-align -Werror-implicit-function-declaration -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-common") + set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -fno-check-new -fno-common") + endif (CMAKE_SYSTEM_NAME MATCHES Linux) +endif (CMAKE_COMPILER_IS_GNUCXX) + +add_definitions (${QT_DEFINITIONS}) +include_directories("include/QtCrypto/") +# for generated files +include_directories(${CMAKE_BINARY_DIR}) + +if(NOT DEVELOPER_MODE) + # uninstall target + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + IMMEDIATE @ONLY) + + add_custom_target(uninstall + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) +endif() + +# Always include srcdir and builddir in include path +# This saves typing ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY} in about every subdir +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +# put the include dirs which are in the source or build tree +# before all other include dirs, so the headers in the sources +# are prefered over the already installed ones +set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON) + +set(qca_INCLUDEDIR "${CMAKE_CURRENT_SOURCE_DIR}/include" ) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" ) +# Use the same path for shared and static library +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" ) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" ) + +if( QCA_INSTALL_IN_QT_PREFIX ) + set(QCA_PREFIX_INSTALL_DIR "${QT_PREFIX_DIR}" CACHE PATH "Directory where qca will install") + set(QCA_PLUGINS_INSTALL_DIR "${QT_PLUGINS_DIR}" CACHE PATH "Directory where qca plugins will install") + set(QCA_BINARY_INSTALL_DIR "${QT_BINARY_DIR}" CACHE PATH "Directory where qca plugins will install") + set(QCA_LIBRARY_INSTALL_DIR "${QT_LIBRARY_DIR}" CACHE PATH "Directory where qca library will install") + set(QCA_FEATURE_INSTALL_DIR "${QT_MKSPECS_DIR}/features" CACHE PATH "Directory where qca feature file will install") + set(QCA_INCLUDE_INSTALL_DIR "${QT_HEADERS_DIR}" CACHE PATH "Directory where qca public headers will install") + set(QCA_PRIVATE_INCLUDE_INSTALL_DIR "${QT_HEADERS_DIR}" CACHE PATH "Directory where qca headers will install") + set(QCA_DOC_INSTALL_DIR "${QT_DOC_DIR}/html/qca/" CACHE PATH "Directory where qca documentation will install") + set(QCA_MAN_INSTALL_DIR "${QT_DATA_DIR}/man" CACHE PATH "Directory where qca man pages will install") +else( QCA_INSTALL_IN_QT_PREFIX ) + # Cmake says nothing about LIB_SUFFIX + # de facto it is a standard way to specify lib suffix on many distros + set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" ) + set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "Directory where lib will install") + + set(QCA_PREFIX_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}" CACHE PATH "Directory where qca will install") + set(QCA_PLUGINS_INSTALL_DIR "${LIB_INSTALL_DIR}/${QCA_LIB_NAME}" CACHE PATH "Directory where qca plugins will install") + set(QCA_BINARY_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Directory where qca plugins will install") + set(QCA_LIBRARY_INSTALL_DIR "${LIB_INSTALL_DIR}" CACHE PATH "Directory where qca library will install") + set(QCA_FEATURE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/mkspecs/features" CACHE PATH "Directory where qca feature file will install") + set(QCA_INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Directory where qca public headers will install") + set(QCA_PRIVATE_INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Directory where qca headers will install") + set(QCA_DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/doc/${QCA_LIB_NAME}/html" CACHE PATH "Directory where qca documentation will install") + set(QCA_MAN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/man" CACHE PATH "Directory where qca man pages will install") +endif( QCA_INSTALL_IN_QT_PREFIX ) + +set(PKGCONFIG_INSTALL_PREFIX "${QCA_LIBRARY_INSTALL_DIR}/pkgconfig" CACHE PATH "Base directory for pkgconfig files") + +normalize_path(QCA_PREFIX_INSTALL_DIR) + +# check for oportunity to use relative paths +option(USE_RELATIVE_PATHS "Try to make relocatable package") + +foreach(PATH QCA_PLUGINS_INSTALL_DIR + QCA_BINARY_INSTALL_DIR + QCA_LIBRARY_INSTALL_DIR + QCA_FEATURE_INSTALL_DIR + QCA_INCLUDE_INSTALL_DIR + QCA_PRIVATE_INCLUDE_INSTALL_DIR + QCA_DOC_INSTALL_DIR + QCA_MAN_INSTALL_DIR + PKGCONFIG_INSTALL_PREFIX) + + # Normalize path before comparsion + normalize_path(${PATH}) + + # if all paths are subdirs of CMAKE_INSTALL_PREFIX it is possible to use relative paths + string(FIND "${${PATH}}" "${QCA_PREFIX_INSTALL_DIR}/" POS) + if(NOT "${POS}" STREQUAL "0") + set(USE_RELATIVE_PATHS OFF) + endif() +endforeach() + +if(NOT WIN32) + if(OSX_FRAMEWORK) + set(PKGCONFIG_CFLAGS "-F\${libdir} -I\${libdir}/${QCA_LIB_NAME}.framework/Headers") + set(PKGCONFIG_LIBS "-F\${libdir} -framework ${QCA_LIB_NAME}") + else() + set(PKGCONFIG_CFLAGS "-I\${includedir}") + set(PKGCONFIG_LIBS "-L\${libdir} -l${QCA_LIB_NAME}") + endif() + + # qca2.pc uses absolute paths. So it must be there. Don't rellocate this. + configure_file("qca2.pc.cmake" "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pkgconfig/${QCA_PC_NAME}" @ONLY) + if(NOT DEVELOPER_MODE) + install(FILES "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pkgconfig/${QCA_PC_NAME}" DESTINATION ${PKGCONFIG_INSTALL_PREFIX}) + endif() +endif(NOT WIN32) + +# strip CMAKE_INSTALL_PREFIX in all paths +if(USE_RELATIVE_PATHS) + message(STATUS "Installed package is relocatable") + file(RELATIVE_PATH CRYPTO_PRF_RELATIVE_PATH "${QCA_FEATURE_INSTALL_DIR}" ${CMAKE_INSTALL_PREFIX}) + set(CRYPTO_PRF_RELATIVE_PATH "$$PWD/${CRYPTO_PRF_RELATIVE_PATH}") + foreach(PATH QCA_PLUGINS_INSTALL_DIR + QCA_BINARY_INSTALL_DIR + QCA_LIBRARY_INSTALL_DIR + QCA_FEATURE_INSTALL_DIR + QCA_INCLUDE_INSTALL_DIR + QCA_PRIVATE_INCLUDE_INSTALL_DIR + QCA_DOC_INSTALL_DIR + QCA_MAN_INSTALL_DIR + PKGCONFIG_INSTALL_PREFIX) + + file(RELATIVE_PATH ${PATH} ${CMAKE_INSTALL_PREFIX} "${${PATH}}") + endforeach() +else() + message(STATUS "Installed package is NOT relocatable") + set(CRYPTO_PRF_RELATIVE_PATH "") +endif() + +if(DEVELOPER_MODE) + add_definitions(-DDEVELOPER_MODE) + +# To prefer plugins from build tree when run qca from build tree + file(WRITE ${CMAKE_BINARY_DIR}/bin/qt.conf +"[Paths] +Plugins=${CMAKE_BINARY_DIR}/lib/${QCA_LIB_NAME} +") +endif() + +if (APPLE) + find_package(Carbon REQUIRED) + set(CMAKE_INSTALL_NAME_DIR ${QCA_LIBRARY_INSTALL_DIR}) + set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) +endif (APPLE) + +message(STATUS "Checking for certstore..") +# fixme add OR mac +if( WIN32 ) +# USE BUILTIN +else ( WIN32 ) + if ( ENV{QC_CERTSTORE_PATH} ) + if(EXISTS ENV{QC_CERTSTORE_PATH}) + set( qca_CERTSTORE $ENV{QC_CERTSTORE_PATH}) + else(EXISTS ENV{QC_CERTSTORE_PATH}) + # path to try + endif(EXISTS ENV{QC_CERTSTORE_PATH}) + else( ENV{QC_CERTSTORE_PATH} ) + set( toTry + "/etc/ssl/certs/ca-certificates.crt" + "/usr/share/ssl/cert.pem" + "/usr/share/ssl/certs/ca-bundle.crt" + "/etc/pki/tls/cert.pem" + "/etc/ssl/ca-bundle.pem" + "/usr/share/curl/curl-ca-bundle.crt" + ) + foreach (_current_try ${toTry}) + if(EXISTS ${_current_try}) + set( qca_CERTSTORE ${_current_try}) + endif(EXISTS ${_current_try}) + endforeach (_current_try) + endif( ENV{QC_CERTSTORE_PATH} ) +endif(WIN32) + +if (qca_CERTSTORE) + message(STATUS "Found system certstore") +else (qca_CERTSTORE) + message(STATUS "Using built in certstore.") + set( qca_CERTSTORE "${CMAKE_CURRENT_SOURCE_DIR}/certs/rootcerts.pem") + # note that INSTALL_FILES targets are relative to the current installation prefix... + if(NOT DEVELOPER_MODE) + install(FILES "${qca_CERTSTORE}" DESTINATION "${QCA_PREFIX_INSTALL_DIR}/certs") + endif() +endif (qca_CERTSTORE) +message(STATUS "certstore path: " ${qca_CERTSTORE}) +add_definitions( -DQCA_SYSTEMSTORE_PATH="${qca_CERTSTORE}" ) + + +set( private_HEADERS ${qca_INCLUDEDIR}/QtCrypto/qca_plugin.h ${qca_INCLUDEDIR}/QtCrypto/qca_systemstore.h ) + +set( public_HEADERS + ${qca_INCLUDEDIR}/QtCrypto/qca.h + ${qca_INCLUDEDIR}/QtCrypto/qcaprovider.h + ${qca_INCLUDEDIR}/QtCrypto/QtCrypto + ${qca_INCLUDEDIR}/QtCrypto/qca_export.h + ${qca_INCLUDEDIR}/QtCrypto/qca_support.h + ${qca_INCLUDEDIR}/QtCrypto/qca_tools.h + ${qca_INCLUDEDIR}/QtCrypto/qca_core.h + ${qca_INCLUDEDIR}/QtCrypto/qca_textfilter.h + ${qca_INCLUDEDIR}/QtCrypto/qca_basic.h + ${qca_INCLUDEDIR}/QtCrypto/qca_publickey.h + ${qca_INCLUDEDIR}/QtCrypto/qca_cert.h + ${qca_INCLUDEDIR}/QtCrypto/qca_keystore.h + ${qca_INCLUDEDIR}/QtCrypto/qca_securelayer.h + ${qca_INCLUDEDIR}/QtCrypto/qca_securemessage.h + ${CMAKE_BINARY_DIR}/qca_version.h + ${qca_INCLUDEDIR}/QtCrypto/qpipe.h + ${qca_INCLUDEDIR}/QtCrypto/qca_safetimer.h) + +set( qca_HEADERS ${private_HEADERS} ${public_HEADERS} ) + +include_directories(${QT_QTCORE_INCLUDE_DIR} "${qca_INCLUDEDIR}/QtCrypto") + +configure_file("crypto.prf.cmake" "${CMAKE_BINARY_DIR}/mkspecs/features/crypto.prf" @ONLY) +if(NOT DEVELOPER_MODE) + install(FILES "${CMAKE_BINARY_DIR}/mkspecs/features/crypto.prf" DESTINATION "${QCA_FEATURE_INSTALL_DIR}") +endif() + +configure_file(man/qcatool.1 "${CMAKE_BINARY_DIR}/share/man/man1/${QCA_TOOL_NAME}.1" COPYONLY) +if(NOT DEVELOPER_MODE) + install(FILES "${CMAKE_BINARY_DIR}/share/man/man1/${QCA_TOOL_NAME}.1" DESTINATION "${QCA_MAN_INSTALL_DIR}/man1") +endif() + +set(QCA_CRYPTO_INSTALL_DIR "${QCA_PLUGINS_INSTALL_DIR}/crypto") + +add_subdirectory(src) +add_subdirectory(plugins) + +if(STATIC_PLUGINS) + # Generate header with static plugins list + file(WRITE "${CMAKE_BINARY_DIR}/import_plugins.h" "#include \n") + foreach(PLUGIN IN LISTS PLUGINS) + if(WITH_${PLUGIN}_PLUGIN_INTERNAL) + string(REPLACE "-" "_" IMPORT_NAME "qca-${PLUGIN}") + file(APPEND "${CMAKE_BINARY_DIR}/import_plugins.h" "Q_IMPORT_PLUGIN(${IMPORT_NAME})\n") + endif(WITH_${PLUGIN}_PLUGIN_INTERNAL) + endforeach(PLUGIN IN LISTS PLUGINS) +endif(STATIC_PLUGINS) + +if(BUILD_TESTS) + enable_testing() + add_subdirectory(unittest) + add_subdirectory(examples) +endif(BUILD_TESTS) +if(BUILD_TOOLS) + add_subdirectory(tools) +endif(BUILD_TOOLS) + +if(DOXYGEN_FOUND) + configure_file(${CMAKE_SOURCE_DIR}/Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile @ONLY) + add_custom_target(doc + ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/images + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/images/qca-arch.eps ${CMAKE_BINARY_DIR}/images/qca-arch.eps + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/images/qca-arch.png ${CMAKE_BINARY_DIR}/images/qca-arch.png + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMENT "Generating API documentation with Doxygen" VERBATIM) +endif(DOXYGEN_FOUND) + +include(CMakePackageConfigHelpers) +configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/QcaConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/Qca/QcaConfig.cmake" + INSTALL_DESTINATION ${QCA_LIBRARY_INSTALL_DIR}/cmake/Qca +) +write_basic_config_version_file("${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/Qca/QcaConfigVersion.cmake" VERSION ${QCA_LIB_VERSION_STRING} COMPATIBILITY AnyNewerVersion) + +if(NOT DEVELOPER_MODE) + + # /usr/local is traditional path for installing apps on POSIX-systems. + # I consciously break this. Qt by default looks plugins and features only in + # own directory. So by default install libs in Qt prefix it is a best choice. + # This can be unwanted behaviour for users who don't read INSTALL file or/and + # not read cmake reports. I just try to warn their. + + # In really anybody who do cmake . && make && sudo make install do it for own risk. + + if(QCA_INSTALL_IN_QT_PREFIX) + string(ASCII 27 ESCAPE) + message("") + message("${ESCAPE}[31m") + message("!!!!!!!!!!!!!!!!!!!!!ATTENTION!!!!!!!!!!!!!!!!!!!!!!") + message("!! QCA will be installed in Qt prefix !!") + message("!! If you want to install in /usr/local !!") + message("!! you MUST explicity define CMAKE_INSTALL_PREFIX !!") + message("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!") + message("${ESCAPE}[0m") + endif(QCA_INSTALL_IN_QT_PREFIX) + + message("") + if(USE_RELATIVE_PATHS) + message("QCA prefix is " "${QCA_PREFIX_INSTALL_DIR}") + message("Plugins will be installed to " "${QCA_PREFIX_INSTALL_DIR}/${QCA_PLUGINS_INSTALL_DIR}") + message("Binary will be installed to " "${QCA_PREFIX_INSTALL_DIR}/${QCA_BINARY_INSTALL_DIR}") + if(OSX_FRAMEWORK) + message("Framework will be installed to " "${QCA_PREFIX_INSTALL_DIR}/${QCA_LIBRARY_INSTALL_DIR}") + else() + message("Library will be installed to " "${QCA_PREFIX_INSTALL_DIR}/${QCA_LIBRARY_INSTALL_DIR}") + message("Public headers will be installed to " "${QCA_PREFIX_INSTALL_DIR}/${QCA_INCLUDE_INSTALL_DIR}") + message("Private headers will be installed to " "${QCA_PREFIX_INSTALL_DIR}/${QCA_PRIVATE_INCLUDE_INSTALL_DIR}") + endif() + message("Feature file will be installed to " "${QCA_PREFIX_INSTALL_DIR}/${QCA_FEATURE_INSTALL_DIR}") + message("Documentation will be installed to " "${QCA_PREFIX_INSTALL_DIR}/${QCA_DOC_INSTALL_DIR}") + message("Man page will be installed to " "${QCA_PREFIX_INSTALL_DIR}/${QCA_MAN_INSTALL_DIR}") + message("Pkg-config file will be installed to " "${QCA_PREFIX_INSTALL_DIR}/${PKGCONFIG_INSTALL_PREFIX}") + else() + message("QCA prefix is " "${QCA_PREFIX_INSTALL_DIR}") + message("Plugins will be installed to " "${QCA_PLUGINS_INSTALL_DIR}") + message("Binary will be installed to " "${QCA_BINARY_INSTALL_DIR}") + if(OSX_FRAMEWORK) + message("Framework will be installed to " "${QCA_LIBRARY_INSTALL_DIR}") + else() + message("Library will be installed to " "${QCA_LIBRARY_INSTALL_DIR}") + message("Public headers will be installed to " "${QCA_INCLUDE_INSTALL_DIR}") + message("Private headers will be installed to " "${QCA_PRIVATE_INCLUDE_INSTALL_DIR}") + endif() + message("Feature file will be installed to " "${QCA_FEATURE_INSTALL_DIR}") + message("Documentation will be installed to " "${QCA_DOC_INSTALL_DIR}") + message("Man page will be installed to " "${QCA_MAN_INSTALL_DIR}") + message("Pkg-config file will be installed to " "${PKGCONFIG_INSTALL_PREFIX}") + endif() + message("") + + install(EXPORT QCATargets DESTINATION ${QCA_LIBRARY_INSTALL_DIR}/cmake/Qca FILE QcaTargets.cmake) + install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/Qca/QcaConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/Qca/QcaConfigVersion.cmake" + DESTINATION ${QCA_LIBRARY_INSTALL_DIR}/cmake/Qca + ) +endif() diff -Nru qca2-2.0.3/cmake_uninstall.cmake.in qca2-2.1.0/cmake_uninstall.cmake.in --- qca2-2.0.3/cmake_uninstall.cmake.in 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/cmake_uninstall.cmake.in 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 2.6.0) + +cmake_policy(SET CMP0007 OLD) + +if (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + message(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") +endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + +file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) +string(REGEX REPLACE "\n" ";" files "${files}") +list(REVERSE files) +foreach (file ${files}) + message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") + if (EXISTS "$ENV{DESTDIR}${file}") + execute_process( + COMMAND @CMAKE_COMMAND@ -E remove "$ENV{DESTDIR}${file}" + OUTPUT_VARIABLE rm_out + RESULT_VARIABLE rm_retval + ) + if(NOT ${rm_retval} EQUAL 0) + message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") + endif (NOT ${rm_retval} EQUAL 0) + else (EXISTS "$ENV{DESTDIR}${file}") + message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") + endif (EXISTS "$ENV{DESTDIR}${file}") +endforeach(file) diff -Nru qca2-2.0.3/configure qca2-2.1.0/configure --- qca2-2.0.3/configure 2010-11-27 21:16:26.000000000 +0000 +++ qca2-2.1.0/configure 1970-01-01 00:00:00.000000000 +0000 @@ -1,2194 +0,0 @@ -#!/bin/sh -# -# Generated by qconf 1.5 ( http://delta.affinix.com/qconf/ ) -# - -show_usage() { -cat </dev/null` - if echo $WHICH | grep 'shell built-in command' >/dev/null 2>&1; then - WHICH=which - elif [ -z "$WHICH" ]; then - if which which >/dev/null 2>&1; then - WHICH=which - else - for a in /usr/ucb /usr/bin /bin /usr/local/bin; do - if [ -x $a/which ]; then - WHICH=$a/which - break; - fi - done - fi - fi - - if [ -z "$WHICH" ]; then - OLD_IFS=$IFS - IFS=: - for a in $PATH; do - if [ -x $a/$1 ]; then - echo "$a/$1" - IFS=$OLD_IFS - export IFS - HOME=$OLD_HOME - export HOME - return 0 - fi - done - IFS=$OLD_IFS - export IFS - else - a=`"$WHICH" "$1" 2>/dev/null` - if [ ! -z "$a" -a -x "$a" ]; then - echo "$a" - HOME=$OLD_HOME - export HOME - return 0 - fi - fi - HOME=$OLD_HOME - export HOME - return 1 -} -WHICH=which_command - -# find a make command -if [ -z "$MAKE" ]; then - MAKE= - for mk in gmake make; do - if $WHICH $mk >/dev/null 2>&1; then - MAKE=`$WHICH $mk` - break - fi - done - if [ -z "$MAKE" ]; then - echo "You don't seem to have 'make' or 'gmake' in your PATH." - echo "Cannot proceed." - exit 1 - fi -fi - -show_qt_info() { - printf "Be sure you have a proper Qt 4.0 build environment set up. This means not\n" - printf "just Qt, but also a C++ compiler, a make tool, and any other packages\n" - printf "necessary for compiling C++ programs.\n" - printf "\n" - printf "If you are certain everything is installed, then it could be that Qt 4 is not\n" - printf "being recognized or that a different version of Qt is being detected by\n" - printf "mistake (for example, this could happen if \$QTDIR is pointing to a Qt 3\n" - printf "installation). At least one of the following conditions must be satisfied:\n" - printf "\n" - printf " 1) --qtdir is set to the location of Qt\n" - printf " 2) \$QTDIR is set to the location of Qt\n" - printf " 3) QtCore is in the pkg-config database\n" - printf " 4) qmake is in the \$PATH\n" - printf "\n" - printf "This script will use the first one it finds to be true, checked in the above\n" - printf "order. #3 and #4 are the recommended options. #1 and #2 are mainly for\n" - printf "overriding the system configuration.\n" - printf "\n" -} - -while [ $# -gt 0 ]; do - optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - case "$1" in - --prefix=*) - PREFIX=$optarg - shift - ;; - - --bindir=*) - BINDIR=$optarg - shift - ;; - - --includedir=*) - INCDIR=$optarg - shift - ;; - - --libdir=*) - LIBDIR=$optarg - shift - ;; - - --datadir=*) - DATADIR=$optarg - shift - ;; - - --qtdir=*) - EX_QTDIR=$optarg - shift - ;; - - --static) - QC_STATIC="Y" - shift - ;; - - --release) - QC_RELEASE="Y" - shift - ;; - - --debug) - QC_DEBUG="Y" - shift - ;; - - --debug-and-release) - QC_DEBUG_AND_RELEASE="Y" - shift - ;; - - --no-separate-debug-info) - QC_NO_SEPARATE_DEBUG_INFO="Y" - shift - ;; - - --separate-debug-info) - QC_SEPARATE_DEBUG_INFO="Y" - shift - ;; - - --no-framework) - QC_NO_FRAMEWORK="Y" - shift - ;; - - --framework) - QC_FRAMEWORK="Y" - shift - ;; - - --universal) - QC_UNIVERSAL="Y" - shift - ;; - - --mac-sdk=*) - QC_MAC_SDK=$optarg - shift - ;; - - --disable-tests) - QC_DISABLE_TESTS="Y" - shift - ;; - - --certstore-path=*) - QC_CERTSTORE_PATH=$optarg - shift - ;; - - --certstore-internal) - QC_CERTSTORE_INTERNAL="Y" - shift - ;; - - --verbose) - QC_VERBOSE="Y" - shift - ;; - --help) show_usage; exit ;; - *) show_usage; exit ;; - esac -done - -PREFIX=${PREFIX:-/usr/local} -BINDIR=${BINDIR:-$PREFIX/bin} -INCDIR=${INCDIR:-$PREFIX/include} -LIBDIR=${LIBDIR:-$PREFIX/lib} -DATADIR=${DATADIR:-$PREFIX/share} - -echo "Configuring Qt Cryptographic Architecture (QCA) ..." - -if [ "$QC_VERBOSE" = "Y" ]; then -echo -echo PREFIX=$PREFIX -echo BINDIR=$BINDIR -echo INCDIR=$INCDIR -echo LIBDIR=$LIBDIR -echo DATADIR=$DATADIR -echo EX_QTDIR=$EX_QTDIR -echo QC_STATIC=$QC_STATIC -echo QC_RELEASE=$QC_RELEASE -echo QC_DEBUG=$QC_DEBUG -echo QC_DEBUG_AND_RELEASE=$QC_DEBUG_AND_RELEASE -echo QC_NO_SEPARATE_DEBUG_INFO=$QC_NO_SEPARATE_DEBUG_INFO -echo QC_SEPARATE_DEBUG_INFO=$QC_SEPARATE_DEBUG_INFO -echo QC_NO_FRAMEWORK=$QC_NO_FRAMEWORK -echo QC_FRAMEWORK=$QC_FRAMEWORK -echo QC_UNIVERSAL=$QC_UNIVERSAL -echo QC_MAC_SDK=$QC_MAC_SDK -echo QC_DISABLE_TESTS=$QC_DISABLE_TESTS -echo QC_CERTSTORE_PATH=$QC_CERTSTORE_PATH -echo QC_CERTSTORE_INTERNAL=$QC_CERTSTORE_INTERNAL -echo -fi - -printf "Verifying Qt 4 build environment ... " - -# run qmake -v and check version -qmake_check_v4() { - if [ -x "$1" ]; then - if echo `$1 -v 2>&1` | grep "Qt version 4\." >/dev/null 2>&1; then - return 0 - elif [ "$QC_VERBOSE" = "Y" ]; then - echo "Warning: $1 not for Qt 4" - fi - fi - return 1 -} - -if [ "$QC_VERBOSE" = "Y" ]; then - echo -fi - -qm="" -names="qmake-qt4 qmake4 qmake" - -# qt4 check: --qtdir -if [ -z "$qm" ] && [ ! -z "$EX_QTDIR" ]; then - for n in $names; do - qstr=$EX_QTDIR/bin/$n - if qmake_check_v4 "$qstr"; then - qm=$qstr - break; - fi - done -fi -if [ -z "$qm" ] && [ "$QC_VERBOSE" = "Y" ]; then - echo "Warning: qmake not found via --qtdir" -fi - -# qt4 check: QTDIR -if [ -z "$qm" ] && [ ! -z "$QTDIR" ]; then - for n in $names; do - qstr=$QTDIR/bin/$n - if qmake_check_v4 "$qstr"; then - qm=$qstr - break; - fi - done -fi -if [ -z "$qm" ] && [ "$QC_VERBOSE" = "Y" ]; then - echo "Warning: qmake not found via \$QTDIR" -fi - -# qt4 check: pkg-config -if [ -z "$qm" ]; then - str=`pkg-config QtCore --variable=exec_prefix 2>/dev/null` - if [ ! -z "$str" ]; then - for n in $names; do - qstr=$str/bin/$n - if qmake_check_v4 "$qstr"; then - qm=$qstr - break; - fi - done - fi -fi -if [ -z "$qm" ] && [ "$QC_VERBOSE" = "Y" ]; then - echo "Warning: qmake not found via pkg-config" -fi - -# qt4 check: PATH -if [ -z "$qm" ]; then - for n in $names; do - qstr=`$WHICH $n 2>/dev/null` - if qmake_check_v4 "$qstr"; then - qm=$qstr - break; - fi - done -fi -if [ -z "$qm" ] && [ "$QC_VERBOSE" = "Y" ]; then - echo "Warning: qmake not found via \$PATH" -fi - -if [ -z "$qm" ]; then - if [ "$QC_VERBOSE" = "Y" ]; then - echo " -> fail" - else - echo "fail" - fi - printf "\n" - printf "Reason: Unable to find the 'qmake' tool for Qt 4.\n" - printf "\n" - show_qt_info - exit 1; -fi -if [ "$QC_VERBOSE" = "Y" ]; then - echo qmake found in $qm -fi - -# try to determine the active makespec -defmakespec=$QMAKESPEC -if [ -z "$defmakespec" ]; then - if $WHICH readlink >/dev/null 2>&1; then - READLINK=`$WHICH readlink` - fi - if [ ! -z "$READLINK" ]; then - qt_mkspecsdir=`$qm -query QT_INSTALL_DATA`/mkspecs - if [ -d "$qt_mkspecsdir" ] && [ -h "$qt_mkspecsdir/default" ]; then - defmakespec=`$READLINK $qt_mkspecsdir/default` - fi - fi -fi - -if [ "$QC_VERBOSE" = "Y" ]; then - echo makespec is $defmakespec -fi - -qm_spec="" -# if the makespec is macx-xcode, force macx-g++ -if [ "$defmakespec" = "macx-xcode" ]; then - qm_spec=macx-g++ - QMAKESPEC=$qm_spec - export QMAKESPEC - if [ "$QC_VERBOSE" = "Y" ]; then - echo overriding makespec to $qm_spec - fi -fi - -gen_files() { -cat >$1/modules.cpp <= 4.2 ------END QCMOD----- -*/ -class qc_qt42 : public ConfObj -{ -public: - qc_qt42(Conf *c) : ConfObj(c) {} - QString name() const { return "Qt >= 4.2"; } - QString shortname() const { return "qt42"; } - bool exec() - { - conf->debug(QString("QT_VERSION = 0x%1").arg(QString::number(QT_VERSION, 16))); - if(QT_VERSION >= 0x040200) - return true; - else - return false; - } -}; -#line 1 "buildmode.qcm" -/* ------BEGIN QCMOD----- -name: buildmode -section: project -arg: release,Build with debugging turned off (default). -arg: debug,Build with debugging turned on. -arg: debug-and-release,Build two versions, with and without debugging turned on (windows/mac only). -arg: no-separate-debug-info,Do not store debug information in a separate file (unix only, default for mac). -arg: separate-debug-info,Strip debug information into a separate .debug file (unix only, default for non-mac). ------END QCMOD----- -*/ - -#define QC_BUILDMODE -bool qc_buildmode_release = false; -bool qc_buildmode_debug = false; -bool qc_buildmode_separate_debug_info = false; - -class qc_buildmode : public ConfObj -{ -public: - qc_buildmode(Conf *c) : ConfObj(c) {} - QString name() const { return "buildmode"; } - QString shortname() const { return "buildmode"; } - - // no output - QString checkString() const { return QString(); } - - bool exec() - { - // first, parse out the options - bool opt_release = false; - bool opt_debug = false; - bool opt_debug_and_release = false; - bool opt_no_separate_debug_info = false; - bool opt_separate_debug_info = false; - - if(conf->getenv("QC_RELEASE") == "Y") - opt_release = true; - if(conf->getenv("QC_DEBUG") == "Y") - opt_debug = true; - if(conf->getenv("QC_DEBUG_AND_RELEASE") == "Y") - opt_debug_and_release = true; - if(conf->getenv("QC_NO_SEPARATE_DEBUG_INFO") == "Y") - opt_no_separate_debug_info = true; - if(conf->getenv("QC_SEPARATE_DEBUG_INFO") == "Y") - opt_separate_debug_info = true; - -#if !defined(Q_OS_WIN) && !defined(Q_OS_MAC) - if(opt_debug_and_release) - { - printf("\nError: The --debug-and-release option is for windows/mac only.\n"); - exit(1); - } -#endif - -#ifdef Q_OS_WIN - if(opt_no_separate_debug_info) - { - printf("\nError: The --no-separate-debug-info option is for unix only.\n"); - exit(1); - } - - if(opt_separate_debug_info) - { - printf("\nError: The --separate-debug-info option is for unix only.\n"); - exit(1); - } -#endif - - // sanity check exclusive options - int x; - - // build mode - x = 0; - if(opt_release) - ++x; - if(opt_debug) - ++x; - if(opt_debug_and_release) - ++x; - if(x > 1) - { - printf("\nError: Use only one of --release, --debug, or --debug-and-release.\n"); - exit(1); - } - - // debug info - x = 0; - if(opt_no_separate_debug_info) - ++x; - if(opt_separate_debug_info) - ++x; - if(x > 1) - { - printf("\nError: Use only one of --separate-debug-info or --no-separate-debug-info\n"); - exit(1); - } - - // now process the options - - if(opt_release) - qc_buildmode_release = true; - else if(opt_debug) - qc_buildmode_debug = true; - else if(opt_debug_and_release) - { - qc_buildmode_release = true; - qc_buildmode_debug = true; - } - else // default - qc_buildmode_release = true; - - if(opt_separate_debug_info) - qc_buildmode_separate_debug_info = true; - else if(opt_no_separate_debug_info) - { - // nothing to do - } - else // default - { -#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC) - qc_buildmode_separate_debug_info = true; -#endif - } - - // make the string - QStringList opts; - QString other; - - if(qc_buildmode_release && qc_buildmode_debug) - { - opts += "debug_and_release"; - opts += "build_all"; - } - else if(qc_buildmode_release) - opts += "release"; - else // qc_buildmode_debug - opts += "debug"; - - if(qc_buildmode_separate_debug_info) - { - opts += "separate_debug_info"; - other += "QMAKE_CFLAGS += -g\n"; - other += "QMAKE_CXXFLAGS += -g\n"; - } - - QString str = QString("CONFIG += ") + opts.join(" ") + '\n'; - conf->addExtra(str); - - if(!other.isEmpty()) - conf->addExtra(other); - - return true; - } -}; -#line 1 "buildmode_framework.qcm" -/* ------BEGIN QCMOD----- -name: buildmode_framework -section: project -arg: no-framework,Do not build as a Mac framework. -arg: framework,Build as a Mac framework (default). ------END QCMOD----- -*/ - -#define QC_BUILDMODE_FRAMEWORK -bool qc_buildmode_framework_enabled = false; - -class qc_buildmode_framework : public ConfObj -{ -public: - qc_buildmode_framework(Conf *c) : ConfObj(c) {} - QString name() const { return "buildmode_framework"; } - QString shortname() const { return "buildmode_framework"; } - - // no output - QString checkString() const { return QString(); } - - bool exec() - { - // first, parse out the options - bool opt_no_framework = false; - bool opt_framework = false; - - if(conf->getenv("QC_NO_FRAMEWORK") == "Y") - opt_no_framework = true; - if(conf->getenv("QC_FRAMEWORK") == "Y") - opt_framework = true; - - bool staticmode = false; - if(conf->getenv("QC_STATIC") == "Y") - staticmode = true; - -#ifndef Q_OS_MAC - if(opt_framework) - { - printf("\nError: The --framework option is for mac only.\n"); - exit(1); - } -#endif - - if(opt_framework && qc_buildmode_debug) - { - printf("\nError: Cannot use both --framework and --debug.\n"); - exit(1); - } - - // sanity check exclusive options - int x; - - // framework - if(opt_framework && staticmode) - { - printf("\nError: Cannot use both --framework and --static.\n"); - exit(1); - } - - x = 0; - if(opt_no_framework) - ++x; - if(opt_framework) - ++x; - if(x > 1) - { - printf("\nError: Use only one of --framework or --no-framework.\n"); - exit(1); - } - -#ifdef Q_OS_MAC - // now process the options - - if(opt_framework) - qc_buildmode_framework_enabled = true; - else if(opt_no_framework) - { - // nothing to do - } - else // default - { - if(!staticmode && !qc_buildmode_debug) - qc_buildmode_framework_enabled = true; - } - - if(qc_buildmode_framework_enabled) - conf->addExtra("CONFIG += lib_bundle"); -#endif - - return true; - } -}; -#line 1 "universal.qcm" -/* ------BEGIN QCMOD----- -name: Mac universal binary support -section: project -arg: universal,Build with Mac universal binary support. -arg: mac-sdk=[path],Path to Mac universal SDK (PPC host only). ------END QCMOD----- -*/ - -#define QC_UNIVERSAL -bool qc_universal_enabled = false; -QString qc_universal_sdk; - -//---------------------------------------------------------------------------- -// qc_universal -//---------------------------------------------------------------------------- -class qc_universal : public ConfObj -{ -public: - qc_universal(Conf *c) : ConfObj(c) {} - QString name() const { return "Mac universal binary support"; } - QString shortname() const { return "universal"; } - QString checkString() const { return QString(); } - - bool exec() - { -#ifdef Q_OS_MAC - if(qc_getenv("QC_UNIVERSAL") == "Y") - { - qc_universal_enabled = true; - - QString str = - "contains(QT_CONFIG,x86):contains(QT_CONFIG,ppc) {\n" - " CONFIG += x86 ppc\n" - "}\n"; - - QString sdk = qc_getenv("QC_MAC_SDK"); - if(!sdk.isEmpty()) - { - str += QString("QMAKE_MAC_SDK = %1\n").arg(sdk); - qc_universal_sdk = sdk; - } - - conf->addExtra(str); - } -#endif - return true; - } -}; -#line 1 "extra.qcm" -/* ------BEGIN QCMOD----- -name: extra -section: project -arg: disable-tests,Don't build examples and unittests. ------END QCMOD----- -*/ - -class qc_extra : public ConfObj -{ -public: - qc_extra(Conf *c) : ConfObj(c) {} - QString name() const { return "extra"; } - QString shortname() const { return "extra"; } - - // no output - QString checkString() const { return QString(); } - - bool exec() - { -#ifndef Q_OS_WIN - // --prefix=\$pwd ? - QString datadir; - if(QFile::exists(conf->getenv("PREFIX") + "/qca.pro")) - datadir = "\$\$PREFIX"; - else - datadir = "\$\$DATADIR/qca"; - - conf->addExtra(makeEscapedDefine("DATADIR", datadir)); -#endif - - QString str; - QFile f; - -#ifndef Q_OS_WIN - // HAVE_SYS_FILIO_H - if(conf->findHeader("sys/filio.h", QStringList(), &str)) - { - if(!str.isEmpty()) - conf->addIncludePath(str); - conf->addDefine("HAVE_SYS_FILIO_H"); - } - - // MLOCK_NOT_VOID_PTR - str = - "# include \n" - "# include \n" - "int main() { void *f = 0; return mlock(f,8); }\n"; - if(!conf->doCompileAndLink(str, QStringList(), QString(), QString())) - { - conf->debug("mlock(2) does not take a void *"); - conf->addDefine("MLOCK_NOT_VOID_PTR"); - } - - str = QString(); -#endif - - if(conf->getenv("QC_DISABLE_TESTS") == "Y") - str += "QCA_NO_TESTS = 1\n"; - - conf->addExtra(str); - - bool release = true; - bool debug = false; - bool debug_info = false; - bool universal = false; - QString sdk; - -#ifdef QC_BUILDMODE - release = qc_buildmode_release; - debug = qc_buildmode_debug; - debug_info = qc_buildmode_separate_debug_info; -#endif - -#ifdef QC_UNIVERSAL - universal = qc_universal_enabled; - sdk = qc_universal_sdk; -#endif - - // write confapp.pri - str = QString(); -#ifndef Q_OS_WIN - QString var = conf->getenv("BINDIR"); - if(!var.isEmpty()) - str += QString("BINDIR = %1\n").arg(var); -#endif - if(debug) // debug or debug-and-release - str += QString("CONFIG += debug\n"); - else // release - str += QString("CONFIG += release\n"); - if(debug_info) - { - str += QString("CONFIG += separate_debug_info\n"); - str += "QMAKE_CFLAGS += -g\n"; - str += "QMAKE_CXXFLAGS += -g\n"; - } - if(universal) - { - str += - "contains(QT_CONFIG,x86):contains(QT_CONFIG,ppc) {\n" - " CONFIG += x86 ppc\n" - "}\n"; - - if(!sdk.isEmpty()) - str += QString("QMAKE_MAC_SDK = %1\n").arg(sdk); - } - f.setFileName("confapp.pri"); - if(f.open(QFile::WriteOnly | QFile::Truncate)) - f.write(str.toLatin1()); - f.close(); - -#ifdef Q_OS_WIN - QString prefix = QDir::currentPath(); - QString incdir = prefix + "/include"; - QString libdir = prefix + "/lib"; -#else - QString prefix = conf->getenv("PREFIX"); - QString incdir = conf->getenv("INCDIR"); - QString libdir = conf->getenv("LIBDIR"); -#endif - - // write qmake-feature file - QString crypto_in; - f.setFileName("crypto.prf.in"); - if(f.open(QFile::ReadOnly)) - { - crypto_in = QString::fromUtf8(f.readAll()); - f.close(); - } - - str = QString("QCA_INCDIR = %1\n").arg(incdir); - str += QString("QCA_LIBDIR = %1\n").arg(libdir); - str += crypto_in; - - f.setFileName("crypto.prf"); - if(f.open(QFile::WriteOnly | QFile::Truncate)) - { - f.write(str.toLatin1()); - f.close(); - } - -#ifndef Q_OS_WIN - str = QString( - "prffiles.path = %1/mkspecs/features\n" - "prffiles.files = crypto.prf\n" - "INSTALLS += prffiles\n" - ).arg(QLibraryInfo::location(QLibraryInfo::DataPath)); - conf->addExtra(str); - - // write pkg-config files - - QString pkg_template1 = QString( - "prefix=%1\n" - "exec_prefix=\${prefix}\n" - "libdir=%2\n" - "includedir=%3/QtCrypto\n" - "\n"); - - QString pkg_template2 = QString( - "Name: %1\n" - "Description: Qt Cryptographic Architecture library\n" - "Version: 2.0.3\n"); - - QString pkg_template3 = QString( - "Requires: %1\n"); - - QString pkg_template4 = QString( - "Libs: -L\${libdir} -l%1\n" - "Cflags: -I\${includedir}\n" - "\n"); - - QStringList pcfiles; - - QDir dir = QDir::current(); - dir.mkdir("lib"); - dir.cd("lib"); - dir.mkdir("pkgconfig"); - - bool do_pc_normal = false; - bool do_pc_debug = false; - -#ifdef Q_OS_MAC - if(release) - do_pc_normal = true; - if(debug) - do_pc_debug = true; -#else - do_pc_normal = true; -#endif - - if(do_pc_normal) - { - str = pkg_template1.arg(prefix, libdir, incdir); - str += pkg_template2.arg("QCA"); - str += pkg_template3.arg("QtCore"); - str += pkg_template4.arg("qca"); - f.setFileName("lib/pkgconfig/qca2.pc"); - if(f.open(QFile::WriteOnly | QFile::Truncate)) - f.write(str.toLatin1()); - f.close(); - pcfiles += "lib/pkgconfig/qca2.pc"; - } - - if(do_pc_debug) - { - str = pkg_template1.arg(prefix, libdir, incdir); - str += pkg_template2.arg("QCA_debug"); - str += pkg_template3.arg("QtCore_debug"); - str += pkg_template4.arg("qca_debug"); - f.setFileName("lib/pkgconfig/qca2_debug.pc"); - if(f.open(QFile::WriteOnly | QFile::Truncate)) - f.write(str.toLatin1()); - f.close(); - pcfiles += "lib/pkgconfig/qca2_debug.pc"; - } - - if(!pcfiles.isEmpty()) - { - str = QString( - "pcfiles.path = \$\$LIBDIR/pkgconfig\n" - "pcfiles.files = %1\n" - "INSTALLS += pcfiles\n" - ).arg(pcfiles.join(" ")); - conf->addExtra(str); - } -#endif - - return true; - } - - QString makeEscapedDefine(const QString &var, const QString &val) - { - QString str = QString( - "DEFINES += %1=\\\\\\\\\\\\\\"%2\\\\\\\\\\\\\\"\n" - ).arg(var).arg(val); - return str; - } -}; -#line 1 "certstore.qcm" -/* ------BEGIN QCMOD----- -name: certstore -section: project -arg: certstore-path=[path],Path to the SSL/X509 Certificate store file. -arg: certstore-internal,Force the use of the bundled store. ------END QCMOD----- -*/ - -class qc_certstore : public ConfObj -{ -public: - qc_certstore(Conf *c) : ConfObj(c) {} - QString name() const { return "certstore"; } - QString shortname() const { return "certstore"; } - - bool exec() - { - bundled = false; - -#if defined(Q_OS_WIN) || defined(Q_OS_MAC) - // use built-in - return true; -#else - if(conf->getenv("QC_CERTSTORE_INTERNAL") != "Y") - { - QStringList pathsToTry; - - path = conf->getenv("QC_CERTSTORE_PATH"); - if(!path.isEmpty()) - { - conf->addExtra(makeEscapedDefine("QCA_SYSTEMSTORE_PATH", path)); - return true; - } - - // This is from Debian - pathsToTry.append( QString("/etc/ssl/certs/ca-certificates.crt") ); - - // Fedora Core 2 uses these - pathsToTry.append( QString("/usr/share/ssl/cert.pem") ); - pathsToTry.append( QString("/usr/share/ssl/certs/ca-bundle.crt") ); - - // Fedora Core 5 changes to this - pathsToTry.append( QString("/etc/pki/tls/cert.pem") ); - - for(int n = 0; n < pathsToTry.count(); ++n) - { - if(QFile::exists(pathsToTry[n])) - { - path = pathsToTry[n]; - break; - } - } - } - - // fall back to bundled - if(path.isEmpty()) - { - // --prefix=\$pwd ? - if(QFile::exists(conf->getenv("PREFIX") + "/certs/rootcerts.pem")) - path = "\$\$PREFIX/certs/rootcerts.pem"; - else - path = "\$\$DATADIR/qca/certs/rootcerts.pem"; - - QString extra = - "sharedfiles.path = \$\$DATADIR/qca\n" - "sharedfiles.files = certs\n" - "INSTALLS += sharedfiles\n"; - conf->addExtra(extra); - bundled = true; - } - - conf->addExtra(makeEscapedDefine("QCA_SYSTEMSTORE_PATH", path)); - - return true; -#endif - } - - QString makeEscapedDefine(const QString &var, const QString &val) - { - QString str = QString( - "DEFINES += %1=\\\\\\\\\\\\\\"%2\\\\\\\\\\\\\\"\n" - ).arg(var).arg(val); - return str; - } - - QString resultString() const - { -#if defined(Q_OS_WIN) - return "using Windows built-in"; -#elif defined(Q_OS_MAC) - return "using Mac built-in"; -#else - if(success) - { - if(bundled) - return "using bundled"; - else - return path; - } - else - return ConfObj::resultString(); -#endif - } - -private: - QString path; - bool bundled; -}; - -EOT -cat >$1/modules_new.cpp <required = true; - o->disabled = false; - o = new qc_buildmode(conf); - o->required = true; - o->disabled = false; - o = new qc_buildmode_framework(conf); - o->required = true; - o->disabled = false; - o = new qc_universal(conf); - o->required = true; - o->disabled = false; - o = new qc_extra(conf); - o->required = true; - o->disabled = false; - o = new qc_certstore(conf); - o->required = true; - o->disabled = false; - -EOT -cat >$1/conf4.h < - -class Conf; - -enum VersionMode { VersionMin, VersionExact, VersionMax, VersionAny }; - -// ConfObj -// -// Subclass ConfObj to create a new configuration module. -class ConfObj -{ -public: - Conf *conf; - bool required; - bool disabled; - bool success; - - ConfObj(Conf *c); - virtual ~ConfObj(); - - // long or descriptive name of what is being checked/performed - // example: "KDE >= 3.3" - virtual QString name() const = 0; - - // short name - // example: "kde" - virtual QString shortname() const = 0; - - // string to display during check - // default: "Checking for [name] ..." - virtual QString checkString() const; - - // string to display after check - // default: "yes" or "no", based on result of exec() - virtual QString resultString() const; - - // this is where the checking code goes - virtual bool exec() = 0; -}; - -// Conf -// -// Interact with this class from your ConfObj to perform detection -// operations and to output configuration parameters. -class Conf -{ -public: - bool debug_enabled; - QString qmake_path; - QString qmakespec; - QString maketool; - - QString DEFINES; - QString INCLUDEPATH; - QString LIBS; - QString extra; - - QList list; - QMap vars; - - Conf(); - ~Conf(); - - QString getenv(const QString &var); - QString qvar(const QString &s); - - bool exec(); - - void debug(const QString &s); - - QString expandIncludes(const QString &inc); - QString expandLibs(const QString &lib); - - int doCommand(const QString &s, QByteArray *out = 0); - int doCommand(const QString &prog, const QStringList &args, QByteArray *out = 0); - - bool doCompileAndLink(const QString &filedata, const QStringList &incs, const QString &libs, const QString &proextra, int *retcode = 0); - bool checkHeader(const QString &path, const QString &h); - bool findHeader(const QString &h, const QStringList &ext, QString *inc); - bool checkLibrary(const QString &path, const QString &name); - bool findLibrary(const QString &name, QString *lib); - QString findProgram(const QString &prog); - bool findSimpleLibrary(const QString &incvar, const QString &libvar, const QString &incname, const QString &libname, QString *incpath, QString *libs); - bool findFooConfig(const QString &path, QString *version, QStringList *incs, QString *libs, QString *otherflags); - bool findPkgConfig(const QString &name, VersionMode mode, const QString &req_version, QString *version, QStringList *incs, QString *libs, QString *otherflags); - - void addDefine(const QString &str); - void addLib(const QString &str); - void addIncludePath(const QString &str); - void addExtra(const QString &str); - -private: - bool first_debug; - - friend class ConfObj; - void added(ConfObj *o); -}; - -#endif - -EOT -cat >$1/conf4.cpp < -#include - -class MocTestObject : public QObject -{ - Q_OBJECT -public: - MocTestObject() {} -}; - -QString qc_getenv(const QString &var) -{ - char *p = ::getenv(var.toLatin1().data()); - if(!p) - return QString(); - return QString(p); -} - -QStringList qc_pathlist() -{ - QStringList list; - QString path = qc_getenv("PATH"); - if(!path.isEmpty()) - { -#ifdef Q_OS_WIN - list = path.split(';', QString::SkipEmptyParts); -#else - list = path.split(':', QString::SkipEmptyParts); -#endif - } -#ifdef Q_OS_WIN - list.prepend("."); -#endif - return list; -} - -QString qc_findprogram(const QString &prog) -{ - QString out; - QStringList list = qc_pathlist(); - for(int n = 0; n < list.count(); ++n) - { - QFileInfo fi(list[n] + '/' + prog); - if(fi.exists() && fi.isExecutable()) - { - out = fi.filePath(); - break; - } - -#ifdef Q_OS_WIN - // on windows, be sure to look for .exe - if(prog.right(4).toLower() != ".exe") - { - fi = QFileInfo(list[n] + '/' + prog + ".exe"); - if(fi.exists() && fi.isExecutable()) - { - out = fi.filePath(); - break; - } - } -#endif - } - return out; -} - -QString qc_findself(const QString &argv0) -{ -#ifdef Q_OS_WIN - if(argv0.contains('\\\\')) -#else - if(argv0.contains('/')) -#endif - return argv0; - else - return qc_findprogram(argv0); -} - -int qc_runcommand(const QString &command, QByteArray *out, bool showOutput) -{ - QString fullcmd = command; - if(!showOutput) - { -#ifdef Q_OS_WIN - fullcmd += " 2>NUL"; -#else - fullcmd += " 2>/dev/null"; -#endif - } - -#ifdef Q_OS_WIN - FILE *f = _popen(fullcmd.toLatin1().data(), "r"); -#else - FILE *f = popen(fullcmd.toLatin1().data(), "r"); -#endif - if(!f) - return -1; - if(out) - out->clear(); - while(1) - { - char c = (char)fgetc(f); - if(feof(f)) - break; - if(out) - out->append(c); - if(showOutput) - fputc(c, stdout); - } -#ifdef Q_OS_WIN - int ret = _pclose(f); -#else - int ret = pclose(f); -#endif - if(ret == -1) - return -1; - return ret; -} - -int qc_runprogram(const QString &prog, const QStringList &args, QByteArray *out, bool showOutput) -{ - QString fullcmd = prog; - QString argstr = args.join(" "); - if(!argstr.isEmpty()) - fullcmd += QString(" ") + argstr; - return qc_runcommand(fullcmd, out, showOutput); - - // TODO: use QProcess once it is fixed - /* - QProcess process; - if(showOutput) - process.setReadChannelMode(ForwardedChannels); - process.start(prog, args); - process.waitForFinished(-1); - return process.exitCode(); - */ -} - -bool qc_removedir(const QString &dirPath) -{ - QDir dir(dirPath); - if(!dir.exists()) - return false; - QStringList list = dir.entryList(); - foreach(QString s, list) - { - if(s == "." || s == "..") - continue; - QFileInfo fi(dir.filePath(s)); - if(fi.isDir()) - { - if(!qc_removedir(fi.filePath())) - return false; - } - else - { - if(!dir.remove(s)) - return false; - } - } - QString dirName = dir.dirName(); - if(!dir.cdUp()) - return false; - if(!dir.rmdir(dirName)) - return false; - return true; -} - -void qc_splitcflags(const QString &cflags, QStringList *incs, QStringList *otherflags) -{ - incs->clear(); - otherflags->clear(); - - QStringList cflagsList = cflags.split(" "); - for(int n = 0; n < cflagsList.count(); ++n) - { - QString str = cflagsList[n]; - if(str.startsWith("-I")) - { - // we want everything except the leading "-I" - incs->append(str.remove(0, 2)); - } - else - { - // we want whatever is left - otherflags->append(str); - } - } -} - -QString qc_escapeArg(const QString &str) -{ - QString out; - for(int n = 0; n < (int)str.length(); ++n) { - if(str[n] == '-') - out += '_'; - else - out += str[n]; - } - return out; -} - -//---------------------------------------------------------------------------- -// ConfObj -//---------------------------------------------------------------------------- -ConfObj::ConfObj(Conf *c) -{ - conf = c; - conf->added(this); - required = false; - disabled = false; - success = false; -} - -ConfObj::~ConfObj() -{ -} - -QString ConfObj::checkString() const -{ - return QString("Checking for %1 ...").arg(name()); -} - -QString ConfObj::resultString() const -{ - if(success) - return "yes"; - else - return "no"; -} - -//---------------------------------------------------------------------------- -// qc_internal_pkgconfig -//---------------------------------------------------------------------------- -class qc_internal_pkgconfig : public ConfObj -{ -public: - QString pkgname, desc; - VersionMode mode; - QString req_ver; - - qc_internal_pkgconfig(Conf *c, const QString &_name, const QString &_desc, VersionMode _mode, const QString &_req_ver) : ConfObj(c) - { - pkgname = _name; - desc = _desc; - mode = _mode; - req_ver = _req_ver; - } - - QString name() const { return desc; } - QString shortname() const { return pkgname; } - - bool exec() - { - QStringList incs; - QString version, libs, other; - if(!conf->findPkgConfig(pkgname, mode, req_ver, &version, &incs, &libs, &other)) - return false; - - for(int n = 0; n < incs.count(); ++n) - conf->addIncludePath(incs[n]); - if(!libs.isEmpty()) - conf->addLib(libs); - //if(!other.isEmpty()) - // conf->addExtra(QString("QMAKE_CFLAGS += %1\n").arg(other)); - return true; - } -}; - -//---------------------------------------------------------------------------- -// Conf -//---------------------------------------------------------------------------- -Conf::Conf() -{ - // TODO: no more vars? - //vars.insert("QMAKE_INCDIR_X11", new QString(X11_INC)); - //vars.insert("QMAKE_LIBDIR_X11", new QString(X11_LIBDIR)); - //vars.insert("QMAKE_LIBS_X11", new QString(X11_LIB)); - //vars.insert("QMAKE_CC", CC); - - debug_enabled = false; -} - -Conf::~Conf() -{ - qDeleteAll(list); -} - -void Conf::added(ConfObj *o) -{ - list.append(o); -} - -QString Conf::getenv(const QString &var) -{ - return qc_getenv(var); -} - -void Conf::debug(const QString &s) -{ - if(debug_enabled) - { - if(first_debug) - printf("\n"); - first_debug = false; - printf(" * %s\n", qPrintable(s)); - } -} - -bool Conf::exec() -{ - for(int n = 0; n < list.count(); ++n) - { - ConfObj *o = list[n]; - - // if this was a disabled-by-default option, check if it was enabled - if(o->disabled) - { - QString v = QString("QC_ENABLE_") + qc_escapeArg(o->shortname()); - if(getenv(v) != "Y") - continue; - } - // and the opposite? - else - { - QString v = QString("QC_DISABLE_") + qc_escapeArg(o->shortname()); - if(getenv(v) == "Y") - continue; - } - - bool output = true; - QString check = o->checkString(); - if(check.isEmpty()) - output = false; - - if(output) - { - printf("%s", check.toLatin1().data()); - fflush(stdout); - } - - first_debug = true; - bool ok = o->exec(); - o->success = ok; - - if(output) - { - QString result = o->resultString(); - if(!first_debug) - printf(" -> %s\n", result.toLatin1().data()); - else - printf(" %s\n", result.toLatin1().data()); - } - - if(!ok && o->required) - { - printf("\nError: need %s!\n", o->name().toLatin1().data()); - return false; - } - } - return true; -} - -QString Conf::qvar(const QString &s) -{ - return vars.value(s); -} - -QString Conf::expandIncludes(const QString &inc) -{ - return QString("-I") + inc; -} - -QString Conf::expandLibs(const QString &lib) -{ - return QString("-L") + lib; -} - -int Conf::doCommand(const QString &s, QByteArray *out) -{ - debug(QString("[%1]").arg(s)); - int r = qc_runcommand(s, out, debug_enabled); - debug(QString("returned: %1").arg(r)); - return r; -} - -int Conf::doCommand(const QString &prog, const QStringList &args, QByteArray *out) -{ - QString fullcmd = prog; - QString argstr = args.join(" "); - if(!argstr.isEmpty()) - fullcmd += QString(" ") + argstr; - debug(QString("[%1]").arg(fullcmd)); - int r = qc_runprogram(prog, args, out, debug_enabled); - debug(QString("returned: %1").arg(r)); - return r; -} - -bool Conf::doCompileAndLink(const QString &filedata, const QStringList &incs, const QString &libs, const QString &proextra, int *retcode) -{ -#ifdef Q_OS_WIN - QDir tmp("qconftemp"); -#else - QDir tmp(".qconftemp"); -#endif - - if(!tmp.mkdir("atest")) - { - debug("unable to create atest dir"); - return false; - } - QDir dir(tmp.filePath("atest")); - if(!dir.exists()) - { - debug("atest dir does not exist"); - return false; - } - - QString fname = dir.filePath("atest.cpp"); - QString out = "atest"; - QFile f(fname); - if(!f.open(QFile::WriteOnly | QFile::Truncate)) - { - debug("unable to open atest.cpp for writing"); - return false; - } - if(f.write(filedata.toLatin1()) == -1) - { - debug("error writing to atest.cpp"); - return false; - } - f.close(); - - debug(QString("Wrote atest.cpp:\n%1").arg(filedata)); - - QString pro = QString( - "CONFIG += console\n" - "CONFIG -= qt app_bundle\n" - "DESTDIR = \$\$PWD\n" - "SOURCES += atest.cpp\n"); - QString inc = incs.join(" "); - if(!inc.isEmpty()) - pro += "INCLUDEPATH += " + inc + '\n'; - if(!libs.isEmpty()) - pro += "LIBS += " + libs + '\n'; - pro += proextra; - - fname = dir.filePath("atest.pro"); - f.setFileName(fname); - if(!f.open(QFile::WriteOnly | QFile::Truncate)) - { - debug("unable to open atest.pro for writing"); - return false; - } - if(f.write(pro.toLatin1()) == -1) - { - debug("error writing to atest.pro"); - return false; - } - f.close(); - - debug(QString("Wrote atest.pro:\n%1").arg(pro)); - - QString oldpath = QDir::currentPath(); - QDir::setCurrent(dir.path()); - - bool ok = false; - int r = doCommand(qmake_path, QStringList() << "atest.pro"); - if(r == 0) - { - r = doCommand(maketool, QStringList()); - if(r == 0) - { - ok = true; - if(retcode) - { - QString runatest = out; -#ifdef Q_OS_UNIX - runatest.prepend("./"); -#endif - *retcode = doCommand(runatest, QStringList()); - } - } - r = doCommand(maketool, QStringList() << "distclean"); - if(r != 0) - debug("error during atest distclean"); - } - - QDir::setCurrent(oldpath); - - // cleanup - //dir.remove("atest.pro"); - //dir.remove("atest.cpp"); - //tmp.rmdir("atest"); - - // remove whole dir since distclean doesn't always work - qc_removedir(tmp.filePath("atest")); - - if(!ok) - return false; - return true; -} - -bool Conf::checkHeader(const QString &path, const QString &h) -{ - QFileInfo fi(path + '/' + h); - if(fi.exists()) - return true; - return false; -} - -bool Conf::findHeader(const QString &h, const QStringList &ext, QString *inc) -{ - if(checkHeader("/usr/include", h)) - { - *inc = ""; - return true; - } - QStringList dirs; - dirs += "/usr/local/include"; - dirs += ext; - for(QStringList::ConstIterator it = dirs.begin(); it != dirs.end(); ++it) - { - if(checkHeader(*it, h)) - { - *inc = *it; - return true; - } - } - return false; -} - -bool Conf::checkLibrary(const QString &path, const QString &name) -{ - QString str = - //"#include \n" - "int main()\n" - "{\n" - //" printf(\"library checker running\\\\n\");\n" - " return 0;\n" - "}\n"; - - QString libs; - if(!path.isEmpty()) - libs += QString("-L") + path + ' '; - libs += QString("-l") + name; - if(!doCompileAndLink(str, QStringList(), libs, QString())) - return false; - return true; -} - -bool Conf::findLibrary(const QString &name, QString *lib) -{ - if(checkLibrary("", name)) - { - *lib = ""; - return true; - } - if(checkLibrary("/usr/local/lib", name)) - { - *lib = "/usr/local/lib"; - return true; - } - return false; -} - -QString Conf::findProgram(const QString &prog) -{ - return qc_findprogram(prog); -} - -bool Conf::findSimpleLibrary(const QString &incvar, const QString &libvar, const QString &incname, const QString &libname, QString *incpath, QString *libs) -{ - QString inc, lib; - QString s; - - s = getenv(incvar); - if(!s.isEmpty()) { - if(!checkHeader(s, incname)) - return false; - inc = s; - } - else { - if(!findHeader(incname, QStringList(), &s)) - return false; - inc = s; - } - - s = getenv(libvar); - if(!s.isEmpty()) { - if(!checkLibrary(s, libname)) - return false; - lib = s; - } - else { - if(!findLibrary(libname, &s)) - return false; - lib = s; - } - - QString lib_out; - if(!lib.isEmpty()) - lib_out += QString("-L") + s; - lib_out += QString("-l") + libname; - - *incpath = inc; - *libs = lib_out; - return true; -} - -bool Conf::findFooConfig(const QString &path, QString *version, QStringList *incs, QString *libs, QString *otherflags) -{ - QStringList args; - QByteArray out; - int ret; - - args += "--version"; - ret = doCommand(path, args, &out); - if(ret != 0) - return false; - - QString version_out = QString::fromLatin1(out).trimmed(); - - args.clear(); - args += "--libs"; - ret = doCommand(path, args, &out); - if(ret != 0) - return false; - - QString libs_out = QString::fromLatin1(out).trimmed(); - - args.clear(); - args += "--cflags"; - ret = doCommand(path, args, &out); - if(ret != 0) - return false; - - QString cflags = QString::fromLatin1(out).trimmed(); - - QStringList incs_out, otherflags_out; - qc_splitcflags(cflags, &incs_out, &otherflags_out); - - *version = version_out; - *incs = incs_out; - *libs = libs_out; - *otherflags = otherflags_out.join(" "); - return true; -} - -bool Conf::findPkgConfig(const QString &name, VersionMode mode, const QString &req_version, QString *version, QStringList *incs, QString *libs, QString *otherflags) -{ - QStringList args; - QByteArray out; - int ret; - - args += name; - args += "--exists"; - ret = doCommand("pkg-config", args, &out); - if(ret != 0) - return false; - - if(mode != VersionAny) - { - args.clear(); - args += name; - if(mode == VersionMin) - args += QString("--atleast-version=%1").arg(req_version); - else if(mode == VersionMax) - args += QString("--max-version=%1").arg(req_version); - else - args += QString("--exact-version=%1").arg(req_version); - ret = doCommand("pkg-config", args, &out); - if(ret != 0) - return false; - } - - args.clear(); - args += name; - args += "--modversion"; - ret = doCommand("pkg-config", args, &out); - if(ret != 0) - return false; - - QString version_out = QString::fromLatin1(out).trimmed(); - - args.clear(); - args += name; - args += "--libs"; - ret = doCommand("pkg-config", args, &out); - if(ret != 0) - return false; - - QString libs_out = QString::fromLatin1(out).trimmed(); - - args.clear(); - args += name; - args += "--cflags"; - ret = doCommand("pkg-config", args, &out); - if(ret != 0) - return false; - - QString cflags = QString::fromLatin1(out).trimmed(); - - QStringList incs_out, otherflags_out; - qc_splitcflags(cflags, &incs_out, &otherflags_out); - - *version = version_out; - *incs = incs_out; - *libs = libs_out; - *otherflags = otherflags_out.join(" "); - return true; -} - -void Conf::addDefine(const QString &str) -{ - if(DEFINES.isEmpty()) - DEFINES = str; - else - DEFINES += QString(" ") + str; - debug(QString("DEFINES += %1").arg(str)); -} - -void Conf::addLib(const QString &str) -{ - if(LIBS.isEmpty()) - LIBS = str; - else - LIBS += QString(" ") + str; - debug(QString("LIBS += %1").arg(str)); -} - -void Conf::addIncludePath(const QString &str) -{ - if(INCLUDEPATH.isEmpty()) - INCLUDEPATH = str; - else - INCLUDEPATH += QString(" ") + str; - debug(QString("INCLUDEPATH += %1").arg(str)); -} - -void Conf::addExtra(const QString &str) -{ - extra += str + '\n'; - debug(QString("extra += %1").arg(str)); -} - -//---------------------------------------------------------------------------- -// main -//---------------------------------------------------------------------------- -#include "conf4.moc" - -#ifdef HAVE_MODULES -# include"modules.cpp" -#endif - -int main() -{ - Conf *conf = new Conf; - ConfObj *o; - o = 0; -#ifdef HAVE_MODULES -# include"modules_new.cpp" -#endif - - conf->debug_enabled = (qc_getenv("QC_VERBOSE") == "Y") ? true: false; - if(conf->debug_enabled) - printf(" -> ok\n"); - else - printf("ok\n"); - - QString confCommand = qc_getenv("QC_COMMAND"); - QString proName = qc_getenv("QC_PROFILE"); - conf->qmake_path = qc_getenv("QC_QMAKE"); - conf->qmakespec = qc_getenv("QC_QMAKESPEC"); - conf->maketool = qc_getenv("QC_MAKETOOL"); - - if(conf->debug_enabled) - printf("conf command: [%s]\n", qPrintable(confCommand)); - - QString confPath = qc_findself(confCommand); - if(confPath.isEmpty()) - { - printf("Error: cannot find myself; rerun with an absolute path\n"); - return 1; - } - - QString srcdir = QFileInfo(confPath).absolutePath(); - QString builddir = QDir::current().absolutePath(); - QString proPath = QDir(srcdir).filePath(proName); - - if(conf->debug_enabled) - { - printf("conf path: [%s]\n", qPrintable(confPath)); - printf("srcdir: [%s]\n", qPrintable(srcdir)); - printf("builddir: [%s]\n", qPrintable(builddir)); - printf("profile: [%s]\n", qPrintable(proPath)); - printf("qmake path: [%s]\n", qPrintable(conf->qmake_path)); - printf("qmakespec: [%s]\n", qPrintable(conf->qmakespec)); - printf("make tool: [%s]\n", qPrintable(conf->maketool)); - printf("\n"); - } - - bool success = false; - if(conf->exec()) - { - QFile f("conf.pri"); - if(!f.open(QFile::WriteOnly | QFile::Truncate)) - { - printf("Error writing %s\n", qPrintable(f.fileName())); - return 1; - } - - QString str; - str += "# qconf\n\n"; - - QString var; - var = qc_getenv("PREFIX"); - if(!var.isEmpty()) - str += QString("PREFIX = %1\n").arg(var); - var = qc_getenv("BINDIR"); - if(!var.isEmpty()) - str += QString("BINDIR = %1\n").arg(var); - var = qc_getenv("INCDIR"); - if(!var.isEmpty()) - str += QString("INCDIR = %1\n").arg(var); - var = qc_getenv("LIBDIR"); - if(!var.isEmpty()) - str += QString("LIBDIR = %1\n").arg(var); - var = qc_getenv("DATADIR"); - if(!var.isEmpty()) - str += QString("DATADIR = %1\n").arg(var); - str += '\n'; - - if(qc_getenv("QC_STATIC") == "Y") - str += "CONFIG += staticlib\n"; - - // TODO: don't need this? - //str += "QT_PATH_PLUGINS = " + QString(qInstallPathPlugins()) + '\n'; - - if(!conf->DEFINES.isEmpty()) - str += "DEFINES += " + conf->DEFINES + '\n'; - if(!conf->INCLUDEPATH.isEmpty()) - str += "INCLUDEPATH += " + conf->INCLUDEPATH + '\n'; - if(!conf->LIBS.isEmpty()) - str += "LIBS += " + conf->LIBS + '\n'; - if(!conf->extra.isEmpty()) - str += conf->extra; - str += '\n'; - - QByteArray cs = str.toLatin1(); - f.write(cs); - f.close(); - success = true; - } - QString qmake_path = conf->qmake_path; - QString qmakespec = conf->qmakespec; - delete conf; - - if(!success) - return 1; - - // run qmake on the project file - QStringList args; - if(!qmakespec.isEmpty()) - { - args += "-spec"; - args += qmakespec; - } - args += proPath; - int ret = qc_runprogram(qmake_path, args, 0, true); - if(ret != 0) - return 1; - - return 0; -} - -EOT -cat >$1/conf4.pro </dev/null - else - $qm conf4.pro >/dev/null - fi - $MAKE clean >/dev/null 2>&1 - $MAKE >../conf.log 2>&1 -) - -if [ "$?" != "0" ]; then - rm -rf .qconftemp - if [ "$QC_VERBOSE" = "Y" ]; then - echo " -> fail" - else - echo "fail" - fi - printf "\n" - printf "Reason: There was an error compiling 'conf'. See conf.log for details.\n" - printf "\n" - show_qt_info - if [ "$QC_VERBOSE" = "Y" ]; then - echo "conf.log:" - cat conf.log - fi - exit 1; -fi - -QC_COMMAND=$0 -export QC_COMMAND -QC_PROFILE=qca.pro -export QC_PROFILE -QC_QMAKE=$qm -export QC_QMAKE -QC_QMAKESPEC=$qm_spec -export QC_QMAKESPEC -QC_MAKETOOL=$MAKE -export QC_MAKETOOL -.qconftemp/conf -ret="$?" -if [ "$ret" = "1" ]; then - rm -rf .qconftemp - echo - exit 1; -else - if [ "$ret" != "0" ]; then - rm -rf .qconftemp - if [ "$QC_VERBOSE" = "Y" ]; then - echo " -> fail" - else - echo "fail" - fi - echo - echo "Reason: Unexpected error launching 'conf'" - echo - exit 1; - fi -fi -rm -rf .qconftemp - -echo -echo "Good, your configure finished. Now run $MAKE." -echo Binary files /tmp/5eREEt0AAl/qca2-2.0.3/configure.exe and /tmp/TUoR4IBecB/qca2-2.1.0/configure.exe differ diff -Nru qca2-2.0.3/crypto.prf.cmake qca2-2.1.0/crypto.prf.cmake --- qca2-2.0.3/crypto.prf.cmake 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/crypto.prf.cmake 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,26 @@ +QCA_INCDIR = @CRYPTO_PRF_RELATIVE_PATH@@QCA_INCLUDE_INSTALL_DIR@ +QCA_LIBDIR = @CRYPTO_PRF_RELATIVE_PATH@@QCA_LIBRARY_INSTALL_DIR@ + +CONFIG *= qt + +LINKAGE = + +exists($$QCA_LIBDIR/qca.framework) { + QMAKE_CXXFLAGS += -F$$QCA_LIBDIR + LIBS *= -F$$QCA_LIBDIR + INCLUDEPATH += $$QCA_LIBDIR/qca.framework/Headers + LINKAGE = -framework qca +} + +# else, link normally +isEmpty(LINKAGE) { + INCLUDEPATH += $$QCA_INCDIR/QtCrypto + LIBS += -L$$QCA_LIBDIR + LINKAGE = -lqca + CONFIG(debug, debug|release) { + windows:LINKAGE = -lqcad + mac:LINKAGE = -lqca_debug + } +} + +LIBS += $$LINKAGE diff -Nru qca2-2.0.3/crypto.prf.in qca2-2.1.0/crypto.prf.in --- qca2-2.0.3/crypto.prf.in 2008-06-04 00:48:48.000000000 +0000 +++ qca2-2.1.0/crypto.prf.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -# prepend this file with QCA_INCDIR/QCA_LIBDIR definitions - -# NOTE: any changes made to this file need to be tracked in qcm/qca.qcm - -CONFIG *= qt - -# if we are including crypto.prf from the qca tree (and not utilizing it as -# an installed qmake CONFIG feature), then point to the tree. this allows our -# qca tree apps to build before qca itself is installed. -exists($$PWD/qca.pro) { - QCA_INCDIR = $$PWD/include - QCA_LIBDIR = $$PWD/lib -} - -LINKAGE = - -# on mac, if qca was built as a framework, link against it -mac: { - framework_dir = $$QCA_LIBDIR - exists($$framework_dir/qca.framework) { - #QMAKE_FRAMEWORKPATH *= $$framework_dir - LIBS += -F$$framework_dir - INCLUDEPATH += $$framework_dir/qca.framework/Headers - LINKAGE = -framework qca - } -} - -# else, link normally -isEmpty(LINKAGE) { - INCLUDEPATH += $$QCA_INCDIR/QtCrypto - LIBS += -L$$QCA_LIBDIR - LINKAGE = -lqca - CONFIG(debug, debug|release) { - windows:LINKAGE = -lqcad - mac:LINKAGE = -lqca_debug - } -} - -LIBS += $$LINKAGE diff -Nru qca2-2.0.3/debian/changelog qca2-2.1.0/debian/changelog --- qca2-2.0.3/debian/changelog 2014-06-11 14:54:42.000000000 +0000 +++ qca2-2.1.0/debian/changelog 2015-01-14 15:01:31.000000000 +0000 @@ -1,3 +1,25 @@ +qca2 (2.1.0-0ubuntu1) vivid; urgency=medium + + * New upstream release + + This release merges the official plugins into the main package. + + Deprecating these sources and their binaries: + - qca2-plugin-gnupg + - qca2-plugin-ossl + - qca-cyrus-sasl + + Build system was changed to git + + Docs packages was removed as the source does not build documentation + + New binary packages: + - libqca2-plugins containing all plugins + - libqca2-plugin-ossl + - libqca2-plugin-gnupg + - libqca2-plugin-cyrus-sasl + + Added transitional packages for old plugins + * Add kubuntu_ignore_filewatch_test.diff to ignore a test which fails in + buildds but not for local build + * Add kubuntu_mkspecs-dir.diff to install mkspecs to correct place + + -- Harald Sitter Sat, 22 Nov 2014 15:46:56 +0100 + qca2 (2.0.3-6) unstable; urgency=medium * Update the symbols file for gcc 4.9. Thanks to Sphinx Jiang for the diff -Nru qca2-2.0.3/debian/control qca2-2.1.0/debian/control --- qca2-2.0.3/debian/control 2014-06-11 14:53:35.000000000 +0000 +++ qca2-2.1.0/debian/control 2015-01-14 14:53:11.000000000 +0000 @@ -1,24 +1,31 @@ Source: qca2 Priority: optional Section: libs -Maintainer: Debian Qt/KDE Maintainers +Maintainer: Debian/Kubuntu Qt/KDE Maintainers Uploaders: Jan Niehusmann , Felix Geyer , Modestas Vainius -Build-Depends: debhelper (>= 9), pkg-kde-tools (>= 0.12), - libqt4-dev (>= 4.4.0), ca-certificates -Build-Conflicts: libqca2-dev, qca-dev -Standards-Version: 3.9.5 +Build-Depends: debhelper (>= 9), pkg-kde-tools (>= 0.12), cmake, pkg-config, + libqt4-dev (>= 4.4.0), ca-certificates, libsasl2-dev, libssl-dev, doxygen +Build-Conflicts: qca-dev +Standards-Version: 3.9.6 Homepage: http://delta.affinix.com/qca/ Vcs-Git: git://anonscm.debian.org/pkg-kde/kde-req/qca2.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-kde/kde-req/qca2.git +Package: libqca2-plugins +Architecture: any +Multi-Arch: same +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: QCA plugins for libqca2 + This plugin provides cryptographic as well as helper plugins for Qt + Cryptographic Architecture (QCA). + Package: libqca2 Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} Depends: ${shlibs:Depends}, ${misc:Depends} -Recommends: ca-certificates -Suggests: libqca2-plugin-cyrus-sasl, libqca2-plugin-gnupg, libqca2-plugin-ossl +Recommends: ca-certificates, libqca2-plugins Description: libraries for the Qt Cryptographic Architecture The Qt Cryptographic Architecture (QCA) provides a straightforward and cross- platform API for a range of cryptographic features, including SSL/TLS, @@ -57,8 +64,7 @@ Section: libdevel Architecture: any Depends: ${misc:Depends}, libqca2 (= ${binary:Version}), libqt4-dev (>= 4.4.0~) -Suggests: libqca2-doc (= ${source:Version}) -Conflicts: qca-dev +Conflicts: qca-dev, libqca-qt5-2-dev Description: development files for the Qt Cryptographic Architecture The Qt Cryptographic Architecture (QCA) provides a straightforward and cross- platform API for a range of cryptographic features, including SSL/TLS, @@ -67,16 +73,28 @@ This package contains development files for building software that uses the Qt Cryptographic Architecture. -Package: libqca2-doc -Section: doc +# Transitional packages can be removed no sooner than May 2016. +# Next Kubuntu LTS is 16.04. +Package: libqca2-plugin-cyrus-sasl +Depends: libqca2-plugins, ${misc:Depends} Architecture: all -Depends: ${misc:Depends} -Recommends: qt4-doc -Suggests: libqca2-dev (>= ${source:Version}) -Description: API documentation for the Qt Cryptographic Architecture - The Qt Cryptographic Architecture (QCA) provides a straightforward and cross- - platform API for a range of cryptographic features, including SSL/TLS, - X.509 certificates, SASL, OpenPGP, S/MIME CMS, and smart cards. - . - This package contains documentation for developers working with the - Qt Cryptographic Architecture. +Priority: extra +Section: oldlibs +Description: transitional dummy package + This is a transitional dummy package. It can safely be removed. + +Package: libqca2-plugin-gnupg +Depends: libqca2-plugins, ${misc:Depends} +Architecture: all +Priority: extra +Section: oldlibs +Description: transitional dummy package + This is a transitional dummy package. It can safely be removed. + +Package: libqca2-plugin-ossl +Depends: libqca2-plugins, ${misc:Depends} +Architecture: all +Priority: extra +Section: oldlibs +Description: transitional dummy package + This is a transitional dummy package. It can safely be removed. diff -Nru qca2-2.0.3/debian/libqca2-dev.install qca2-2.1.0/debian/libqca2-dev.install --- qca2-2.0.3/debian/libqca2-dev.install 2012-05-20 09:04:00.000000000 +0000 +++ qca2-2.1.0/debian/libqca2-dev.install 2014-11-26 13:07:01.000000000 +0000 @@ -1,5 +1,5 @@ usr/include/QtCrypto -usr/lib/*/libqca.prl usr/lib/*/libqca.so +usr/lib/*/cmake/ +usr/share/qt4/mkspecs/mkspecs/features/crypto.prf usr/lib/*/pkgconfig/qca2.pc -usr/share/qt4/mkspecs/features/crypto.prf diff -Nru qca2-2.0.3/debian/libqca2-plugins.install qca2-2.1.0/debian/libqca2-plugins.install --- qca2-2.0.3/debian/libqca2-plugins.install 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/debian/libqca2-plugins.install 2014-11-26 13:07:01.000000000 +0000 @@ -0,0 +1,6 @@ +usr/lib/*/qca/crypto/libqca-gnupg.so +usr/lib/*/qca/crypto/libqca-cyrus-sasl.so +usr/lib/*/qca/crypto/libqca-gnupg.so +usr/lib/*/qca/crypto/libqca-logger.so +usr/lib/*/qca/crypto/libqca-softstore.so +usr/lib/*/qca/crypto/libqca-ossl.so diff -Nru qca2-2.0.3/debian/libqca2-plugins.lintian-overrides qca2-2.1.0/debian/libqca2-plugins.lintian-overrides --- qca2-2.0.3/debian/libqca2-plugins.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/debian/libqca2-plugins.lintian-overrides 2014-11-28 14:05:32.000000000 +0000 @@ -0,0 +1,4 @@ +# only contains plugins +libqca2-plugins: pkg-has-shlibs-control-file-but-no-actual-shared-libs +libqca2-plugins: postinst-has-useless-call-to-ldconfig +libqca2-plugins: postrm-has-useless-call-to-ldconfig diff -Nru qca2-2.0.3/debian/libqca2.symbols qca2-2.1.0/debian/libqca2.symbols --- qca2-2.0.3/debian/libqca2.symbols 2014-06-11 14:44:59.000000000 +0000 +++ qca2-2.1.0/debian/libqca2.symbols 2014-11-28 14:05:32.000000000 +0000 @@ -1,12 +1,77 @@ -# SymbolsHelper-Confirmed: 2.0.3 alpha amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc ppc64 s390 s390x sh4 sparc +# SymbolsHelper-Confirmed: 2.1.0+git20141127.0221+15.04 amd64 i386 libqca.so.2 libqca2 #MINVER# * Build-Depends-Package: libqca2-dev _Z10qcaVersionv@Base 2.0.2 + _Z13qcaVersionStrv@Base 2.1.0+git20141126.2258 + (optional=templinst)_Z13qvariant_castI5QListIN3QCA13KeyStoreEntry4TypeEEET_RK8QVariant@Base 2.1.0 + (optional=templinst)_Z13qvariant_castI5QListIN3QCA13KeyStoreEntryEEET_RK8QVariant@Base 2.1.0 + (optional=templinst)_Z13qvariant_castIN3QCA6PGPKeyEET_RK8QVariant@Base 2.1.0 + _Z15qcaMajorVersionv@Base 2.1.0+git20141126.2258 + _Z15qcaMinorVersionv@Base 2.1.0+git20141126.2258 + _Z15qcaPatchVersionv@Base 2.1.0+git20141126.2258 _Z15qca_secure_freePv@Base 2.0.2 + (optional=templinst)_Z16qVariantSetValueIN3QCA11CertificateEEvR8QVariantRKT_@Base 2.0.3 + (optional=templinst)_Z16qVariantSetValueIN3QCA3CRLEEvR8QVariantRKT_@Base 2.0.3 + (optional=templinst)_Z16qVariantSetValueIN3QCA6PGPKeyEEvR8QVariantRKT_@Base 2.0.3 + (optional=templinst)_Z16qVariantSetValueIN3QCA9KeyBundleEEvR8QVariantRKT_@Base 2.0.3 _Z16qca_secure_alloci@Base 2.0.2 + (optional=templinst)_Z17qRegisterMetaTypeIN3QCA11SecureArrayEEiPKcPT_@Base 2.1.0 _Z18qca_secure_reallocPvi@Base 2.0.2 - (optional=external)_ZN15QBasicAtomicInt3refEv@Base 2.0.3 - (optional=external)_ZN15QBasicAtomicInt5derefEv@Base 2.0.3 + (optional=templinst)_Z21qMetaTypeDeleteHelperI5QListI8QVariantEEvPT_@Base 2.1.0 + (optional=templinst)_Z21qMetaTypeDeleteHelperI5QListIN3QCA13KeyStoreEntry4TypeEEEvPT_@Base 2.1.0 + (optional=templinst)_Z21qMetaTypeDeleteHelperI5QListIN3QCA13KeyStoreEntryEEEvPT_@Base 2.1.0 + (optional=templinst)_Z21qMetaTypeDeleteHelperI8QVariantEvPT_@Base 2.1.0 + (optional=templinst)_Z21qMetaTypeDeleteHelperIN3QCA11CertificateEEvPT_@Base 2.1.0 + (optional=templinst)_Z21qMetaTypeDeleteHelperIN3QCA11SecureArrayEEvPT_@Base 2.1.0 + (optional=templinst)_Z21qMetaTypeDeleteHelperIN3QCA13KeyStoreEntryEEvPT_@Base 2.1.0 + (optional=templinst)_Z21qMetaTypeDeleteHelperIN3QCA3CRLEEvPT_@Base 2.1.0 + (optional=templinst)_Z21qMetaTypeDeleteHelperIN3QCA5EventEEvPT_@Base 2.1.0 + (optional=templinst)_Z21qMetaTypeDeleteHelperIN3QCA6PGPKeyEEvPT_@Base 2.1.0 + (optional=templinst)_Z21qMetaTypeDeleteHelperIN3QCA9KeyBundleEEvPT_@Base 2.1.0 + _Z23qStringComparisonHelperRK7QStringPKc@Base 2.1.0 + (optional=templinst)_Z24qMetaTypeConstructHelperI5QListI8QVariantEEPvPKT_@Base 2.1.0 + (optional=templinst)_Z24qMetaTypeConstructHelperI5QListIN3QCA13KeyStoreEntry4TypeEEEPvPKT_@Base 2.1.0 + (optional=templinst)_Z24qMetaTypeConstructHelperI5QListIN3QCA13KeyStoreEntryEEEPvPKT_@Base 2.1.0 + (optional=templinst)_Z24qMetaTypeConstructHelperI8QVariantEPvPKT_@Base 2.1.0 + (optional=templinst)_Z24qMetaTypeConstructHelperIN3QCA11CertificateEEPvPKT_@Base 2.1.0 + (optional=templinst)_Z24qMetaTypeConstructHelperIN3QCA11SecureArrayEEPvPKT_@Base 2.1.0 + (optional=templinst)_Z24qMetaTypeConstructHelperIN3QCA13KeyStoreEntryEEPvPKT_@Base 2.1.0 + (optional=templinst)_Z24qMetaTypeConstructHelperIN3QCA3CRLEEPvPKT_@Base 2.1.0 + (optional=templinst)_Z24qMetaTypeConstructHelperIN3QCA5EventEEPvPKT_@Base 2.1.0 + (optional=templinst)_Z24qMetaTypeConstructHelperIN3QCA6PGPKeyEEPvPKT_@Base 2.1.0 + (optional=templinst)_Z24qMetaTypeConstructHelperIN3QCA9KeyBundleEEPvPKT_@Base 2.1.0 + _ZN10QByteArrayD1Ev@Base 2.1.0+git20141126.2258 + _ZN10QByteArrayD2Ev@Base 2.1.0+git20141126.2258 + (optional=templinst)_ZN11QMetaTypeIdIN3QCA11CertificateEE14qt_metatype_idEv@Base 2.0.3 + (optional=templinst)_ZN11QMetaTypeIdIN3QCA3CRLEE14qt_metatype_idEv@Base 2.0.3 + (optional=templinst)_ZN11QMetaTypeIdIN3QCA9KeyBundleEE14qt_metatype_idEv@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA10BigInteger7PrivateEE13detach_helperEv@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA10BigInteger7PrivateEED1Ev@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA10BigInteger7PrivateEED2Ev@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA11Certificate7PrivateEE13detach_helperEv@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA11Certificate7PrivateEED1Ev@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA11Certificate7PrivateEED2Ev@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA12KeyStoreInfo7PrivateEED1Ev@Base 2.1.0 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA12KeyStoreInfo7PrivateEED2Ev@Base 2.1.0 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA14ConstraintType7PrivateEED1Ev@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA14ConstraintType7PrivateEED2Ev@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA16SecureMessageKey7PrivateEE13detach_helperEv@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA18CertificateRequest7PrivateEED1Ev@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA18CertificateRequest7PrivateEED2Ev@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA19CertificateInfoPair7PrivateEE13detach_helperEv@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA19CertificateInfoType7PrivateEED1Ev@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA19CertificateInfoType7PrivateEED2Ev@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA21CertificateCollection7PrivateEE13detach_helperEv@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA22SecureMessageSignature7PrivateEE13detach_helperEv@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA5Event7PrivateEE13detach_helperEv@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA9Algorithm7PrivateEE13detach_helperEv@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA9Algorithm7PrivateEED1Ev@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA9Algorithm7PrivateEED2Ev@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA9KeyBundle7PrivateEE13detach_helperEv@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA9KeyBundle7PrivateEED1Ev@Base 2.0.3 + (optional=templinst)_ZN18QSharedDataPointerIN3QCA9KeyBundle7PrivateEED2Ev@Base 2.0.3 + (optional=templinst)_ZN20QGlobalStaticDeleterI6QMutexED1Ev@Base 2.1.0 + (optional=templinst)_ZN20QGlobalStaticDeleterI6QMutexED2Ev@Base 2.1.0 _ZN3QCA10BigInteger10fromStringERK7QString@Base 2.0.2 _ZN3QCA10BigInteger9fromArrayERKNS_11SecureArrayE@Base 2.0.2 _ZN3QCA10BigIntegerC1EPKc@Base 2.0.2 @@ -33,38 +98,25 @@ _ZN3QCA10CRLContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA10CRLContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA10CRLContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA10CRLContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA10CRLContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA10CRLContextD2Ev@Base 2.0.3 _ZN3QCA10CSRContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA10CSRContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA10CSRContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA10CSRContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA10CSRContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA10CSRContextD2Ev@Base 2.0.3 _ZN3QCA10DSAContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA10DSAContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA10DSAContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA10DSAContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA10DSAContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA10DSAContextD2Ev@Base 2.0.3 + _ZN3QCA10Getter_PBE7getListEPNS_8ProviderE@Base 2.1.0+git20141126.2258 _ZN3QCA10KDFContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA10KDFContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA10KDFContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA10KDFContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA10KDFContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA10KDFContextD2Ev@Base 2.0.3 _ZN3QCA10MACContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA10MACContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA10MACContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA10MACContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA10MACContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA10MACContextD2Ev@Base 2.0.3 _ZN3QCA10PrivateKey11fromPEMFileERK7QStringRKNS_11SecureArrayEPNS_13ConvertResultES3_@Base 2.0.2 _ZN3QCA10PrivateKey11signMessageERKNS_12MemoryRegionENS_18SignatureAlgorithmENS_15SignatureFormatE@Base 2.0.2 _ZN3QCA10PrivateKey22supportedPBEAlgorithmsERK7QString@Base 2.0.2 _ZN3QCA10PrivateKey6updateERKNS_12MemoryRegionE@Base 2.0.2 _ZN3QCA10PrivateKey7decryptERKNS_11SecureArrayEPS1_NS_19EncryptionAlgorithmE@Base 2.0.2 + _ZN3QCA10PrivateKey7encryptERKNS_11SecureArrayENS_19EncryptionAlgorithmE@Base 2.1.0+git20141126.2258 _ZN3QCA10PrivateKey7fromDERERKNS_11SecureArrayES3_PNS_13ConvertResultERK7QString@Base 2.0.2 _ZN3QCA10PrivateKey7fromPEMERK7QStringRKNS_11SecureArrayEPNS_13ConvertResultES3_@Base 2.0.2 _ZN3QCA10PrivateKey9deriveKeyERKNS_9PublicKeyE@Base 2.0.2 @@ -85,18 +137,12 @@ _ZN3QCA10RSAContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA10RSAContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA10RSAContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA10RSAContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA10RSAContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA10RSAContextD2Ev@Base 2.0.3 _ZN3QCA10SMSContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA10SMSContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA10SMSContext14setPrivateKeysERK5QListINS_16SecureMessageKeyEE@Base 2.0.2 _ZN3QCA10SMSContext16staticMetaObjectE@Base 2.0.2 _ZN3QCA10SMSContext22setTrustedCertificatesERKNS_21CertificateCollectionE@Base 2.0.2 _ZN3QCA10SMSContext24setUntrustedCertificatesERKNS_21CertificateCollectionE@Base 2.0.2 - (optional)_ZN3QCA10SMSContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA10SMSContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA10SMSContextD2Ev@Base 2.0.3 _ZN3QCA10SyncThread11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA10SyncThread11qt_metacastEPKc@Base 2.0.2 _ZN3QCA10SyncThread16staticMetaObjectE@Base 2.0.2 @@ -117,17 +163,12 @@ _ZN3QCA10SyncThreadD0Ev@Base 2.0.2 _ZN3QCA10SyncThreadD1Ev@Base 2.0.2 _ZN3QCA10SyncThreadD2Ev@Base 2.0.2 - (optional)_ZN3QCA10TLSContext11SessionInfoD1Ev@Base 2.0.3 - (optional)_ZN3QCA10TLSContext11SessionInfoD2Ev@Base 2.0.3 _ZN3QCA10TLSContext11dtlsTimeoutEv@Base 2.0.2 _ZN3QCA10TLSContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA10TLSContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA10TLSContext12resultsReadyEv@Base 2.0.2 _ZN3QCA10TLSContext16staticMetaObjectE@Base 2.0.2 _ZN3QCA10TLSContext6setMTUEi@Base 2.0.2 - (optional)_ZN3QCA10TLSContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA10TLSContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA10TLSContextD2Ev@Base 2.0.3 _ZN3QCA10TLSSessionC1ERKS0_@Base 2.0.2 _ZN3QCA10TLSSessionC1Ev@Base 2.0.2 _ZN3QCA10TLSSessionC2ERKS0_@Base 2.0.2 @@ -145,9 +186,16 @@ _ZN3QCA10TextFilter6encodeERKNS_12MemoryRegionE@Base 2.0.2 _ZN3QCA10TextFilterC1ENS_9DirectionE@Base 2.0.2 _ZN3QCA10TextFilterC2ENS_9DirectionE@Base 2.0.2 - (optional)_ZN3QCA10TextFilterD0Ev@Base 2.0.3 - (optional)_ZN3QCA10TextFilterD1Ev@Base 2.0.3 - (optional)_ZN3QCA10TextFilterD2Ev@Base 2.0.3 + _ZN3QCA10TimerFixer11eventFilterEP7QObjectP6QEvent@Base 2.1.0+git20141126.2258 + _ZN3QCA10TimerFixer11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA10TimerFixer11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA10TimerFixer16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA10TimerFixer5eventEP6QEvent@Base 2.1.0+git20141126.2258 + _ZN3QCA10TimerFixerC1EP7QObjectPS0_@Base 2.1.0+git20141126.2258 + _ZN3QCA10TimerFixerC2EP7QObjectPS0_@Base 2.1.0+git20141126.2258 + _ZN3QCA10TimerFixerD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA10TimerFixerD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA10TimerFixerD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA10TokenAsker11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA10TokenAsker11qt_metacastEPKc@Base 2.0.2 _ZN3QCA10TokenAsker13responseReadyEv@Base 2.0.2 @@ -155,6 +203,7 @@ _ZN3QCA10TokenAsker16staticMetaObjectE@Base 2.0.2 _ZN3QCA10TokenAsker3askERKNS_12KeyStoreInfoERKNS_13KeyStoreEntryEPv@Base 2.0.2 _ZN3QCA10TokenAsker6cancelEv@Base 2.0.2 + _ZN3QCA10TokenAsker7Private17emitResponseReadyEv@Base 2.1.0+git20141126.2258 _ZN3QCA10TokenAsker7PrivateD0Ev@Base 2.0.3 _ZN3QCA10TokenAsker7PrivateD1Ev@Base 2.0.3 _ZN3QCA10TokenAsker7PrivateD2Ev@Base 2.0.3 @@ -164,18 +213,18 @@ _ZN3QCA10TokenAskerD1Ev@Base 2.0.2 _ZN3QCA10TokenAskerD2Ev@Base 2.0.2 _ZN3QCA10arrayToHexERK10QByteArray@Base 2.0.2 + _ZN3QCA10botan_initEib@Base 2.1.0+git20141126.2258 + _ZN3QCA10getContextERK7QStringPNS_8ProviderE@Base 2.1.0+git20141126.2258 + _ZN3QCA10getContextERK7QStringS2_@Base 2.1.0+git20141126.2258 _ZN3QCA10hexToArrayERK7QString@Base 2.0.2 + _ZN3QCA10md5_appendEPNS_11md5_state_tEPKhi@Base 2.1.0+git20141126.2258 + _ZN3QCA10md5_finishEPNS_11md5_state_tEPh@Base 2.1.0+git20141126.2258 _ZN3QCA10setAppNameERK7QString@Base 2.0.2 _ZN3QCA11CertContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA11CertContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA11CertContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA11CertContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA11CertContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA11CertContextD2Ev@Base 2.0.3 _ZN3QCA11Certificate11fromPEMFileERK7QStringPNS_13ConvertResultES3_@Base 2.0.2 _ZN3QCA11Certificate6changeEPNS_11CertContextE@Base 2.0.2 - (optional)_ZN3QCA11Certificate7PrivateD1Ev@Base 2.0.3 - (optional)_ZN3QCA11Certificate7PrivateD2Ev@Base 2.0.3 _ZN3QCA11Certificate7fromDERERK10QByteArrayPNS_13ConvertResultERK7QString@Base 2.0.2 _ZN3QCA11Certificate7fromPEMERK7QStringPNS_13ConvertResultES3_@Base 2.0.2 _ZN3QCA11CertificateC1ERK7QString@Base 2.0.2 @@ -199,18 +248,18 @@ _ZN3QCA11DHPublicKeyD0Ev@Base 2.0.3 _ZN3QCA11DHPublicKeyD1Ev@Base 2.0.3 _ZN3QCA11DHPublicKeyD2Ev@Base 2.0.3 + _ZN3QCA11EventGlobal3askEi@Base 2.1.0+git20141127.0009 + _ZN3QCA11EventGlobal6rejectEi@Base 2.1.0+git20141126.2258 + _ZN3QCA11Getter_Type7getListEPNS_8ProviderE@Base 2.1.0+git20141126.2258 + _ZN3QCA11HandlerBase11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA11HandlerBase11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA11HandlerBase16staticMetaObjectE@Base 2.1.0+git20141126.2258 _ZN3QCA11HashContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA11HashContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA11HashContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA11HashContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA11HashContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA11HashContextD2Ev@Base 2.0.3 _ZN3QCA11InfoContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA11InfoContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA11InfoContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA11InfoContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA11InfoContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA11InfoContextD2Ev@Base 2.0.3 _ZN3QCA11InitializerC1ENS_10MemoryModeEi@Base 2.0.2 _ZN3QCA11InitializerC2ENS_10MemoryModeEi@Base 2.0.2 _ZN3QCA11InitializerD1Ev@Base 2.0.2 @@ -222,9 +271,6 @@ _ZN3QCA11PKeyContext14privateFromDERERKNS_11SecureArrayES3_@Base 2.0.2 _ZN3QCA11PKeyContext14privateFromPEMERK7QStringRKNS_11SecureArrayE@Base 2.0.2 _ZN3QCA11PKeyContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA11PKeyContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA11PKeyContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA11PKeyContextD2Ev@Base 2.0.3 _ZN3QCA11QPipeDevice11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA11QPipeDevice11qt_metacastEPKc@Base 2.0.2 _ZN3QCA11QPipeDevice14setInheritableEb@Base 2.0.2 @@ -238,6 +284,9 @@ _ZN3QCA11QPipeDevice7Private11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA11QPipeDevice7Private11qt_metacastEPKc@Base 2.0.2 _ZN3QCA11QPipeDevice7Private16staticMetaObjectE@Base 2.0.2 + _ZN3QCA11QPipeDevice7PrivateD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA11QPipeDevice7PrivateD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA11QPipeDevice7PrivateD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA11QPipeDevice7releaseEv@Base 2.0.2 _ZN3QCA11QPipeDeviceC1EP7QObject@Base 2.0.2 _ZN3QCA11QPipeDeviceC2EP7QObject@Base 2.0.2 @@ -248,11 +297,6 @@ _ZN3QCA11SASLContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA11SASLContext12resultsReadyEv@Base 2.0.2 _ZN3QCA11SASLContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA11SASLContext8HostPortD1Ev@Base 2.0.3 - (optional)_ZN3QCA11SASLContext8HostPortD2Ev@Base 2.0.3 - (optional)_ZN3QCA11SASLContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA11SASLContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA11SASLContextD2Ev@Base 2.0.3 _ZN3QCA11SecureArray2atEi@Base 2.0.2 _ZN3QCA11SecureArray3setERK10QByteArray@Base 2.0.2 _ZN3QCA11SecureArray3setERKS0_@Base 2.0.2 @@ -290,15 +334,21 @@ _ZN3QCA11SecureLayer9readyReadEv@Base 2.0.2 _ZN3QCA11SecureLayerC1EP7QObject@Base 2.0.2 _ZN3QCA11SecureLayerC2EP7QObject@Base 2.0.2 - (optional)_ZN3QCA11SecureLayerD0Ev@Base 2.0.3 - (optional)_ZN3QCA11SecureLayerD1Ev@Base 2.0.3 - (optional)_ZN3QCA11SecureLayerD2Ev@Base 2.0.3 + _ZN3QCA11arrayToFileERK7QStringRK10QByteArray@Base 2.1.0+git20141126.2258 _ZN3QCA11emsa3EncodeERK7QStringRK10QByteArrayi@Base 2.0.2 _ZN3QCA11getPropertyERK7QString@Base 2.0.2 + _ZN3QCA11get_hash_idERK7QString@Base 2.1.0+git20141126.2258 _ZN3QCA11isSupportedEPKcRK7QString@Base 2.0.2 _ZN3QCA11isSupportedERK11QStringListRK7QString@Base 2.0.2 + _ZN3QCA11md5_state_taSERKS0_@Base 2.1.0+git20141126.2258 + _ZN3QCA11pluginPathsEv@Base 2.1.0+git20141126.2258 _ZN3QCA11setPropertyERK7QStringRK8QVariant@Base 2.0.2 _ZN3QCA11systemStoreEv@Base 2.0.2 + _ZN3QCA12AskerPrivate11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA12AskerPrivate11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA12AskerPrivate12set_acceptedERKNS_11SecureArrayE@Base 2.1.0+git20141126.2258 + _ZN3QCA12AskerPrivate12set_rejectedEv@Base 2.1.0+git20141126.2258 + _ZN3QCA12AskerPrivate16staticMetaObjectE@Base 2.1.0+git20141126.2258 _ZN3QCA12BasicContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA12BasicContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA12BasicContext16staticMetaObjectE@Base 2.0.2 @@ -335,6 +385,7 @@ _ZN3QCA12EventHandler7Private11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA12EventHandler7Private11qt_metacastEPKc@Base 2.0.2 _ZN3QCA12EventHandler7Private16staticMetaObjectE@Base 2.0.2 + _ZN3QCA12EventHandler7Private3askEiRKNS_5EventE@Base 2.1.0+git20141126.2258 _ZN3QCA12EventHandler7PrivateD0Ev@Base 2.0.3 _ZN3QCA12EventHandler7PrivateD1Ev@Base 2.0.3 _ZN3QCA12EventHandler7PrivateD2Ev@Base 2.0.3 @@ -352,6 +403,9 @@ _ZN3QCA12KeyGenerator7Private11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA12KeyGenerator7Private11qt_metacastEPKc@Base 2.0.2 _ZN3QCA12KeyGenerator7Private16staticMetaObjectE@Base 2.0.2 + _ZN3QCA12KeyGenerator7PrivateD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA12KeyGenerator7PrivateD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA12KeyGenerator7PrivateD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA12KeyGenerator8createDHERKNS_7DLGroupERK7QString@Base 2.0.2 _ZN3QCA12KeyGenerator8finishedEv@Base 2.0.2 _ZN3QCA12KeyGenerator9createDSAERKNS_7DLGroupERK7QString@Base 2.0.2 @@ -402,6 +456,7 @@ _ZN3QCA12RSAPublicKeyD0Ev@Base 2.0.3 _ZN3QCA12RSAPublicKeyD1Ev@Base 2.0.3 _ZN3QCA12RSAPublicKeyD2Ev@Base 2.0.3 + _ZN3QCA12SHA1_CONTEXTaSERKS0_@Base 2.1.0+git20141126.2258 _ZN3QCA12SymmetricKey12isWeakDESKeyEv@Base 2.0.2 _ZN3QCA12SymmetricKeyC1ERK10QByteArray@Base 2.0.2 _ZN3QCA12SymmetricKeyC1ERKNS_11SecureArrayE@Base 2.0.2 @@ -411,8 +466,6 @@ _ZN3QCA12SymmetricKeyC2ERKNS_11SecureArrayE@Base 2.0.2 _ZN3QCA12SymmetricKeyC2Ei@Base 2.0.2 _ZN3QCA12SymmetricKeyC2Ev@Base 2.0.2 - (optional)_ZN3QCA12SymmetricKeyD1Ev@Base 2.0.3 - (optional)_ZN3QCA12SymmetricKeyD2Ev@Base 2.0.3 _ZN3QCA12Synchronizer11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA12Synchronizer11qt_metacastEPKc@Base 2.0.2 _ZN3QCA12Synchronizer12conditionMetEv@Base 2.0.2 @@ -421,18 +474,24 @@ _ZN3QCA12Synchronizer7Private11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA12Synchronizer7Private11qt_metacastEPKc@Base 2.0.2 _ZN3QCA12Synchronizer7Private16staticMetaObjectE@Base 2.0.2 + _ZN3QCA12Synchronizer7Private3runEv@Base 2.1.0+git20141126.2258 + _ZN3QCA12Synchronizer7PrivateD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA12Synchronizer7PrivateD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA12Synchronizer7PrivateD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA12SynchronizerC1EP7QObject@Base 2.0.2 _ZN3QCA12SynchronizerC2EP7QObject@Base 2.0.2 _ZN3QCA12SynchronizerD0Ev@Base 2.0.2 _ZN3QCA12SynchronizerD1Ev@Base 2.0.2 _ZN3QCA12SynchronizerD2Ev@Base 2.0.2 + _ZN3QCA12allProvidersEv@Base 2.1.0+git20141126.2258 + _ZN3QCA12botan_deinitEv@Base 2.1.0+git20141126.2258 _ZN3QCA12findProviderERK7QString@Base 2.0.2 + _ZN3QCA12skip_pluginsEPNS_8ProviderE@Base 2.1.0+git20141126.2258 + _ZN3QCA12stringToFileERK7QStringS2_@Base 2.1.0+git20141126.2258 + _ZN3QCA12truncate_logERK7QStringi@Base 2.1.0+git20141126.2258 _ZN3QCA13CipherContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA13CipherContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA13CipherContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA13CipherContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA13CipherContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA13CipherContextD2Ev@Base 2.0.3 _ZN3QCA13ConsolePrompt11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA13ConsolePrompt11qt_metacastEPKc@Base 2.0.2 _ZN3QCA13ConsolePrompt15waitForFinishedEv@Base 2.0.2 @@ -440,6 +499,9 @@ _ZN3QCA13ConsolePrompt7Private11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA13ConsolePrompt7Private11qt_metacastEPKc@Base 2.0.2 _ZN3QCA13ConsolePrompt7Private16staticMetaObjectE@Base 2.0.2 + _ZN3QCA13ConsolePrompt7PrivateD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsolePrompt7PrivateD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsolePrompt7PrivateD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA13ConsolePrompt7getCharEv@Base 2.0.2 _ZN3QCA13ConsolePrompt8finishedEv@Base 2.0.2 _ZN3QCA13ConsolePrompt9getHiddenERK7QString@Base 2.0.2 @@ -448,6 +510,28 @@ _ZN3QCA13ConsolePromptD0Ev@Base 2.0.2 _ZN3QCA13ConsolePromptD1Ev@Base 2.0.2 _ZN3QCA13ConsolePromptD2Ev@Base 2.0.2 + _ZN3QCA13ConsoleThread11inputClosedEv@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleThread11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleThread11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleThread12bytesWrittenEi@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleThread12outputClosedEv@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleThread16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleThread5atEndEv@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleThread7atStartEv@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleThread9readyReadEv@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleThreadD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleThreadD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleThreadD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleWorker11inputClosedEv@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleWorker11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleWorker11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleWorker12bytesWrittenEi@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleWorker12outputClosedEv@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleWorker16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleWorker9readyReadEv@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleWorkerD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleWorkerD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA13ConsoleWorkerD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA13DSAPrivateKeyC1ERKNS_7DLGroupERKNS_10BigIntegerES6_RK7QString@Base 2.0.2 _ZN3QCA13DSAPrivateKeyC1Ev@Base 2.0.2 _ZN3QCA13DSAPrivateKeyC2ERKNS_7DLGroupERKNS_10BigIntegerES6_RK7QString@Base 2.0.2 @@ -455,6 +539,7 @@ _ZN3QCA13DSAPrivateKeyD0Ev@Base 2.0.3 _ZN3QCA13DSAPrivateKeyD1Ev@Base 2.0.3 _ZN3QCA13DSAPrivateKeyD2Ev@Base 2.0.3 + _ZN3QCA13Getter_IOType7getListEPNS_8ProviderE@Base 2.1.0+git20141126.2258 _ZN3QCA13KeyStoreEntry10fromStringERK7QString@Base 2.0.2 _ZN3QCA13KeyStoreEntry12ensureAccessEv@Base 2.0.2 _ZN3QCA13KeyStoreEntry15ensureAvailableEv@Base 2.0.2 @@ -471,15 +556,9 @@ _ZN3QCA13PGPKeyContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA13PGPKeyContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA13PGPKeyContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA13PGPKeyContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA13PGPKeyContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA13PGPKeyContextD2Ev@Base 2.0.3 _ZN3QCA13PKCS12Context11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA13PKCS12Context11qt_metacastEPKc@Base 2.0.2 _ZN3QCA13PKCS12Context16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA13PKCS12ContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA13PKCS12ContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA13PKCS12ContextD2Ev@Base 2.0.3 _ZN3QCA13PasswordAsker11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA13PasswordAsker11qt_metacastEPKc@Base 2.0.2 _ZN3QCA13PasswordAsker13responseReadyEv@Base 2.0.2 @@ -488,6 +567,7 @@ _ZN3QCA13PasswordAsker3askENS_5Event13PasswordStyleERK7QStringPv@Base 2.0.2 _ZN3QCA13PasswordAsker3askENS_5Event13PasswordStyleERKNS_12KeyStoreInfoERKNS_13KeyStoreEntryEPv@Base 2.0.2 _ZN3QCA13PasswordAsker6cancelEv@Base 2.0.2 + _ZN3QCA13PasswordAsker7Private17emitResponseReadyEv@Base 2.1.0+git20141126.2258 _ZN3QCA13PasswordAsker7PrivateD0Ev@Base 2.0.3 _ZN3QCA13PasswordAsker7PrivateD1Ev@Base 2.0.3 _ZN3QCA13PasswordAsker7PrivateD2Ev@Base 2.0.3 @@ -506,9 +586,6 @@ _ZN3QCA13RandomContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA13RandomContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA13RandomContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA13RandomContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA13RandomContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA13RandomContextD2Ev@Base 2.0.3 _ZN3QCA13SecureMessage10setSignersERK5QListINS_16SecureMessageKeyEE@Base 2.0.2 _ZN3QCA13SecureMessage11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA13SecureMessage11qt_metacastEPKc@Base 2.0.2 @@ -543,7 +620,15 @@ _ZN3QCA13SecureMessageD0Ev@Base 2.0.2 _ZN3QCA13SecureMessageD1Ev@Base 2.0.2 _ZN3QCA13SecureMessageD2Ev@Base 2.0.2 + _ZN3QCA13arrayFromFileERK7QStringP10QByteArray@Base 2.1.0+git20141126.2258 + _ZN3QCA13global_randomEv@Base 2.1.0+git20141126.2258 _ZN3QCA13orderedDNOnlyERKNS_22CertificateInfoOrderedE@Base 2.0.2 + _ZN3QCA14ConsolePrivate11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA14ConsolePrivate11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA14ConsolePrivate16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA14ConsolePrivateD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA14ConsolePrivateD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA14ConsolePrivateD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA14ConstraintTypeC1ENS_19ConstraintTypeKnownE@Base 2.0.2 _ZN3QCA14ConstraintTypeC1ERK7QStringNS0_7SectionE@Base 2.0.2 _ZN3QCA14ConstraintTypeC1ERKS0_@Base 2.0.2 @@ -559,18 +644,40 @@ _ZN3QCA14DLGroupContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA14DLGroupContext16staticMetaObjectE@Base 2.0.2 _ZN3QCA14DLGroupContext8finishedEv@Base 2.0.2 - (optional)_ZN3QCA14DLGroupContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA14DLGroupContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA14DLGroupContextD2Ev@Base 2.0.3 + _ZN3QCA14KeyStoreThread11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA14KeyStoreThread11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA14KeyStoreThread16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA14KeyStoreThread5atEndEv@Base 2.1.0+git20141126.2258 + _ZN3QCA14KeyStoreThread7atStartEv@Base 2.1.0+git20141126.2258 + _ZN3QCA14KeyStoreThreadD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA14KeyStoreThreadD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA14KeyStoreThreadD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA14MessageContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA14MessageContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA14MessageContext16staticMetaObjectE@Base 2.0.2 _ZN3QCA14MessageContext7updatedEv@Base 2.0.2 - (optional)_ZN3QCA14MessageContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA14MessageContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA14MessageContextD2Ev@Base 2.0.3 + _ZN3QCA14ask_passphraseERK7QStringPvPNS_11SecureArrayE@Base 2.1.0+git20141126.2258 _ZN3QCA14insertProviderEPNS_8ProviderEi@Base 2.0.2 + _ZN3QCA14providerForPBEENS_12PBEAlgorithmENS_4PKey4TypeEPKNS_11PKeyContextE@Base 2.1.0+git20141126.2258 _ZN3QCA14scanForPluginsEv@Base 2.0.2 + _ZN3QCA14stringFromFileERK7QStringPS0_@Base 2.1.0+git20141126.2258 + _ZN3QCA14unloadProviderERK7QString@Base 2.1.0+git20141126.2258 + _ZN3QCA15DefaultProvider13configChangedERK4QMapI7QString8QVariantE@Base 2.1.0+git20141126.2258 + _ZN3QCA15DefaultProvider13createContextERK7QString@Base 2.1.0+git20141126.2258 + _ZN3QCA15DefaultProvider4initEv@Base 2.1.0+git20141126.2258 + _ZN3QCA15DefaultProviderD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15DefaultProviderD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15DefaultProviderD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15Getter_GroupSet7getListEPNS_8ProviderE@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyLoaderThread11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyLoaderThread11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyLoaderThread16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyLoaderThread2InD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyLoaderThread2InD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyLoaderThread3runEv@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyLoaderThreadD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyLoaderThreadD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyLoaderThreadD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA15KeyStoreManager11busyStartedEv@Base 2.0.2 _ZN3QCA15KeyStoreManager11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA15KeyStoreManager11qt_metacastEPKc@Base 2.0.2 @@ -590,9 +697,72 @@ _ZN3QCA15KeyStoreManagerD0Ev@Base 2.0.2 _ZN3QCA15KeyStoreManagerD1Ev@Base 2.0.2 _ZN3QCA15KeyStoreManagerD2Ev@Base 2.0.2 + _ZN3QCA15KeyStorePrivate11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStorePrivate11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStorePrivate15async_entryListEv@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStorePrivate16async_writeEntryERKNS_18KeyStoreWriteEntryE@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStorePrivate16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStorePrivate3regEv@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStorePrivate5unregEv@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStorePrivate7getItemERK7QString@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStorePrivate7getItemEi@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStorePrivateD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStorePrivateD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStorePrivateD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker10writeEntryEiRK8QVariant@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker11ksl_busyEndEv@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker11ksl_updatedEv@Base 2.1.0 + _ZN3QCA15KeyStoreTracker11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker12entryPassiveERK7QString@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker12updateStoresEPNS_19KeyStoreListContextE@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker13ksl_busyStartEv@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker13startProviderEPNS_8ProviderE@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker16ksl_storeUpdatedEi@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker4ItemD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker4ItemD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker4selfE@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker5entryERK7QStringS3_@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker5startERK7QString@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker5startEv@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker6isBusyEv@Base 2.1.0+git20141127.0009 + _ZN3QCA15KeyStoreTracker7updatedEv@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTracker8findItemEi@Base 2.1.0 + _ZN3QCA15KeyStoreTracker8getItemsEv@Base 2.1.0 + _ZN3QCA15KeyStoreTracker9entryListEi@Base 2.1.0+git20141127.0009 + _ZN3QCA15KeyStoreTracker9updated_pEv@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTrackerD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTrackerD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15KeyStoreTrackerD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15ProviderManager10setDefaultEPNS_8ProviderE@Base 2.1.0+git20141126.2258 + _ZN3QCA15ProviderManager11getPriorityERK7QString@Base 2.1.0+git20141126.2258 + _ZN3QCA15ProviderManager13mergeFeaturesEP11QStringListRKS1_@Base 2.1.0+git20141126.2258 + _ZN3QCA15ProviderManager14changePriorityERK7QStringi@Base 2.1.0+git20141126.2258 + _ZN3QCA15ProviderManager19clearDiagnosticTextEv@Base 2.1.0+git20141126.2258 + _ZN3QCA15ProviderManager20appendDiagnosticTextERK7QString@Base 2.1.0+git20141126.2258 + _ZN3QCA15ProviderManager3addEPNS_8ProviderEi@Base 2.1.0+git20141126.2258 + _ZN3QCA15ProviderManager4scanEv@Base 2.1.0+git20141126.2258 + _ZN3QCA15ProviderManager6unloadERK7QString@Base 2.1.0+git20141126.2258 + _ZN3QCA15ProviderManager7addItemEPNS_12ProviderItemEi@Base 2.1.0+git20141126.2258 + _ZN3QCA15ProviderManager9unloadAllEv@Base 2.1.0+git20141126.2258 + _ZN3QCA15ProviderManagerC1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15ProviderManagerC2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15ProviderManagerD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15ProviderManagerD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15SyncThreadAgent11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA15SyncThreadAgent11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA15SyncThreadAgent16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA15SyncThreadAgent7startedEv@Base 2.1.0+git20141126.2258 + _ZN3QCA15SyncThreadAgent8call_retEbRK8QVariant@Base 2.1.0+git20141126.2258 + _ZN3QCA15SyncThreadAgentD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15SyncThreadAgentD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA15SyncThreadAgentD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA15defaultFeaturesEv@Base 2.0.2 _ZN3QCA15defaultProviderEv@Base 2.0.2 + _ZN3QCA15get_pbe_defaultEv@Base 2.1.0+git20141126.2258 _ZN3QCA15haveSystemStoreEv@Base 2.0.2 + _ZN3QCA15providerForNameERK7QString@Base 2.1.0+git20141126.2258 _ZN3QCA16ConsoleReference10readSecureEi@Base 2.0.2 _ZN3QCA16ConsoleReference11closeOutputEv@Base 2.0.2 _ZN3QCA16ConsoleReference11inputClosedEv@Base 2.0.2 @@ -639,15 +809,36 @@ _ZN3QCA17AbstractLogDeviceD0Ev@Base 2.0.2 _ZN3QCA17AbstractLogDeviceD1Ev@Base 2.0.2 _ZN3QCA17AbstractLogDeviceD2Ev@Base 2.0.2 + _ZN3QCA17DefaultMD5Context5clearEv@Base 2.1.0+git20141126.2258 + _ZN3QCA17DefaultMD5Context5finalEv@Base 2.1.0+git20141126.2258 + _ZN3QCA17DefaultMD5Context6updateERKNS_12MemoryRegionE@Base 2.1.0+git20141126.2258 + _ZN3QCA17DefaultMD5ContextD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA17DefaultMD5ContextD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA17DefaultMD5ContextD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA17KeyStoreOperation11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA17KeyStoreOperation11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA17KeyStoreOperation16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA17KeyStoreOperation3runEv@Base 2.1.0+git20141126.2258 + _ZN3QCA17KeyStoreOperationD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA17KeyStoreOperationD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA17KeyStoreOperationD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA17SynchronizerAgent11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA17SynchronizerAgent11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA17SynchronizerAgent16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA17SynchronizerAgent7startedEv@Base 2.1.0+git20141126.2258 + _ZN3QCA17SynchronizerAgentD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA17SynchronizerAgentD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA17SynchronizerAgentD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA17TLSSessionContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA17TLSSessionContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA17TLSSessionContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA17TLSSessionContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA17TLSSessionContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA17TLSSessionContextD2Ev@Base 2.0.3 + _ZN3QCA17botan_secure_freeEPvi@Base 2.1.0+git20141126.2258 + _ZN3QCA17botan_throw_abortEv@Base 2.1.0+git20141126.2258 _ZN3QCA17getProviderConfigERK7QString@Base 2.0.2 _ZN3QCA17makeFriendlyNamesERK5QListINS_11CertificateEE@Base 2.0.2 _ZN3QCA17orderedToDNStringERKNS_22CertificateInfoOrderedE@Base 2.0.2 + _ZN3QCA17plugin_prioritiesEPNS_8ProviderE@Base 2.1.0+git20141126.2258 + _ZN3QCA17providerForIOTypeENS_4PKey4TypeEPKNS_11PKeyContextE@Base 2.1.0+git20141126.2258 _ZN3QCA17setProviderConfigERK7QStringRK4QMapIS0_8QVariantE@Base 2.0.2 _ZN3QCA17supportedFeaturesEv@Base 2.0.2 _ZN3QCA18CertificateOptions11setPoliciesERK11QStringList@Base 2.0.2 @@ -659,11 +850,6 @@ _ZN3QCA18CertificateOptions16setOCSPLocationsERK11QStringList@Base 2.0.2 _ZN3QCA18CertificateOptions17setValidityPeriodERK9QDateTimeS3_@Base 2.0.2 _ZN3QCA18CertificateOptions18setIssuerLocationsERK11QStringList@Base 2.0.2 - (optional=private)_ZN3QCA18CertificateOptions7PrivateC1ERKS1_@Base 2.0.3 - (optional=private)_ZN3QCA18CertificateOptions7PrivateC2ERKS1_@Base 2.0.3 - (optional=private)_ZN3QCA18CertificateOptions7PrivateD1Ev@Base 2.0.3 - (optional=private)_ZN3QCA18CertificateOptions7PrivateD2Ev@Base 2.0.3 - (optional=private)_ZN3QCA18CertificateOptions7PrivateaSERKS1_@Base 2.0.3 _ZN3QCA18CertificateOptions7setAsCAEi@Base 2.0.2 _ZN3QCA18CertificateOptions7setInfoERK9QMultiMapINS_19CertificateInfoTypeE7QStringE@Base 2.0.2 _ZN3QCA18CertificateOptions9setAsUserEv@Base 2.0.2 @@ -693,7 +879,25 @@ _ZN3QCA18CertificateRequestD1Ev@Base 2.0.2 _ZN3QCA18CertificateRequestD2Ev@Base 2.0.2 _ZN3QCA18CertificateRequestaSERKS0_@Base 2.0.2 + _ZN3QCA18DefaultSHA1Context5clearEv@Base 2.1.0+git20141126.2258 + _ZN3QCA18DefaultSHA1Context5finalEv@Base 2.1.0+git20141126.2258 + _ZN3QCA18DefaultSHA1Context6updateERKNS_12MemoryRegionE@Base 2.1.0+git20141126.2258 + _ZN3QCA18DefaultSHA1Context9transformEPjPh@Base 2.1.0+git20141126.2258 + _ZN3QCA18DefaultSHA1ContextD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA18DefaultSHA1ContextD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA18DefaultSHA1ContextD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA18KeyStoreWriteEntryD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA18KeyStoreWriteEntryD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA18SafeSocketNotifier11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA18SafeSocketNotifier11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA18SafeSocketNotifier16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA18SafeSocketNotifier9activatedEi@Base 2.1.0+git20141126.2258 + _ZN3QCA18SafeSocketNotifierD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA18SafeSocketNotifierD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA18SafeSocketNotifierD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA18botan_secure_allocEi@Base 2.1.0+git20141126.2258 _ZN3QCA18saveProviderConfigERK7QString@Base 2.0.2 + _ZN3QCA18use_asker_fallbackENS_13ConvertResultE@Base 2.1.0+git20141126.2258 _ZN3QCA19BufferedComputation7processERKNS_12MemoryRegionE@Base 2.0.2 _ZN3QCA19BufferedComputationD0Ev@Base 2.0.2 _ZN3QCA19BufferedComputationD1Ev@Base 2.0.2 @@ -718,6 +922,16 @@ _ZN3QCA19CertificateInfoTypeD1Ev@Base 2.0.2 _ZN3QCA19CertificateInfoTypeD2Ev@Base 2.0.2 _ZN3QCA19CertificateInfoTypeaSERKS0_@Base 2.0.2 + _ZN3QCA19DefaultKeyStoreList11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA19DefaultKeyStoreList11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA19DefaultKeyStoreList12entryPassiveERK7QString@Base 2.1.0+git20141126.2258 + _ZN3QCA19DefaultKeyStoreList16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA19DefaultKeyStoreList5startEv@Base 2.1.0+git20141126.2258 + _ZN3QCA19DefaultKeyStoreList9entryListEi@Base 2.1.0+git20141126.2258 + _ZN3QCA19DefaultKeyStoreList9keyStoresEv@Base 2.1.0+git20141126.2258 + _ZN3QCA19DefaultKeyStoreListD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA19DefaultKeyStoreListD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA19DefaultKeyStoreListD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA19KeyStoreListContext10writeEntryEiRKNS_11CertificateE@Base 2.0.2 _ZN3QCA19KeyStoreListContext10writeEntryEiRKNS_3CRLE@Base 2.0.2 _ZN3QCA19KeyStoreListContext10writeEntryEiRKNS_6PGPKeyE@Base 2.0.2 @@ -735,9 +949,6 @@ _ZN3QCA19KeyStoreListContext7busyEndEv@Base 2.0.2 _ZN3QCA19KeyStoreListContext7updatedEv@Base 2.0.2 _ZN3QCA19KeyStoreListContext9busyStartEv@Base 2.0.2 - (optional)_ZN3QCA19KeyStoreListContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA19KeyStoreListContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA19KeyStoreListContextD2Ev@Base 2.0.3 _ZN3QCA19SecureMessageSystem11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA19SecureMessageSystem11qt_metacastEPKc@Base 2.0.2 _ZN3QCA19SecureMessageSystem16staticMetaObjectE@Base 2.0.2 @@ -746,6 +957,9 @@ _ZN3QCA19SecureMessageSystemD0Ev@Base 2.0.2 _ZN3QCA19SecureMessageSystemD1Ev@Base 2.0.2 _ZN3QCA19SecureMessageSystemD2Ev@Base 2.0.2 + _ZN3QCA19global_random_mutexEv@Base 2.1.0+git20141126.2258 + _ZN3QCA19providerForGroupSetENS_10DLGroupSetE@Base 2.1.0+git20141126.2258 + _ZN3QCA19qca_get_systemstoreERK7QString@Base 2.1.0+git20141126.2258 _ZN3QCA19setProviderPriorityERK7QStringi@Base 2.0.2 _ZN3QCA20CertificateAuthorityC1ERKNS_11CertificateERKNS_10PrivateKeyERK7QString@Base 2.0.2 _ZN3QCA20CertificateAuthorityC1ERKS0_@Base 2.0.2 @@ -755,6 +969,14 @@ _ZN3QCA20CertificateAuthorityD1Ev@Base 2.0.2 _ZN3QCA20CertificateAuthorityD2Ev@Base 2.0.2 _ZN3QCA20CertificateAuthorityaSERKS0_@Base 2.0.2 + _ZN3QCA20DefaultKeyStoreEntry11deserializeERK7QStringPNS_8ProviderE@Base 2.1.0+git20141126.2258 + _ZN3QCA20DefaultKeyStoreEntryD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA20DefaultKeyStoreEntryD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA20DefaultKeyStoreEntryD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA20DefaultRandomContext9nextBytesEi@Base 2.1.0+git20141126.2258 + _ZN3QCA20DefaultRandomContextD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA20DefaultRandomContextD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA20DefaultRandomContextD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA20InitializationVectorC1ERK10QByteArray@Base 2.0.2 _ZN3QCA20InitializationVectorC1ERKNS_11SecureArrayE@Base 2.0.2 _ZN3QCA20InitializationVectorC1Ei@Base 2.0.2 @@ -767,16 +989,17 @@ _ZN3QCA20KeyStoreEntryContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA20KeyStoreEntryContext12ensureAccessEv@Base 2.0.2 _ZN3QCA20KeyStoreEntryContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA20KeyStoreEntryContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA20KeyStoreEntryContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA20KeyStoreEntryContextD2Ev@Base 2.0.3 _ZN3QCA20KeyStoreEntryWatcher11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA20KeyStoreEntryWatcher11qt_metacastEPKc@Base 2.0.2 _ZN3QCA20KeyStoreEntryWatcher11unavailableEv@Base 2.0.2 _ZN3QCA20KeyStoreEntryWatcher16staticMetaObjectE@Base 2.0.2 + _ZN3QCA20KeyStoreEntryWatcher7Private10ks_updatedEv@Base 2.1.0+git20141126.2258 _ZN3QCA20KeyStoreEntryWatcher7Private11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA20KeyStoreEntryWatcher7Private11qt_metacastEPKc@Base 2.0.2 _ZN3QCA20KeyStoreEntryWatcher7Private16staticMetaObjectE@Base 2.0.2 + _ZN3QCA20KeyStoreEntryWatcher7PrivateD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA20KeyStoreEntryWatcher7PrivateD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA20KeyStoreEntryWatcher7PrivateD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA20KeyStoreEntryWatcher9availableEv@Base 2.0.2 _ZN3QCA20KeyStoreEntryWatcherC1ERKNS_13KeyStoreEntryEP7QObject@Base 2.0.2 _ZN3QCA20KeyStoreEntryWatcherC2ERKNS_13KeyStoreEntryEP7QObject@Base 2.0.2 @@ -785,12 +1008,10 @@ _ZN3QCA20KeyStoreEntryWatcherD2Ev@Base 2.0.2 _ZN3QCA20globalRandomProviderEv@Base 2.0.2 _ZN3QCA20pluginDiagnosticTextEv@Base 2.0.2 + _ZN3QCA20qca_have_systemstoreEv@Base 2.1.0+git20141126.2258 _ZN3QCA21CertCollectionContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA21CertCollectionContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA21CertCollectionContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA21CertCollectionContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA21CertCollectionContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA21CertCollectionContextD2Ev@Base 2.0.3 _ZN3QCA21CertificateCollection11canUsePKCS7ERK7QString@Base 2.0.2 _ZN3QCA21CertificateCollection11toPKCS7FileERK7QStringS3_@Base 2.0.2 _ZN3QCA21CertificateCollection13fromPKCS7FileERK7QStringPNS_13ConvertResultES3_@Base 2.0.2 @@ -808,6 +1029,7 @@ _ZN3QCA21CertificateCollectionaSERKS0_@Base 2.0.2 _ZN3QCA21CertificateCollectionpLERKS0_@Base 2.0.2 _ZN3QCA21KeyDerivationFunction13withAlgorithmERK7QStringS3_@Base 2.0.2 + _ZN3QCA21KeyDerivationFunction7makeKeyERKNS_11SecureArrayERKNS_20InitializationVectorEjiPj@Base 2.1.0+git20141126.2258 _ZN3QCA21KeyDerivationFunction7makeKeyERKNS_11SecureArrayERKNS_20InitializationVectorEjj@Base 2.0.2 _ZN3QCA21KeyDerivationFunctionC1ERK7QStringS3_@Base 2.0.2 _ZN3QCA21KeyDerivationFunctionC1ERKS0_@Base 2.0.2 @@ -817,6 +1039,15 @@ _ZN3QCA21KeyDerivationFunctionD1Ev@Base 2.0.2 _ZN3QCA21KeyDerivationFunctionD2Ev@Base 2.0.2 _ZN3QCA21KeyDerivationFunctionaSERKS0_@Base 2.0.2 + _ZN3QCA22KeyStoreManagerPrivate11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA22KeyStoreManagerPrivate11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA22KeyStoreManagerPrivate15tracker_updatedEv@Base 2.1.0 + _ZN3QCA22KeyStoreManagerPrivate16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA22KeyStoreManagerPrivate5unregEPNS_8KeyStoreE@Base 2.1.0+git20141126.2258 + _ZN3QCA22KeyStoreManagerPrivate9do_updateEv@Base 2.1.0+git20141126.2258 + _ZN3QCA22KeyStoreManagerPrivateD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA22KeyStoreManagerPrivateD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA22KeyStoreManagerPrivateD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA22SecureMessageSignatureC1ENS0_14IdentityResultENS_8ValidityERKNS_16SecureMessageKeyERK9QDateTime@Base 2.0.2 _ZN3QCA22SecureMessageSignatureC1ERKS0_@Base 2.0.2 _ZN3QCA22SecureMessageSignatureC1Ev@Base 2.0.2 @@ -826,6 +1057,21 @@ _ZN3QCA22SecureMessageSignatureD1Ev@Base 2.0.2 _ZN3QCA22SecureMessageSignatureD2Ev@Base 2.0.2 _ZN3QCA22SecureMessageSignatureaSERKS0_@Base 2.0.2 + _ZN3QCA23ConsoleReferencePrivate11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA23ConsoleReferencePrivate11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA23ConsoleReferencePrivate16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA23ConsoleReferencePrivateD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA23ConsoleReferencePrivateD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA23ConsoleReferencePrivateD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA23QFileSystemWatcherRelay11fileChangedERK7QString@Base 2.1.0+git20141126.2258 + _ZN3QCA23QFileSystemWatcherRelay11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA23QFileSystemWatcherRelay11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA23QFileSystemWatcherRelay16directoryChangedERK7QString@Base 2.1.0+git20141126.2258 + _ZN3QCA23QFileSystemWatcherRelay16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA23QFileSystemWatcherRelayD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA23QFileSystemWatcherRelayD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA23QFileSystemWatcherRelayD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA23create_default_providerEv@Base 2.1.0+git20141126.2258 _ZN3QCA23setGlobalRandomProviderERK7QString@Base 2.0.2 _ZN3QCA24invokeMethodWithVariantsEP7QObjectRK10QByteArrayRK5QListI8QVariantEPS6_N2Qt14ConnectionTypeE@Base 2.0.2 _ZN3QCA25MessageAuthenticationCode14supportedTypesERK7QString@Base 2.0.2 @@ -843,6 +1089,7 @@ _ZN3QCA25MessageAuthenticationCodeaSERKS0_@Base 2.0.2 _ZN3QCA25clearPluginDiagnosticTextEv@Base 2.0.2 _ZN3QCA26appendPluginDiagnosticTextERK7QString@Base 2.0.2 + _ZN3QCA26getProviderConfig_internalEPNS_8ProviderE@Base 2.1.0+git20141126.2258 _ZN3QCA3CMS11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA3CMS11qt_metacastEPKc@Base 2.0.2 _ZN3QCA3CMS14setPrivateKeysERK5QListINS_16SecureMessageKeyEE@Base 2.0.2 @@ -881,7 +1128,7 @@ _ZN3QCA3TLS11startClientERK7QString@Base 2.0.2 _ZN3QCA3TLS11startServerEv@Base 2.0.2 _ZN3QCA3TLS12readOutgoingEPi@Base 2.0.2 - _ZN3QCA3TLS13connectNotifyEPKc@Base 2.0.2 + (arch=)_ZN3QCA3TLS13connectNotifyEPKc@Base 2.1.0 _ZN3QCA3TLS13setIssuerListERK5QListINS_22CertificateInfoOrderedEE@Base 2.0.2 _ZN3QCA3TLS13writeIncomingERK10QByteArray@Base 2.0.2 _ZN3QCA3TLS14setCertificateERKNS_16CertificateChainERKNS_10PrivateKeyE@Base 2.0.2 @@ -890,7 +1137,7 @@ _ZN3QCA3TLS14setConstraintsERK11QStringList@Base 2.0.2 _ZN3QCA3TLS14setConstraintsEii@Base 2.0.2 _ZN3QCA3TLS15readUnprocessedEv@Base 2.0.2 - _ZN3QCA3TLS16disconnectNotifyEPKc@Base 2.0.2 + (arch=)_ZN3QCA3TLS16disconnectNotifyEPKc@Base 2.1.0 _ZN3QCA3TLS16hostNameReceivedEv@Base 2.0.2 _ZN3QCA3TLS16staticMetaObjectE@Base 2.0.2 _ZN3QCA3TLS17continueAfterStepEv@Base 2.0.2 @@ -905,7 +1152,14 @@ _ZN3QCA3TLS5writeERK10QByteArray@Base 2.0.2 _ZN3QCA3TLS7Private11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA3TLS7Private11qt_metacastEPKc@Base 2.0.2 + _ZN3QCA3TLS7Private15update_finishedEv@Base 2.1.0+git20141126.2258 _ZN3QCA3TLS7Private16staticMetaObjectE@Base 2.0.2 + _ZN3QCA3TLS7Private17processNextActionEv@Base 2.1.0+git20141126.2258 + _ZN3QCA3TLS7Private5resetENS_9ResetModeE@Base 2.1.0+git20141126.2258 + _ZN3QCA3TLS7Private6updateEv@Base 2.1.0+git20141126.2258 + _ZN3QCA3TLS7PrivateD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA3TLS7PrivateD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA3TLS7PrivateD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA3TLSC1ENS0_4ModeEP7QObjectRK7QString@Base 2.0.2 _ZN3QCA3TLSC1EP7QObjectRK7QString@Base 2.0.2 _ZN3QCA3TLSC2ENS0_4ModeEP7QObjectRK7QString@Base 2.0.2 @@ -983,8 +1237,13 @@ _ZN3QCA4SASL7Private11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA4SASL7Private11qt_metacastEPKc@Base 2.0.2 _ZN3QCA4SASL7Private16staticMetaObjectE@Base 2.0.2 - (optional=private)_ZN3QCA4SASL7Private6ActionD1Ev@Base 2.0.3 - (optional=private)_ZN3QCA4SASL7Private6ActionD2Ev@Base 2.0.3 + _ZN3QCA4SASL7Private17processNextActionEv@Base 2.1.0+git20141126.2258 + (arch=amd64)_ZN3QCA4SASL7Private17sasl_resultsReadyEv@Base 2.1.0+git20141127.0009 + _ZN3QCA4SASL7Private5resetENS_9ResetModeE@Base 2.1.0+git20141126.2258 + _ZN3QCA4SASL7Private6updateEv@Base 2.1.0+git20141126.2258 + _ZN3QCA4SASL7PrivateD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA4SASL7PrivateD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA4SASL7PrivateD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA4SASL7putStepERK10QByteArray@Base 2.0.2 _ZN3QCA4SASL8nextStepERK10QByteArray@Base 2.0.2 _ZN3QCA4SASL8setRealmERK7QString@Base 2.0.2 @@ -996,10 +1255,200 @@ _ZN3QCA4SASLD2Ev@Base 2.0.2 _ZN3QCA4initENS_10MemoryModeEi@Base 2.0.2 _ZN3QCA4initEv@Base 2.0.2 + _ZN3QCA5Botan10bigint_mulEPjjS1_PKjjjS3_jj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan10power_of_2Ey@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan10round_downEjj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan10unlock_memEPvj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan12Config_ErrorC1ERKSsj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan12Config_ErrorC2ERKSsj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan12Config_ErrorD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan12Config_ErrorD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan12Config_ErrorD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan12Format_ErrorD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan12Format_ErrorD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan12Format_ErrorD2Ev@Base 2.1.0+git20141126.2258 + (optional=templinst)_ZN3QCA5Botan12MemoryRegionIhE6createEj@Base 2.0.3 + (optional=templinst)_ZN3QCA5Botan12MemoryRegionIjE6createEj@Base 2.0.3 + _ZN3QCA5Botan12Mutex_HolderC1EPNS0_5MutexE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan12Mutex_HolderC2EPNS0_5MutexE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan12Mutex_HolderD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan12Mutex_HolderD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan12global_stateEv@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan13Invalid_StateD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan13Invalid_StateD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan13Invalid_StateD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan13Library_State13add_allocatorEPNS0_9AllocatorE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan13Library_State15get_named_mutexERKSs@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan13Library_State21set_default_allocatorERKSs@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan13Library_State4loadERNS0_7ModulesE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan13Library_StateC1EPNS0_13Mutex_FactoryE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan13Library_StateC2EPNS0_13Mutex_FactoryE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan13Library_StateD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan13Library_StateD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan14Encoding_ErrorC1ERKSs@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan14Encoding_ErrorC2ERKSs@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan14Encoding_ErrorD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan14Encoding_ErrorD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan14Encoding_ErrorD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan14Internal_ErrorD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan14Internal_ErrorD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan14Internal_ErrorD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan14hamming_weightEy@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan15Builtin_ModulesC1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan15Builtin_ModulesC2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan15Builtin_ModulesD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan15Builtin_ModulesD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan15Builtin_ModulesD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan16Invalid_ArgumentD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan16Invalid_ArgumentD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan16Invalid_ArgumentD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan16Malloc_Allocator11alloc_blockEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan16Malloc_Allocator13dealloc_blockEPvj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan16Malloc_AllocatorD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan16Malloc_AllocatorD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan16Malloc_AllocatorD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan16Qt_Mutex_Factory4makeEv@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan16Qt_Mutex_FactoryD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan16Qt_Mutex_FactoryD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan16Qt_Mutex_FactoryD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan16set_global_stateEPNS0_13Library_StateE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Invalid_IV_LengthC1ERKSsj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Invalid_IV_LengthC2ERKSsj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Invalid_IV_LengthD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Invalid_IV_LengthD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Invalid_IV_LengthD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Locking_Allocator11alloc_blockEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Locking_Allocator13dealloc_blockEPvj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Locking_AllocatorD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Locking_AllocatorD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Locking_AllocatorD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Memory_ExhaustionC1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Memory_ExhaustionC2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Memory_ExhaustionD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Memory_ExhaustionD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Memory_ExhaustionD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_Allocator10deallocateEPvj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_Allocator12Memory_Block10BLOCK_SIZEE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_Allocator12Memory_Block11BITMAP_SIZEE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_Allocator12Memory_Block4freeEPvj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_Allocator12Memory_Block5allocEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_Allocator12Memory_BlockC1EPv@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_Allocator12Memory_BlockC2EPv@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_Allocator13get_more_coreEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_Allocator15allocate_blocksEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_Allocator7destroyEv@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_Allocator8allocateEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_AllocatorC1Ejb@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_AllocatorC2Ejb@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_AllocatorD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_AllocatorD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17Pooling_AllocatorD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17significant_bytesEy@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan17swap_global_stateEPNS0_13Library_StateE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan18Invalid_Block_SizeC1ERKSsS3_@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan18Invalid_Block_SizeC2ERKSsS3_@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan18Invalid_Block_SizeD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan18Invalid_Block_SizeD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan18Invalid_Block_SizeD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan18Invalid_Key_LengthC1ERKSsj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan18Invalid_Key_LengthC2ERKSsj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan18Invalid_Key_LengthD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan18Invalid_Key_LengthD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan18Invalid_Key_LengthD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan18Named_Mutex_HolderC1ERKSs@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan18Named_Mutex_HolderC2ERKSs@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan18Named_Mutex_HolderD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan18Named_Mutex_HolderD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan19Algorithm_Not_FoundC1ERKSs@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan19Algorithm_Not_FoundC2ERKSs@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan19Algorithm_Not_FoundD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan19Algorithm_Not_FoundD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan19Algorithm_Not_FoundD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan21Default_Mutex_Factory4makeEv@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan21Default_Mutex_FactoryD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan21Default_Mutex_FactoryD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan21Default_Mutex_FactoryD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan22Invalid_Algorithm_NameC1ERKSs@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan22Invalid_Algorithm_NameC2ERKSs@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan22Invalid_Algorithm_NameD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan22Invalid_Algorithm_NameD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan22Invalid_Algorithm_NameD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan22Invalid_Message_NumberC1ERKSsj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan22Invalid_Message_NumberC2ERKSsj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan22Invalid_Message_NumberD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan22Invalid_Message_NumberD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan22Invalid_Message_NumberD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan23MemoryMapping_Allocator11alloc_blockEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan23MemoryMapping_Allocator13dealloc_blockEPvj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan23MemoryMapping_AllocatorD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan23MemoryMapping_AllocatorD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan23MemoryMapping_AllocatorD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt11encode_1363ERKS1_j@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt12DivideByZeroC1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt12DivideByZeroC2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt12DivideByZeroD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt12DivideByZeroD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt12DivideByZeroD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt13binary_decodeEPKhj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt4swapERS1_@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt6decodeEPKhjNS1_4BaseE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt6decodeERKNS0_12MemoryRegionIhEENS1_4BaseE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt6encodeEPhRKS1_NS1_4BaseE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt6encodeERKS1_NS1_4BaseE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt7set_bitEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt8set_signENS1_4SignE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt9clear_bitEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt9flip_signEv@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigInt9mask_bitsEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntC1ENS1_4SignEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntC1EPKhjNS1_4BaseE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntC1ERKS1_@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntC1ERKSs@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntC1Ey@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntC2ENS1_4SignEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntC2EPKhjNS1_4BaseE@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntC2ERKS1_@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntC2ERKSs@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntC2Ey@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntdVERKS1_@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntlSEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntmIERKS1_@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntmLERKS1_@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntpLERKS1_@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntrMERKS1_@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntrMEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6BigIntrSEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan6divideERKNS0_6BigIntES3_RS1_S4_@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan7Charset10char2digitEc@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan7Charset10digit2charEh@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan7Charset12caseless_cmpEcc@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan7Charset8is_digitEc@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan7Charset8is_spaceEc@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan7low_bitEy@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan7xor_bufEPhPKhS3_j@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan7xor_bufEPhPKhj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan8high_bitEy@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan8lock_memEPvj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan8round_upEjj@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan9Allocator3getEb@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan9Allocator4initEv@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan9Allocator7destroyEv@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan9ExceptionC1ERKSs@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan9ExceptionC2ERKSs@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan9ExceptionD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan9ExceptionD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan9ExceptionD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA5Botan9to_stringEyj@Base 2.1.0+git20141126.2258 + _ZN3QCA5BotandvERKNS0_6BigIntES3_@Base 2.1.0+git20141126.2258 + _ZN3QCA5BotanlsERKNS0_6BigIntEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5BotanmiERKNS0_6BigIntES3_@Base 2.1.0+git20141126.2258 + _ZN3QCA5BotanmlERKNS0_6BigIntES3_@Base 2.1.0+git20141126.2258 + _ZN3QCA5BotanplERKNS0_6BigIntES3_@Base 2.1.0+git20141126.2258 + _ZN3QCA5BotanrmERKNS0_6BigIntES3_@Base 2.1.0+git20141126.2258 + _ZN3QCA5BotanrmERKNS0_6BigIntEj@Base 2.1.0+git20141126.2258 + _ZN3QCA5BotanrsERKNS0_6BigIntEj@Base 2.1.0+git20141126.2258 _ZN3QCA5Event15setPasswordDataENS0_13PasswordStyleERK7QStringPv@Base 2.0.2 _ZN3QCA5Event19setPasswordKeyStoreENS0_13PasswordStyleERKNS_12KeyStoreInfoERKNS_13KeyStoreEntryEPv@Base 2.0.2 - (optional=private)_ZN3QCA5Event7PrivateC1Ev@Base 2.0.3 - (optional=private)_ZN3QCA5Event7PrivateC2Ev@Base 2.0.3 _ZN3QCA5Event8setTokenERKNS_12KeyStoreInfoERKNS_13KeyStoreEntryEPv@Base 2.0.2 _ZN3QCA5EventC1ERKS0_@Base 2.0.2 _ZN3QCA5EventC1Ev@Base 2.0.2 @@ -1042,6 +1491,8 @@ _ZN3QCA6FilterD0Ev@Base 2.0.2 _ZN3QCA6FilterD1Ev@Base 2.0.2 _ZN3QCA6FilterD2Ev@Base 2.0.2 + _ZN3QCA6Global13ensure_loadedEv@Base 2.1.0+git20141127.0009 + _ZN3QCA6Global4scanEv@Base 2.1.0+git20141127.0009 _ZN3QCA6Logger11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA6Logger11qt_metacastEPKc@Base 2.0.2 _ZN3QCA6Logger14logTextMessageERK7QStringNS0_8SeverityE@Base 2.0.2 @@ -1082,6 +1533,10 @@ _ZN3QCA6RandomD2Ev@Base 2.0.2 _ZN3QCA6RandomaSERKS0_@Base 2.0.2 _ZN3QCA6deinitEv@Base 2.0.2 + (optional=templinst)_ZN3QCA6getKeyINS_10PrivateKeyENS_17Getter_PrivateKeyI7QStringEES3_EET_RKS3_RKT1_RKNS_11SecureArrayEPNS_13ConvertResultE@Base 2.0.3 + (optional=templinst)_ZN3QCA6getKeyINS_10PrivateKeyENS_17Getter_PrivateKeyINS_11SecureArrayEEES3_EET_RK7QStringRKT1_RKS3_PNS_13ConvertResultE@Base 2.0.3 + (optional=templinst)_ZN3QCA6getKeyINS_9PublicKeyENS_16Getter_PublicKeyI10QByteArrayEES3_EET_RK7QStringRKT1_RKNS_11SecureArrayEPNS_13ConvertResultE@Base 2.0.3 + (optional=templinst)_ZN3QCA6getKeyINS_9PublicKeyENS_16Getter_PublicKeyI7QStringEES3_EET_RKS3_RKT1_RKNS_11SecureArrayEPNS_13ConvertResultE@Base 2.0.3 _ZN3QCA6loggerEv@Base 2.0.2 _ZN3QCA7Console11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA7Console11qt_metacastEPKc@Base 2.0.2 @@ -1119,6 +1574,10 @@ _ZN3QCA7OpenPGPD1Ev@Base 2.0.2 _ZN3QCA7OpenPGPD2Ev@Base 2.0.2 _ZN3QCA7appNameEv@Base 2.0.2 + (optional=templinst)_ZN3QCA7getListINS_10DLGroupSetENS_15Getter_GroupSetEEE5QListIT_ERK7QString@Base 2.0.3 + (optional=templinst)_ZN3QCA7getListINS_12PBEAlgorithmENS_10Getter_PBEEEE5QListIT_ERK7QString@Base 2.0.3 + (optional=templinst)_ZN3QCA7getListINS_4PKey4TypeENS_11Getter_TypeEEE5QListIT_ERK7QString@Base 2.0.3 + (optional=templinst)_ZN3QCA7getListINS_4PKey4TypeENS_13Getter_IOTypeEEE5QListIT_ERK7QString@Base 2.0.3 _ZN3QCA8CRLEntryC1ENS_10BigIntegerERK9QDateTimeNS0_6ReasonE@Base 2.0.2 _ZN3QCA8CRLEntryC1ERKNS_11CertificateENS0_6ReasonE@Base 2.0.2 _ZN3QCA8CRLEntryC1ERKS0_@Base 2.0.2 @@ -1133,9 +1592,6 @@ _ZN3QCA8CertBase11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA8CertBase11qt_metacastEPKc@Base 2.0.2 _ZN3QCA8CertBase16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA8CertBaseD0Ev@Base 2.0.3 - (optional)_ZN3QCA8CertBaseD1Ev@Base 2.0.3 - (optional)_ZN3QCA8CertBaseD2Ev@Base 2.0.3 _ZN3QCA8DirWatch10setDirNameERK7QString@Base 2.0.2 _ZN3QCA8DirWatch11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA8DirWatch11qt_metacastEPKc@Base 2.0.2 @@ -1184,9 +1640,6 @@ _ZN3QCA8PKeyBase9startSignENS_18SignatureAlgorithmENS_15SignatureFormatE@Base 2.0.2 _ZN3QCA8PKeyBaseC1EPNS_8ProviderERK7QString@Base 2.0.2 _ZN3QCA8PKeyBaseC2EPNS_8ProviderERK7QString@Base 2.0.2 - (optional)_ZN3QCA8PKeyBaseD0Ev@Base 2.0.3 - (optional)_ZN3QCA8PKeyBaseD1Ev@Base 2.0.3 - (optional)_ZN3QCA8PKeyBaseD2Ev@Base 2.0.3 _ZN3QCA8Provider13configChangedERK4QMapI7QString8QVariantE@Base 2.0.2 _ZN3QCA8Provider4initEv@Base 2.0.2 _ZN3QCA8Provider6deinitEv@Base 2.0.2 @@ -1236,6 +1689,7 @@ _ZN3QCA8QPipeEndD0Ev@Base 2.0.2 _ZN3QCA8QPipeEndD1Ev@Base 2.0.2 _ZN3QCA8QPipeEndD2Ev@Base 2.0.2 + _ZN3QCA8md5_initEPNS_11md5_state_tE@Base 2.1.0+git20141126.2258 _ZN3QCA9Algorithm11takeContextEv@Base 2.0.2 _ZN3QCA9Algorithm6changeEPNS_8Provider7ContextE@Base 2.0.2 _ZN3QCA9Algorithm6changeERK7QStringS3_@Base 2.0.2 @@ -1250,18 +1704,15 @@ _ZN3QCA9AlgorithmD1Ev@Base 2.0.2 _ZN3QCA9AlgorithmD2Ev@Base 2.0.2 _ZN3QCA9AlgorithmaSERKS0_@Base 2.0.2 + _ZN3QCA9AskerBase11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA9AskerBase11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA9AskerBase16staticMetaObjectE@Base 2.1.0+git20141126.2258 _ZN3QCA9CAContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA9CAContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA9CAContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA9CAContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA9CAContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA9CAContextD2Ev@Base 2.0.3 _ZN3QCA9DHContext11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA9DHContext11qt_metacastEPKc@Base 2.0.2 _ZN3QCA9DHContext16staticMetaObjectE@Base 2.0.2 - (optional)_ZN3QCA9DHContextD0Ev@Base 2.0.3 - (optional)_ZN3QCA9DHContextD1Ev@Base 2.0.3 - (optional)_ZN3QCA9DHContextD2Ev@Base 2.0.3 _ZN3QCA9FileWatch11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA9FileWatch11qt_metacastEPKc@Base 2.0.2 _ZN3QCA9FileWatch11setFileNameERK7QString@Base 2.0.2 @@ -1279,8 +1730,6 @@ _ZN3QCA9FileWatchD1Ev@Base 2.0.2 _ZN3QCA9FileWatchD2Ev@Base 2.0.2 _ZN3QCA9KeyBundle25setCertificateChainAndKeyERKNS_16CertificateChainERKNS_10PrivateKeyE@Base 2.0.2 - (optional=private)_ZN3QCA9KeyBundle7PrivateD1Ev@Base 2.0.3 - (optional=private)_ZN3QCA9KeyBundle7PrivateD2Ev@Base 2.0.3 _ZN3QCA9KeyBundle7setNameERK7QString@Base 2.0.2 _ZN3QCA9KeyBundle8fromFileERK7QStringRKNS_11SecureArrayEPNS_13ConvertResultES3_@Base 2.0.2 _ZN3QCA9KeyBundle9fromArrayERK10QByteArrayRKNS_11SecureArrayEPNS_13ConvertResultERK7QString@Base 2.0.2 @@ -1304,6 +1753,7 @@ _ZN3QCA9KeyLoader7Private11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.2 _ZN3QCA9KeyLoader7Private11qt_metacastEPKc@Base 2.0.2 _ZN3QCA9KeyLoader7Private16staticMetaObjectE@Base 2.0.2 + _ZN3QCA9KeyLoader7Private5resetEv@Base 2.1.0 _ZN3QCA9KeyLoader7PrivateD0Ev@Base 2.0.3 _ZN3QCA9KeyLoader7PrivateD1Ev@Base 2.0.3 _ZN3QCA9KeyLoader7PrivateD2Ev@Base 2.0.3 @@ -1318,6 +1768,7 @@ _ZN3QCA9PublicKey13verifyMessageERKNS_12MemoryRegionERK10QByteArrayNS_18SignatureAlgorithmENS_15SignatureFormatE@Base 2.0.2 _ZN3QCA9PublicKey14validSignatureERK10QByteArray@Base 2.0.2 _ZN3QCA9PublicKey6updateERKNS_12MemoryRegionE@Base 2.0.2 + _ZN3QCA9PublicKey7decryptERKNS_11SecureArrayEPS1_NS_19EncryptionAlgorithmE@Base 2.1.0+git20141126.2258 _ZN3QCA9PublicKey7encryptERKNS_11SecureArrayENS_19EncryptionAlgorithmE@Base 2.0.2 _ZN3QCA9PublicKey7fromDERERK10QByteArrayPNS_13ConvertResultERK7QString@Base 2.0.2 _ZN3QCA9PublicKey7fromPEMERK7QStringPNS_13ConvertResultES3_@Base 2.0.2 @@ -1335,10 +1786,276 @@ _ZN3QCA9PublicKeyD1Ev@Base 2.0.2 _ZN3QCA9PublicKeyD2Ev@Base 2.0.2 _ZN3QCA9PublicKeyaSERKS0_@Base 2.0.2 + _ZN3QCA9SafeTimer10timerEventEP11QTimerEvent@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer11setIntervalEi@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer13setSingleShotEb@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer4stopEv@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer5eventEP6QEvent@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer5startEi@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer5startEv@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer7Private10timerEventEP11QTimerEvent@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer7Private11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer7Private11qt_metacastEPKc@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer7Private16staticMetaObjectE@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer7Private5eventEP6QEvent@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer7Private7needFixEv@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer7Private8fixTimerEv@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer7PrivateC1EP7QObject@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer7PrivateC2EP7QObject@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer7PrivateD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer7PrivateD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer7PrivateD2Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimer7timeoutEv@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimerC1EP7QObject@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimerC2EP7QObject@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimerD0Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimerD1Ev@Base 2.1.0+git20141126.2258 + _ZN3QCA9SafeTimerD2Ev@Base 2.1.0+git20141126.2258 _ZN3QCA9providersEv@Base 2.0.2 _ZN3QCAlsER11QTextStreamRKNS_10BigIntegerE@Base 2.0.2 _ZN3QCAplERKNS_11SecureArrayES2_@Base 2.0.2 - (optional=templinst)_ZN9QHashData9hasShrunkEv@Base 2.0.2 + (optional=templinst)_ZN4QMapI7QString8QVariantE11node_createEP8QMapDataPPNS3_4NodeERKS0_RKS1_@Base 2.1.0 + (optional=templinst)_ZN4QMapI7QString8QVariantE13detach_helperEv@Base 2.0.3 + (optional=templinst|arch=i386)_ZN4QMapI7QString8QVariantEC1ERKS2_@Base 2.1.0+git20141127.0009 + (optional=templinst|arch=i386)_ZN4QMapI7QString8QVariantEC2ERKS2_@Base 2.1.0+git20141127.0009 + (optional=templinst)_ZN4QMapI7QString8QVariantED1Ev@Base 2.0.3 + (optional=templinst)_ZN4QMapI7QString8QVariantED2Ev@Base 2.0.3 + (optional=templinst)_ZN4QMapI7QString8QVariantEixERKS0_@Base 2.0.3 + (optional=templinst)_ZN4QMapI7QStringS_IS0_8QVariantEE11node_createEP8QMapDataPPNS4_4NodeERKS0_RKS2_@Base 2.1.0+git20141127.0009 + (optional=templinst)_ZN4QMapI7QStringS_IS0_8QVariantEE13detach_helperEv@Base 2.0.3 + (optional=templinst)_ZN4QMapI7QStringS_IS0_8QVariantEED1Ev@Base 2.0.3 + (optional=templinst)_ZN4QMapI7QStringS_IS0_8QVariantEED2Ev@Base 2.0.3 + (optional=templinst)_ZN4QMapIN3QCA19CertificateInfoTypeE7QStringE11insertMultiERKS1_RKS2_@Base 2.1.0 + (optional=templinst)_ZN4QMapIN3QCA19CertificateInfoTypeE7QStringE13detach_helperEv@Base 2.0.3 + (optional=templinst)_ZN4QMapIN3QCA19CertificateInfoTypeE7QStringE6removeERKS1_@Base 2.1.0 + (optional=templinst)_ZN4QMapIN3QCA19CertificateInfoTypeE7QStringED1Ev@Base 2.0.3 + (optional=templinst)_ZN4QMapIN3QCA19CertificateInfoTypeE7QStringED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QHashIPN3QCA19KeyStoreListContextE15QHashDummyValueE11deleteNode2EPN9QHashData4NodeE@Base 2.0.3 + (optional=templinst)_ZN5QHashIPN3QCA19KeyStoreListContextE15QHashDummyValueE13detach_helperEv@Base 2.0.3 + (optional=templinst)_ZN5QHashIPN3QCA19KeyStoreListContextE15QHashDummyValueE13duplicateNodeEPN9QHashData4NodeEPv@Base 2.0.3 + (optional=templinst|arch=amd64)_ZN5QHashIPN3QCA19KeyStoreListContextE15QHashDummyValueE6insertERKS2_RKS3_@Base 2.0.3 + (optional=templinst)_ZN5QHashIPN3QCA19KeyStoreListContextE15QHashDummyValueED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QHashIPN3QCA19KeyStoreListContextE15QHashDummyValueED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QHashIPN3QCA8KeyStoreEiE11deleteNode2EPN9QHashData4NodeE@Base 2.0.3 + (optional=templinst)_ZN5QHashIPN3QCA8KeyStoreEiE13detach_helperEv@Base 2.0.3 + (optional=templinst)_ZN5QHashIPN3QCA8KeyStoreEiE13duplicateNodeEPN9QHashData4NodeEPv@Base 2.0.3 + (optional=templinst)_ZN5QHashIPN3QCA8KeyStoreEiED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QHashIPN3QCA8KeyStoreEiED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QHashIiPN3QCA8KeyStoreEE11deleteNode2EPN9QHashData4NodeE@Base 2.0.3 + (optional=templinst)_ZN5QHashIiPN3QCA8KeyStoreEE13detach_helperEv@Base 2.0.3 + (optional=templinst)_ZN5QHashIiPN3QCA8KeyStoreEE13duplicateNodeEPN9QHashData4NodeEPv@Base 2.0.3 + (optional=templinst)_ZN5QHashIiPN3QCA8KeyStoreEE6removeERKi@Base 2.0.3 + (optional=templinst)_ZN5QListI10QByteArrayE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListI10QByteArrayE18detach_helper_growEii@Base 2.1.0 + (optional=templinst)_ZN5QListI10QByteArrayE5clearEv@Base 2.0.3 + (optional=templinst)_ZN5QListI10QByteArrayE6appendERKS0_@Base 2.0.3 + (optional=templinst)_ZN5QListI10QByteArrayED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListI10QByteArrayED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListI5QPairIiiEE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListI5QPairIiiEED1Ev@Base 2.1.0 + (optional=templinst)_ZN5QListI5QPairIiiEED2Ev@Base 2.1.0 + (optional=templinst)_ZN5QListI7QStringE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListI7QStringE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListI7QStringE6appendERKS0_@Base 2.0.3 + (optional=templinst)_ZN5QListI7QStringE6detachEv@Base 2.1.0+git20141127.0009 + (optional=templinst)_ZN5QListI7QStringEC1ERKS1_@Base 2.0.3 + (optional=templinst)_ZN5QListI7QStringEC2ERKS1_@Base 2.0.3 + (optional=templinst)_ZN5QListI7QStringED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListI7QStringED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListI7QStringEpLERKS1_@Base 2.0.3 + (optional=templinst)_ZN5QListI8QVariantE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListI8QVariantE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListI8QVariantE6appendERKS0_@Base 2.0.3 + (optional=templinst)_ZN5QListI8QVariantE9node_copyEPNS1_4NodeES3_S3_@Base 2.0.3 + (optional=templinst)_ZN5QListI8QVariantED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListI8QVariantED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA10DLGroupSetEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA10DLGroupSetEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA10DLGroupSetEE6appendERKS1_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA10DLGroupSetEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA10DLGroupSetEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA10TimerFixer9TimerInfoEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA10TimerFixer9TimerInfoEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA10TimerFixer9TimerInfoEE6appendERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA10TimerFixer9TimerInfoEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA10TimerFixer9TimerInfoEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11CertificateEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11CertificateEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11CertificateEE6appendERKS1_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11CertificateEE9node_copyEPNS2_4NodeES4_S4_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11CertificateEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11CertificateEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11CertificateEEpLERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11EventGlobal11HandlerItemEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11EventGlobal11HandlerItemEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11EventGlobal11HandlerItemEE6appendERKS2_@Base 2.0.3 + (optional=templinst|arch=i386)_ZN5QListIN3QCA11EventGlobal11HandlerItemEE6detachEv@Base 2.1.0+git20141127.0009 + (optional=templinst)_ZN5QListIN3QCA11EventGlobal11HandlerItemEE9node_copyEPNS3_4NodeES5_S5_@Base 2.1.0+git20141127.0009 + (optional=templinst)_ZN5QListIN3QCA11EventGlobal11HandlerItemEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11EventGlobal11HandlerItemEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11EventGlobal9AskerItemEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11EventGlobal9AskerItemEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11EventGlobal9AskerItemEE6appendERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11EventGlobal9AskerItemEE9node_copyEPNS3_4NodeES5_S5_@Base 2.1.0+git20141127.0009 + (optional=templinst)_ZN5QListIN3QCA11EventGlobal9AskerItemEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA11EventGlobal9AskerItemEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA12LayerTracker4ItemEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA12LayerTracker4ItemEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA12LayerTracker4ItemEE5clearEv@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA12LayerTracker4ItemEE6appendERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA12LayerTracker4ItemEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA12LayerTracker4ItemEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA12PBEAlgorithmEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA12PBEAlgorithmEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA12PBEAlgorithmEE6appendERKS1_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA12PBEAlgorithmEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA12PBEAlgorithmEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA13KeyStoreEntry4TypeEE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListIN3QCA13KeyStoreEntry4TypeEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA13KeyStoreEntry4TypeEE6appendERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA13KeyStoreEntry4TypeEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA13KeyStoreEntry4TypeEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA13KeyStoreEntryEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA13KeyStoreEntryEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA13KeyStoreEntryEE6appendERKS1_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA13KeyStoreEntryEE9node_copyEPNS2_4NodeES4_S4_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA13KeyStoreEntryEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA13KeyStoreEntryEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA14ConstraintTypeEE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListIN3QCA14ConstraintTypeEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA14ConstraintTypeEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA15KeyStoreTracker4ItemEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA15KeyStoreTracker4ItemEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA15KeyStoreTracker4ItemEE6appendERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA15KeyStoreTracker4ItemEE6detachEv@Base 2.1.0+git20141127.0009 + (optional=templinst)_ZN5QListIN3QCA15KeyStoreTracker4ItemEE9node_copyEPNS3_4NodeES5_S5_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA15KeyStoreTracker4ItemEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA15KeyStoreTracker4ItemEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA16SecureMessageKeyEE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListIN3QCA16SecureMessageKeyEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA16SecureMessageKeyEE5clearEv@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA16SecureMessageKeyEE6appendERKS1_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA16SecureMessageKeyEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA16SecureMessageKeyEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA19CertificateInfoPairEE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListIN3QCA19CertificateInfoPairEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA19CertificateInfoPairEE6appendERKS1_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA19CertificateInfoPairEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA19CertificateInfoPairEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA19CertificateInfoTypeEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA19CertificateInfoTypeEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA19CertificateInfoTypeEE6appendERKS1_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA19CertificateInfoTypeEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA19CertificateInfoTypeEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA22CertificateInfoOrderedEE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListIN3QCA22CertificateInfoOrderedEE5clearEv@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA22CertificateInfoOrderedEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA22CertificateInfoOrderedEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA22SecureMessageSignatureEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA22SecureMessageSignatureEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA22SecureMessageSignatureEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA3CRLEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA3CRLEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA3CRLEE6appendERKS1_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA3CRLEE9node_copyEPNS2_4NodeES4_S4_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA3CRLEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA3CRLEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA3CRLEEpLERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA3TLS7Private6ActionEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA3TLS7Private6ActionEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA3TLS7Private6ActionEE5clearEv@Base 2.1.0 + (optional=templinst)_ZN5QListIN3QCA3TLS7Private6ActionEE6appendERKS3_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA3TLS7Private6ActionEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA3TLS7Private6ActionEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA4PKey4TypeEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA4PKey4TypeEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA4PKey4TypeEE6appendERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA4PKey4TypeEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA4PKey4TypeEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA4PKey4TypeEEaSERKS3_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA4SASL7Private6ActionEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA4SASL7Private6ActionEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA4SASL7Private6ActionEE5clearEv@Base 2.1.0 + (optional=templinst)_ZN5QListIN3QCA4SASL7Private6ActionEE6appendERKS3_@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA4SASL7Private6ActionEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA4SASL7Private6ActionEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIN3QCA8CRLEntryEE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListIP7QObjectE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIP7QObjectED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIP7QObjectED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPKN3QCA11CertContextEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIPKN3QCA11CertContextEE6appendERKS3_@Base 2.0.3 + (optional=templinst)_ZN5QListIPKN3QCA11CertContextEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPKN3QCA11CertContextEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA10CRLContextEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA10CRLContextEE6appendERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA10CRLContextEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA10CRLContextEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA10TimerFixerEE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListIPN3QCA10TimerFixerEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA10TimerFixerEE5clearEv@Base 2.1.0 + (optional=templinst)_ZN5QListIPN3QCA10TimerFixerEE6appendERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA10TimerFixerEE9removeAllERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA10TimerFixerEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA10TimerFixerEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA11CertContextEE13detach_helperEi@Base 2.1.0+git20141127.0009 + (optional=templinst)_ZN5QListIPN3QCA11CertContextEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA11CertContextEE6appendERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA11CertContextEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA11CertContextEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA12ProviderItemEE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListIPN3QCA12ProviderItemEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA12ProviderItemEE6appendERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA12ProviderItemEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA12ProviderItemEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA17AbstractLogDeviceEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA17AbstractLogDeviceEE6appendERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA17KeyStoreOperationEE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListIPN3QCA17KeyStoreOperationEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA17KeyStoreOperationEE6appendERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA17KeyStoreOperationEE9removeAllERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA17KeyStoreOperationEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA17KeyStoreOperationEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA20KeyStoreEntryContextEE13detach_helperEi@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA20KeyStoreEntryContextEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA20KeyStoreEntryContextEE6appendERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA20KeyStoreEntryContextEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA20KeyStoreEntryContextEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA8KeyStoreEE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListIPN3QCA8KeyStoreEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA8KeyStoreEE6appendERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA8KeyStoreEE9removeAllERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA8KeyStoreEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA8KeyStoreEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA8ProviderEE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListIPN3QCA8ProviderEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA8ProviderEE6appendERKS2_@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA8ProviderEE6detachEv@Base 2.1.0+git20141127.0009 + (optional=templinst)_ZN5QListIPN3QCA8ProviderEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIPN3QCA8ProviderEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIS_IiEE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListIS_IiEE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIS_IiEE6appendERKS0_@Base 2.0.3 + (optional=templinst)_ZN5QListIS_IiEE9node_copyEPNS1_4NodeES3_S3_@Base 2.1.0 + (optional=templinst)_ZN5QListIS_IiEED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIS_IiEED2Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIiE13detach_helperEi@Base 2.1.0 + (optional=templinst)_ZN5QListIiE18detach_helper_growEii@Base 2.0.3 + (optional=templinst)_ZN5QListIiE5clearEv@Base 2.0.3 + (optional=templinst)_ZN5QListIiE6appendERKi@Base 2.0.3 + (optional=templinst)_ZN5QListIiE9removeAllERKi@Base 2.0.3 + (optional=templinst)_ZN5QListIiEC1ERKS0_@Base 2.0.3 + (optional=templinst)_ZN5QListIiEC2ERKS0_@Base 2.0.3 + (optional=templinst)_ZN5QListIiED1Ev@Base 2.0.3 + (optional=templinst)_ZN5QListIiED2Ev@Base 2.0.3 + _ZN6QMutex10lockInlineEv@Base 2.1.0+git20141127.0009 + _ZN6QMutex12unlockInlineEv@Base 2.1.0+git20141127.0009 + _ZN7QStringD1Ev@Base 2.1.0+git20141126.2258 + _ZN7QStringD2Ev@Base 2.1.0+git20141126.2258 + _ZN8QByteRefaSEc@Base 2.1.0+git20141126.2258 _ZNK3QCA10BigInteger7compareERKS0_@Base 2.0.2 _ZNK3QCA10BigInteger7toArrayEv@Base 2.0.2 _ZNK3QCA10BigInteger8toStringEv@Base 2.0.2 @@ -1348,6 +2065,8 @@ _ZNK3QCA10KDFContext10metaObjectEv@Base 2.0.2 _ZNK3QCA10MACContext10metaObjectEv@Base 2.0.2 _ZNK3QCA10PrivateKey10canDecryptEv@Base 2.0.2 + _ZNK3QCA10PrivateKey10canEncryptEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA10PrivateKey18maximumEncryptSizeENS_19EncryptionAlgorithmE@Base 2.1.0+git20141126.2258 _ZNK3QCA10PrivateKey4toDHEv@Base 2.0.2 _ZNK3QCA10PrivateKey5toDERERKNS_11SecureArrayENS_12PBEAlgorithmE@Base 2.0.2 _ZNK3QCA10PrivateKey5toDSAEv@Base 2.0.2 @@ -1362,6 +2081,7 @@ _ZNK3QCA10TLSContext10metaObjectEv@Base 2.0.2 _ZNK3QCA10TLSSession6isNullEv@Base 2.0.2 _ZNK3QCA10TextFilter9directionEv@Base 2.0.2 + _ZNK3QCA10TimerFixer10metaObjectEv@Base 2.1.0+git20141126.2258 _ZNK3QCA10TokenAsker10metaObjectEv@Base 2.0.2 _ZNK3QCA10TokenAsker8acceptedEv@Base 2.0.2 _ZNK3QCA11CertContext10metaObjectEv@Base 2.0.2 @@ -1397,6 +2117,7 @@ _ZNK3QCA11CertificateeqERKS0_@Base 2.0.2 _ZNK3QCA11DHPublicKey1yEv@Base 2.0.2 _ZNK3QCA11DHPublicKey6domainEv@Base 2.0.2 + _ZNK3QCA11HandlerBase10metaObjectEv@Base 2.1.0+git20141126.2258 _ZNK3QCA11HashContext10metaObjectEv@Base 2.0.2 _ZNK3QCA11InfoContext10metaObjectEv@Base 2.0.2 _ZNK3QCA11InfoContext17supportedMACTypesEv@Base 2.0.2 @@ -1426,6 +2147,7 @@ _ZNK3QCA11SecureArrayixEi@Base 2.0.2 _ZNK3QCA11SecureLayer10isClosableEv@Base 2.0.2 _ZNK3QCA11SecureLayer10metaObjectEv@Base 2.0.2 + _ZNK3QCA12AskerPrivate10metaObjectEv@Base 2.1.0+git20141126.2258 _ZNK3QCA12BasicContext10metaObjectEv@Base 2.0.2 _ZNK3QCA12DHPrivateKey1xEv@Base 2.0.2 _ZNK3QCA12DHPrivateKey1yEv@Base 2.0.2 @@ -1461,6 +2183,8 @@ _ZNK3QCA13ConsolePrompt10resultCharEv@Base 2.0.2 _ZNK3QCA13ConsolePrompt6resultEv@Base 2.0.2 _ZNK3QCA13ConsolePrompt7Private10metaObjectEv@Base 2.0.2 + _ZNK3QCA13ConsoleThread10metaObjectEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA13ConsoleWorker10metaObjectEv@Base 2.1.0+git20141126.2258 _ZNK3QCA13DSAPrivateKey1xEv@Base 2.0.2 _ZNK3QCA13DSAPrivateKey1yEv@Base 2.0.2 _ZNK3QCA13DSAPrivateKey6domainEv@Base 2.0.2 @@ -1510,17 +2234,37 @@ _ZNK3QCA13SecureMessage9errorCodeEv@Base 2.0.2 _ZNK3QCA13SecureMessage9signatureEv@Base 2.0.2 _ZNK3QCA13SecureMessage9wasSignedEv@Base 2.0.2 + _ZNK3QCA14ConsolePrivate10metaObjectEv@Base 2.1.0+git20141126.2258 _ZNK3QCA14ConstraintType2idEv@Base 2.0.2 _ZNK3QCA14ConstraintType5knownEv@Base 2.0.2 _ZNK3QCA14ConstraintType7sectionEv@Base 2.0.2 _ZNK3QCA14ConstraintTypeeqERKS0_@Base 2.0.2 _ZNK3QCA14ConstraintTypeltERKS0_@Base 2.0.2 _ZNK3QCA14DLGroupContext10metaObjectEv@Base 2.0.2 + _ZNK3QCA14KeyStoreThread10metaObjectEv@Base 2.1.0+git20141126.2258 _ZNK3QCA14MessageContext10metaObjectEv@Base 2.0.2 _ZNK3QCA14MessageContext14diagnosticTextEv@Base 2.0.2 + _ZNK3QCA15DefaultProvider10qcaVersionEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA15DefaultProvider13defaultConfigEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA15DefaultProvider4nameEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA15DefaultProvider7versionEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA15DefaultProvider8featuresEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA15KeyLoaderThread10metaObjectEv@Base 2.1.0+git20141126.2258 _ZNK3QCA15KeyStoreManager10metaObjectEv@Base 2.0.2 _ZNK3QCA15KeyStoreManager6isBusyEv@Base 2.0.2 _ZNK3QCA15KeyStoreManager9keyStoresEv@Base 2.0.2 + _ZNK3QCA15KeyStorePrivate10metaObjectEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA15KeyStoreTracker10metaObjectEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA15KeyStoreTracker18haveProviderSourceEPNS_8ProviderE@Base 2.1.0+git20141126.2258 + _ZNK3QCA15ProviderManager11allFeaturesEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA15ProviderManager11haveAlreadyERK7QString@Base 2.1.0+git20141126.2258 + _ZNK3QCA15ProviderManager14diagnosticTextEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA15ProviderManager20get_default_priorityERK7QString@Base 2.1.0+git20141126.2258 + _ZNK3QCA15ProviderManager4findEPNS_8ProviderE@Base 2.1.0+git20141126.2258 + _ZNK3QCA15ProviderManager4findERK7QString@Base 2.1.0+git20141126.2258 + _ZNK3QCA15ProviderManager7findForERK7QStringS3_@Base 2.1.0+git20141126.2258 + _ZNK3QCA15ProviderManager9providersEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA15SyncThreadAgent10metaObjectEv@Base 2.1.0+git20141126.2258 _ZNK3QCA16ConsoleReference10metaObjectEv@Base 2.0.2 _ZNK3QCA16ConsoleReference12bytesToWriteEv@Base 2.0.2 _ZNK3QCA16ConsoleReference12securityModeEv@Base 2.0.2 @@ -1536,6 +2280,9 @@ _ZNK3QCA16SecureMessageKey6isNullEv@Base 2.0.2 _ZNK3QCA17AbstractLogDevice10metaObjectEv@Base 2.0.2 _ZNK3QCA17AbstractLogDevice4nameEv@Base 2.0.2 + _ZNK3QCA17DefaultMD5Context5cloneEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA17KeyStoreOperation10metaObjectEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA17SynchronizerAgent10metaObjectEv@Base 2.1.0+git20141126.2258 _ZNK3QCA17TLSSessionContext10metaObjectEv@Base 2.0.2 _ZNK3QCA18CertificateOptions11constraintsEv@Base 2.0.2 _ZNK3QCA18CertificateOptions11infoOrderedEv@Base 2.0.2 @@ -1568,6 +2315,8 @@ _ZNK3QCA18CertificateRequest9pathLimitEv@Base 2.0.2 _ZNK3QCA18CertificateRequest9toPEMFileERK7QString@Base 2.0.2 _ZNK3QCA18CertificateRequesteqERKS0_@Base 2.0.2 + _ZNK3QCA18DefaultSHA1Context5cloneEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA18SafeSocketNotifier10metaObjectEv@Base 2.1.0+git20141126.2258 _ZNK3QCA19CertificateInfoPair4typeEv@Base 2.0.2 _ZNK3QCA19CertificateInfoPair5valueEv@Base 2.0.2 _ZNK3QCA19CertificateInfoPaireqERKS0_@Base 2.0.2 @@ -1576,6 +2325,12 @@ _ZNK3QCA19CertificateInfoType7sectionEv@Base 2.0.2 _ZNK3QCA19CertificateInfoTypeeqERKS0_@Base 2.0.2 _ZNK3QCA19CertificateInfoTypeltERKS0_@Base 2.0.2 + _ZNK3QCA19DefaultKeyStoreList10entryTypesEi@Base 2.1.0+git20141126.2258 + _ZNK3QCA19DefaultKeyStoreList10metaObjectEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA19DefaultKeyStoreList4nameEi@Base 2.1.0+git20141126.2258 + _ZNK3QCA19DefaultKeyStoreList4typeEi@Base 2.1.0+git20141126.2258 + _ZNK3QCA19DefaultKeyStoreList5cloneEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA19DefaultKeyStoreList7storeIdEi@Base 2.1.0+git20141126.2258 _ZNK3QCA19KeyStoreListContext10isReadOnlyEi@Base 2.0.2 _ZNK3QCA19KeyStoreListContext10metaObjectEv@Base 2.0.2 _ZNK3QCA19SecureMessageSystem10metaObjectEv@Base 2.0.2 @@ -1583,6 +2338,16 @@ _ZNK3QCA20CertificateAuthority11signRequestERKNS_18CertificateRequestERK9QDateTime@Base 2.0.2 _ZNK3QCA20CertificateAuthority9createCRLERK9QDateTime@Base 2.0.2 _ZNK3QCA20CertificateAuthority9updateCRLERKNS_3CRLERK5QListINS_8CRLEntryEERK9QDateTime@Base 2.0.2 + _ZNK3QCA20DefaultKeyStoreEntry11certificateEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA20DefaultKeyStoreEntry2idEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA20DefaultKeyStoreEntry3crlEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA20DefaultKeyStoreEntry4nameEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA20DefaultKeyStoreEntry4typeEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA20DefaultKeyStoreEntry5cloneEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA20DefaultKeyStoreEntry7storeIdEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA20DefaultKeyStoreEntry9serializeEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA20DefaultKeyStoreEntry9storeNameEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA20DefaultRandomContext5cloneEv@Base 2.1.0+git20141126.2258 _ZNK3QCA20KeyStoreEntryContext10metaObjectEv@Base 2.0.2 _ZNK3QCA20KeyStoreEntryContext11certificateEv@Base 2.0.2 _ZNK3QCA20KeyStoreEntryContext11isAvailableEv@Base 2.0.2 @@ -1597,10 +2362,13 @@ _ZNK3QCA21CertificateCollection12certificatesEv@Base 2.0.2 _ZNK3QCA21CertificateCollection4crlsEv@Base 2.0.2 _ZNK3QCA21CertificateCollectionplERKS0_@Base 2.0.2 + _ZNK3QCA22KeyStoreManagerPrivate10metaObjectEv@Base 2.1.0+git20141126.2258 _ZNK3QCA22SecureMessageSignature11keyValidityEv@Base 2.0.2 _ZNK3QCA22SecureMessageSignature14identityResultEv@Base 2.0.2 _ZNK3QCA22SecureMessageSignature3keyEv@Base 2.0.2 _ZNK3QCA22SecureMessageSignature9timestampEv@Base 2.0.2 + _ZNK3QCA23ConsoleReferencePrivate10metaObjectEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA23QFileSystemWatcherRelay10metaObjectEv@Base 2.1.0+git20141126.2258 _ZNK3QCA25MessageAuthenticationCode14validKeyLengthEi@Base 2.0.2 _ZNK3QCA25MessageAuthenticationCode4typeEv@Base 2.0.2 _ZNK3QCA25MessageAuthenticationCode9keyLengthEv@Base 2.0.2 @@ -1687,6 +2455,33 @@ _ZNK3QCA4SASL9errorCodeEv@Base 2.0.2 _ZNK3QCA4SASL9mechanismEv@Base 2.0.2 _ZNK3QCA4SASL9realmListEv@Base 2.0.2 + (optional=templinst)_ZNK3QCA5Botan12MemoryRegionIjE7grow_toEj@Base 2.0.3 + _ZNK3QCA5Botan13Library_State13get_allocatorERKSs@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan13Library_State9get_mutexEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan15Builtin_Modules10allocatorsEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan15Builtin_Modules13mutex_factoryEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan15Builtin_Modules17default_allocatorEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan16Malloc_Allocator4typeEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan17Locking_Allocator4typeEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan17Pooling_Allocator12Memory_Block8containsEPvj@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan23MemoryMapping_Allocator4typeEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigInt12encoded_sizeENS1_4BaseE@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigInt12reverse_signEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigInt13binary_encodeEPh@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigInt13get_substringEjj@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigInt3absEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigInt3cmpERKS1_b@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigInt4bitsEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigInt5bytesEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigInt7byte_atEj@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigInt7get_bitEj@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigInt7grow_toEj@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigInt7is_zeroEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigInt8grow_regEj@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigInt9sig_wordsEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigInt9to_u32bitEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan6BigIntngEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA5Botan9Exception4whatEv@Base 2.1.0+git20141126.2258 _ZNK3QCA5Event12keyStoreInfoEv@Base 2.0.2 _ZNK3QCA5Event13keyStoreEntryEv@Base 2.0.2 _ZNK3QCA5Event13passwordStyleEv@Base 2.0.2 @@ -1770,6 +2565,7 @@ _ZNK3QCA9Algorithm4typeEv@Base 2.0.2 _ZNK3QCA9Algorithm7contextEv@Base 2.0.2 _ZNK3QCA9Algorithm8providerEv@Base 2.0.2 + _ZNK3QCA9AskerBase10metaObjectEv@Base 2.1.0+git20141126.2258 _ZNK3QCA9CAContext10metaObjectEv@Base 2.0.2 _ZNK3QCA9DHContext10metaObjectEv@Base 2.0.2 _ZNK3QCA9FileWatch10metaObjectEv@Base 2.0.2 @@ -1786,6 +2582,7 @@ _ZNK3QCA9KeyLoader13convertResultEv@Base 2.0.2 _ZNK3QCA9KeyLoader7Private10metaObjectEv@Base 2.0.2 _ZNK3QCA9KeyLoader9keyBundleEv@Base 2.0.2 + _ZNK3QCA9PublicKey10canDecryptEv@Base 2.1.0+git20141126.2258 _ZNK3QCA9PublicKey10canEncryptEv@Base 2.0.2 _ZNK3QCA9PublicKey18maximumEncryptSizeENS_19EncryptionAlgorithmE@Base 2.0.2 _ZNK3QCA9PublicKey4toDHEv@Base 2.0.2 @@ -1795,31 +2592,31 @@ _ZNK3QCA9PublicKey5toRSAEv@Base 2.0.2 _ZNK3QCA9PublicKey9canVerifyEv@Base 2.0.2 _ZNK3QCA9PublicKey9toPEMFileERK7QString@Base 2.0.2 + _ZNK3QCA9SafeTimer10metaObjectEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA9SafeTimer12isSingleShotEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA9SafeTimer7Private10metaObjectEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA9SafeTimer8intervalEv@Base 2.1.0+git20141126.2258 + _ZNK3QCA9SafeTimer8isActiveEv@Base 2.1.0+git20141126.2258 + (optional=templinst)_ZNK4QMapIN3QCA19CertificateInfoTypeE7QStringE5valueERKS1_@Base 2.1.0 + (optional=templinst)_ZNK4QMapIN3QCA19CertificateInfoTypeE7QStringE6valuesERKS1_@Base 2.0.3 + (optional=templinst)_ZNK5QListIN3QCA14ConstraintTypeEE8containsERKS1_@Base 2.0.3 + (optional=templinst)_ZNKSt8_Rb_treeISsSt4pairIKSsPN3QCA5Botan9AllocatorEESt10_Select1stIS6_ESt4lessISsESaIS6_EE4findERS1_@Base 2.0.3 (optional=templinst)_ZNSt6vectorIN3QCA5Botan17Pooling_Allocator12Memory_BlockESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_@Base 2.0.3 (optional=templinst)_ZNSt6vectorIPN3QCA5Botan9AllocatorESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_@Base 2.0.3 (optional=templinst)_ZNSt6vectorISt4pairIPvjESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_@Base 2.0.2 - (optional=templinst)_ZNSt6vectorISt4pairIPvjESaIS2_EED1Ev@Base 2.0.3 - (optional=templinst)_ZNSt6vectorISt4pairIPvjESaIS2_EED2Ev@Base 2.0.3 - (optional=templinst)_ZNSt8_Rb_treeISsSt4pairIKSsPN3QCA5Botan5MutexEESt10_Select1stIS6_ESt4lessISsESaIS6_EE10_M_insert_EPKSt18_Rb_tree_node_baseSF_RKS6_@Base 2.0.3 - (optional=templinst)_ZNSt8_Rb_treeISsSt4pairIKSsPN3QCA5Botan5MutexEESt10_Select1stIS6_ESt4lessISsESaIS6_EE16_M_insert_uniqueERKS6_@Base 2.0.3 (optional=templinst)_ZNSt8_Rb_treeISsSt4pairIKSsPN3QCA5Botan5MutexEESt10_Select1stIS6_ESt4lessISsESaIS6_EE17_M_insert_unique_ESt23_Rb_tree_const_iteratorIS6_ERKS6_@Base 2.0.3 + (optional=templinst)_ZNSt8_Rb_treeISsSt4pairIKSsPN3QCA5Botan5MutexEESt10_Select1stIS6_ESt4lessISsESaIS6_EE24_M_get_insert_unique_posERS1_@Base 2.0.3 + (optional=templinst|arch=amd64)_ZNSt8_Rb_treeISsSt4pairIKSsPN3QCA5Botan5MutexEESt10_Select1stIS6_ESt4lessISsESaIS6_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS6_ERS1_@Base 2.0.3 (optional=templinst)_ZNSt8_Rb_treeISsSt4pairIKSsPN3QCA5Botan5MutexEESt10_Select1stIS6_ESt4lessISsESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E@Base 2.0.3 - (optional=templinst)_ZNSt8_Rb_treeISsSt4pairIKSsPN3QCA5Botan9AllocatorEESt10_Select1stIS6_ESt4lessISsESaIS6_EE10_M_insert_EPKSt18_Rb_tree_node_baseSF_RKS6_@Base 2.0.3 - (optional=templinst)_ZNSt8_Rb_treeISsSt4pairIKSsPN3QCA5Botan9AllocatorEESt10_Select1stIS6_ESt4lessISsESaIS6_EE16_M_insert_uniqueERKS6_@Base 2.0.3 (optional=templinst)_ZNSt8_Rb_treeISsSt4pairIKSsPN3QCA5Botan9AllocatorEESt10_Select1stIS6_ESt4lessISsESaIS6_EE17_M_insert_unique_ESt23_Rb_tree_const_iteratorIS6_ERKS6_@Base 2.0.3 + (optional=templinst)_ZNSt8_Rb_treeISsSt4pairIKSsPN3QCA5Botan9AllocatorEESt10_Select1stIS6_ESt4lessISsESaIS6_EE24_M_get_insert_unique_posERS1_@Base 2.0.3 + (optional=templinst|arch=amd64)_ZNSt8_Rb_treeISsSt4pairIKSsPN3QCA5Botan9AllocatorEESt10_Select1stIS6_ESt4lessISsESaIS6_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS6_ERS1_@Base 2.0.3 (optional=templinst)_ZNSt8_Rb_treeISsSt4pairIKSsPN3QCA5Botan9AllocatorEESt10_Select1stIS6_ESt4lessISsESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E@Base 2.0.3 - (optional=templinst)_ZSt11__push_heapIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEEiS5_EvT_T0_SC_T1_@Base 2.0.3 - (optional=templinst)_ZSt11__push_heapIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEElS5_EvT_T0_SC_T1_@Base 2.0.3 - (optional=templinst)_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_@Base 2.0.3 - (optional=templinst)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEEiS5_EvT_T0_SC_T1_@Base 2.0.3 - (optional=templinst)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEElS5_EvT_T0_SC_T1_@Base 2.0.3 - (optional=templinst)_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEEEvT_SB_SB_@Base 2.0.3 - (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEEEvT_SB_@Base 2.0.3 - (optional=templinst)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEEiEvT_SB_T0_@Base 2.0.3 - (optional=templinst)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEElEvT_SB_T0_@Base 2.0.3 - (optional=templinst)_ZSt19__move_median_firstIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEEEvT_SB_SB_@Base 2.0.3 - (optional=templinst)_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_@Base 2.0.3 - (optional=templinst)_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEEEvT_@Base 2.0.3 + (optional=templinst|arch=i386)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEEiS5_NS0_5__ops15_Iter_less_iterEEvT_T0_SE_T1_T2_@Base 2.1.0+git20141126.2258 + (optional=templinst|arch=amd64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEElS5_NS0_5__ops15_Iter_less_iterEEvT_T0_SE_T1_T2_@Base 2.0.3 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_T0_@Base 2.0.3 + (optional=templinst)_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_SD_T0_@Base 2.0.3 + (optional=templinst)_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3QCA5Botan17Pooling_Allocator12Memory_BlockESt6vectorIS5_SaIS5_EEEENS0_5__ops14_Val_less_iterEEvT_T0_@Base 2.0.3 (optional=templinst)_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@Base 2.0.2 (optional=templinst)_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_@Base 2.0.3 (optional=templinst)_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@Base 2.0.2 @@ -1836,11 +2633,13 @@ _ZTIN3QCA10TLSContextE@Base 2.0.2 _ZTIN3QCA10TLSSessionE@Base 2.0.2 _ZTIN3QCA10TextFilterE@Base 2.0.2 + _ZTIN3QCA10TimerFixerE@Base 2.1.0+git20141126.2258 _ZTIN3QCA10TokenAsker7PrivateE@Base 2.0.2 _ZTIN3QCA10TokenAskerE@Base 2.0.2 _ZTIN3QCA11CertContextE@Base 2.0.2 _ZTIN3QCA11CertificateE@Base 2.0.2 _ZTIN3QCA11DHPublicKeyE@Base 2.0.2 + _ZTIN3QCA11HandlerBaseE@Base 2.1.0+git20141126.2258 _ZTIN3QCA11HashContextE@Base 2.0.2 _ZTIN3QCA11InfoContextE@Base 2.0.2 _ZTIN3QCA11PKeyContextE@Base 2.0.2 @@ -1848,6 +2647,7 @@ _ZTIN3QCA11QPipeDeviceE@Base 2.0.2 _ZTIN3QCA11SASLContextE@Base 2.0.2 _ZTIN3QCA11SecureLayerE@Base 2.0.2 + _ZTIN3QCA12AskerPrivateE@Base 2.1.0+git20141126.2258 _ZTIN3QCA12BasicContextE@Base 2.0.2 _ZTIN3QCA12DHPrivateKeyE@Base 2.0.2 _ZTIN3QCA12DSAPublicKeyE@Base 2.0.2 @@ -1861,6 +2661,8 @@ _ZTIN3QCA13CipherContextE@Base 2.0.2 _ZTIN3QCA13ConsolePrompt7PrivateE@Base 2.0.2 _ZTIN3QCA13ConsolePromptE@Base 2.0.2 + _ZTIN3QCA13ConsoleThreadE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA13ConsoleWorkerE@Base 2.1.0+git20141126.2258 _ZTIN3QCA13DSAPrivateKeyE@Base 2.0.2 _ZTIN3QCA13KeyStoreEntryE@Base 2.0.2 _ZTIN3QCA13PGPKeyContextE@Base 2.0.2 @@ -1871,22 +2673,40 @@ _ZTIN3QCA13RandomContextE@Base 2.0.2 _ZTIN3QCA13SecureMessage7PrivateE@Base 2.0.2 _ZTIN3QCA13SecureMessageE@Base 2.0.2 + _ZTIN3QCA14ConsolePrivateE@Base 2.1.0+git20141126.2258 _ZTIN3QCA14DLGroupContextE@Base 2.0.2 + _ZTIN3QCA14KeyStoreThreadE@Base 2.1.0+git20141126.2258 _ZTIN3QCA14MessageContextE@Base 2.0.2 + _ZTIN3QCA15DefaultProviderE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA15KeyLoaderThreadE@Base 2.1.0+git20141126.2258 _ZTIN3QCA15KeyStoreManagerE@Base 2.0.2 + _ZTIN3QCA15KeyStorePrivateE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA15KeyStoreTrackerE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA15SyncThreadAgentE@Base 2.1.0+git20141126.2258 _ZTIN3QCA16ConsoleReferenceE@Base 2.0.2 _ZTIN3QCA17AbstractLogDeviceE@Base 2.0.2 + _ZTIN3QCA17DefaultMD5ContextE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA17KeyStoreOperationE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA17SynchronizerAgentE@Base 2.1.0+git20141126.2258 _ZTIN3QCA17TLSSessionContextE@Base 2.0.2 _ZTIN3QCA18CertificateRequestE@Base 2.0.2 + _ZTIN3QCA18DefaultSHA1ContextE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA18SafeSocketNotifierE@Base 2.1.0+git20141126.2258 _ZTIN3QCA19BufferedComputationE@Base 2.0.2 + _ZTIN3QCA19DefaultKeyStoreListE@Base 2.1.0+git20141126.2258 _ZTIN3QCA19KeyStoreListContextE@Base 2.0.2 _ZTIN3QCA19SecureMessageSystemE@Base 2.0.2 _ZTIN3QCA20CertificateAuthorityE@Base 2.0.2 + _ZTIN3QCA20DefaultKeyStoreEntryE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA20DefaultRandomContextE@Base 2.1.0+git20141126.2258 _ZTIN3QCA20KeyStoreEntryContextE@Base 2.0.2 _ZTIN3QCA20KeyStoreEntryWatcher7PrivateE@Base 2.0.2 _ZTIN3QCA20KeyStoreEntryWatcherE@Base 2.0.2 _ZTIN3QCA21CertCollectionContextE@Base 2.0.2 _ZTIN3QCA21KeyDerivationFunctionE@Base 2.0.2 + _ZTIN3QCA22KeyStoreManagerPrivateE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA23ConsoleReferencePrivateE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA23QFileSystemWatcherRelayE@Base 2.1.0+git20141126.2258 _ZTIN3QCA25MessageAuthenticationCodeE@Base 2.0.2 _ZTIN3QCA3CMSE@Base 2.0.2 _ZTIN3QCA3CRLE@Base 2.0.2 @@ -1897,6 +2717,32 @@ _ZTIN3QCA4PKeyE@Base 2.0.2 _ZTIN3QCA4SASL7PrivateE@Base 2.0.2 _ZTIN3QCA4SASLE@Base 2.0.2 + _ZTIN3QCA5Botan12Config_ErrorE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan12Format_ErrorE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan13Invalid_StateE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan13Mutex_FactoryE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan14Encoding_ErrorE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan14Internal_ErrorE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan15Builtin_ModulesE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan16Invalid_ArgumentE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan16Malloc_AllocatorE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan16Qt_Mutex_FactoryE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan17Invalid_IV_LengthE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan17Locking_AllocatorE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan17Memory_ExhaustionE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan17Pooling_AllocatorE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan18Invalid_Block_SizeE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan18Invalid_Key_LengthE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan19Algorithm_Not_FoundE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan21Default_Mutex_FactoryE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan22Invalid_Algorithm_NameE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan22Invalid_Message_NumberE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan23MemoryMapping_AllocatorE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan5MutexE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan6BigInt12DivideByZeroE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan7ModulesE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan9AllocatorE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA5Botan9ExceptionE@Base 2.1.0+git20141126.2258 _ZTIN3QCA6Base64E@Base 2.0.2 _ZTIN3QCA6CipherE@Base 2.0.2 _ZTIN3QCA6FilterE@Base 2.0.2 @@ -1915,6 +2761,7 @@ _ZTIN3QCA8QPipeEnd7PrivateE@Base 2.0.2 _ZTIN3QCA8QPipeEndE@Base 2.0.2 _ZTIN3QCA9AlgorithmE@Base 2.0.2 + _ZTIN3QCA9AskerBaseE@Base 2.1.0+git20141126.2258 _ZTIN3QCA9CAContextE@Base 2.0.2 _ZTIN3QCA9DHContextE@Base 2.0.2 _ZTIN3QCA9FileWatch7PrivateE@Base 2.0.2 @@ -1922,6 +2769,8 @@ _ZTIN3QCA9KeyLoader7PrivateE@Base 2.0.2 _ZTIN3QCA9KeyLoaderE@Base 2.0.2 _ZTIN3QCA9PublicKeyE@Base 2.0.2 + _ZTIN3QCA9SafeTimer7PrivateE@Base 2.1.0+git20141126.2258 + _ZTIN3QCA9SafeTimerE@Base 2.1.0+git20141126.2258 _ZTSN3QCA10CRLContextE@Base 2.0.2 _ZTSN3QCA10CSRContextE@Base 2.0.2 _ZTSN3QCA10DSAContextE@Base 2.0.2 @@ -1935,11 +2784,13 @@ _ZTSN3QCA10TLSContextE@Base 2.0.2 _ZTSN3QCA10TLSSessionE@Base 2.0.2 _ZTSN3QCA10TextFilterE@Base 2.0.2 + _ZTSN3QCA10TimerFixerE@Base 2.1.0+git20141126.2258 _ZTSN3QCA10TokenAsker7PrivateE@Base 2.0.2 _ZTSN3QCA10TokenAskerE@Base 2.0.2 _ZTSN3QCA11CertContextE@Base 2.0.2 _ZTSN3QCA11CertificateE@Base 2.0.2 _ZTSN3QCA11DHPublicKeyE@Base 2.0.2 + _ZTSN3QCA11HandlerBaseE@Base 2.1.0+git20141126.2258 _ZTSN3QCA11HashContextE@Base 2.0.2 _ZTSN3QCA11InfoContextE@Base 2.0.2 _ZTSN3QCA11PKeyContextE@Base 2.0.2 @@ -1947,6 +2798,7 @@ _ZTSN3QCA11QPipeDeviceE@Base 2.0.2 _ZTSN3QCA11SASLContextE@Base 2.0.2 _ZTSN3QCA11SecureLayerE@Base 2.0.2 + _ZTSN3QCA12AskerPrivateE@Base 2.1.0+git20141126.2258 _ZTSN3QCA12BasicContextE@Base 2.0.2 _ZTSN3QCA12DHPrivateKeyE@Base 2.0.2 _ZTSN3QCA12DSAPublicKeyE@Base 2.0.2 @@ -1960,6 +2812,8 @@ _ZTSN3QCA13CipherContextE@Base 2.0.2 _ZTSN3QCA13ConsolePrompt7PrivateE@Base 2.0.2 _ZTSN3QCA13ConsolePromptE@Base 2.0.2 + _ZTSN3QCA13ConsoleThreadE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA13ConsoleWorkerE@Base 2.1.0+git20141126.2258 _ZTSN3QCA13DSAPrivateKeyE@Base 2.0.2 _ZTSN3QCA13KeyStoreEntryE@Base 2.0.2 _ZTSN3QCA13PGPKeyContextE@Base 2.0.2 @@ -1970,22 +2824,40 @@ _ZTSN3QCA13RandomContextE@Base 2.0.2 _ZTSN3QCA13SecureMessage7PrivateE@Base 2.0.2 _ZTSN3QCA13SecureMessageE@Base 2.0.2 + _ZTSN3QCA14ConsolePrivateE@Base 2.1.0+git20141126.2258 _ZTSN3QCA14DLGroupContextE@Base 2.0.2 + _ZTSN3QCA14KeyStoreThreadE@Base 2.1.0+git20141126.2258 _ZTSN3QCA14MessageContextE@Base 2.0.2 + _ZTSN3QCA15DefaultProviderE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA15KeyLoaderThreadE@Base 2.1.0+git20141126.2258 _ZTSN3QCA15KeyStoreManagerE@Base 2.0.2 + _ZTSN3QCA15KeyStorePrivateE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA15KeyStoreTrackerE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA15SyncThreadAgentE@Base 2.1.0+git20141126.2258 _ZTSN3QCA16ConsoleReferenceE@Base 2.0.2 _ZTSN3QCA17AbstractLogDeviceE@Base 2.0.2 + _ZTSN3QCA17DefaultMD5ContextE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA17KeyStoreOperationE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA17SynchronizerAgentE@Base 2.1.0+git20141126.2258 _ZTSN3QCA17TLSSessionContextE@Base 2.0.2 _ZTSN3QCA18CertificateRequestE@Base 2.0.2 + _ZTSN3QCA18DefaultSHA1ContextE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA18SafeSocketNotifierE@Base 2.1.0+git20141126.2258 _ZTSN3QCA19BufferedComputationE@Base 2.0.2 + _ZTSN3QCA19DefaultKeyStoreListE@Base 2.1.0+git20141126.2258 _ZTSN3QCA19KeyStoreListContextE@Base 2.0.2 _ZTSN3QCA19SecureMessageSystemE@Base 2.0.2 _ZTSN3QCA20CertificateAuthorityE@Base 2.0.2 + _ZTSN3QCA20DefaultKeyStoreEntryE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA20DefaultRandomContextE@Base 2.1.0+git20141126.2258 _ZTSN3QCA20KeyStoreEntryContextE@Base 2.0.2 _ZTSN3QCA20KeyStoreEntryWatcher7PrivateE@Base 2.0.2 _ZTSN3QCA20KeyStoreEntryWatcherE@Base 2.0.2 _ZTSN3QCA21CertCollectionContextE@Base 2.0.2 _ZTSN3QCA21KeyDerivationFunctionE@Base 2.0.2 + _ZTSN3QCA22KeyStoreManagerPrivateE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA23ConsoleReferencePrivateE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA23QFileSystemWatcherRelayE@Base 2.1.0+git20141126.2258 _ZTSN3QCA25MessageAuthenticationCodeE@Base 2.0.2 _ZTSN3QCA3CMSE@Base 2.0.2 _ZTSN3QCA3CRLE@Base 2.0.2 @@ -1996,6 +2868,32 @@ _ZTSN3QCA4PKeyE@Base 2.0.2 _ZTSN3QCA4SASL7PrivateE@Base 2.0.2 _ZTSN3QCA4SASLE@Base 2.0.2 + _ZTSN3QCA5Botan12Config_ErrorE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan12Format_ErrorE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan13Invalid_StateE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan13Mutex_FactoryE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan14Encoding_ErrorE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan14Internal_ErrorE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan15Builtin_ModulesE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan16Invalid_ArgumentE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan16Malloc_AllocatorE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan16Qt_Mutex_FactoryE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan17Invalid_IV_LengthE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan17Locking_AllocatorE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan17Memory_ExhaustionE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan17Pooling_AllocatorE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan18Invalid_Block_SizeE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan18Invalid_Key_LengthE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan19Algorithm_Not_FoundE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan21Default_Mutex_FactoryE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan22Invalid_Algorithm_NameE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan22Invalid_Message_NumberE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan23MemoryMapping_AllocatorE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan5MutexE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan6BigInt12DivideByZeroE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan7ModulesE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan9AllocatorE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA5Botan9ExceptionE@Base 2.1.0+git20141126.2258 _ZTSN3QCA6Base64E@Base 2.0.2 _ZTSN3QCA6CipherE@Base 2.0.2 _ZTSN3QCA6FilterE@Base 2.0.2 @@ -2014,6 +2912,7 @@ _ZTSN3QCA8QPipeEnd7PrivateE@Base 2.0.2 _ZTSN3QCA8QPipeEndE@Base 2.0.2 _ZTSN3QCA9AlgorithmE@Base 2.0.2 + _ZTSN3QCA9AskerBaseE@Base 2.1.0+git20141126.2258 _ZTSN3QCA9CAContextE@Base 2.0.2 _ZTSN3QCA9DHContextE@Base 2.0.2 _ZTSN3QCA9FileWatch7PrivateE@Base 2.0.2 @@ -2021,6 +2920,8 @@ _ZTSN3QCA9KeyLoader7PrivateE@Base 2.0.2 _ZTSN3QCA9KeyLoaderE@Base 2.0.2 _ZTSN3QCA9PublicKeyE@Base 2.0.2 + _ZTSN3QCA9SafeTimer7PrivateE@Base 2.1.0+git20141126.2258 + _ZTSN3QCA9SafeTimerE@Base 2.1.0+git20141126.2258 _ZTVN3QCA10CRLContextE@Base 2.0.2 _ZTVN3QCA10CSRContextE@Base 2.0.2 _ZTVN3QCA10DSAContextE@Base 2.0.2 @@ -2034,11 +2935,13 @@ _ZTVN3QCA10TLSContextE@Base 2.0.2 _ZTVN3QCA10TLSSessionE@Base 2.0.2 _ZTVN3QCA10TextFilterE@Base 2.0.2 + _ZTVN3QCA10TimerFixerE@Base 2.1.0+git20141126.2258 _ZTVN3QCA10TokenAsker7PrivateE@Base 2.0.2 _ZTVN3QCA10TokenAskerE@Base 2.0.2 _ZTVN3QCA11CertContextE@Base 2.0.2 _ZTVN3QCA11CertificateE@Base 2.0.2 _ZTVN3QCA11DHPublicKeyE@Base 2.0.2 + _ZTVN3QCA11HandlerBaseE@Base 2.1.0+git20141126.2258 _ZTVN3QCA11HashContextE@Base 2.0.2 _ZTVN3QCA11InfoContextE@Base 2.0.2 _ZTVN3QCA11PKeyContextE@Base 2.0.2 @@ -2046,6 +2949,7 @@ _ZTVN3QCA11QPipeDeviceE@Base 2.0.2 _ZTVN3QCA11SASLContextE@Base 2.0.2 _ZTVN3QCA11SecureLayerE@Base 2.0.2 + _ZTVN3QCA12AskerPrivateE@Base 2.1.0+git20141126.2258 _ZTVN3QCA12BasicContextE@Base 2.0.2 _ZTVN3QCA12DHPrivateKeyE@Base 2.0.2 _ZTVN3QCA12DSAPublicKeyE@Base 2.0.2 @@ -2059,6 +2963,8 @@ _ZTVN3QCA13CipherContextE@Base 2.0.2 _ZTVN3QCA13ConsolePrompt7PrivateE@Base 2.0.2 _ZTVN3QCA13ConsolePromptE@Base 2.0.2 + _ZTVN3QCA13ConsoleThreadE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA13ConsoleWorkerE@Base 2.1.0+git20141126.2258 _ZTVN3QCA13DSAPrivateKeyE@Base 2.0.2 _ZTVN3QCA13KeyStoreEntryE@Base 2.0.2 _ZTVN3QCA13PGPKeyContextE@Base 2.0.2 @@ -2069,22 +2975,40 @@ _ZTVN3QCA13RandomContextE@Base 2.0.2 _ZTVN3QCA13SecureMessage7PrivateE@Base 2.0.2 _ZTVN3QCA13SecureMessageE@Base 2.0.2 + _ZTVN3QCA14ConsolePrivateE@Base 2.1.0+git20141126.2258 _ZTVN3QCA14DLGroupContextE@Base 2.0.2 + _ZTVN3QCA14KeyStoreThreadE@Base 2.1.0+git20141126.2258 _ZTVN3QCA14MessageContextE@Base 2.0.2 + _ZTVN3QCA15DefaultProviderE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA15KeyLoaderThreadE@Base 2.1.0+git20141126.2258 _ZTVN3QCA15KeyStoreManagerE@Base 2.0.2 + _ZTVN3QCA15KeyStorePrivateE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA15KeyStoreTrackerE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA15SyncThreadAgentE@Base 2.1.0+git20141126.2258 _ZTVN3QCA16ConsoleReferenceE@Base 2.0.2 _ZTVN3QCA17AbstractLogDeviceE@Base 2.0.2 + _ZTVN3QCA17DefaultMD5ContextE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA17KeyStoreOperationE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA17SynchronizerAgentE@Base 2.1.0+git20141126.2258 _ZTVN3QCA17TLSSessionContextE@Base 2.0.2 _ZTVN3QCA18CertificateRequestE@Base 2.0.2 + _ZTVN3QCA18DefaultSHA1ContextE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA18SafeSocketNotifierE@Base 2.1.0+git20141126.2258 _ZTVN3QCA19BufferedComputationE@Base 2.0.2 + _ZTVN3QCA19DefaultKeyStoreListE@Base 2.1.0+git20141126.2258 _ZTVN3QCA19KeyStoreListContextE@Base 2.0.2 _ZTVN3QCA19SecureMessageSystemE@Base 2.0.2 _ZTVN3QCA20CertificateAuthorityE@Base 2.0.2 + _ZTVN3QCA20DefaultKeyStoreEntryE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA20DefaultRandomContextE@Base 2.1.0+git20141126.2258 _ZTVN3QCA20KeyStoreEntryContextE@Base 2.0.2 _ZTVN3QCA20KeyStoreEntryWatcher7PrivateE@Base 2.0.2 _ZTVN3QCA20KeyStoreEntryWatcherE@Base 2.0.2 _ZTVN3QCA21CertCollectionContextE@Base 2.0.2 _ZTVN3QCA21KeyDerivationFunctionE@Base 2.0.2 + _ZTVN3QCA22KeyStoreManagerPrivateE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA23ConsoleReferencePrivateE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA23QFileSystemWatcherRelayE@Base 2.1.0+git20141126.2258 _ZTVN3QCA25MessageAuthenticationCodeE@Base 2.0.2 _ZTVN3QCA3CMSE@Base 2.0.2 _ZTVN3QCA3CRLE@Base 2.0.2 @@ -2095,6 +3019,32 @@ _ZTVN3QCA4PKeyE@Base 2.0.2 _ZTVN3QCA4SASL7PrivateE@Base 2.0.2 _ZTVN3QCA4SASLE@Base 2.0.2 + _ZTVN3QCA5Botan12Config_ErrorE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan12Format_ErrorE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan13Invalid_StateE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan13Mutex_FactoryE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan14Encoding_ErrorE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan14Internal_ErrorE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan15Builtin_ModulesE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan16Invalid_ArgumentE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan16Malloc_AllocatorE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan16Qt_Mutex_FactoryE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan17Invalid_IV_LengthE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan17Locking_AllocatorE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan17Memory_ExhaustionE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan17Pooling_AllocatorE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan18Invalid_Block_SizeE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan18Invalid_Key_LengthE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan19Algorithm_Not_FoundE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan21Default_Mutex_FactoryE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan22Invalid_Algorithm_NameE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan22Invalid_Message_NumberE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan23MemoryMapping_AllocatorE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan5MutexE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan6BigInt12DivideByZeroE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan7ModulesE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan9AllocatorE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA5Botan9ExceptionE@Base 2.1.0+git20141126.2258 _ZTVN3QCA6Base64E@Base 2.0.2 _ZTVN3QCA6CipherE@Base 2.0.2 _ZTVN3QCA6FilterE@Base 2.0.2 @@ -2113,6 +3063,7 @@ _ZTVN3QCA8QPipeEnd7PrivateE@Base 2.0.2 _ZTVN3QCA8QPipeEndE@Base 2.0.2 _ZTVN3QCA9AlgorithmE@Base 2.0.2 + _ZTVN3QCA9AskerBaseE@Base 2.1.0+git20141126.2258 _ZTVN3QCA9CAContextE@Base 2.0.2 _ZTVN3QCA9DHContextE@Base 2.0.2 _ZTVN3QCA9FileWatch7PrivateE@Base 2.0.2 @@ -2120,6 +3071,42 @@ _ZTVN3QCA9KeyLoader7PrivateE@Base 2.0.2 _ZTVN3QCA9KeyLoaderE@Base 2.0.2 _ZTVN3QCA9PublicKeyE@Base 2.0.2 + _ZTVN3QCA9SafeTimer7PrivateE@Base 2.1.0+git20141126.2258 + _ZTVN3QCA9SafeTimerE@Base 2.1.0+git20141126.2258 + (optional=templinst)_ZZN11QMetaTypeIdI5QListIN3QCA13KeyStoreEntry4TypeEEE14qt_metatype_idEvE11metatype_id@Base 2.0.3 + (optional=templinst)_ZZN11QMetaTypeIdI5QListIN3QCA13KeyStoreEntryEEE14qt_metatype_idEvE11metatype_id@Base 2.0.3 + (optional=templinst)_ZZN11QMetaTypeIdIN3QCA11CertificateEE14qt_metatype_idEvE11metatype_id@Base 2.0.3 + (optional=templinst)_ZZN11QMetaTypeIdIN3QCA11SecureArrayEE14qt_metatype_idEvE11metatype_id@Base 2.0.3 + (optional=templinst)_ZZN11QMetaTypeIdIN3QCA13KeyStoreEntryEE14qt_metatype_idEvE11metatype_id@Base 2.0.3 + (optional=templinst)_ZZN11QMetaTypeIdIN3QCA3CRLEE14qt_metatype_idEvE11metatype_id@Base 2.0.3 + (optional=templinst)_ZZN11QMetaTypeIdIN3QCA6PGPKeyEE14qt_metatype_idEvE11metatype_id@Base 2.0.3 + (optional=templinst)_ZZN11QMetaTypeIdIN3QCA9KeyBundleEE14qt_metatype_idEvE11metatype_id@Base 2.0.3 + _ZplRK7QStringS1_@Base 2.1.0+git20141126.2258 + _ZplRK7QStringc@Base 2.1.0+git20141126.2258 + bigint_add2@Base 2.1.0+git20141126.2258 + bigint_add2_nc@Base 2.1.0+git20141126.2258 + bigint_add3@Base 2.1.0+git20141126.2258 + bigint_add3_nc@Base 2.1.0+git20141126.2258 + bigint_cmp@Base 2.1.0+git20141126.2258 + bigint_comba_mul4@Base 2.1.0+git20141126.2258 + bigint_comba_mul6@Base 2.1.0+git20141126.2258 + bigint_comba_mul8@Base 2.1.0+git20141126.2258 + bigint_comba_sqr4@Base 2.1.0+git20141126.2258 + bigint_comba_sqr6@Base 2.1.0+git20141126.2258 + bigint_comba_sqr8@Base 2.1.0+git20141126.2258 + bigint_divcore@Base 2.1.0+git20141126.2258 + bigint_divop@Base 2.1.0+git20141126.2258 + bigint_linmul2@Base 2.1.0+git20141126.2258 + bigint_linmul3@Base 2.1.0+git20141126.2258 + bigint_modop@Base 2.1.0+git20141126.2258 + bigint_mul_add_words@Base 2.1.0+git20141126.2258 + bigint_shl1@Base 2.1.0+git20141126.2258 + bigint_shl2@Base 2.1.0+git20141126.2258 + bigint_shr1@Base 2.1.0+git20141126.2258 + bigint_shr2@Base 2.1.0+git20141126.2258 + bigint_sub2@Base 2.1.0+git20141126.2258 + bigint_sub3@Base 2.1.0+git20141126.2258 + bigint_wordmul@Base 2.1.0+git20141126.2258 (c++)"non-virtual thunk to QCA::CMS::~CMS()@Base" 2.0.2 (c++)"non-virtual thunk to QCA::Cipher::clear()@Base" 2.0.2 (c++)"non-virtual thunk to QCA::Cipher::final()@Base" 2.0.2 diff -Nru qca2-2.0.3/debian/meta/upstream_scm.json qca2-2.1.0/debian/meta/upstream_scm.json --- qca2-2.0.3/debian/meta/upstream_scm.json 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/debian/meta/upstream_scm.json 2014-11-28 14:05:32.000000000 +0000 @@ -0,0 +1,3 @@ +{ + "url" : "git://anongit.kde.org/qca.git" +} diff -Nru qca2-2.0.3/debian/not-installed qca2-2.1.0/debian/not-installed --- qca2-2.0.3/debian/not-installed 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/debian/not-installed 2014-11-28 14:05:32.000000000 +0000 @@ -0,0 +1 @@ +./usr/share/man/man1/qcatool.1 diff -Nru qca2-2.0.3/debian/patches/disable_randomunittest.diff qca2-2.1.0/debian/patches/disable_randomunittest.diff --- qca2-2.0.3/debian/patches/disable_randomunittest.diff 2011-05-29 19:09:30.000000000 +0000 +++ qca2-2.1.0/debian/patches/disable_randomunittest.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -Description: Disable broken unit test that fails if two subsequent - random numbers are the same. -Author: Felix Geyer - -diff -Nur qca2-2.0.3.orig/unittest/checkall qca2-2.0.3/unittest/checkall ---- qca2-2.0.3.orig/unittest/checkall -+++ qca2-2.0.3/unittest/checkall -@@ -20,7 +20,7 @@ - cd pgpunittest && make test && cd .. && \ - cd pipeunittest && make test && cd .. && \ - cd pkits && make test && cd .. && \ --cd randomunittest && make test && cd .. && \ -+#cd randomunittest && make test && cd .. && \ - cd rsaunittest && make test && cd .. && \ - cd securearrayunittest && make test && cd .. && \ - cd staticunittest && make test && cd .. && \ diff -Nru qca2-2.0.3/debian/patches/fix_build_gcc4.7.diff qca2-2.1.0/debian/patches/fix_build_gcc4.7.diff --- qca2-2.0.3/debian/patches/fix_build_gcc4.7.diff 2012-05-20 08:53:40.000000000 +0000 +++ qca2-2.1.0/debian/patches/fix_build_gcc4.7.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -Description: Fix FTBFS with gc 4.7. -Origin: upstream, http://websvn.kde.org/?view=revision&sortby=date&revision=1273508 - ---- a/src/botantools/botan/botan/secmem.h -+++ b/src/botantools/botan/botan/secmem.h -@@ -191,15 +191,15 @@ - { - public: - MemoryVector& operator=(const MemoryRegion& in) -- { if(this != &in) set(in); return (*this); } -+ { if(this != &in) this->set(in); return (*this); } - - MemoryVector(u32bit n = 0) { MemoryRegion::init(false, n); } - MemoryVector(const T in[], u32bit n) -- { MemoryRegion::init(false); set(in, n); } -+ { MemoryRegion::init(false); this->set(in, n); } - MemoryVector(const MemoryRegion& in) -- { MemoryRegion::init(false); set(in); } -+ { MemoryRegion::init(false); this->set(in); } - MemoryVector(const MemoryRegion& in1, const MemoryRegion& in2) -- { MemoryRegion::init(false); set(in1); append(in2); } -+ { MemoryRegion::init(false); this->set(in1); append(in2); } - }; - - /************************************************* -@@ -210,15 +210,15 @@ - { - public: - SecureVector& operator=(const MemoryRegion& in) -- { if(this != &in) set(in); return (*this); } -+ { if(this != &in) this->set(in); return (*this); } - - SecureVector(u32bit n = 0) { MemoryRegion::init(true, n); } - SecureVector(const T in[], u32bit n) -- { MemoryRegion::init(true); set(in, n); } -+ { MemoryRegion::init(true); this->set(in, n); } - SecureVector(const MemoryRegion& in) -- { MemoryRegion::init(true); set(in); } -+ { MemoryRegion::init(true); this->set(in); } - SecureVector(const MemoryRegion& in1, const MemoryRegion& in2) -- { MemoryRegion::init(true); set(in1); append(in2); } -+ { MemoryRegion::init(true); this->set(in1); append(in2); } - }; - - /************************************************* -@@ -229,14 +229,14 @@ - { - public: - SecureBuffer& operator=(const SecureBuffer& in) -- { if(this != &in) set(in); return (*this); } -+ { if(this != &in) this->set(in); return (*this); } - - SecureBuffer() { MemoryRegion::init(true, L); } - SecureBuffer(const T in[], u32bit n) - { MemoryRegion::init(true, L); copy(in, n); } - private: - SecureBuffer& operator=(const MemoryRegion& in) -- { if(this != &in) set(in); return (*this); } -+ { if(this != &in) this->set(in); return (*this); } - }; - - } diff -Nru qca2-2.0.3/debian/patches/kubuntu_ignore_filewatch_test.diff qca2-2.1.0/debian/patches/kubuntu_ignore_filewatch_test.diff --- qca2-2.0.3/debian/patches/kubuntu_ignore_filewatch_test.diff 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/debian/patches/kubuntu_ignore_filewatch_test.diff 2014-11-26 13:07:01.000000000 +0000 @@ -0,0 +1,20 @@ +Description: ignore test + this test works locally but not in the buildd for some reason +Author: Jonathan Riddell +Origin: me +Forwarded: no, needs investigation why it is failing +Last-Update: 2014-11-26 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: qca2-2.1.0/unittest/CMakeLists.txt +=================================================================== +--- qca2-2.1.0.orig/unittest/CMakeLists.txt ++++ qca2-2.1.0/unittest/CMakeLists.txt +@@ -13,7 +13,6 @@ add_subdirectory(cipherunittest) + add_subdirectory(clientplugin) + add_subdirectory(cms) + add_subdirectory(dsaunittest) +-add_subdirectory(filewatchunittest) + add_subdirectory(hashunittest) + add_subdirectory(hexunittest) + add_subdirectory(kdfunittest) diff -Nru qca2-2.0.3/debian/patches/kubuntu_mkspecs-dir.diff qca2-2.1.0/debian/patches/kubuntu_mkspecs-dir.diff --- qca2-2.0.3/debian/patches/kubuntu_mkspecs-dir.diff 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/debian/patches/kubuntu_mkspecs-dir.diff 2014-11-26 13:07:01.000000000 +0000 @@ -0,0 +1,22 @@ +Description: fix mkspecs install dir +Author: Jonathan Riddell +Origin: me +Bug: https://bugs.kde.org/show_bug.cgi?id=341289 +Last-Update: 2014-11-26 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- qca/CMakeLists.txt~ 2014-11-06 08:15:45.000000000 +0000 ++++ qca/CMakeLists.txt 2014-11-26 11:51:46.624782953 +0000 +@@ -169,7 +169,11 @@ + set(QCA_PLUGINS_INSTALL_DIR "${LIB_INSTALL_DIR}/${QCA_LIB_NAME}" CACHE PATH "Directory where qca plugins will install") + set(QCA_BINARY_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Directory where qca plugins will install") + set(QCA_LIBRARY_INSTALL_DIR "${LIB_INSTALL_DIR}" CACHE PATH "Directory where qca library will install") +- set(QCA_FEATURE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/mkspecs/features" CACHE PATH "Directory where qca feature file will install") ++ if(QT4_BUILD) ++ set(QCA_FEATURE_INSTALL_DIR "${QT_MKSPECS_DIR}/mkspecs/features" CACHE PATH "Directory where qca feature file will install") ++ else() ++ set(QCA_FEATURE_INSTALL_DIR "${LIB_INSTALL_DIR}/mkspecs/features" CACHE PATH "Directory where qca feature file will install") ++ endif() + set(QCA_INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Directory where qca public headers will install") + set(QCA_PRIVATE_INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Directory where qca headers will install") + set(QCA_DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/doc/${QCA_LIB_NAME}/html" CACHE PATH "Directory where qca documentation will install") diff -Nru qca2-2.0.3/debian/patches/pipeunittest_more_wait.diff qca2-2.1.0/debian/patches/pipeunittest_more_wait.diff --- qca2-2.0.3/debian/patches/pipeunittest_more_wait.diff 2014-06-11 12:24:32.000000000 +0000 +++ qca2-2.1.0/debian/patches/pipeunittest_more_wait.diff 2014-11-26 13:07:01.000000000 +0000 @@ -7,9 +7,11 @@ Last-Update: 2012-06-03 Forwarded: no ---- a/unittest/pipeunittest/pipeunittest.cpp -+++ b/unittest/pipeunittest/pipeunittest.cpp -@@ -106,17 +106,17 @@ void PipeUnitTest::readWrite() +Index: qca-2.1.0/unittest/pipeunittest/pipeunittest.cpp +=================================================================== +--- qca-2.1.0.orig/unittest/pipeunittest/pipeunittest.cpp ++++ qca-2.1.0/unittest/pipeunittest/pipeunittest.cpp +@@ -109,17 +109,17 @@ void PipeUnitTest::readWrite() pipe1.readEnd().enable(); pipe1.writeEnd().write( testData1 ); @@ -31,7 +33,7 @@ QCOMPARE( pipe1.readEnd().bytesAvailable(), testData1.size() + testData2.size() ); QByteArray thisRead = pipe1.readEnd().read(1); QCOMPARE( thisRead, QByteArray("D") ); -@@ -141,17 +141,17 @@ void PipeUnitTest::readWriteSecure() +@@ -144,17 +144,17 @@ void PipeUnitTest::readWriteSecure() pipe1.readEnd().enable(); pipe1.writeEnd().writeSecure( testData1 ); @@ -53,7 +55,7 @@ QCOMPARE( pipe1.readEnd().bytesAvailable(), testData1.size() + testData2.size() ); QCA::SecureArray thisRead = pipe1.readEnd().readSecure(1); QCOMPARE( thisRead, QCA::SecureArray("D") ); -@@ -187,8 +187,8 @@ void PipeUnitTest::signalTests() +@@ -190,8 +190,8 @@ void PipeUnitTest::signalTests() QByteArray data("Far better, it is, to dare mighty things"); pipe->writeEnd().write( data ); @@ -64,7 +66,7 @@ QCOMPARE( readyReadSpy.count(), 1 ); QCOMPARE( bytesWrittenSpy.count(), 1 ); // this pulls out the first argument to the first signal as an integer -@@ -199,11 +199,11 @@ void PipeUnitTest::signalTests() +@@ -202,11 +202,11 @@ void PipeUnitTest::signalTests() QCOMPARE( closedReadSpy.count(), 0 ); pipe->readEnd().close(); @@ -78,7 +80,7 @@ QCOMPARE( closedWriteSpy.count(), 1 ); QCOMPARE( closedReadSpy.count(), 1 ); } -@@ -234,8 +234,8 @@ void PipeUnitTest::signalTestsSecure() +@@ -237,8 +237,8 @@ void PipeUnitTest::signalTestsSecure() QCA::SecureArray data("Far better, it is, to dare mighty things"); pipe->writeEnd().writeSecure( data ); @@ -89,7 +91,7 @@ QCOMPARE( readyReadSpy.count(), 1 ); QCOMPARE( bytesWrittenSpy.count(), 1 ); // this pulls out the first argument to the first signal as an integer -@@ -246,11 +246,11 @@ void PipeUnitTest::signalTestsSecure() +@@ -249,11 +249,11 @@ void PipeUnitTest::signalTestsSecure() QCOMPARE( closedReadSpy.count(), 0 ); pipe->readEnd().close(); diff -Nru qca2-2.0.3/debian/patches/series qca2-2.1.0/debian/patches/series --- qca2-2.0.3/debian/patches/series 2014-06-11 12:24:32.000000000 +0000 +++ qca2-2.1.0/debian/patches/series 2015-01-14 15:12:04.000000000 +0000 @@ -1,5 +1,6 @@ define_qca_export.diff -disable_randomunittest.diff -fix_build_gcc4.7.diff pipeunittest_more_wait.diff hurd_msync.diff +kubuntu_mkspecs-dir.diff +kubuntu_ignore_filewatch_test.diff +upstream_watchfile-fixes.diff diff -Nru qca2-2.0.3/debian/patches/upstream_watchfile-fixes.diff qca2-2.1.0/debian/patches/upstream_watchfile-fixes.diff --- qca2-2.0.3/debian/patches/upstream_watchfile-fixes.diff 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/debian/patches/upstream_watchfile-fixes.diff 2015-01-14 15:11:47.000000000 +0000 @@ -0,0 +1,48 @@ +From: Harald Sitter +Date: Fri, 19 Dec 2014 15:47:40 +0000 +Subject: prevent filewatches from emitting changes when there is no file +X-Git-Url: http://quickgit.kde.org/?p=qca.git&a=commitdiff&h=4aae2dee34d2f0f6324a9e7819e29310106dc5bb +--- +prevent filewatches from emitting changes when there is no file + +(this also fixes the flaky filewatch test that would fail for example on +ubuntu launchpad builds) + +it can happen that (supposedly for filesystem reasons) there are two +changes signals arriving in the watcher code, by the time the first arrives +the file would however already be deleted, by the time the second arrives +it would thus notify of changes to a file that does not exist which is +silly and causes problems with the filewatchtest as it uses signal emission +counting to verify the behavior. +to prevent this problem from popping up there is an additional save guard +in the file_changed slot that will ignore a change if the path in question +doesn't exist AND there is no file being watched by the watcher. + +REVIEW: 121588 +--- + + +--- a/src/support/dirwatch.cpp ++++ b/src/support/dirwatch.cpp +@@ -210,8 +210,19 @@ + { + Q_UNUSED(path); + QFileInfo fi(filePath); +- if(!fi.exists()) ++ if (!fi.exists() && !fileExisted) { ++ // Got a file changed signal on a file that does not exist ++ // and is not actively watched. This happens when we ++ // previously watched a file but it was deleted and after ++ // the original deletion changed-signal we get another one ++ // (for example because of bad signal timing). In this scenario ++ // we must ignore the change as the change, whatever it may ++ // have been, is of no interest to us because we don't watch ++ // the file and furthermore the file does not even exist. ++ return; ++ } else if (!fi.exists()) { + fileExisted = false; ++ }; + emit q->changed(); + } + }; + diff -Nru qca2-2.0.3/debian/qca2-utils.install qca2-2.1.0/debian/qca2-utils.install --- qca2-2.0.3/debian/qca2-utils.install 2012-05-20 09:21:12.000000000 +0000 +++ qca2-2.1.0/debian/qca2-utils.install 2014-11-26 13:07:01.000000000 +0000 @@ -1 +1 @@ -usr/bin/qcatool2 +usr/bin/ diff -Nru qca2-2.0.3/debian/qca2-utils.lintian-overrides qca2-2.1.0/debian/qca2-utils.lintian-overrides --- qca2-2.0.3/debian/qca2-utils.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/debian/qca2-utils.lintian-overrides 2014-11-28 14:05:32.000000000 +0000 @@ -0,0 +1 @@ +qca2-utils: binary-without-manpage usr/bin/mozcerts diff -Nru qca2-2.0.3/debian/qca2-utils.manpages qca2-2.1.0/debian/qca2-utils.manpages --- qca2-2.0.3/debian/qca2-utils.manpages 2012-05-20 09:01:00.000000000 +0000 +++ qca2-2.1.0/debian/qca2-utils.manpages 2014-11-26 13:07:01.000000000 +0000 @@ -1 +1 @@ -man/qcatool2.1 +man/qcatool.1 diff -Nru qca2-2.0.3/debian/rules qca2-2.1.0/debian/rules --- qca2-2.0.3/debian/rules 2012-05-20 09:42:06.000000000 +0000 +++ qca2-2.1.0/debian/rules 2015-01-14 14:53:57.000000000 +0000 @@ -1,27 +1,24 @@ #!/usr/bin/make -f -include /usr/share/pkg-kde-tools/qt-kde-team/2/debian-qt-kde.mk - -CFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -CXXFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden +include /usr/share/pkg-kde-tools/qt-kde-team/3/debian-qt-kde.mk +# Enable strict interdependencies +libpkgs_gen_strict_local_shlibs = $(libpkgs_all_packages) +include /usr/share/pkg-kde-tools/qt-kde-team/3/library-packages.mk DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) -dh += --buildsystem=qmake override_dh_auto_configure: - ./configure --verbose --prefix=/usr --libdir=/usr/lib/$(DEB_HOST_MULTIARCH) --qtdir=/usr/share/qt4 \ - --debug --no-separate-debug-info - echo QMAKE_CFLAGS_DEBUG="$(CFLAGS) $(CPPFLAGS)" >> conf.pri - echo QMAKE_CXXFLAGS_DEBUG="$(CXXFLAGS) $(CPPFLAGS)" >> conf.pri - echo QMAKE_LFLAGS_DEBUG="$(LDFLAGS)" >> conf.pri - echo QMAKE_CFLAGS_DEBUG="$(CFLAGS) $(CPPFLAGS)" >> confapp.pri - echo QMAKE_CXXFLAGS_DEBUG="$(CXXFLAGS) $(CPPFLAGS)" >> confapp.pri - echo QMAKE_LFLAGS_DEBUG="$(LDFLAGS)" >> confapp.pri + $(overridden_command) -- -DLIB_SUFFIX="/$(DEB_HOST_MULTIARCH)" -DQT4_BUILD=true -override_dh_strip: - $(overridden_command) --dbg-package=libqca2-dbg +override_dh_auto_build: + $(overridden_command) -override_dh_clean: +override_dh_auto_install: $(overridden_command) - rm -rf confapp.pri confapp_unix.pri conf.log conf.pri crypto.prf lib/ + +override_dh_install: + $(overridden_command) $(QT5_DH_EXCLUDE) + +override_dh_strip: + $(overridden_command) $(QT5_DH_EXCLUDE) --dbg-package=libqca2-dbg diff -Nru qca2-2.0.3/debian/watch qca2-2.1.0/debian/watch --- qca2-2.0.3/debian/watch 2011-05-29 14:52:34.000000000 +0000 +++ qca2-2.1.0/debian/watch 2014-11-26 13:07:01.000000000 +0000 @@ -1,3 +1,3 @@ version=3 -http://delta.affinix.com/download/qca/2.0/qca-(.*).tar\.bz2 +http://delta.affinix.com/download/qca/(.*)/qca-(.*).tar\.bz2 diff -Nru qca2-2.0.3/Doxyfile qca2-2.1.0/Doxyfile --- qca2-2.0.3/Doxyfile 2008-06-05 02:00:11.000000000 +0000 +++ qca2-2.1.0/Doxyfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,1290 +0,0 @@ -# Doxyfile 1.5.2 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file that -# follow. The default is UTF-8 which is also the encoding used for all text before -# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into -# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of -# possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = "Qt Cryptographic Architecture" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = apidocs - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, -# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, -# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, -# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = NO - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = YES - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = NO - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explicit @brief command for a brief description. - -JAVADOC_AUTOBRIEF = YES - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to -# include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = YES - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = NO - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = YES - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from the -# version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = YES - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = YES - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = examples \ - . \ - include/QtCrypto - -# This tag can be used to specify the character encoding of the source files that -# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default -# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. -# See http://www.gnu.org/software/libiconv for the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py - -FILE_PATTERNS = *.h \ - *.doco \ - Mainpage.dox - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = *.moc.* \ - moc* \ - *.all_cpp.* \ - *unload.* \ - */test/* \ - */tests/* - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the output. -# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, -# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = examples/aes-cmac \ - examples/base64test \ - examples/certtest \ - examples/ciphertest \ - examples/cms \ - examples/cmssigner \ - examples/eventhandlerdemo \ - examples/hashtest \ - examples/hextest \ - examples/keyloader \ - examples/mactest \ - examples/md5crypt \ - examples/providertest \ - examples/publickeyexample \ - examples/randomtest \ - examples/rsatest \ - examples/saslclient \ - examples/saslserver \ - examples/ssltest \ - examples/sslservtest \ - examples/tlssocket - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = images - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. Otherwise they will link to the documentstion. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = YES - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -# add DOXYGEN_NO_PROVIDER_API here to disable generation of the -# Provider API documentation with Doxygen. -PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS \ - QPIPE_SECURE - - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = QCA_EXPORT - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = src/qt.tag - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to -# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to -# specify the directory where the mscgen tool resides. If left empty the tool is assumed to -# be found in the default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = NO - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = YES - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = NO - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a caller dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable caller graphs for selected -# functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen will always -# show the root nodes and its direct children regardless of this setting. - -DOT_GRAPH_MAX_NODES = 50 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, which results in a white background. -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO diff -Nru qca2-2.0.3/Doxyfile.in qca2-2.1.0/Doxyfile.in --- qca2-2.0.3/Doxyfile.in 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/Doxyfile.in 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,1291 @@ +# Doxyfile 1.5.2 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file that +# follow. The default is UTF-8 which is also the encoding used for all text before +# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into +# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of +# possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = "Qt Cryptographic Architecture" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = apidocs + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, +# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, +# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, +# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = NO + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to +# include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = YES + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = YES + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = @CMAKE_SOURCE_DIR@/examples \ + @CMAKE_SOURCE_DIR@ \ + @CMAKE_SOURCE_DIR@/include/QtCrypto \ + @CMAKE_BINARY_DIR@/qca_version.h + +# This tag can be used to specify the character encoding of the source files that +# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default +# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. +# See http://www.gnu.org/software/libiconv for the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py + +FILE_PATTERNS = *.h \ + *.doco \ + Mainpage.dox + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = @CMAKE_BINARY_DIR@/import_plugins.h + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = *.moc.* \ + moc* \ + *.all_cpp.* \ + *unload.* \ + */test/* \ + */tests/* + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the output. +# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, +# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = @CMAKE_SOURCE_DIR@/examples/aes-cmac \ + @CMAKE_SOURCE_DIR@/examples/base64test \ + @CMAKE_SOURCE_DIR@/examples/certtest \ + @CMAKE_SOURCE_DIR@/examples/ciphertest \ + @CMAKE_SOURCE_DIR@/examples/cms \ + @CMAKE_SOURCE_DIR@/examples/cmssigner \ + @CMAKE_SOURCE_DIR@/examples/eventhandlerdemo \ + @CMAKE_SOURCE_DIR@/examples/hashtest \ + @CMAKE_SOURCE_DIR@/examples/hextest \ + @CMAKE_SOURCE_DIR@/examples/keyloader \ + @CMAKE_SOURCE_DIR@/examples/mactest \ + @CMAKE_SOURCE_DIR@/examples/md5crypt \ + @CMAKE_SOURCE_DIR@/examples/providertest \ + @CMAKE_SOURCE_DIR@/examples/publickeyexample \ + @CMAKE_SOURCE_DIR@/examples/randomtest \ + @CMAKE_SOURCE_DIR@/examples/rsatest \ + @CMAKE_SOURCE_DIR@/examples/saslclient \ + @CMAKE_SOURCE_DIR@/examples/saslserver \ + @CMAKE_SOURCE_DIR@/examples/ssltest \ + @CMAKE_SOURCE_DIR@/examples/sslservtest \ + @CMAKE_SOURCE_DIR@/examples/tlssocket + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = images + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = YES + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +# add DOXYGEN_NO_PROVIDER_API here to disable generation of the +# Provider API documentation with Doxygen. +PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS \ + QPIPE_SECURE + + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = QCA_EXPORT + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to +# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to +# specify the directory where the mscgen tool resides. If left empty the tool is assumed to +# be found in the default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = NO + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = YES + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = NO + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a caller dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen will always +# show the root nodes and its direct children regardless of this setting. + +DOT_GRAPH_MAX_NODES = 50 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, which results in a white background. +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff -Nru qca2-2.0.3/examples/aes-cmac/aes-cmac.cpp qca2-2.1.0/examples/aes-cmac/aes-cmac.cpp --- qca2-2.0.3/examples/aes-cmac/aes-cmac.cpp 2009-04-24 17:59:20.000000000 +0000 +++ qca2-2.1.0/examples/aes-cmac/aes-cmac.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -25,6 +25,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class AESCMACContext : public QCA::MACContext { public: diff -Nru qca2-2.0.3/examples/aes-cmac/aes-cmac.pro qca2-2.1.0/examples/aes-cmac/aes-cmac.pro --- qca2-2.0.3/examples/aes-cmac/aes-cmac.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/aes-cmac/aes-cmac.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -SOURCES += aes-cmac.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/aes-cmac/CMakeLists.txt qca2-2.1.0/examples/aes-cmac/CMakeLists.txt --- qca2-2.0.3/examples/aes-cmac/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/aes-cmac/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,5 @@ +set(aes-cmac_bin_SRCS aes-cmac.cpp) + +add_executable(aes-cmac ${aes-cmac_bin_SRCS}) + +target_link_qca_libraries(aes-cmac) diff -Nru qca2-2.0.3/examples/base64test/base64test.cpp qca2-2.1.0/examples/base64test/base64test.cpp --- qca2-2.0.3/examples/base64test/base64test.cpp 2007-04-17 12:01:26.000000000 +0000 +++ qca2-2.1.0/examples/base64test/base64test.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + int main(int argc, char **argv) { QCoreApplication(argc, argv); diff -Nru qca2-2.0.3/examples/base64test/base64test.pro qca2-2.1.0/examples/base64test/base64test.pro --- qca2-2.0.3/examples/base64test/base64test.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/base64test/base64test.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -SOURCES += base64test.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/base64test/CMakeLists.txt qca2-2.1.0/examples/base64test/CMakeLists.txt --- qca2-2.0.3/examples/base64test/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/base64test/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,5 @@ +set(base64test_bin_SRCS base64test.cpp) + +add_executable(base64test ${base64test_bin_SRCS}) + +target_link_qca_libraries(base64test) diff -Nru qca2-2.0.3/examples/certtest/certtest.cpp qca2-2.1.0/examples/certtest/certtest.cpp --- qca2-2.0.3/examples/certtest/certtest.cpp 2007-04-17 12:01:26.000000000 +0000 +++ qca2-2.1.0/examples/certtest/certtest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -27,6 +27,10 @@ #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + // dump out information about some part of the certificate // we use this same approach for information about the subject // of the certificate, and also about the issuer of the certificate diff -Nru qca2-2.0.3/examples/certtest/certtest.pro qca2-2.1.0/examples/certtest/certtest.pro --- qca2-2.0.3/examples/certtest/certtest.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/certtest/certtest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -SOURCES += certtest.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/certtest/CMakeLists.txt qca2-2.1.0/examples/certtest/CMakeLists.txt --- qca2-2.0.3/examples/certtest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/certtest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,5 @@ +set(certtest_bin_SRCS certtest.cpp) + +add_executable(certtest ${certtest_bin_SRCS}) + +target_link_qca_libraries(certtest) diff -Nru qca2-2.0.3/examples/ciphertest/ciphertest.cpp qca2-2.1.0/examples/ciphertest/ciphertest.cpp --- qca2-2.0.3/examples/ciphertest/ciphertest.cpp 2009-04-24 17:59:20.000000000 +0000 +++ qca2-2.1.0/examples/ciphertest/ciphertest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + int main(int argc, char **argv) { // the Initializer object sets things up, and diff -Nru qca2-2.0.3/examples/ciphertest/ciphertest.pro qca2-2.1.0/examples/ciphertest/ciphertest.pro --- qca2-2.0.3/examples/ciphertest/ciphertest.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/ciphertest/ciphertest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -SOURCES += ciphertest.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/ciphertest/CMakeLists.txt qca2-2.1.0/examples/ciphertest/CMakeLists.txt --- qca2-2.0.3/examples/ciphertest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/ciphertest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,5 @@ +set(ciphertest_bin_SRCS ciphertest.cpp) + +add_executable(ciphertest ${ciphertest_bin_SRCS}) + +target_link_qca_libraries(ciphertest) diff -Nru qca2-2.0.3/examples/CMakeLists.txt qca2-2.1.0/examples/CMakeLists.txt --- qca2-2.0.3/examples/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,26 @@ +if(Qt5Core_FOUND) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}") +endif() +add_subdirectory(aes-cmac) +add_subdirectory(base64test) +add_subdirectory(certtest) +add_subdirectory(ciphertest) +add_subdirectory(cms) +# this is not meant to be added, because it introduces +# a dependency on QtGui. +# add_subdirectory(cmssigner) +add_subdirectory(eventhandlerdemo) +add_subdirectory(hashtest) +add_subdirectory(hextest) +add_subdirectory(keyloader) +add_subdirectory(mactest) +add_subdirectory(md5crypt) +add_subdirectory(providertest) +add_subdirectory(publickeyexample) +add_subdirectory(randomtest) +add_subdirectory(rsatest) +add_subdirectory(saslclient) +add_subdirectory(saslserver) +add_subdirectory(ssltest) +add_subdirectory(sslservtest) +add_subdirectory(tlssocket) diff -Nru qca2-2.0.3/examples/cms/CMakeLists.txt qca2-2.1.0/examples/cms/CMakeLists.txt --- qca2-2.0.3/examples/cms/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/cms/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,5 @@ +set(cmsexample_bin_SRCS cmsexample.cpp) + +add_executable(cmsexample ${cmsexample_bin_SRCS}) + +target_link_qca_libraries(cmsexample) diff -Nru qca2-2.0.3/examples/cms/cmsexample.cpp qca2-2.1.0/examples/cms/cmsexample.cpp --- qca2-2.0.3/examples/cms/cmsexample.cpp 2007-04-17 12:01:26.000000000 +0000 +++ qca2-2.1.0/examples/cms/cmsexample.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + int main(int argc, char** argv) { // the Initializer object sets things up, and diff -Nru qca2-2.0.3/examples/cms/cms.pro qca2-2.1.0/examples/cms/cms.pro --- qca2-2.0.3/examples/cms/cms.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/cms/cms.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -SOURCES += cmsexample.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/cmssigner/certitem.cpp qca2-2.1.0/examples/cmssigner/certitem.cpp --- qca2-2.0.3/examples/cmssigner/certitem.cpp 2007-08-20 15:47:38.000000000 +0000 +++ qca2-2.1.0/examples/cmssigner/certitem.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -24,6 +24,7 @@ #include #include #include +#include #include "prompter.h" typedef QMap CertItemIconset; diff -Nru qca2-2.0.3/examples/cmssigner/cmssigner.pro qca2-2.1.0/examples/cmssigner/cmssigner.pro --- qca2-2.0.3/examples/cmssigner/cmssigner.pro 2007-08-11 02:44:38.000000000 +0000 +++ qca2-2.1.0/examples/cmssigner/cmssigner.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -include(../examples.pri) -CONFIG -= console -CONFIG += app_bundle -QT += gui - -include(pkcs11configdlg/pkcs11configdlg.pri) - -HEADERS += \ - prompter.h \ - certviewdlg.h \ - keyselectdlg.h \ - certitem.h - -SOURCES += \ - prompter.cpp \ - certviewdlg.cpp \ - keyselectdlg.cpp \ - certitem.cpp \ - main.cpp - -FORMS += certview.ui keyselect.ui mainwin.ui -RESOURCES += cmssigner.qrc diff -Nru qca2-2.0.3/examples/cmssigner/keyselectdlg.cpp qca2-2.1.0/examples/cmssigner/keyselectdlg.cpp --- qca2-2.0.3/examples/cmssigner/keyselectdlg.cpp 2007-08-09 03:32:54.000000000 +0000 +++ qca2-2.1.0/examples/cmssigner/keyselectdlg.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -24,6 +24,9 @@ #include #include #include +#include +#include +#include #include "ui_keyselect.h" #define ONLY_SHOW_KEYBUNDLE diff -Nru qca2-2.0.3/examples/cmssigner/main.cpp qca2-2.1.0/examples/cmssigner/main.cpp --- qca2-2.0.3/examples/cmssigner/main.cpp 2007-08-20 15:47:38.000000000 +0000 +++ qca2-2.1.0/examples/cmssigner/main.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -22,6 +22,8 @@ #include #include #include +#include +#include #include "ui_mainwin.h" #include "certviewdlg.h" @@ -29,6 +31,10 @@ #include "pkcs11configdlg/pkcs11configdlg.h" #include "certitem.h" +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + #define VERSION "1.0.0" class Icons diff -Nru qca2-2.0.3/examples/cmssigner/pkcs11configdlg/pkcs11configdlg.cpp qca2-2.1.0/examples/cmssigner/pkcs11configdlg/pkcs11configdlg.cpp --- qca2-2.0.3/examples/cmssigner/pkcs11configdlg/pkcs11configdlg.cpp 2007-07-21 01:36:20.000000000 +0000 +++ qca2-2.1.0/examples/cmssigner/pkcs11configdlg/pkcs11configdlg.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -24,6 +24,8 @@ #include #include #include +#include +#include #include "ui_pkcs11config.h" //---------------------------------------------------------------------------- diff -Nru qca2-2.0.3/examples/cmssigner/pkcs11configdlg/pkcs11configdlg.pri qca2-2.1.0/examples/cmssigner/pkcs11configdlg/pkcs11configdlg.pri --- qca2-2.0.3/examples/cmssigner/pkcs11configdlg/pkcs11configdlg.pri 2007-05-18 02:50:05.000000000 +0000 +++ qca2-2.1.0/examples/cmssigner/pkcs11configdlg/pkcs11configdlg.pri 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -HEADERS += $$PWD/pkcs11configdlg.h -SOURCES += $$PWD/pkcs11configdlg.cpp -FORMS += $$PWD/pkcs11config.ui diff -Nru qca2-2.0.3/examples/cmssigner/prompter.cpp qca2-2.1.0/examples/cmssigner/prompter.cpp --- qca2-2.0.3/examples/cmssigner/prompter.cpp 2007-07-06 01:47:35.000000000 +0000 +++ qca2-2.1.0/examples/cmssigner/prompter.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -24,6 +24,9 @@ #include #include #include +#include +#include +#include class Prompter::Private : public QObject { diff -Nru qca2-2.0.3/examples/eventhandlerdemo/CMakeLists.txt qca2-2.1.0/examples/eventhandlerdemo/CMakeLists.txt --- qca2-2.0.3/examples/eventhandlerdemo/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/eventhandlerdemo/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,7 @@ +set(eventhandlerdemo_bin_SRCS eventhandlerdemo.cpp) + +MY_AUTOMOC( eventhandlerdemo_bin_SRCS) + +add_executable(eventhandlerdemo ${eventhandlerdemo_bin_SRCS}) + +target_link_qca_libraries(eventhandlerdemo) diff -Nru qca2-2.0.3/examples/eventhandlerdemo/eventhandlerdemo.cpp qca2-2.1.0/examples/eventhandlerdemo/eventhandlerdemo.cpp --- qca2-2.0.3/examples/eventhandlerdemo/eventhandlerdemo.cpp 2009-04-24 17:59:20.000000000 +0000 +++ qca2-2.1.0/examples/eventhandlerdemo/eventhandlerdemo.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + /** We need a class on the client side to handle password requests. */ diff -Nru qca2-2.0.3/examples/eventhandlerdemo/eventhandlerdemo.pro qca2-2.1.0/examples/eventhandlerdemo/eventhandlerdemo.pro --- qca2-2.0.3/examples/eventhandlerdemo/eventhandlerdemo.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/eventhandlerdemo/eventhandlerdemo.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -SOURCES += eventhandlerdemo.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/examples.pri qca2-2.1.0/examples/examples.pri --- qca2-2.0.3/examples/examples.pri 2009-04-24 21:12:15.000000000 +0000 +++ qca2-2.1.0/examples/examples.pri 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -include(../app.pri) - -# default to console (individual programs can always override this if needed) -CONFIG += console -CONFIG -= app_bundle -QT -= gui diff -Nru qca2-2.0.3/examples/examples.pro qca2-2.1.0/examples/examples.pro --- qca2-2.0.3/examples/examples.pro 2008-05-21 21:44:38.000000000 +0000 +++ qca2-2.1.0/examples/examples.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -TEMPLATE = subdirs - -SUBDIRS += \ - aes-cmac \ - base64test \ - certtest \ - ciphertest \ - cms \ - cmssigner \ - eventhandlerdemo \ - hashtest \ - hextest \ - keyloader \ - mactest \ - md5crypt \ - providertest \ - publickeyexample \ - randomtest \ - rsatest \ - saslclient \ - saslserver \ - ssltest \ - sslservtest \ - tlssocket diff -Nru qca2-2.0.3/examples/hashtest/CMakeLists.txt qca2-2.1.0/examples/hashtest/CMakeLists.txt --- qca2-2.0.3/examples/hashtest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/hashtest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,5 @@ +set(hashtest_bin_SRCS hashtest.cpp) + +add_executable(hashtest ${hashtest_bin_SRCS}) + +target_link_qca_libraries(hashtest) diff -Nru qca2-2.0.3/examples/hashtest/hashtest.cpp qca2-2.1.0/examples/hashtest/hashtest.cpp --- qca2-2.0.3/examples/hashtest/hashtest.cpp 2007-06-13 02:30:43.000000000 +0000 +++ qca2-2.1.0/examples/hashtest/hashtest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + int main(int argc, char **argv) { // the Initializer object sets things up, and @@ -44,7 +48,7 @@ else { // this shows the "all in one" approach QString result = QCA::Hash("sha1").hashToString(arg); - printf("sha1(\"%s\") = [%s]\n", arg.data(), result.toAscii().data()); + printf("sha1(\"%s\") = [%s]\n", arg.data(), qPrintable(result)); } // must always check that an algorithm is supported before using it @@ -66,7 +70,7 @@ QCA::SecureArray resultArray = hashObject.final(); // convert the result into printable hexadecimal. QString result = QCA::arrayToHex(resultArray.toByteArray()); - printf("md5(\"%s\") = [%s]\n", arg.data(), result.toAscii().data()); + printf("md5(\"%s\") = [%s]\n", arg.data(), qPrintable(result)); } return 0; diff -Nru qca2-2.0.3/examples/hashtest/hashtest.pro qca2-2.1.0/examples/hashtest/hashtest.pro --- qca2-2.0.3/examples/hashtest/hashtest.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/hashtest/hashtest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -SOURCES += hashtest.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/hextest/CMakeLists.txt qca2-2.1.0/examples/hextest/CMakeLists.txt --- qca2-2.0.3/examples/hextest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/hextest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,5 @@ +set(hextest_bin_SRCS hextest.cpp) + +add_executable(hextest ${hextest_bin_SRCS}) + +target_link_qca_libraries(hextest) diff -Nru qca2-2.0.3/examples/hextest/hextest.cpp qca2-2.1.0/examples/hextest/hextest.cpp --- qca2-2.0.3/examples/hextest/hextest.cpp 2009-04-24 17:59:20.000000000 +0000 +++ qca2-2.1.0/examples/hextest/hextest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + int main(int argc, char **argv) { // the Initializer object sets things up, and diff -Nru qca2-2.0.3/examples/hextest/hextest.pro qca2-2.1.0/examples/hextest/hextest.pro --- qca2-2.0.3/examples/hextest/hextest.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/hextest/hextest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -SOURCES += hextest.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/keyloader/CMakeLists.txt qca2-2.1.0/examples/keyloader/CMakeLists.txt --- qca2-2.0.3/examples/keyloader/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/keyloader/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,7 @@ +set(keyloader_bin_SRCS keyloader.cpp) + +MY_AUTOMOC( keyloader_bin_SRCS ) + +add_executable(keyloader ${keyloader_bin_SRCS}) + +target_link_qca_libraries(keyloader) diff -Nru qca2-2.0.3/examples/keyloader/keyloader.cpp qca2-2.1.0/examples/keyloader/keyloader.cpp --- qca2-2.0.3/examples/keyloader/keyloader.cpp 2007-08-21 09:31:12.000000000 +0000 +++ qca2-2.1.0/examples/keyloader/keyloader.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -27,6 +27,10 @@ #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class PassphraseHandler: public QObject { Q_OBJECT diff -Nru qca2-2.0.3/examples/keyloader/keyloader.pro qca2-2.1.0/examples/keyloader/keyloader.pro --- qca2-2.0.3/examples/keyloader/keyloader.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/keyloader/keyloader.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -SOURCES += keyloader.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/mactest/CMakeLists.txt qca2-2.1.0/examples/mactest/CMakeLists.txt --- qca2-2.0.3/examples/mactest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/mactest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,5 @@ +set(mactest_bin_SRCS mactest.cpp) + +add_executable(mactest ${mactest_bin_SRCS}) + +target_link_qca_libraries(mactest) diff -Nru qca2-2.0.3/examples/mactest/mactest.cpp qca2-2.1.0/examples/mactest/mactest.cpp --- qca2-2.0.3/examples/mactest/mactest.cpp 2009-04-24 17:59:20.000000000 +0000 +++ qca2-2.1.0/examples/mactest/mactest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -28,6 +28,10 @@ // needed for printf #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + int main(int argc, char **argv) { // the Initializer object sets things up, and diff -Nru qca2-2.0.3/examples/mactest/mactest.pro qca2-2.1.0/examples/mactest/mactest.pro --- qca2-2.0.3/examples/mactest/mactest.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/mactest/mactest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -SOURCES += mactest.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/md5crypt/CMakeLists.txt qca2-2.1.0/examples/md5crypt/CMakeLists.txt --- qca2-2.0.3/examples/md5crypt/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/md5crypt/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,7 @@ +set(md5crypt_bin_SRCS md5crypt.cpp) + +add_executable(md5crypt ${md5crypt_bin_SRCS}) + +target_link_qca_libraries(md5crypt) + +#add "crypt" to the libs if you are trying the crypt() equivalent diff -Nru qca2-2.0.3/examples/md5crypt/md5crypt.cpp qca2-2.1.0/examples/md5crypt/md5crypt.cpp --- qca2-2.0.3/examples/md5crypt/md5crypt.cpp 2008-04-23 22:50:41.000000000 +0000 +++ qca2-2.1.0/examples/md5crypt/md5crypt.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -30,6 +30,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + QString to64 ( long v , int size ) { diff -Nru qca2-2.0.3/examples/md5crypt/md5crypt.pro qca2-2.1.0/examples/md5crypt/md5crypt.pro --- qca2-2.0.3/examples/md5crypt/md5crypt.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/md5crypt/md5crypt.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -SOURCES += md5crypt.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/providertest/CMakeLists.txt qca2-2.1.0/examples/providertest/CMakeLists.txt --- qca2-2.0.3/examples/providertest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/providertest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,5 @@ +set(providertest_bin_SRCS providertest.cpp) + +add_executable(providertest ${providertest_bin_SRCS}) + +target_link_qca_libraries(providertest) diff -Nru qca2-2.0.3/examples/providertest/providertest.cpp qca2-2.1.0/examples/providertest/providertest.cpp --- qca2-2.0.3/examples/providertest/providertest.cpp 2007-04-17 12:01:26.000000000 +0000 +++ qca2-2.1.0/examples/providertest/providertest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + int main(int argc, char **argv) { // the Initializer object sets things up, and diff -Nru qca2-2.0.3/examples/providertest/providertest.pro qca2-2.1.0/examples/providertest/providertest.pro --- qca2-2.0.3/examples/providertest/providertest.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/providertest/providertest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -SOURCES += providertest.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/publickeyexample/CMakeLists.txt qca2-2.1.0/examples/publickeyexample/CMakeLists.txt --- qca2-2.0.3/examples/publickeyexample/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/publickeyexample/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,5 @@ +set(publickeyexample_bin_SRCS publickeyexample.cpp) + +add_executable(publickeyexample ${publickeyexample_bin_SRCS}) + +target_link_qca_libraries(publickeyexample) diff -Nru qca2-2.0.3/examples/publickeyexample/publickeyexample.cpp qca2-2.1.0/examples/publickeyexample/publickeyexample.cpp --- qca2-2.0.3/examples/publickeyexample/publickeyexample.cpp 2007-04-17 12:01:26.000000000 +0000 +++ qca2-2.1.0/examples/publickeyexample/publickeyexample.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -27,6 +27,9 @@ #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif int main(int argc, char** argv) { diff -Nru qca2-2.0.3/examples/publickeyexample/publickeyexample.pro qca2-2.1.0/examples/publickeyexample/publickeyexample.pro --- qca2-2.0.3/examples/publickeyexample/publickeyexample.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/publickeyexample/publickeyexample.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -SOURCES += publickeyexample.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/randomtest/CMakeLists.txt qca2-2.1.0/examples/randomtest/CMakeLists.txt --- qca2-2.0.3/examples/randomtest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/randomtest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,5 @@ +set(randomtest_bin_SRCS randomtest.cpp) + +add_executable(randomtest ${randomtest_bin_SRCS}) + +target_link_qca_libraries(randomtest) diff -Nru qca2-2.0.3/examples/randomtest/randomtest.cpp qca2-2.1.0/examples/randomtest/randomtest.cpp --- qca2-2.0.3/examples/randomtest/randomtest.cpp 2009-04-24 17:59:20.000000000 +0000 +++ qca2-2.1.0/examples/randomtest/randomtest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -27,6 +27,10 @@ #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + int main(int argc, char **argv) { // the Initializer object sets things up, and @@ -56,7 +60,7 @@ // To make this viewable, we convert to hexadecimal. std::cout << "A random 10 byte array (in hex): "; - std::cout << QCA::Hex().arrayToString(tenBytes).toAscii().data() << std::endl; + std::cout << qPrintable(QCA::Hex().arrayToString(tenBytes)) << std::endl; // Under some circumstances, you may want to create a // Random object, rather than a static public member function. diff -Nru qca2-2.0.3/examples/randomtest/randomtest.pro qca2-2.1.0/examples/randomtest/randomtest.pro --- qca2-2.0.3/examples/randomtest/randomtest.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/randomtest/randomtest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -SOURCES += randomtest.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/rsatest/CMakeLists.txt qca2-2.1.0/examples/rsatest/CMakeLists.txt --- qca2-2.0.3/examples/rsatest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/rsatest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,5 @@ +set(rsatest_bin_SRCS rsatest.cpp) + +add_executable(rsatest ${rsatest_bin_SRCS}) + +target_link_qca_libraries(rsatest) diff -Nru qca2-2.0.3/examples/rsatest/rsatest.cpp qca2-2.1.0/examples/rsatest/rsatest.cpp --- qca2-2.0.3/examples/rsatest/rsatest.cpp 2007-08-21 09:31:12.000000000 +0000 +++ qca2-2.1.0/examples/rsatest/rsatest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -25,6 +25,10 @@ #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + int main(int argc, char **argv) { // The Initializer object sets things up, and also diff -Nru qca2-2.0.3/examples/rsatest/rsatest.pro qca2-2.1.0/examples/rsatest/rsatest.pro --- qca2-2.0.3/examples/rsatest/rsatest.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/rsatest/rsatest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -SOURCES += rsatest.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/saslclient/CMakeLists.txt qca2-2.1.0/examples/saslclient/CMakeLists.txt --- qca2-2.0.3/examples/saslclient/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/saslclient/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,8 @@ +set(saslclient_bin_SRCS saslclient.cpp) + +MY_AUTOMOC( saslclient_bin_SRCS) + +add_executable(saslclient ${saslclient_bin_SRCS}) + +target_link_qca_libraries(saslclient) +target_link_libraries(saslclient ${QT_QTNETWORK_LIBRARY}) diff -Nru qca2-2.0.3/examples/saslclient/saslclient.cpp qca2-2.1.0/examples/saslclient/saslclient.cpp --- qca2-2.0.3/examples/saslclient/saslclient.cpp 2008-05-24 00:21:44.000000000 +0000 +++ qca2-2.1.0/examples/saslclient/saslclient.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -29,6 +29,10 @@ // QtCrypto has the declarations for all of QCA #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + static QString prompt(const QString &s) { printf("* %s ", qPrintable(s)); diff -Nru qca2-2.0.3/examples/saslclient/saslclient.pro qca2-2.1.0/examples/saslclient/saslclient.pro --- qca2-2.0.3/examples/saslclient/saslclient.pro 2008-05-21 21:32:20.000000000 +0000 +++ qca2-2.1.0/examples/saslclient/saslclient.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -QT += network - -SOURCES += saslclient.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/saslserver/CMakeLists.txt qca2-2.1.0/examples/saslserver/CMakeLists.txt --- qca2-2.0.3/examples/saslserver/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/saslserver/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,8 @@ +set(saslserver_bin_SRCS saslserver.cpp) + +MY_AUTOMOC( saslserver_bin_SRCS) + +add_executable(saslserver ${saslserver_bin_SRCS}) + +target_link_qca_libraries(saslserver) +target_link_libraries(saslserver ${QT_QTNETWORK_LIBRARY}) diff -Nru qca2-2.0.3/examples/saslserver/saslserver.cpp qca2-2.1.0/examples/saslserver/saslserver.cpp --- qca2-2.0.3/examples/saslserver/saslserver.cpp 2008-05-22 00:32:05.000000000 +0000 +++ qca2-2.1.0/examples/saslserver/saslserver.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -29,6 +29,10 @@ // QtCrypto has the declarations for all of QCA #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + static QString socketErrorToString(QAbstractSocket::SocketError x) { QString s; diff -Nru qca2-2.0.3/examples/saslserver/saslserver.pro qca2-2.1.0/examples/saslserver/saslserver.pro --- qca2-2.0.3/examples/saslserver/saslserver.pro 2008-05-22 00:32:05.000000000 +0000 +++ qca2-2.1.0/examples/saslserver/saslserver.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -QT += network - -SOURCES += saslserver.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/sslservtest/CMakeLists.txt qca2-2.1.0/examples/sslservtest/CMakeLists.txt --- qca2-2.0.3/examples/sslservtest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/sslservtest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,8 @@ +set(sslservtest_bin_SRCS sslservtest.cpp) + +MY_AUTOMOC( sslservtest_bin_SRCS ) + +add_executable(sslservtest ${sslservtest_bin_SRCS}) + +target_link_qca_libraries(sslservtest) +target_link_libraries(sslservtest ${QT_QTNETWORK_LIBRARY}) diff -Nru qca2-2.0.3/examples/sslservtest/sslservtest.cpp qca2-2.1.0/examples/sslservtest/sslservtest.cpp --- qca2-2.0.3/examples/sslservtest/sslservtest.cpp 2007-07-06 00:38:53.000000000 +0000 +++ qca2-2.1.0/examples/sslservtest/sslservtest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -29,6 +29,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + char pemdata_cert[] = "-----BEGIN CERTIFICATE-----\n" "MIICeTCCAeKgAwIBAgIRAKKKnOj6Aarmwf0phApitVAwDQYJKoZIhvcNAQEFBQAw\n" diff -Nru qca2-2.0.3/examples/sslservtest/sslservtest.pro qca2-2.1.0/examples/sslservtest/sslservtest.pro --- qca2-2.0.3/examples/sslservtest/sslservtest.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/sslservtest/sslservtest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -QT += network - -SOURCES += sslservtest.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/ssltest/CMakeLists.txt qca2-2.1.0/examples/ssltest/CMakeLists.txt --- qca2-2.0.3/examples/ssltest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/ssltest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,8 @@ +set(ssltest_bin_SRCS ssltest.cpp) + +MY_AUTOMOC( ssltest_bin_SRCS) + +add_executable(ssltest ${ssltest_bin_SRCS}) + +target_link_qca_libraries(ssltest) +target_link_libraries(ssltest ${QT_QTNETWORK_LIBRARY}) diff -Nru qca2-2.0.3/examples/ssltest/ssltest.cpp qca2-2.1.0/examples/ssltest/ssltest.cpp --- qca2-2.0.3/examples/ssltest/ssltest.cpp 2007-07-06 18:57:03.000000000 +0000 +++ qca2-2.1.0/examples/ssltest/ssltest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -24,6 +24,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + char exampleCA_cert[] = "-----BEGIN CERTIFICATE-----\n" "MIICSzCCAbSgAwIBAgIBADANBgkqhkiG9w0BAQUFADA4MRMwEQYDVQQDEwpFeGFt\n" diff -Nru qca2-2.0.3/examples/ssltest/ssltest.pro qca2-2.1.0/examples/ssltest/ssltest.pro --- qca2-2.0.3/examples/ssltest/ssltest.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/ssltest/ssltest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -QT += network - -SOURCES += ssltest.cpp -include(../examples.pri) diff -Nru qca2-2.0.3/examples/tlssocket/CMakeLists.txt qca2-2.1.0/examples/tlssocket/CMakeLists.txt --- qca2-2.0.3/examples/tlssocket/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/examples/tlssocket/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,9 @@ +set(tlssocket_bin_moc_SRCS tlssocket.cpp) +set(tlssocket_bin_nonmoc_SRCS main.cpp) + +MY_AUTOMOC( tlssocket_bin_moc_SRCS) + +add_executable(tlssocket ${tlssocket_bin_moc_SRCS} ${tlssocket_bin_nonmoc_SRCS}) + +target_link_qca_libraries(tlssocket) +target_link_libraries(tlssocket ${QT_QTNETWORK_LIBRARY}) diff -Nru qca2-2.0.3/examples/tlssocket/tlssocket.cpp qca2-2.1.0/examples/tlssocket/tlssocket.cpp --- qca2-2.0.3/examples/tlssocket/tlssocket.cpp 2007-04-17 12:01:26.000000000 +0000 +++ qca2-2.1.0/examples/tlssocket/tlssocket.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -21,6 +21,10 @@ #include "tlssocket.h" +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class TLSSocket::Private : public QObject { Q_OBJECT diff -Nru qca2-2.0.3/examples/tlssocket/tlssocket.pro qca2-2.1.0/examples/tlssocket/tlssocket.pro --- qca2-2.0.3/examples/tlssocket/tlssocket.pro 2007-04-20 20:08:47.000000000 +0000 +++ qca2-2.1.0/examples/tlssocket/tlssocket.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -QT += network - -HEADERS += tlssocket.h -SOURCES += tlssocket.cpp main.cpp - -include(../examples.pri) diff -Nru qca2-2.0.3/include/QtCrypto/qca_basic.h qca2-2.1.0/include/QtCrypto/qca_basic.h --- qca2-2.0.3/include/QtCrypto/qca_basic.h 2008-05-16 20:41:50.000000000 +0000 +++ qca2-2.1.0/include/QtCrypto/qca_basic.h 2014-11-06 08:15:45.000000000 +0000 @@ -35,6 +35,13 @@ #include "qca_core.h" +// Qt5 comes with QStringLiteral for wrapping string literals, which Qt4 does +// not have. It is needed if the headers are built with QT_NO_CAST_FROM_ASCII. +// Defining it here as QString::fromUtf8 for convenience. +#ifndef QStringLiteral +#define QStringLiteral(str) QString::fromUtf8(str) +#endif + namespace QCA { /** @@ -307,11 +314,11 @@ might want to use code like this: \code QFile f( "file.dat" ); -if ( f1.open( IO_ReadOnly ) ) +if ( f.open( QIODevice::ReadOnly ) ) { QCA::Hash hashObj("sha1"); - hashObj.update( &f1 ); - QString output = hashObj.final() ) ), + hashObj.update( &f ); + QByteArray output = hashObj.final().toByteArray(); } \endcode */ @@ -359,7 +366,7 @@ string This is a convenience method that returns the - hash of a QSeecureArray as a hexadecimal + hash of a SecureArray as a hexadecimal representation encoded in a QString. \param array the QByteArray to hash @@ -587,7 +594,8 @@ CBC, ///< operate in %Cipher Block Chaining mode CFB, ///< operate in %Cipher FeedBack mode ECB, ///< operate in Electronic Code Book mode - OFB ///< operate in Output FeedBack Mode + OFB, ///< operate in Output FeedBack Mode + CTR, ///< operate in CounTer Mode }; /** @@ -928,6 +936,25 @@ SymmetricKey makeKey(const SecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount); /** + Generate the key from a specified secret and salt value + + \note key length is ignored for some functions + + \param secret the secret (password or passphrase) + \param salt the salt to use + \param keyLength the length of key to return + \param msecInterval the maximum time to compute the key, in milliseconds + \param iterationCount a pointer to store the number of iteration done for the specified time + + \return the derived key + */ + SymmetricKey makeKey(const SecureArray &secret, + const InitializationVector &salt, + unsigned int keyLength, + int msecInterval, + unsigned int *iterationCount); + + /** Construct the name of the algorithm You can use this to build a standard name string. @@ -974,7 +1001,8 @@ \param algorithm the name of the hashing algorithm to use \param provider the name of the provider to use, if available */ - explicit PBKDF1(const QString &algorithm = "sha1", const QString &provider = QString()) : KeyDerivationFunction(withAlgorithm("pbkdf1", algorithm), provider) {} + explicit PBKDF1(const QString &algorithm = QStringLiteral("sha1"), const QString &provider = QString()) + : KeyDerivationFunction(withAlgorithm(QStringLiteral("pbkdf1"), algorithm), provider) {} }; /** @@ -996,7 +1024,8 @@ \param algorithm the name of the hashing algorithm to use \param provider the name of the provider to use, if available */ - explicit PBKDF2(const QString &algorithm = "sha1", const QString &provider = QString()) : KeyDerivationFunction(withAlgorithm("pbkdf2", algorithm), provider) {} + explicit PBKDF2(const QString &algorithm = QStringLiteral("sha1"), const QString &provider = QString()) + : KeyDerivationFunction(withAlgorithm(QStringLiteral("pbkdf2"), algorithm), provider) {} }; } diff -Nru qca2-2.0.3/include/QtCrypto/qca_core.h qca2-2.1.0/include/QtCrypto/qca_core.h --- qca2-2.0.3/include/QtCrypto/qca_core.h 2010-11-27 21:14:12.000000000 +0000 +++ qca2-2.1.0/include/QtCrypto/qca_core.h 2014-11-06 08:15:45.000000000 +0000 @@ -33,15 +33,6 @@ #ifndef QCA_CORE_H #define QCA_CORE_H -/** - The current version of %QCA - - This provides you a compile time check of the %QCA version. - - \sa qcaVersion for a runtime check. -*/ -#define QCA_VERSION 0x020003 - #include #include #include @@ -50,16 +41,49 @@ #include "qca_export.h" #include "qca_support.h" #include "qca_tools.h" +#include "qca_version.h" /** The current version of %QCA. - This is equivalent to QCA_VERSION, except it provides + This is equivalent to ::QCA_VERSION, except it provides a runtime check of the version of %QCA that is being used. */ QCA_EXPORT int qcaVersion(); /** + The current version of %QCA. + + This is equivalent to ::QCA_VERSION_STR, except it provides + a runtime check of the version of %QCA that is being used. +*/ +QCA_EXPORT const char *qcaVersionStr(); + +/** + The current version of %QCA. + + This is equivalent to ::QCA_MAJOR_VERSION, except it provides + a runtime check of the version of %QCA that is being used. +*/ +QCA_EXPORT int qcaMajorVersion(); + +/** + The current version of %QCA. + + This is equivalent to ::QCA_MINOR_VERSION, except it provides + a runtime check of the version of %QCA that is being used. +*/ +QCA_EXPORT int qcaMinorVersion(); + +/** + The current version of %QCA. + + This is equivalent to ::QCA_PATCH_VERSION, except it provides + a runtime check of the version of %QCA that is being used. +*/ +QCA_EXPORT int qcaPatchVersion(); + +/** QCA - the Qt Cryptographic Architecture */ namespace QCA { @@ -247,17 +271,34 @@ current plugin providers at a specified priority. If a provider with the name already exists, this call fails. + QCA takes ownership of the provider. + \param p a pointer to a Provider object, which must be set up. \param priority the priority level to set the provider to \return true if the provider is added, and false if the provider is not added (failure) + \sa unloadProvider for unloading specified providers \sa setProviderPriority for a description of the provider priority system */ QCA_EXPORT bool insertProvider(Provider *p, int priority = 0); /** + Unload specified provider + + The specified provider is removed from the list of providers + and deleted. If no provider with the name is found, this call fails. + + \param name the name of the provider + \return true if the provider is unloaded, and false if the provider + cannot be found + + \sa insertProvider for adding providers +*/ +QCA_EXPORT bool unloadProvider(const QString &name); + +/** Change the priority of a specified provider QCA supports a number of providers, and if a number of providers @@ -329,6 +370,19 @@ QCA_EXPORT Provider *defaultProvider(); /** + Retrieve plugin paths. It consists of: + 1. QCA_PLUGIN_PATH environment if set. + 2. \c %QCoreApplication::libraryPaths() . + 3. Directory where plugins were installed. + + QCA_PLUGIN_PATH is paths list like PATH or QT_PLUGIN_PATH. + It uses system path separator. \";\" on Windows and \":\" on Unix. + + This function was introduced in %QCA 2.1. +*/ +QCA_EXPORT QStringList pluginPaths(); + +/** Scan for new plugins */ QCA_EXPORT void scanForPlugins(); diff -Nru qca2-2.0.3/include/QtCrypto/qca.h qca2-2.1.0/include/QtCrypto/qca.h --- qca2-2.0.3/include/QtCrypto/qca.h 2008-05-16 20:41:50.000000000 +0000 +++ qca2-2.1.0/include/QtCrypto/qca.h 2014-11-06 08:15:45.000000000 +0000 @@ -43,5 +43,6 @@ #include "qca_securemessage.h" #include "qcaprovider.h" #include "qpipe.h" +#include "qca_safetimer.h" #endif diff -Nru qca2-2.0.3/include/QtCrypto/qcaprovider.h qca2-2.1.0/include/QtCrypto/qcaprovider.h --- qca2-2.0.3/include/QtCrypto/qcaprovider.h 2008-05-16 20:41:50.000000000 +0000 +++ qca2-2.1.0/include/QtCrypto/qcaprovider.h 2014-11-06 08:15:45.000000000 +0000 @@ -116,7 +116,7 @@ \param p the provider associated with this context */ - InfoContext(Provider *p) : BasicContext(p, "info") {} + InfoContext(Provider *p) : BasicContext(p, QStringLiteral("info") ) {} /** The hash algorithms supported by the provider @@ -153,7 +153,7 @@ \param p the provider associated with this context */ - RandomContext(Provider *p) : BasicContext(p, "random") {} + RandomContext(Provider *p) : BasicContext(p, QStringLiteral("random")) {} /** Return an array of random bytes @@ -356,6 +356,21 @@ \param iterationCount the number of iterations of the derivation algorith, */ virtual SymmetricKey makeKey(const SecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount) = 0; + + /** + Create a key and return it + + \param secret the secret part (typically password) + \param salt the salt / initialization vector + \param keyLength the length of the key to be produced + \param msecInterval the maximum time to compute the key, in milliseconds + \param iterationCount a pointer to store the number of iterations of the derivation algorithm, + */ + virtual SymmetricKey makeKey(const SecureArray &secret, + const InitializationVector &salt, + unsigned int keyLength, + int msecInterval, + unsigned int *iterationCount) = 0; }; /** @@ -377,7 +392,7 @@ \param p the provider associated with this context */ - DLGroupContext(Provider *p) : Provider::Context(p, "dlgroup") {} + DLGroupContext(Provider *p) : Provider::Context(p, QStringLiteral("dlgroup")) {} /** The DLGroupSets supported by this object @@ -586,7 +601,7 @@ \param p the provider associated with this context */ - RSAContext(Provider *p) : PKeyBase(p, "rsa") {} + RSAContext(Provider *p) : PKeyBase(p, QStringLiteral("rsa")) {} /** Generate an RSA private key @@ -669,7 +684,7 @@ \param p the provider associated with this context */ - DSAContext(Provider *p) : PKeyBase(p, "dsa") {} + DSAContext(Provider *p) : PKeyBase(p, QStringLiteral("dsa")) {} /** Generate a DSA private key @@ -739,7 +754,7 @@ \param p the provider associated with this context */ - DHContext(Provider *p) : PKeyBase(p, "dh") {} + DHContext(Provider *p) : PKeyBase(p, QStringLiteral("dh")) {} /** Generate a Diffie-Hellman private key @@ -815,7 +830,7 @@ \param p the provider associated with this context */ - PKeyContext(Provider *p) : BasicContext(p, "pkey") {} + PKeyContext(Provider *p) : BasicContext(p, QStringLiteral("pkey")) {} /** Returns a list of supported public key types @@ -1225,7 +1240,7 @@ \param p the provider associated with this context */ - CertContext(Provider *p) : CertBase(p, "cert") {} + CertContext(Provider *p) : CertBase(p, QStringLiteral("cert")) {} /** Create a self-signed certificate based on the given options and @@ -1318,7 +1333,7 @@ \param p the provider associated with this context */ - CSRContext(Provider *p) : CertBase(p, "csr") {} + CSRContext(Provider *p) : CertBase(p, QStringLiteral("csr")) {} /** Returns true if the provider of this object supports the specified @@ -1399,7 +1414,7 @@ \param p the provider associated with this context */ - CRLContext(Provider *p) : CertBase(p, "crl") {} + CRLContext(Provider *p) : CertBase(p, QStringLiteral("crl")) {} /** Returns a pointer to the properties of this CRL @@ -1434,7 +1449,7 @@ \param p the provider associated with this context */ - CertCollectionContext(Provider *p) : BasicContext(p, "certcollection") {} + CertCollectionContext(Provider *p) : BasicContext(p, QStringLiteral("certcollection")) {} /** Create PKCS#7 DER output based on the input certificates and CRLs @@ -1482,7 +1497,7 @@ \param p the Provider associated with this context */ - CAContext(Provider *p) : BasicContext(p, "ca") {} + CAContext(Provider *p) : BasicContext(p, QStringLiteral("ca")) {} /** Prepare the object for usage @@ -1559,7 +1574,7 @@ \param p the Provider associated with this context */ - PKCS12Context(Provider *p) : BasicContext(p, "pkcs12") {} + PKCS12Context(Provider *p) : BasicContext(p, QStringLiteral("pkcs12")) {} /** Create PKCS#12 DER output based on a set of input items @@ -1670,7 +1685,7 @@ \param p the Provider associated with this context */ - PGPKeyContext(Provider *p) : BasicContext(p, "pgpkey") {} + PGPKeyContext(Provider *p) : BasicContext(p, QStringLiteral("pgpkey")) {} /** Returns a pointer to the properties of this key @@ -1728,7 +1743,7 @@ \param p the Provider associated with this context */ - KeyStoreEntryContext(Provider *p) : BasicContext(p, "keystoreentry") {} + KeyStoreEntryContext(Provider *p) : BasicContext(p, QStringLiteral("keystoreentry")) {} /** Returns the entry type @@ -1833,7 +1848,7 @@ \param p the Provider associated with this context */ - KeyStoreListContext(Provider *p) : Provider::Context(p, "keystorelist") {} + KeyStoreListContext(Provider *p) : Provider::Context(p, QStringLiteral("keystorelist")) {} /** Starts the keystore provider @@ -2071,7 +2086,7 @@ \param p the Provider associated with this context */ - TLSSessionContext(Provider *p) : BasicContext(p, "tlssession") {} + TLSSessionContext(Provider *p) : BasicContext(p, QStringLiteral("tlssession")) {} }; /** @@ -2487,7 +2502,7 @@ \param p the Provider associated with this context */ - SASLContext(Provider *p) : Provider::Context(p, "sasl") {} + SASLContext(Provider *p) : Provider::Context(p, QStringLiteral("sasl")) {} /** Reset the object to its initial state diff -Nru qca2-2.0.3/include/QtCrypto/qca_publickey.h qca2-2.1.0/include/QtCrypto/qca_publickey.h --- qca2-2.0.3/include/QtCrypto/qca_publickey.h 2008-05-16 20:41:50.000000000 +0000 +++ qca2-2.1.0/include/QtCrypto/qca_publickey.h 2014-11-06 08:15:45.000000000 +0000 @@ -53,12 +53,22 @@ */ enum EncryptionAlgorithm { - EME_PKCS1v15, ///< Block type 2 (PKCS#1, Version 1.5) - EME_PKCS1_OAEP ///< Optimal asymmetric encryption padding (PKCS#1, Version 2.0) + EME_PKCS1v15, ///< Block type 2 (PKCS#1, Version 1.5) + EME_PKCS1_OAEP, ///< Optimal asymmetric encryption padding (PKCS#1, Version 2.0) + EME_PKCS1v15_SSL, ///< PKCS#1, Version 1.5 with an SSL-specific modification + EME_NO_PADDING ///< Raw RSA encryption }; /** Signature algorithm variants + + Note that most signature algorithms follow a process of first hashing the + plaintext data to be signed, creating a payload format that wraps the hash + value (among other things), and then signing the payload with the private + key. So, for example, an EMSA3(SHA1) signature outputted by QCA cannot be + verified by merely performing RSA and SHA1 operations (e.g. + "openssl rsautl -verify" and comparing with sha1sum), because that would not + take the EMSA3 payload format into consideration. */ enum SignatureAlgorithm { @@ -68,7 +78,11 @@ EMSA3_MD5, ///< MD5, with EMSA3 (ie PKCS#1 Version 1.5) encoding (this is the usual RSA algorithm) EMSA3_MD2, ///< MD2, with EMSA3 (ie PKCS#1 Version 1.5) encoding EMSA3_RIPEMD160, ///< RIPEMD160, with EMSA3 (ie PKCS#1 Version 1.5) encoding - EMSA3_Raw ///< EMSA3 without computing a message digest or a DigestInfo encoding (identical to PKCS#11's CKM_RSA_PKCS mechanism) + EMSA3_Raw, ///< EMSA3 without computing a message digest or a DigestInfo encoding (identical to PKCS#11's CKM_RSA_PKCS mechanism) + EMSA3_SHA224, ///< SHA224, with EMSA3 (ie PKCS#1 Version 1.5) encoding + EMSA3_SHA256, ///< SHA256, with EMSA3 (ie PKCS#1 Version 1.5) encoding + EMSA3_SHA384, ///< SHA384, with EMSA3 (ie PKCS#1 Version 1.5) encoding + EMSA3_SHA512 ///< SHA512, with EMSA3 (ie PKCS#1 Version 1.5) encoding }; /** @@ -581,6 +595,13 @@ bool canEncrypt() const; /** + Test if this key can be used for decryption + + \return true if the key can be used for decryption + */ + bool canDecrypt() const; + + /** Test if the key can be used for verifying signatures \return true of the key can be used for verification @@ -604,6 +625,18 @@ SecureArray encrypt(const SecureArray &a, EncryptionAlgorithm alg); /** + Decrypt the message + + \param in the cipher (encrypted) data + \param out the plain text data + \param alg the algorithm to use + + \note This synchronous operation may require event handling, and so + it must not be called from the same thread as an EventHandler. + */ + bool decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg); + + /** Initialise the signature verification process \param alg the algorithm to use for signing @@ -850,6 +883,13 @@ bool canDecrypt() const; /** + Test if this key can be used for encryption + + \return true if the key can be used for encryption + */ + bool canEncrypt() const; + + /** Test if this key can be used for signing \return true if the key can be used to make a signature @@ -857,6 +897,14 @@ bool canSign() const; /** + The maximum message size that can be encrypted with a specified + algorithm + + \param alg the algorithm to check + */ + int maximumEncryptSize(EncryptionAlgorithm alg) const; + + /** Decrypt the message \param in the cipher (encrypted) data @@ -869,6 +917,14 @@ bool decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg); /** + Encrypt a message using a specified algorithm + + \param a the message to encrypt + \param alg the algorithm to use + */ + SecureArray encrypt(const SecureArray &a, EncryptionAlgorithm alg); + + /** Initialise the message signature process \param alg the algorithm to use for the message signature process diff -Nru qca2-2.0.3/include/QtCrypto/qca_safetimer.h qca2-2.1.0/include/QtCrypto/qca_safetimer.h --- qca2-2.0.3/include/QtCrypto/qca_safetimer.h 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/include/QtCrypto/qca_safetimer.h 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,70 @@ +/* + * qca_safetimer.h - Qt Cryptographic Architecture + * Copyright (C) 2014 Ivan Romanov + * + * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + * + */ + +#ifndef QCA_SAFETIMER_H +#define QCA_SAFETIMER_H + +#include "qca_export.h" +#include + +class QEvent; +class QTimerEvent; + +namespace QCA { + +class QCA_EXPORT SafeTimer : public QObject +{ + Q_OBJECT +public: + SafeTimer(QObject *parent = 0); + ~SafeTimer(); + + int interval() const; + bool isActive() const; + bool isSingleShot() const; + void setInterval(int msec); + void setSingleShot(bool singleShot); + int timerId() const; + +public slots: + void start(int msec); + void start(); + void stop(); + +signals: + void timeout(); + +protected: + bool event(QEvent *event); + void timerEvent(QTimerEvent *event); + +private: + // Functions is used internally. Outer world mustn't have access them. + void startTimer() {} + void killTimer(int) {} + + class Private; + Private *d; +}; + +} + +#endif // QCA_SAFETIMER_H diff -Nru qca2-2.0.3/include/QtCrypto/qca_securelayer.h qca2-2.1.0/include/QtCrypto/qca_securelayer.h --- qca2-2.0.3/include/QtCrypto/qca_securelayer.h 2008-05-16 20:41:50.000000000 +0000 +++ qca2-2.1.0/include/QtCrypto/qca_securelayer.h 2014-11-06 08:15:45.000000000 +0000 @@ -783,7 +783,11 @@ \param signal the name of the signal that has been connected to. */ +#if QT_VERSION >= 0x050000 + void connectNotify(const QMetaMethod &signal); +#else void connectNotify(const char *signal); +#endif /** Called when a connection is removed from a particular signal @@ -791,7 +795,11 @@ \param signal the name of the signal that has been disconnected from. */ +#if QT_VERSION >= 0x050000 + void disconnectNotify(const QMetaMethod &signal); +#else void disconnectNotify(const char *signal); +#endif private: Q_DISABLE_COPY(TLS) diff -Nru qca2-2.0.3/include/QtCrypto/qca_securemessage.h qca2-2.1.0/include/QtCrypto/qca_securemessage.h --- qca2-2.0.3/include/QtCrypto/qca_securemessage.h 2008-05-16 20:41:50.000000000 +0000 +++ qca2-2.1.0/include/QtCrypto/qca_securemessage.h 2014-11-06 08:15:45.000000000 +0000 @@ -363,7 +363,10 @@ ErrorEncryptInvalid, ///< encrypting key is invalid in some way ErrorNeedCard, ///< pgp card is missing ErrorCertKeyMismatch, ///< certificate and private key don't match - ErrorUnknown ///< other error + ErrorUnknown, ///< other error + ErrorSignerRevoked, ///< signing key is revoked + ErrorSignatureExpired, ///< signature is expired + ErrorEncryptRevoked ///< encrypting key is revoked }; /** diff -Nru qca2-2.0.3/include/QtCrypto/qca_version.h.in qca2-2.1.0/include/QtCrypto/qca_version.h.in --- qca2-2.0.3/include/QtCrypto/qca_version.h.in 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/include/QtCrypto/qca_version.h.in 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,81 @@ +/* + * qca_version.h - Qt Cryptographic Architecture + * Copyright (C) 2014 Ivan Romanov + * + * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + * + */ + +/** + \file qca_version.h + + Header file with %QCA version + + \note You should not use this header directly from an + application. You should just use \#include \ + instead. +*/ + +#ifndef QCA_VERSION_H +#define QCA_VERSION_H + +/** + The major part of current %QCA version. +*/ + +#define QCA_MAJOR_VERSION @QCA_LIB_MAJOR_VERSION@ + +/** + The minor part of current %QCA version. +*/ + +#define QCA_MINOR_VERSION @QCA_LIB_MINOR_VERSION@ + +/** + The patch part of current %QCA version. +*/ + +#define QCA_PATCH_VERSION @QCA_LIB_PATCH_VERSION@ + +/** + The current version of %QCA as string. + */ + +#define QCA_VERSION_STR "@QCA_LIB_VERSION_STRING@" + +/** + Can be used like #if (QCA_VERSION >= %QCA_VERSION_CHECK(2, 0, 3)) + + \param major part of the version + \param minor part of the version + \param patch part of the version +*/ + +#define QCA_VERSION_CHECK(major, minor, patch) \ + ((major << 16) | (minor << 8) | (patch)) + +/** + The current version of %QCA + + This provides you a compile time check of the %QCA version. + + \sa qcaVersion for a runtime check. +*/ + +#define QCA_VERSION \ + QCA_VERSION_CHECK(@QCA_LIB_MAJOR_VERSION@, @QCA_LIB_MINOR_VERSION@, @QCA_LIB_PATCH_VERSION@) + +#endif // QCA_VERSION_H diff -Nru qca2-2.0.3/INSTALL qca2-2.1.0/INSTALL --- qca2-2.0.3/INSTALL 2009-04-24 23:10:25.000000000 +0000 +++ qca2-2.1.0/INSTALL 2014-11-06 08:15:45.000000000 +0000 @@ -1,36 +1,62 @@ Installing QCA -------------- -QCA requires Qt 4.2 or greater. +QCA requires Qt 4.7 or greater. -For Unix/Linux/Mac: +For Unix/Linux/Mac/Windows: - ./configure + cmake . make make install /sbin/ldconfig, if necessary -For Windows: - - configure - nmake (or make) - installwin - - Notes ----- - - On unix, use --prefix=$PWD to build in-place + Use cmake cache entries -Building from SVN ------------------- -First, install the 'qconf' program, at least version 1.5. You can download -the source here: - http://delta.affinix.com/qconf/ + CMAKE_INSTALL_PREFIX - must be defined otherwise QCA will be installed + in Qt prefix (by default: "") + QT4_BUILD - forced Qt4 building (by default: OFF) + BUILD_TESTS - build unittests (by default: ON) + BUILD_TOOLS - build mozcerts and qcatool (by default: ON) + QCA_SUFFIX - suffix will be used for library, qcatool binary, + qcatool manpage and qca pkg-config file (by default: "") + LIB_SUFFIX - library directory suffix (by default: "") + LIB_INSTALL_DIR - path to library directory + (by default: ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}) + BUILD_PLUGINS - list plugins to build (botan;ossl;gnupg for example). + Also possible values is none, auto or all + (by default: "auto") + WITH_${PLUGIN}_PLUGIN - to build particular plugin. Can be no, yes or + auto (WITH_ossl_PLUGIN=auto for example) + DEVELOPER_MODE - mode to enable features for developers. If ON + will be used hardcoded path to 'crypto' + (by default: OFF) + OSX_FRAMEWORK - build an OS X framework (by default: ON) + USE_RELATIVE_PATHS - make relocatable package if possible (by default: OFF) + + Finally install paths can be override with: + + QCA_PREFIX_INSTALL_DIR - qca prefix, just a origin to make other paths + QCA_PLUGINS_INSTALL_DIR - qt plugins path + QCA_BINARY_INSTALL_DIR - qcatool will be installed to + QCA_LIBRARY_INSTALL_DIR - qca library will be installed to + QCA_FEATURE_INSTALL_DIR - path to qt mkspecs dir + QCA_INCLUDE_INSTALL_DIR - path for QtCrypto dir with includes + QCA_PRIVATE_INCLUDE_INSTALL_DIR - for future implementation + QCA_DOC_INSTALL_DIR - for html documentation + QCA_MAN_INSTALL_DIR - for qcatool manpage + PKGCONFIG_INSTALL_PREFIX - path to install pkg config file -Then, go into the QCA source tree and type 'qconf'. You should now have a -configure program to execute, just like from a normal source package. +Please report problems to: + http://bugs.kde.org +Official git repo: + http://quickgit.kde.org/?p=qca.git -Please report problems to: - delta@lists.affinix.com +KDE Projects page: + http://projects.kde.org/projects/kdesupport/qca + +Official homepage: + http://delta.affinix.com/qca/ diff -Nru qca2-2.0.3/installwin.bat qca2-2.1.0/installwin.bat --- qca2-2.0.3/installwin.bat 2009-04-24 23:10:25.000000000 +0000 +++ qca2-2.1.0/installwin.bat 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -@echo off -REM install qmake feature file pointing to the current directory - -if not defined QTDIR goto err -echo QCA_INCDIR = "%CD%\include" > crypto.prf -echo QCA_LIBDIR = "%CD%\lib" >> crypto.prf -type crypto.prf.in >> crypto.prf -copy crypto.prf "%QTDIR%\mkspecs\features" - -echo Installed crypto.prf as a qmake feature. -goto end - -:err -echo Error: QTDIR not set (example: set QTDIR=C:\Qt\4.2.3). -goto end - -:end diff -Nru qca2-2.0.3/Mainpage.dox qca2-2.1.0/Mainpage.dox --- qca2-2.0.3/Mainpage.dox 2007-09-02 18:55:35.000000000 +0000 +++ qca2-2.1.0/Mainpage.dox 2014-11-06 08:15:45.000000000 +0000 @@ -14,7 +14,7 @@ application! %QCA should work everywhere %Qt does, including Windows/Unix/MacOSX. This - version of %QCA is for Qt4, and requires no Qt3 compatibility code. + version of %QCA is for Qt4 or Qt5, and requires no Qt3 compatibility code. \section features Features @@ -157,19 +157,20 @@ \subsection qca2dev Current development - The latest version of the code is available from the KDE Subversion - server (there is no formal release of the current version at this time). See - - http://developer.kde.org/source/anonsvn.html - for general instructions. You do not need kdelibs or - arts modules for %QCA - just pull down kdesupport/qca. The plugins - are in the same tree. Naturally you will need %Qt properly set up - and configured in order to build and use %QCA. + The latest version of the code is available from the KDE Git server + (there is no formal release of the current version at this time). + Naturally you will need %Qt properly set up and configured in order + to build and use %QCA. - The Subversion code can also be browsed - + The Git code can be browsed + via the web + Use + \verbatim + git clone git://anongit.kde.org/qca.git + \endverbatim + to get the latest sources. */ /** \page architecture Architecture diff -Nru qca2-2.0.3/man/qcatool.1 qca2-2.1.0/man/qcatool.1 --- qca2-2.0.3/man/qcatool.1 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/man/qcatool.1 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,191 @@ +.TH QCATOOL "1" "August 2007" "qcatool 1.0.0" "Qt Cryptographic Architecture (QCA)" + +.SH NAME +qcatool \- command line tool for the Qt Cryptographic Architecture + +.SH DESCRIPTION +qcatool is a command line tool for performing various cryptographic +operations with the Qt Cryptographic Architecture (QCA). qcatool can +also be used for testing and debugging QCA. + +.SH USAGE +qcatool has a range of options and commands. You only ever get to +use one command, but you may use several, one or no options. + +.SH OPTIONS +As noted above, these are all optional, and may be combined. +.PP +.TP +\fB\-\-pass\fR=PASSWORD +Specify the password to use. This is probably a bad idea except for +testing, because anyone can read the arguments to a command line +application. +.TP +\fB\-\-newpass\fR=PASSWORD +Specify the new password to use for password change +with the \fBkey changepass\fR and \fBkeybundle changepass\fR commands. +This is probably a bad idea except for +testing, because anyone can read the arguments to a command line +application. +.TP +\fB\-\-nonroots\fR=CERTIFICATES +Specify additional certificates, not trusted, but which may be used +in the trust path if appropriate trust can be established. +.TP +\fB\-\-roots\fR=CERTIFICATES +Specify additional certificates which can be used as trusted (root) +certificates. +.TP +\fB\-\-nosys\fR +Disable use of the standard root certificates that are provided by +the operating system. +.TP +\fB\-\-noprompt\fR +Disable prompting for passwords/passphrases. If you do not provide +the passphrase on the command line (with \fB\-\-pass\fR or \fB\-\-newpass\fR) +this will cause qcatool to abort the command if a password/passphrase is +required. +.TP +\fB\-\-ordered\fR +If outputting certificate information fields (Distinguished Name and Subject Alternative Name), show them in same the order that they are present in the certificate rather than in a friendly sorted order. +.TP +\fB\-\-debug\fR +Enable additional output to aid debugging. +.TP +\fB\-\-log-file=FILENAME\fR +Log to the specified file. +.TP +\fB\-\-log-level=LEVEL\fR +Log at the specified level. The log level can be between 0 (none) +and 8 (most). +.TP +\fB\-\-nobundle\fR +When S/MIME signing, do not bundle the signer's certificate chain inside the signature. This results in a smaller signature output, but requires the recipient to have all of the necessary certificates in order to verify it. + +.SH COMMANDS +.TP +\fBhelp\fR, \fB\-\-help\fR, \fB\-h\fR +Output usage (help) information. +.TP +\fBversion\fR, \fB\-\-version\fR, \fB\-v\fR +Output version information. +.TP +\fBplugins\fR +List available plugins. Use the \fB\-\-debug\fR option to get +more information on plugins which are found and which ones actually +loaded. +.TP +\fBconfig save \fI[provider]\fR +Save provider configuration. Use this to have the provider's default configuration written to persistent storage, which you can then edit by hand. +.TP +\fBconfig edit \fI[provider]\fR +Edit provider configuration. The changes are written to persistent storage. +.TP +\fBkey make rsa|dsa [bits]\fR +Create a key pair +.TP +\fBkey changepass [K] +Add/change/remove passphrase of a key +.TP +\fBcert makereq [K]\fR +Create certificate request (CSR) +.TP +\fBcert makeself [K]\fR +Create self-signed certificate +.TP +\fBcert makereqadv [K]\fR +Advanced version of 'makereq' +.TP +\fBcert makeselfadv [K]\fR +Advanced version of 'makeself' +.TP +\fBcert validate [C]\fR +Validate certificate +.TP +\fBkeybundle make [K] [C]\fR +Create a keybundle +.TP +\fBkeybundle extract [X]\fR +Extract certificate(s) and key +.TP +\fBkeybundle changepass [X]\fR +Change passphrase of a keybundle +.TP +\fBkeystore list-stores\fR +List all available keystores +.TP +\fBkeystore list [storeName]\fR +List content of a keystore +.TP +\fBkeystore monitor\fR +Monitor for keystore availability +.TP +\fBkeystore export [E]\fR +Export a keystore entry's content +.TP +\fBkeystore exportref [E]\fR +Export a keystore entry reference +.TP +\fBkeystore addkb [storeName] [cert.p12]\fR +Add a keybundle into a keystore +.TP +\fBkeystore addpgp [storeName] [key.asc]\fR +Add a PGP key into a keystore +.TP +\fBkeystore remove [E]\fR +Remove an object from a keystore +.TP +\fBshow cert [C]\fR +Examine a certificate +.TP +\fBshow req [req.pem]\fR +Examine a certificate request (CSR) +.TP +\fBshow crl [crl.pem]\fR +Examine a certificate revocation list +.TP +\fBshow kb [X]\fR +Examine a keybundle +.TP +\fBshow pgp [P|S]\fR +Examine a PGP key +.TP +\fBmessage sign pgp|pgpdetach|smime [X|S]\fR +Sign a message +.TP +\fBmessage encrypt pgp|smime [C|P]\fR +Encrypt a message +.TP +\fBmessage signencrypt [S] [P]\fR +PGP sign & encrypt a message +.TP +\fBmessage verify pgp|smime\fR +Verify a message +.TP +\fBmessage decrypt pgp|smime ((X) ...)\fR +Decrypt a message (S/MIME needs X) +.TP +\fBmessage exportcerts\fR +Export certs from S/MIME message + +.SH ARGUMENTS +The arguments to the commands are as follows. + +K = private key. + +C = certificate. + +X = key bundle. + +P = PGP public key. + +S = PGP secret key. + +E = generic entry. + +These must be identified by either a filename or a keystore reference ("store:obj"). + +.SH AUTHOR +qcatool was written by Justin Karneges as part of QCA. This manual page +was written by Brad Hards. + diff -Nru qca2-2.0.3/man/qcatool2.1 qca2-2.1.0/man/qcatool2.1 --- qca2-2.0.3/man/qcatool2.1 2007-11-02 22:34:52.000000000 +0000 +++ qca2-2.1.0/man/qcatool2.1 1970-01-01 00:00:00.000000000 +0000 @@ -1,191 +0,0 @@ -.TH QCATOOL "1" "August 2007" "qcatool 1.0.0" "Qt Cryptographic Architecture (QCA)" - -.SH NAME -qcatool \- command line tool for the Qt Cryptographic Architecture - -.SH DESCRIPTION -qcatool is a command line tool for performing various cryptographic -operations with the Qt Cryptographic Architecture (QCA). qcatool can -also be used for testing and debugging QCA. - -.SH USAGE -qcatool has a range of options and commands. You only ever get to -use one command, but you may use several, one or no options. - -.SH OPTIONS -As noted above, these are all optional, and may be combined. -.PP -.TP -\fB\-\-pass\fR=PASSWORD -Specify the password to use. This is probably a bad idea except for -testing, because anyone can read the arguments to a command line -application. -.TP -\fB\-\-newpass\fR=PASSWORD -Specify the new password to use for password change -with the \fBkey changepass\fR and \fBkeybundle changepass\fR commands. -This is probably a bad idea except for -testing, because anyone can read the arguments to a command line -application. -.TP -\fB\-\-nonroots\fR=CERTIFICATES -Specify additional certificates, not trusted, but which may be used -in the trust path if appropriate trust can be established. -.TP -\fB\-\-roots\fR=CERTIFICATES -Specify additional certificates which can be used as trusted (root) -certificates. -.TP -\fB\-\-nosys\fR -Disable use of the standard root certificates that are provided by -the operating system. -.TP -\fB\-\-noprompt\fR -Disable prompting for passwords/passphrases. If you do not provide -the passphrase on the command line (with \fB\-\-pass\fR or \fB\-\-newpass\fR) -this will cause qcatool to abort the command if a password/passphrase is -required. -.TP -\fB\-\-ordered\fR -If outputting certificate information fields (Distinguished Name and Subject Alternative Name), show them in same the order that they are present in the certificate rather than in a friendly sorted order. -.TP -\fB\-\-debug\fR -Enable additional output to aid debugging. -.TP -\fB\-\-log-file=FILENAME\fR -Log to the specified file. -.TP -\fB\-\-log-level=LEVEL\fR -Log at the specified level. The log level can be between 0 (none) -and 8 (most). -.TP -\fB\-\-nobundle\fR -When S/MIME signing, do not bundle the signer's certificate chain inside the signature. This results in a smaller signature output, but requires the recipient to have all of the necessary certificates in order to verify it. - -.SH COMMANDS -.TP -\fBhelp\fR, \fB\-\-help\fR, \fB\-h\fR -Output usage (help) information. -.TP -\fBversion\fR, \fB\-\-version\fR, \fB\-v\fR -Output version information. -.TP -\fBplugins\fR -List available plugins. Use the \fB\-\-debug\fR option to get -more information on plugins which are found and which ones actually -loaded. -.TP -\fBconfig save \fI[provider]\fR -Save provider configuration. Use this to have the provider's default configuration written to persistent storage, which you can then edit by hand. -.TP -\fBconfig edit \fI[provider]\fR -Edit provider configuration. The changes are written to persistent storage. -.TP -\fBkey make rsa|dsa [bits]\fR -Create a key pair -.TP -\fBkey changepass [K] -Add/change/remove passphrase of a key -.TP -\fBcert makereq [K]\fR -Create certificate request (CSR) -.TP -\fBcert makeself [K]\fR -Create self-signed certificate -.TP -\fBcert makereqadv [K]\fR -Advanced version of 'makereq' -.TP -\fBcert makeselfadv [K]\fR -Advanced version of 'makeself' -.TP -\fBcert validate [C]\fR -Validate certificate -.TP -\fBkeybundle make [K] [C]\fR -Create a keybundle -.TP -\fBkeybundle extract [X]\fR -Extract certificate(s) and key -.TP -\fBkeybundle changepass [X]\fR -Change passphrase of a keybundle -.TP -\fBkeystore list-stores\fR -List all available keystores -.TP -\fBkeystore list [storeName]\fR -List content of a keystore -.TP -\fBkeystore monitor\fR -Monitor for keystore availability -.TP -\fBkeystore export [E]\fR -Export a keystore entry's content -.TP -\fBkeystore exportref [E]\fR -Export a keystore entry reference -.TP -\fBkeystore addkb [storeName] [cert.p12]\fR -Add a keybundle into a keystore -.TP -\fBkeystore addpgp [storeName] [key.asc]\fR -Add a PGP key into a keystore -.TP -\fBkeystore remove [E]\fR -Remove an object from a keystore -.TP -\fBshow cert [C]\fR -Examine a certificate -.TP -\fBshow req [req.pem]\fR -Examine a certificate request (CSR) -.TP -\fBshow crl [crl.pem]\fR -Examine a certificate revocation list -.TP -\fBshow kb [X]\fR -Examine a keybundle -.TP -\fBshow pgp [P|S]\fR -Examine a PGP key -.TP -\fBmessage sign pgp|pgpdetach|smime [X|S]\fR -Sign a message -.TP -\fBmessage encrypt pgp|smime [C|P]\fR -Encrypt a message -.TP -\fBmessage signencrypt [S] [P]\fR -PGP sign & encrypt a message -.TP -\fBmessage verify pgp|smime\fR -Verify a message -.TP -\fBmessage decrypt pgp|smime ((X) ...)\fR -Decrypt a message (S/MIME needs X) -.TP -\fBmessage exportcerts\fR -Export certs from S/MIME message - -.SH ARGUMENTS -The arguments to the commands are as follows. - -K = private key. - -C = certificate. - -X = key bundle. - -P = PGP public key. - -S = PGP secret key. - -E = generic entry. - -These must be identified by either a filename or a keystore reference ("store:obj"). - -.SH AUTHOR -qcatool was written by Justin Karneges as part of QCA. This manual page -was written by Brad Hards. - diff -Nru qca2-2.0.3/plugins/CMakeLists.txt qca2-2.1.0/plugins/CMakeLists.txt --- qca2-2.0.3/plugins/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,68 @@ +# Use the same path for shared and static plugins +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/${QCA_LIB_NAME}/crypto") +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/${QCA_LIB_NAME}/crypto") + +set(PLUGINS "botan;cyrus-sasl;gcrypt;gnupg;logger;nss;ossl;pkcs11;softstore" CACHE INTERNAL "") + +# Initialize WITH_${PLUGIN}_PLUGIN cache variables +foreach(PLUGIN IN LISTS PLUGINS) + set(WITH_${PLUGIN}_PLUGIN "" CACHE STRING "Build ${PLUGIN} plugin") + string(TOLOWER "${WITH_${PLUGIN}_PLUGIN}" WITH_${PLUGIN}_PLUGIN) +endforeach(PLUGIN IN LISTS PLUGINS) + +string(REGEX MATCH "^none|all|auto$" NOT_PLUGIN_LIST "${BUILD_PLUGINS}") + +if(NOT_PLUGIN_LIST) + # BUILD_PLUGINS has "none", "all" or "auto" value + foreach(PLUGIN IN LISTS PLUGINS) + # If not defined by user use BUILD_PLUGINS value + # to decide build or not build the plugin + if("${WITH_${PLUGIN}_PLUGIN}" STREQUAL "") + if("${BUILD_PLUGINS}" STREQUAL "all") + set(WITH_${PLUGIN}_PLUGIN "yes") + elseif("${BUILD_PLUGINS}" STREQUAL "auto") + set(WITH_${PLUGIN}_PLUGIN "auto") + else("${BUILD_PLUGINS}" STREQUAL "all") + set(WITH_${PLUGIN}_PLUGIN "no") + endif("${BUILD_PLUGINS}" STREQUAL "all") + elseif(NOT WITH_${PLUGIN}_PLUGIN) + set(WITH_${PLUGIN}_PLUGIN "no") + elseif("${WITH_${PLUGIN}_PLUGIN}" STREQUAL "auto") + set(WITH_${PLUGIN}_PLUGIN "auto") + else("${WITH_${PLUGIN}_PLUGIN}" STREQUAL "") + set(WITH_${PLUGIN}_PLUGIN "yes") + endif("${WITH_${PLUGIN}_PLUGIN}" STREQUAL "") + + # Build plugin if yes or auto + if(WITH_${PLUGIN}_PLUGIN) + add_subdirectory("qca-${PLUGIN}") + else(WITH_${PLUGIN}_PLUGIN) + disable_plugin(${PLUGIN}) + endif(WITH_${PLUGIN}_PLUGIN) + endforeach(PLUGIN IN LISTS PLUGINS) +else(NOT_PLUGIN_LIST) + # BUILD_PLUGINS has list plugins to builds + foreach(PLUGIN IN LISTS PLUGINS) + list(FIND BUILD_PLUGINS "${PLUGIN}" PLUGIN_INDEX) + if(PLUGIN_INDEX GREATER -1) + set(WITH_${PLUGIN}_PLUGIN "yes") + add_subdirectory("qca-${PLUGIN}") + else(PLUGIN_INDEX GREATER -1) + disable_plugin(${PLUGIN}) + endif(PLUGIN_INDEX GREATER -1) + endforeach(PLUGIN IN LISTS PLUGINS) +endif(NOT_PLUGIN_LIST) + +message("") +message("Plugins:") +foreach(PLUGIN IN LISTS PLUGINS) + message(" qca-${PLUGIN} ${WITH_${PLUGIN}_PLUGIN_INTERNAL}") +endforeach(PLUGIN IN LISTS PLUGINS) + +# Currently disabled +# +# IF (WIN32) +# MESSAGE(STATUS "WinCrypto plugin enabled") +# ADD_SUBDIRECTORY(qca-wincrypto) +# ENDIF (WIN32) + diff -Nru qca2-2.0.3/plugins/qca-botan/CMakeLists.txt qca2-2.1.0/plugins/qca-botan/CMakeLists.txt --- qca2-2.0.3/plugins/qca-botan/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-botan/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,32 @@ +if(WITH_botan_PLUGIN STREQUAL "yes") + find_package(Botan REQUIRED) +else(WITH_botan_PLUGIN STREQUAL "yes") + find_package(Botan) +endif(WITH_botan_PLUGIN STREQUAL "yes") + +if(BOTAN_FOUND) + enable_plugin("botan") + + set(QCA_BOTAN_SOURCES qca-botan.cpp) + add_definitions(${BOTAN_CFLAGS}) + my_automoc(QCA_BOTAN_SOURCES) + add_library(qca-botan ${PLUGIN_TYPE} ${QCA_BOTAN_SOURCES}) + + if(APPLE AND ${PLUGIN_TYPE} STREQUAL "MODULE") + set_property(TARGET qca-botan PROPERTY SUFFIX ".dylib") + endif() + + target_link_libraries(qca-botan ${QT_QTCORE_LIBRARY} ${QCA_LIB_NAME} ${BOTAN_LIBRARIES}) + + if(NOT DEVELOPER_MODE) + install(TARGETS qca-botan + LIBRARY DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + ARCHIVE DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + RUNTIME DESTINATION "${QCA_CRYPTO_INSTALL_DIR}") + + install_pdb(qca-botan ${QCA_CRYPTO_INSTALL_DIR}) + endif() + +else(BOTAN_FOUND) + disable_plugin("botan") +endif(BOTAN_FOUND) diff -Nru qca2-2.0.3/plugins/qca-botan/COPYING qca2-2.1.0/plugins/qca-botan/COPYING --- qca2-2.0.3/plugins/qca-botan/COPYING 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-botan/COPYING 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff -Nru qca2-2.0.3/plugins/qca-botan/qca-botan.cpp qca2-2.1.0/plugins/qca-botan/qca-botan.cpp --- qca2-2.0.3/plugins/qca-botan/qca-botan.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-botan/qca-botan.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,552 @@ +/* + * Copyright (C) 2004 Justin Karneges + * Copyright (C) 2004-2006 Brad Hards + * + * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ +#include +#include +#include + +#include + +#include +#include +#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,0) +#include +#endif +#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,8,0) +#include +#endif + +#include +#include + +//----------------------------------------------------------- +class botanRandomContext : public QCA::RandomContext +{ +public: + botanRandomContext(QCA::Provider *p) : RandomContext(p) + { + } + + Context *clone() const + { + return new botanRandomContext( *this ); + } + + QCA::SecureArray nextBytes(int size) + { + QCA::SecureArray buf(size); +#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,5,0) + Botan::Global_RNG::randomize( (Botan::byte*)buf.data(), buf.size(), Botan::SessionKey ); +#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,7,6) + Botan::Global_RNG::randomize( (Botan::byte*)buf.data(), buf.size() ); +#else + Botan::AutoSeeded_RNG rng; + rng.randomize(reinterpret_cast(buf.data()), buf.size()); +#endif + return buf; + } +}; + + +//----------------------------------------------------------- +class BotanHashContext : public QCA::HashContext +{ +public: + BotanHashContext( const QString &hashName, QCA::Provider *p, const QString &type) : QCA::HashContext(p, type) + { + m_hashObj = Botan::get_hash(hashName.toStdString()); + } + + ~BotanHashContext() + { + delete m_hashObj; + } + + Context *clone() const + { + return new BotanHashContext(*this); + } + + void clear() + { + m_hashObj->clear(); + } + + void update(const QCA::MemoryRegion &a) + { + m_hashObj->update( (const Botan::byte*)a.data(), a.size() ); + } + + QCA::MemoryRegion final() + { +#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,0) + QCA::SecureArray a( m_hashObj->OUTPUT_LENGTH ); +#else + QCA::SecureArray a( m_hashObj->output_length() ); +#endif + m_hashObj->final( (Botan::byte *)a.data() ); + return a; + } + +private: + Botan::HashFunction *m_hashObj; +}; + + +//----------------------------------------------------------- +class BotanHMACContext : public QCA::MACContext +{ +public: + BotanHMACContext( const QString &hashName, QCA::Provider *p, const QString &type) : QCA::MACContext(p, type) + { +#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,8,0) + m_hashObj = new Botan::HMAC(hashName.toStdString()); +#else + m_hashObj = new Botan::HMAC(Botan::global_state().algorithm_factory().make_hash_function(hashName.toStdString())); +#endif + if (0 == m_hashObj) { + std::cout << "null context object" << std::endl; + } + } + + ~BotanHMACContext() + { + } + + void setup(const QCA::SymmetricKey &key) + { + // this often gets called with an empty key, because that is the default + // in the QCA MessageAuthenticationCode constructor. Botan doesn't like + // that happening. + if (key.size() > 0) { + m_hashObj->set_key( (const Botan::byte *)key.data(), key.size() ); + } + } + + Context *clone() const + { + return new BotanHMACContext(*this); + } + + void clear() + { + m_hashObj->clear(); + } + + QCA::KeyLength keyLength() const + { + return anyKeyLength(); + } + + void update(const QCA::MemoryRegion &a) + { + m_hashObj->update( (const Botan::byte*)a.data(), a.size() ); + } + + void final( QCA::MemoryRegion *out) + { +#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,0) + QCA::SecureArray sa( m_hashObj->OUTPUT_LENGTH, 0 ); +#else + QCA::SecureArray sa( m_hashObj->output_length(), 0 ); +#endif + m_hashObj->final( (Botan::byte *)sa.data() ); + *out = sa; + } + +protected: + Botan::HMAC *m_hashObj; +}; + + +//----------------------------------------------------------- +class BotanPBKDFContext: public QCA::KDFContext +{ +public: + BotanPBKDFContext( const QString &kdfName, QCA::Provider *p, const QString &type) : QCA::KDFContext(p, type) + { + m_s2k = Botan::get_s2k(kdfName.toStdString()); + } + + ~BotanPBKDFContext() + { + delete m_s2k; + } + + Context *clone() const + { + return new BotanPBKDFContext( *this ); + } + + QCA::SymmetricKey makeKey(const QCA::SecureArray &secret, const QCA::InitializationVector &salt, + unsigned int keyLength, unsigned int iterationCount) + { +#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,0) + m_s2k->set_iterations(iterationCount); + m_s2k->change_salt((const Botan::byte*)salt.data(), salt.size()); + std::string secretString(secret.data(), secret.size() ); + Botan::OctetString key = m_s2k->derive_key(keyLength, secretString); +#else + std::string secretString(secret.data(), secret.size() ); + Botan::OctetString key = m_s2k->derive_key(keyLength, secretString, (const Botan::byte*)salt.data(), salt.size(), iterationCount); +#endif + QCA::SecureArray retval(QByteArray((const char*)key.begin(), key.length())); + return QCA::SymmetricKey(retval); + } + + QCA::SymmetricKey makeKey(const QCA::SecureArray &secret, + const QCA::InitializationVector &salt, + unsigned int keyLength, + int msecInterval, + unsigned int *iterationCount) + { + Q_ASSERT(iterationCount != NULL); + Botan::OctetString key; + QTime timer; + std::string secretString(secret.data(), secret.size() ); + + *iterationCount = 0; +#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,0) + m_s2k->set_iterations(1); + m_s2k->change_salt((const Botan::byte*)salt.data(), salt.size()); + timer.start(); + while (timer.elapsed() < msecInterval) { + key = m_s2k->derive_key(keyLength, secretString); + ++(*iterationCount); + } +#else + timer.start(); + while (timer.elapsed() < msecInterval) { + key = m_s2k->derive_key(keyLength, + secretString, + (const Botan::byte*)salt.data(), + salt.size(), + 1); + ++(*iterationCount); + } +#endif + return makeKey(secret, salt, keyLength, *iterationCount); + } + +protected: + Botan::S2K* m_s2k; +}; + + +//----------------------------------------------------------- +class BotanCipherContext : public QCA::CipherContext +{ +public: + BotanCipherContext( const QString &algo, const QString &mode, const QString &padding, + QCA::Provider *p, const QString &type) : QCA::CipherContext(p, type) + { + m_algoName = algo.toStdString(); + m_algoMode = mode.toStdString(); + m_algoPadding = padding.toStdString(); + } + + void setup(QCA::Direction dir, + const QCA::SymmetricKey &key, + const QCA::InitializationVector &iv) + { + try { + m_dir = dir; + Botan::SymmetricKey keyCopy((Botan::byte*)key.data(), key.size()); + + if (iv.size() == 0) { + if (QCA::Encode == dir) { + m_crypter = new Botan::Pipe(Botan::get_cipher(m_algoName+'/'+m_algoMode+'/'+m_algoPadding, + keyCopy, Botan::ENCRYPTION)); + } + else { + m_crypter = new Botan::Pipe(Botan::get_cipher(m_algoName+'/'+m_algoMode+'/'+m_algoPadding, + keyCopy, Botan::DECRYPTION)); + } + } else { + Botan::InitializationVector ivCopy((Botan::byte*)iv.data(), iv.size()); + if (QCA::Encode == dir) { + m_crypter = new Botan::Pipe(Botan::get_cipher(m_algoName+'/'+m_algoMode+'/'+m_algoPadding, + keyCopy, ivCopy, Botan::ENCRYPTION)); + } + else { + m_crypter = new Botan::Pipe(Botan::get_cipher(m_algoName+'/'+m_algoMode+'/'+m_algoPadding, + keyCopy, ivCopy, Botan::DECRYPTION)); + } + } + m_crypter->start_msg(); + } catch (Botan::Exception& e) { + std::cout << "caught: " << e.what() << std::endl; + } + } + + Context *clone() const + { + return new BotanCipherContext( *this ); + } + + int blockSize() const + { + return Botan::block_size_of(m_algoName); + } + + bool update(const QCA::SecureArray &in, QCA::SecureArray *out) + { + m_crypter->write((Botan::byte*)in.data(), in.size()); + QCA::SecureArray result( m_crypter->remaining() ); + // Perhaps bytes_read is redundant and can be dropped + size_t bytes_read = m_crypter->read((Botan::byte*)result.data(), result.size()); + result.resize(bytes_read); + *out = result; + return true; + } + + bool final(QCA::SecureArray *out) + { + m_crypter->end_msg(); + QCA::SecureArray result( m_crypter->remaining() ); + // Perhaps bytes_read is redundant and can be dropped + size_t bytes_read = m_crypter->read((Botan::byte*)result.data(), result.size()); + result.resize(bytes_read); + *out = result; + return true; + } + + QCA::KeyLength keyLength() const + { +#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,0) + return QCA::KeyLength( Botan::min_keylength_of(m_algoName), + Botan::max_keylength_of(m_algoName), + Botan::keylength_multiple_of(m_algoName) ); +#else + Botan::Algorithm_Factory &af = Botan::global_state().algorithm_factory(); + Botan::Key_Length_Specification kls(0); + if(const Botan::BlockCipher *bc = af.prototype_block_cipher(m_algoName)) + kls = bc->key_spec(); + else if(const Botan::StreamCipher *sc = af.prototype_stream_cipher(m_algoName)) + kls = sc->key_spec(); + else if(const Botan::MessageAuthenticationCode *mac = af.prototype_mac(m_algoName)) + kls = mac->key_spec(); + return QCA::KeyLength( kls.minimum_keylength(), + kls.maximum_keylength(), + kls.keylength_multiple() ); +#endif + } + + + ~BotanCipherContext() + { + delete m_crypter; + } + +protected: + QCA::Direction m_dir; + std::string m_algoName; + std::string m_algoMode; + std::string m_algoPadding; + Botan::Keyed_Filter *m_cipher; + Botan::Pipe *m_crypter; +}; + + + +//========================================================== +class botanProvider : public QCA::Provider +{ +public: + void init() + { + m_init = new Botan::LibraryInitializer; + } + + ~botanProvider() + { + // We should be cleaning up there, but + // this causes the unit tests to segfault + // delete m_init; + } + + int qcaVersion() const + { + return QCA_VERSION; + } + + QString name() const + { + return "qca-botan"; + } + + QStringList features() const + { + QStringList list; + list += "random"; + list += "md2"; + list += "md4"; + list += "md5"; + list += "sha1"; + list += "sha256"; + list += "sha384"; + list += "sha512"; + list += "ripemd160"; + list += "hmac(md5)"; + list += "hmac(sha1)"; + // HMAC with SHA2 doesn't appear to work correctly in Botan. + // list += "hmac(sha256)"; + // list += "hmac(sha384)"; + // list += "hmac(sha512)"; + list += "hmac(ripemd160)"; + list += "pbkdf1(sha1)"; + list += "pbkdf1(md2)"; + list += "pbkdf2(sha1)"; + list += "aes128-ecb"; + list += "aes128-cbc"; + list += "aes128-cfb"; + list += "aes128-ofb"; + list += "aes192-ecb"; + list += "aes192-cbc"; + list += "aes192-cfb"; + list += "aes192-ofb"; + list += "aes256-ecb"; + list += "aes256-cbc"; + list += "aes256-cfb"; + list += "aes256-ofb"; + list += "des-ecb"; + list += "des-ecb-pkcs7"; + list += "des-cbc"; + list += "des-cbc-pkcs7"; + list += "des-cfb"; + list += "des-ofb"; + list += "tripledes-ecb"; + list += "blowfish-ecb"; + list += "blowfish-cbc"; + list += "blowfish-cbc-pkcs7"; + list += "blowfish-cfb"; + list += "blowfish-ofb"; + return list; + } + + Context *createContext(const QString &type) + { + if ( type == "random" ) + return new botanRandomContext( this ); + else if ( type == "md2" ) + return new BotanHashContext( QString("MD2"), this, type ); + else if ( type == "md4" ) + return new BotanHashContext( QString("MD4"), this, type ); + else if ( type == "md5" ) + return new BotanHashContext( QString("MD5"), this, type ); + else if ( type == "sha1" ) + return new BotanHashContext( QString("SHA-1"), this, type ); + else if ( type == "sha256" ) + return new BotanHashContext( QString("SHA-256"), this, type ); + else if ( type == "sha384" ) + return new BotanHashContext( QString("SHA-384"), this, type ); + else if ( type == "sha512" ) + return new BotanHashContext( QString("SHA-512"), this, type ); + else if ( type == "ripemd160" ) + return new BotanHashContext( QString("RIPEMD-160"), this, type ); + else if ( type == "hmac(md5)" ) + return new BotanHMACContext( QString("MD5"), this, type ); + else if ( type == "hmac(sha1)" ) + return new BotanHMACContext( QString("SHA-1"), this, type ); + else if ( type == "hmac(sha256)" ) + return new BotanHMACContext( QString("SHA-256"), this, type ); + else if ( type == "hmac(sha384)" ) + return new BotanHMACContext( QString("SHA-384"), this, type ); + else if ( type == "hmac(sha512)" ) + return new BotanHMACContext( QString("SHA-512"), this, type ); + else if ( type == "hmac(ripemd160)" ) + return new BotanHMACContext( QString("RIPEMD-160"), this, type ); + else if ( type == "pbkdf1(sha1)" ) + return new BotanPBKDFContext( QString("PBKDF1(SHA-1)"), this, type ); + else if ( type == "pbkdf1(md2)" ) + return new BotanPBKDFContext( QString("PBKDF1(MD2)"), this, type ); + else if ( type == "pbkdf2(sha1)" ) + return new BotanPBKDFContext( QString("PBKDF2(SHA-1)"), this, type ); + else if ( type == "aes128-ecb" ) + return new BotanCipherContext( QString("AES-128"), QString("ECB"), QString("NoPadding"), this, type ); + else if ( type == "aes128-cbc" ) + return new BotanCipherContext( QString("AES-128"), QString("CBC"), QString("NoPadding"), this, type ); + else if ( type == "aes128-cfb" ) + return new BotanCipherContext( QString("AES-128"), QString("CFB"), QString("NoPadding"), this, type ); + else if ( type == "aes128-ofb" ) + return new BotanCipherContext( QString("AES-128"), QString("OFB"), QString("NoPadding"), this, type ); + else if ( type == "aes192-ecb" ) + return new BotanCipherContext( QString("AES-192"), QString("ECB"), QString("NoPadding"), this, type ); + else if ( type == "aes192-cbc" ) + return new BotanCipherContext( QString("AES-192"), QString("CBC"), QString("NoPadding"), this, type ); + else if ( type == "aes192-cfb" ) + return new BotanCipherContext( QString("AES-192"), QString("CFB"), QString("NoPadding"), this, type ); + else if ( type == "aes192-ofb" ) + return new BotanCipherContext( QString("AES-192"), QString("OFB"), QString("NoPadding"), this, type ); + else if ( type == "aes256-ecb" ) + return new BotanCipherContext( QString("AES-256"), QString("ECB"), QString("NoPadding"), this, type ); + else if ( type == "aes256-cbc" ) + return new BotanCipherContext( QString("AES-256"), QString("CBC"), QString("NoPadding"), this, type ); + else if ( type == "aes256-cfb" ) + return new BotanCipherContext( QString("AES-256"), QString("CFB"), QString("NoPadding"), this, type ); + else if ( type == "aes256-ofb" ) + return new BotanCipherContext( QString("AES-256"), QString("OFB"), QString("NoPadding"), this, type ); + else if ( type == "blowfish-ecb" ) + return new BotanCipherContext( QString("Blowfish"), QString("ECB"), QString("NoPadding"), this, type ); + else if ( type == "blowfish-cbc" ) + return new BotanCipherContext( QString("Blowfish"), QString("CBC"), QString("NoPadding"), this, type ); + else if ( type == "blowfish-cbc-pkcs7" ) + return new BotanCipherContext( QString("Blowfish"), QString("CBC"), QString("PKCS7"), this, type ); + else if ( type == "blowfish-cfb" ) + return new BotanCipherContext( QString("Blowfish"), QString("CFB"), QString("NoPadding"), this, type ); + else if ( type == "blowfish-ofb" ) + return new BotanCipherContext( QString("Blowfish"), QString("OFB"), QString("NoPadding"), this, type ); + else if ( type == "des-ecb" ) + return new BotanCipherContext( QString("DES"), QString("ECB"), QString("NoPadding"), this, type ); + else if ( type == "des-ecb-pkcs7" ) + return new BotanCipherContext( QString("DES"), QString("ECB"), QString("PKCS7"), this, type ); + else if ( type == "des-cbc" ) + return new BotanCipherContext( QString("DES"), QString("CBC"), QString("NoPadding"), this, type ); + else if ( type == "des-cbc-pkcs7" ) + return new BotanCipherContext( QString("DES"), QString("CBC"), QString("PKCS7"), this, type ); + else if ( type == "des-cfb" ) + return new BotanCipherContext( QString("DES"), QString("CFB"), QString("NoPadding"), this, type ); + else if ( type == "des-ofb" ) + return new BotanCipherContext( QString("DES"), QString("OFB"), QString("NoPadding"), this, type ); + else if ( type == "tripledes-ecb" ) + return new BotanCipherContext( QString("TripleDES"), QString("ECB"), QString("NoPadding"), this, type ); + else + return 0; + } +private: + Botan::LibraryInitializer *m_init; + +}; + +class botanPlugin : public QObject, public QCAPlugin +{ + Q_OBJECT +#if QT_VERSION >= 0x050000 + Q_PLUGIN_METADATA(IID "com.affinix.qca.Plugin/1.0") +#endif + Q_INTERFACES(QCAPlugin) +public: + virtual QCA::Provider *createProvider() { return new botanProvider; } +}; + +#include "qca-botan.moc" + +#if QT_VERSION < 0x050000 +Q_EXPORT_PLUGIN2(qca_botan, botanPlugin); +#endif diff -Nru qca2-2.0.3/plugins/qca-botan/qcextra qca2-2.1.0/plugins/qca-botan/qcextra --- qca2-2.0.3/plugins/qca-botan/qcextra 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-botan/qcextra 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,9 @@ +#!/bin/sh + +cat >extra.pri < + +This plugin provides features based on Botan. It implements: +* TBA + + +Requirements: + Botan 1.4.1 or later + +Installation procedure: + ./configure + make + su -c "make install" + diff -Nru qca2-2.0.3/plugins/qca-cyrus-sasl/CMakeLists.txt qca2-2.1.0/plugins/qca-cyrus-sasl/CMakeLists.txt --- qca2-2.0.3/plugins/qca-cyrus-sasl/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-cyrus-sasl/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,31 @@ +if(WITH_cyrus-sasl_PLUGIN STREQUAL "yes") + find_package(Sasl2 REQUIRED) +else(WITH_cyrus-sasl_PLUGIN STREQUAL "yes") + find_package(Sasl2) +endif(WITH_cyrus-sasl_PLUGIN STREQUAL "yes") + +if(SASL2_FOUND) + enable_plugin("cyrus-sasl") + + set(QCA_SASL_SOURCES qca-cyrus-sasl.cpp) + include_directories( ${SASL2_INCLUDE_DIR} ) + my_automoc( QCA_SASL_SOURCES ) + add_library(qca-cyrus-sasl ${PLUGIN_TYPE} ${QCA_SASL_SOURCES}) + + if(APPLE AND ${PLUGIN_TYPE} STREQUAL "MODULE") + set_property(TARGET qca-cyrus-sasl PROPERTY SUFFIX ".dylib") + endif() + + target_link_libraries(qca-cyrus-sasl ${QT_QTCORE_LIBRARY} ${QCA_LIB_NAME} ${SASL2_LIBRARIES}) + + if(NOT DEVELOPER_MODE) + install(TARGETS qca-cyrus-sasl + LIBRARY DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + ARCHIVE DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + RUNTIME DESTINATION "${QCA_CRYPTO_INSTALL_DIR}") + + install_pdb(qca-cyrus-sasl ${QCA_CRYPTO_INSTALL_DIR}) + endif() +else(SASL2_FOUND) + disable_plugin("cyrus-sasl") +endif(SASL2_FOUND) diff -Nru qca2-2.0.3/plugins/qca-cyrus-sasl/COPYING qca2-2.1.0/plugins/qca-cyrus-sasl/COPYING --- qca2-2.0.3/plugins/qca-cyrus-sasl/COPYING 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-cyrus-sasl/COPYING 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff -Nru qca2-2.0.3/plugins/qca-cyrus-sasl/qca-cyrus-sasl.cpp qca2-2.1.0/plugins/qca-cyrus-sasl/qca-cyrus-sasl.cpp --- qca2-2.0.3/plugins/qca-cyrus-sasl/qca-cyrus-sasl.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-cyrus-sasl/qca-cyrus-sasl.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,952 @@ +/* + * qca-sasl.cpp - SASL plugin for QCA + * Copyright (C) 2003-2007 Justin Karneges + * Copyright (C) 2006 Michail Pishchagin + * + * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include +#include +#include +#include + +extern "C" +{ +#include +} + +#include +#include +#include + +#define SASL_BUFSIZE 8192 +#define SASL_APP "qca" + +using namespace QCA; + +namespace saslQCAPlugin { + +class saslProvider : public Provider +{ +public: + saslProvider(); + void init(); + ~saslProvider(); + int qcaVersion() const; + QString name() const; + QString credit() const; + QStringList features() const; + Context *createContext(const QString &type); + + bool client_init; + bool server_init; + QString appname; +}; + +//---------------------------------------------------------------------------- +// SASLParams +//---------------------------------------------------------------------------- + +class SASLParams +{ +public: + class SParams + { + public: + bool user, authzid, pass, realm; + }; + + SASLParams() + { + reset(); + } + + void reset() + { + resetNeed(); + resetHave(); + foreach(char *result, results) + delete result; + results.clear(); + } + + void resetNeed() + { + need.user = false; + need.authzid = false; + need.pass = false; + need.realm = false; + } + + void resetHave() + { + have.user = false; + have.authzid = false; + have.pass = false; + have.realm = false; + } + + void setUsername(const QString &s) + { + have.user = true; + user = s; + } + + void setAuthzid(const QString &s) + { + have.authzid = true; + authzid = s; + } + + void setPassword(const SecureArray &s) + { + have.pass = true; + pass = QString::fromUtf8(s.toByteArray()); + } + + void setRealm(const QString &s) + { + have.realm = true; + realm = s; + } + + void applyInteract(sasl_interact_t *needp) + { + for(int n = 0; needp[n].id != SASL_CB_LIST_END; ++n) { + if(needp[n].id == SASL_CB_AUTHNAME) + need.user = true; // yes, I know these + if(needp[n].id == SASL_CB_USER) + need.authzid = true; // look backwards + if(needp[n].id == SASL_CB_PASS) + need.pass = true; + if(needp[n].id == SASL_CB_GETREALM) + need.realm = true; + } + } + + void extractHave(sasl_interact_t *needp) + { + for(int n = 0; needp[n].id != SASL_CB_LIST_END; ++n) { + if(needp[n].id == SASL_CB_AUTHNAME && have.user) + setValue(&needp[n], user); + if(needp[n].id == SASL_CB_USER && have.authzid) + setValue(&needp[n], authzid); + if(needp[n].id == SASL_CB_PASS && have.pass) + setValue(&needp[n], pass); + if(needp[n].id == SASL_CB_GETREALM && have.realm) + setValue(&needp[n], realm); + } + } + + bool missingAny() const + { + if((need.user && !have.user) /*|| (need.authzid && !have.authzid)*/ || (need.pass && !have.pass) /*|| (need.realm && !have.realm)*/) + return true; + return false; + } + + SParams missing() const + { + SParams np = need; + if(have.user) + np.user = false; + if(have.authzid) + np.authzid = false; + if(have.pass) + np.pass = false; + if(have.realm) + np.realm = false; + return np; + } + + void setValue(sasl_interact_t *i, const QString &s) + { + if(i->result) + return; + QByteArray cs = s.toUtf8(); + int len = cs.length(); + char *p = new char[len+1]; + memcpy(p, cs.data(), len); + p[len] = 0; + i->result = p; + i->len = len; + + // record this + results.append(p); + } + + QList results; + SParams need; + SParams have; + QString user, authzid, pass, realm; +}; + +static QByteArray makeByteArray(const void *in, unsigned int len) +{ + QByteArray buf(len, 0); + memcpy(buf.data(), in, len); + return buf; +} + +static QString addrString(const SASLContext::HostPort &hp) +{ + return (hp.addr + ';' + QString::number(hp.port)); +} + +//---------------------------------------------------------------------------- +// saslContext +//---------------------------------------------------------------------------- + +class saslContext : public SASLContext +{ + saslProvider *g; + + // core props + QString service, host; + QString localAddr, remoteAddr; + + // security props + int secflags; + int ssf_min, ssf_max; + QString ext_authid; + int ext_ssf; + + sasl_conn_t *con; + sasl_interact_t *need; + int maxoutbuf; + sasl_callback_t *callbacks; + + // state + bool servermode; + int step; + bool in_sendFirst; + QByteArray in_buf; + QString in_mech; + bool in_useClientInit; + QByteArray in_clientInit; + QString out_mech; + // bool out_useClientInit; + // QByteArray out_clientInit; + QByteArray out_buf; + + SASLParams params; + QString sc_username, sc_authzid; + bool ca_flag, ca_done, ca_skip; + int last_r; + + int result_ssf; + Result result_result; + bool result_haveClientInit; + QStringList result_mechlist; + SASL::AuthCondition result_authCondition; + QByteArray result_to_net; + QByteArray result_plain; + int result_encoded; + +private: + void resetState() + { + if(con) { + sasl_dispose(&con); + con = 0; + } + need = 0; + if(callbacks) { + delete callbacks; + callbacks = 0; + } + + localAddr = ""; + remoteAddr = ""; + maxoutbuf = 128; + sc_username = ""; + sc_authzid = ""; + + result_authCondition = SASL::AuthFail; + result_haveClientInit = false; + result_mechlist.clear(); + result_plain.clear(); + result_plain.clear(); + result_plain.clear(); + result_ssf = 0; + } + + void resetParams() + { + params.reset(); + secflags = 0; + ssf_min = 0; + ssf_max = 0; + ext_authid = ""; + ext_ssf = 0; + } + + bool setsecprops() + { + sasl_security_properties_t secprops; + secprops.min_ssf = ssf_min; + secprops.max_ssf = ssf_max; + secprops.maxbufsize = SASL_BUFSIZE; + secprops.property_names = NULL; + secprops.property_values = NULL; + secprops.security_flags = secflags; + int r = sasl_setprop(con, SASL_SEC_PROPS, &secprops); + if(r != SASL_OK) + return false; + + if(!ext_authid.isEmpty()) { + const char *authid = ext_authid.toLatin1().data(); + sasl_ssf_t ssf = ext_ssf; + r = sasl_setprop(con, SASL_SSF_EXTERNAL, &ssf); + if(r != SASL_OK) + return false; + r = sasl_setprop(con, SASL_AUTH_EXTERNAL, &authid); + if(r != SASL_OK) + return false; + } + + return true; + } + + void setAuthCondition(int r) + { + //qDebug() << "authcondition: " << r; + SASL::AuthCondition x; + switch(r) { + // common + case SASL_NOMECH: x = SASL::NoMechanism; break; + case SASL_BADPROT: x = SASL::BadProtocol; break; + + // client + case SASL_BADSERV: x = SASL::BadServer; break; + + // server + case SASL_BADAUTH: x = SASL::BadAuth; break; + case SASL_NOAUTHZ: x = SASL::NoAuthzid; break; + case SASL_TOOWEAK: x = SASL::TooWeak; break; + case SASL_ENCRYPT: x = SASL::NeedEncrypt; break; + case SASL_EXPIRED: x = SASL::Expired; break; + case SASL_DISABLED: x = SASL::Disabled; break; + case SASL_NOUSER: x = SASL::NoUser; break; + case SASL_UNAVAIL: x = SASL::RemoteUnavailable; break; + + default: x = SASL::AuthFail; break; + } + result_authCondition = x; + } + + void getssfparams() + { + const void *maybe_sff; + if( SASL_OK == sasl_getprop( con, SASL_SSF, &maybe_sff ) ) + result_ssf = *(const int*)maybe_sff; + + const void *maybe_maxoutbuf; + if (SASL_OK == sasl_getprop( con, SASL_MAXOUTBUF, &maybe_maxoutbuf ) ) + maxoutbuf = *(const int*)maybe_maxoutbuf; + } + + static int scb_checkauth(sasl_conn_t *, void *context, const char *requested_user, unsigned, const char *auth_identity, unsigned, const char *, unsigned, struct propctx *) + { + saslContext *that = (saslContext *)context; + that->sc_username = auth_identity; // yeah yeah, it looks + that->sc_authzid = requested_user; // backwards, but it is right + that->ca_flag = true; + return SASL_OK; + } + + void clientTryAgain() + { + result_haveClientInit = false; + + if(step == 0) { + const char *clientout, *m; + unsigned int clientoutlen; + + need = 0; + QString list = result_mechlist.join(" "); + int r; + while(1) { + if(need) + params.extractHave(need); + if(in_sendFirst) + r = sasl_client_start(con, list.toLatin1().data(), &need, &clientout, &clientoutlen, &m); + else + r = sasl_client_start(con, list.toLatin1().data(), &need, NULL, NULL, &m); + if(r != SASL_INTERACT) + break; + + params.applyInteract(need); + if(params.missingAny()) { + out_mech = m; + result_result = Params; + return; + } + } + if(r != SASL_OK && r != SASL_CONTINUE) { + setAuthCondition(r); + result_result = Error; + return; + } + + out_mech = m; + if(in_sendFirst && clientout) { + out_buf = makeByteArray(clientout, clientoutlen); + result_haveClientInit = true; + } + + ++step; + + if(r == SASL_OK) { + getssfparams(); + result_result = Success; + return; + } + result_result = Continue; + return; + } + else { + const char *clientout; + unsigned int clientoutlen; + int r; + while(1) { + if(need) + params.extractHave(need); + //printf("sasl_client_step(con, {%s}, %d, &need, &clientout, &clientoutlen);\n", in_buf.data(), in_buf.size()); + r = sasl_client_step(con, in_buf.data(), in_buf.size(), &need, &clientout, &clientoutlen); + //printf("returned: %d\n", r); + if(r != SASL_INTERACT) + break; + + params.applyInteract(need); + if(params.missingAny()) { + result_result = Params; + return; + } + } + if(r != SASL_OK && r != SASL_CONTINUE) { + setAuthCondition(r); + result_result = Error; + return; + } + out_buf = makeByteArray(clientout, clientoutlen); + if(r == SASL_OK) { + getssfparams(); + result_result = Success; + return; + } + result_result = Continue; + return; + } + } + + void serverTryAgain() + { + if(step == 0) { + if(!ca_skip) { + const char *clientin = 0; + unsigned int clientinlen = 0; + if(in_useClientInit) { + clientin = in_clientInit.data(); + clientinlen = in_clientInit.size(); + } + const char *serverout; + unsigned int serveroutlen; + ca_flag = false; + int r = sasl_server_start(con, in_mech.toLatin1().data(), clientin, clientinlen, &serverout, &serveroutlen); + if(r != SASL_OK && r != SASL_CONTINUE) { + setAuthCondition(r); + result_result = Error; + return; + } + out_buf = makeByteArray(serverout, serveroutlen); + last_r = r; + if(ca_flag && !ca_done) { + ca_done = true; + ca_skip = true; + result_result = AuthCheck; + return; + } + } + ca_skip = false; + ++step; + + if(last_r == SASL_OK) { + getssfparams(); + result_result = Success; + return; + } + result_result = Continue; + return; + } + else { + if(!ca_skip) { + const char *serverout; + unsigned int serveroutlen; + int r = sasl_server_step(con, in_buf.data(), in_buf.size(), &serverout, &serveroutlen); + if(r != SASL_OK && r != SASL_CONTINUE) { + setAuthCondition(r); + result_result = Error; + return; + } + if(r == SASL_OK) + out_buf.resize(0); + else + out_buf = makeByteArray(serverout, serveroutlen); + last_r = r; + if(ca_flag && !ca_done) { + ca_done = true; + ca_skip = true; + result_result = AuthCheck; + return; + } + } + ca_skip = false; + if(last_r == SASL_OK) { + getssfparams(); + result_result = Success; + return; + } + result_result = Continue; + return; + } + } + + bool sasl_endecode(const QByteArray &in, QByteArray *out, bool enc) + { + // no security + if(result_ssf == 0) { + *out = in; + return true; + } + + int at = 0; + out->resize(0); + while(1) { + int size = in.size() - at; + if(size == 0) + break; + if(size > maxoutbuf) + size = maxoutbuf; + const char *outbuf; + unsigned len; + int r; + if(enc) + r = sasl_encode(con, in.data() + at, size, &outbuf, &len); + else + r = sasl_decode(con, in.data() + at, size, &outbuf, &len); + if(r != SASL_OK) + return false; + int oldsize = out->size(); + out->resize(oldsize + len); + memcpy(out->data() + oldsize, outbuf, len); + at += size; + } + return true; + } + + void doResultsReady() + { + QMetaObject::invokeMethod(this, "resultsReady", Qt::QueuedConnection); + } + +public: + saslContext(saslProvider *_g) + : SASLContext(_g) + { + result_result = Success; + g = _g; + con = 0; + callbacks = 0; + + reset(); + } + + ~saslContext() + { + reset(); + } + + virtual Provider::Context *clone() const + { + return 0; + } + + virtual Result result() const + { + return result_result; + } + + virtual void reset() + { + resetState(); + resetParams(); + } + + virtual void setup(const QString &_service, const QString &_host, const HostPort *local, const HostPort *remote, const QString &ext_id, int _ext_ssf) + { + service = _service; + host = _host; + localAddr = local ? addrString(*local) : ""; + remoteAddr = remote ? addrString(*remote) : ""; + ext_authid = ext_id; + ext_ssf = _ext_ssf; + } + + virtual int ssf() const + { + return result_ssf; + } + + virtual void startClient(const QStringList &mechlist, bool allowClientSendFirst) + { + resetState(); + + in_sendFirst = allowClientSendFirst; + + if(!g->client_init) { + sasl_client_init(NULL); + g->client_init = true; + } + + callbacks = new sasl_callback_t[5]; + + callbacks[0].id = SASL_CB_GETREALM; + callbacks[0].proc = 0; + callbacks[0].context = 0; + + callbacks[1].id = SASL_CB_USER; + callbacks[1].proc = 0; + callbacks[1].context = 0; + + callbacks[2].id = SASL_CB_AUTHNAME; + callbacks[2].proc = 0; + callbacks[2].context = 0; + + callbacks[3].id = SASL_CB_PASS; + callbacks[3].proc = 0; + callbacks[3].context = 0; + + callbacks[4].id = SASL_CB_LIST_END; + callbacks[4].proc = 0; + callbacks[4].context = 0; + + result_result = Error; + + int r = sasl_client_new(service.toLatin1().data(), host.toLatin1().data(), localAddr.isEmpty() ? 0 : localAddr.toLatin1().data(), remoteAddr.isEmpty() ? 0 : remoteAddr.toLatin1().data(), callbacks, 0, &con); + if(r != SASL_OK) { + setAuthCondition(r); + doResultsReady(); + return; + } + + if(!setsecprops()) + { + doResultsReady(); + return; + } + + result_mechlist = mechlist; + servermode = false; + step = 0; + result_result = Success; + clientTryAgain(); + doResultsReady(); + return; + } + + // TODO: make use of disableServerSendLast + virtual void startServer(const QString &realm, bool disableServerSendLast) + { + Q_UNUSED(disableServerSendLast); + resetState(); + + g->appname = SASL_APP; + if(!g->server_init) { + sasl_server_init(NULL, QFile::encodeName(g->appname)); + g->server_init = true; + } + + callbacks = new sasl_callback_t[2]; + + callbacks[0].id = SASL_CB_PROXY_POLICY; + callbacks[0].proc = (int(*)())scb_checkauth; + callbacks[0].context = this; + + callbacks[1].id = SASL_CB_LIST_END; + callbacks[1].proc = 0; + callbacks[1].context = 0; + + result_result = Error; + + int r = sasl_server_new(service.toLatin1().data(), host.toLatin1().data(), !realm.isEmpty() ? realm.toLatin1().data() : 0, localAddr.isEmpty() ? 0 : localAddr.toLatin1().data(), remoteAddr.isEmpty() ? 0 : remoteAddr.toLatin1().data(), callbacks, 0, &con); + if(r != SASL_OK) { + setAuthCondition(r); + doResultsReady(); + return; + } + + if(!setsecprops()) + { + doResultsReady(); + return; + } + + const char *ml; + r = sasl_listmech(con, 0, 0, " ", 0, &ml, 0, 0); + if(r != SASL_OK) + return; + result_mechlist = QString::fromUtf8(ml).split(' '); + + servermode = true; + step = 0; + ca_done = false; + ca_skip = false; + result_result = Success; + doResultsReady(); + return; + } + + virtual void serverFirstStep(const QString &mech, const QByteArray *clientInit) + { + in_mech = mech; + if(clientInit) { + in_useClientInit = true; + in_clientInit = *clientInit; + } + else + in_useClientInit = false; + serverTryAgain(); + doResultsReady(); + } + + virtual SASL::Params clientParams() const + { + SASLParams::SParams sparams = params.missing(); + return SASL::Params(sparams.user, sparams.authzid, sparams.pass, sparams.realm); + } + + virtual void setClientParams(const QString *user, const QString *authzid, const SecureArray *pass, const QString *realm) + { + if(user) + params.setUsername(*user); + if(authzid) + params.setAuthzid(*authzid); + if(pass) + params.setPassword(*pass); + if(realm) + params.setRealm(*realm); + } + + virtual QString username() const + { + return sc_username; + } + + virtual QString authzid() const + { + return sc_authzid; + } + + virtual void nextStep(const QByteArray &from_net) + { + in_buf = from_net; + tryAgain(); + } + + virtual void tryAgain() + { + if(servermode) + serverTryAgain(); + else + clientTryAgain(); + doResultsReady(); + } + + virtual QString mech() const + { + if (servermode) + return in_mech; + else + return out_mech; + } + + virtual QStringList mechlist() const + { + return result_mechlist; + } + + virtual QStringList realmlist() const + { + // TODO + return QStringList(); + } + + virtual void setConstraints(SASL::AuthFlags f, int minSSF, int maxSSF) + { + int sf = 0; + if( !(f & SASL::AllowPlain) ) + sf |= SASL_SEC_NOPLAINTEXT; + // if( !(f & SASL::AllowActiveVulnerable) ) // TODO + // sf |= SASL_SEC_NOACTIVE; + // if( !(f & SASL::AllowDictVulnerable) ) // TODO + // sf |= SASL_SEC_NODICTIONARY; + if( !(f & SASL::AllowAnonymous) ) + sf |= SASL_SEC_NOANONYMOUS; + if( f & SASL::RequireForwardSecrecy ) + sf |= SASL_SEC_FORWARD_SECRECY; + if( f & SASL::RequirePassCredentials ) + sf |= SASL_SEC_PASS_CREDENTIALS; + if( f & SASL::RequireMutualAuth ) + sf |= SASL_SEC_MUTUAL_AUTH; + + secflags = sf; + ssf_min = minSSF; + ssf_max = maxSSF; + } + + virtual bool waitForResultsReady(int msecs) + { + // TODO: for now, all operations block anyway + Q_UNUSED(msecs); + return true; + } + + virtual void update(const QByteArray &from_net, const QByteArray &from_app) + { + bool ok = true; + if(!from_app.isEmpty()) + ok = sasl_endecode(from_app, &result_to_net, true); + if(ok && !from_net.isEmpty()) + ok = sasl_endecode(from_net, &result_plain, false); + result_result = ok ? Success : Error; + result_encoded = from_app.size(); + + //printf("update (from_net=%d, to_net=%d, from_app=%d, to_app=%d)\n", from_net.size(), result_to_net.size(), from_app.size(), result_plain.size()); + + doResultsReady(); + } + + virtual bool haveClientInit() const + { + return result_haveClientInit; + } + + virtual QByteArray stepData() const + { + return out_buf; + } + + virtual QByteArray to_net() + { + QByteArray a = result_to_net; + result_to_net.clear(); + return a; + } + + virtual int encoded() const + { + return result_encoded; + } + + virtual QByteArray to_app() + { + QByteArray a = result_plain; + result_plain.clear(); + return a; + } + + virtual SASL::AuthCondition authCondition() const + { + return result_authCondition; + } +}; + +//---------------------------------------------------------------------------- +// saslProvider +//---------------------------------------------------------------------------- +saslProvider::saslProvider() +{ + client_init = false; + server_init = false; +} + +void saslProvider::init() +{ +} + +saslProvider::~saslProvider() +{ + if(client_init || server_init) + sasl_done(); +} + +int saslProvider::qcaVersion() const +{ + return QCA_VERSION; +} + +QString saslProvider::name() const +{ + return "qca-cyrus-sasl"; +} + +QString saslProvider::credit() const +{ + return QString(); // TODO +} + +QStringList saslProvider::features() const +{ + QStringList list; + list += "sasl"; + + return list; +} + +Provider::Context *saslProvider::createContext(const QString &type) +{ + if ( type == "sasl" ) + return new saslContext( this ); + + return 0; +} + +} // namespace saslQCAPlugin + +using namespace saslQCAPlugin; + +//---------------------------------------------------------------------------- +// saslPlugin +//---------------------------------------------------------------------------- + +class saslPlugin : public QObject, public QCAPlugin +{ + Q_OBJECT +#if QT_VERSION >= 0x050000 + Q_PLUGIN_METADATA(IID "com.affinix.qca.Plugin/1.0") +#endif + Q_INTERFACES(QCAPlugin) +public: + virtual Provider *createProvider() { return new saslProvider; } +}; + +#include "qca-cyrus-sasl.moc" + +#if QT_VERSION < 0x050000 +Q_EXPORT_PLUGIN2(qca_cyrus_sasl, saslPlugin) +#endif diff -Nru qca2-2.0.3/plugins/qca-cyrus-sasl/README qca2-2.1.0/plugins/qca-cyrus-sasl/README --- qca2-2.0.3/plugins/qca-cyrus-sasl/README 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-cyrus-sasl/README 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,29 @@ +QCA Cyrus SASL plugin version 2.0.0 +----------------------------------- +Date: October 11th, 2007 +Website: http://delta.affinix.com/qca/ +Mailing List: Delta Project + +Author: Justin Karneges + +This plugin provides features based on Cyrus SASL version 2. + +Requirements: + Cyrus SASL 2.x (libsasl2) + +Installing +---------- + +For Unix/Linux/Mac: + + ./configure + make + make install + +For Windows: + + configwin rd + qmake + nmake (or make) + copy lib\*.dll qtdir\plugins\crypto + diff -Nru qca2-2.0.3/plugins/qca-gcrypt/CMakeLists.txt qca2-2.1.0/plugins/qca-gcrypt/CMakeLists.txt --- qca2-2.0.3/plugins/qca-gcrypt/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gcrypt/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,45 @@ +if(WITH_gcrypt_PLUGIN STREQUAL "yes") + find_package(LibGcrypt REQUIRED) +else(WITH_gcrypt_PLUGIN STREQUAL "yes") + find_package(LibGcrypt) +endif(WITH_gcrypt_PLUGIN STREQUAL "yes") + +if(LIBGCRYPT_FOUND) + include(CheckTypeSize) + + set(remember_includes ${CMAKE_EXTRA_INCLUDE_FILES}) + set(remember_defines ${CMAKE_REQUIRED_FLAGS}) + set(CMAKE_EXTRA_INCLUDE_FILES gcrypt.h) + set(CMAKE_REQUIRED_FLAGS ${LIBGCRYPT_CFLAGS}) + check_type_size(gcry_error_t GCRY_ERROR_T) + set(CMAKE_REQUIRED_FLAGS ${remember_defines}) + set(CMAKE_EXTRA_INCLUDE_FILES ${remember_includes}) + if(HAVE_GCRY_ERROR_T) + enable_plugin("gcrypt") + + set(QCA_GCRYPT_SOURCES qca-gcrypt.cpp) + add_definitions(${LIBGCRYPT_CFLAGS}) + my_automoc(QCA_GCRYPT_SOURCES) + add_library(qca-gcrypt ${PLUGIN_TYPE} ${QCA_GCRYPT_SOURCES}) + + if(APPLE AND ${PLUGIN_TYPE} STREQUAL "MODULE") + set_property(TARGET qca-gcrypt PROPERTY SUFFIX ".dylib") + endif() + + target_link_libraries(qca-gcrypt ${QT_QTCORE_LIBRARY} ${QCA_LIB_NAME} ${LIBGCRYPT_LIBRARIES}) + + if(NOT DEVELOPER_MODE) + install(TARGETS qca-gcrypt + LIBRARY DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + ARCHIVE DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + RUNTIME DESTINATION "${QCA_CRYPTO_INSTALL_DIR}") + + install_pdb(qca-gcrypt ${QCA_CRYPTO_INSTALL_DIR}) + endif() + else(HAVE_GCRY_ERROR_T) + message(STATUS "libgcrypt seems to be too old") + disable_plugin("gcrypt") + endif(HAVE_GCRY_ERROR_T) +else(LIBGCRYPT_FOUND) + disable_plugin("gcrypt") +endif(LIBGCRYPT_FOUND) diff -Nru qca2-2.0.3/plugins/qca-gcrypt/COPYING qca2-2.1.0/plugins/qca-gcrypt/COPYING --- qca2-2.0.3/plugins/qca-gcrypt/COPYING 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gcrypt/COPYING 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff -Nru qca2-2.0.3/plugins/qca-gcrypt/pkcs5.c qca2-2.1.0/plugins/qca-gcrypt/pkcs5.c --- qca2-2.0.3/plugins/qca-gcrypt/pkcs5.c 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gcrypt/pkcs5.c 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,197 @@ +/* pkcs5.c Partial Password-Based Cryptography (PKCS#5) implementation + * Copyright (C) 2002 Free Software Foundation, Inc. + * + * This file 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 file 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 file; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include "gcrypt.h" + +/* + * 5.2 PBKDF2 + * + * PBKDF2 applies a pseudorandom function (see Appendix B.1 for an + * example) to derive keys. The length of the derived key is essentially + * unbounded. (However, the maximum effective search space for the + * derived key may be limited by the structure of the underlying + * pseudorandom function. See Appendix B.1 for further discussion.) + * PBKDF2 is recommended for new applications. + * + * PBKDF2 (P, S, c, dkLen) + * + * Options: PRF underlying pseudorandom function (hLen + * denotes the length in octets of the + * pseudorandom function output) + * + * Input: P password, an octet string + * S salt, an octet string + * c iteration count, a positive integer + * dkLen intended length in octets of the derived + * key, a positive integer, at most + * (2^32 - 1) * hLen + * + * Output: DK derived key, a dkLen-octet string + */ + +gcry_error_t +gcry_pbkdf2 (int PRF, const char *P, size_t Plen, const char *S, + size_t Slen, unsigned int c, unsigned int dkLen, char *DK) +{ + gcry_md_hd_t prf; + gcry_error_t rc; + char *U; + unsigned int u; + unsigned int hLen; + unsigned int l; + unsigned int r; + unsigned char *p; + unsigned int i; + unsigned int k; + + hLen = gcry_md_get_algo_dlen (PRF); + if (hLen == 0) + return GPG_ERR_UNSUPPORTED_ALGORITHM; + + if (c == 0) + return GPG_ERR_INV_ARG; + + if (dkLen == 0) + return GPG_ERR_TOO_SHORT; + + /* + * + * Steps: + * + * 1. If dkLen > (2^32 - 1) * hLen, output "derived key too long" and + * stop. + */ + + if (dkLen > 4294967295U) + return GPG_ERR_TOO_LARGE; + + /* + * 2. Let l be the number of hLen-octet blocks in the derived key, + * rounding up, and let r be the number of octets in the last + * block: + * + * l = CEIL (dkLen / hLen) , + * r = dkLen - (l - 1) * hLen . + * + * Here, CEIL (x) is the "ceiling" function, i.e. the smallest + * integer greater than, or equal to, x. + */ + + l = dkLen / hLen; + if (dkLen % hLen) + l++; + r = dkLen - (l - 1) * hLen; + + /* + * 3. For each block of the derived key apply the function F defined + * below to the password P, the salt S, the iteration count c, and + * the block index to compute the block: + * + * T_1 = F (P, S, c, 1) , + * T_2 = F (P, S, c, 2) , + * ... + * T_l = F (P, S, c, l) , + * + * where the function F is defined as the exclusive-or sum of the + * first c iterates of the underlying pseudorandom function PRF + * applied to the password P and the concatenation of the salt S + * and the block index i: + * + * F (P, S, c, i) = U_1 \xor U_2 \xor ... \xor U_c + * + * where + * + * U_1 = PRF (P, S || INT (i)) , + * U_2 = PRF (P, U_1) , + * ... + * U_c = PRF (P, U_{c-1}) . + * + * Here, INT (i) is a four-octet encoding of the integer i, most + * significant octet first. + * + * 4. Concatenate the blocks and extract the first dkLen octets to + * produce a derived key DK: + * + * DK = T_1 || T_2 || ... || T_l<0..r-1> + * + * 5. Output the derived key DK. + * + * Note. The construction of the function F follows a "belt-and- + * suspenders" approach. The iterates U_i are computed recursively to + * remove a degree of parallelism from an opponent; they are exclusive- + * ored together to reduce concerns about the recursion degenerating + * into a small set of values. + * + */ + rc = gcry_md_open (&prf, PRF, GCRY_MD_FLAG_HMAC | GCRY_MD_FLAG_SECURE); + if (rc != GPG_ERR_NO_ERROR) + return rc; + + U = (char*)gcry_malloc(hLen); + if (!U) + { + rc = GPG_ERR_ENOMEM; + goto done; + } + + for (i = 1; i <= l; i++) + { + memset(DK + (i - 1) * hLen, 0, i == l ? r : hLen); + + for (u = 1; u <= c; u++) + { + gcry_md_reset (prf); + + rc = gcry_md_setkey (prf, P, Plen); + if (rc != GPG_ERR_NO_ERROR) { + goto done; + } + if (u == 1) + { + char tmp[4]; + gcry_md_write (prf, S, Slen); + tmp[0] = (i & 0xff000000) >> 24; + tmp[1] = (i & 0x00ff0000) >> 16; + tmp[2] = (i & 0x0000ff00) >> 8; + tmp[3] = (i & 0x000000ff) >> 0; + gcry_md_write (prf, tmp, 4); + } + else + gcry_md_write (prf, U, hLen); + + p = gcry_md_read (prf, PRF); + if (p == NULL) + { + rc = GPG_ERR_CONFIGURATION; + goto done; + } + + memcpy (U, p, hLen); + for (k = 0; k < (i == l ? r : hLen); k++) + DK[(i - 1) * hLen + k] ^= U[k]; + } + } + + rc = GPG_ERR_NO_ERROR; + done: + gcry_md_close (prf); + gcry_free(U); + return rc; +} + diff -Nru qca2-2.0.3/plugins/qca-gcrypt/qca-gcrypt.cpp qca2-2.1.0/plugins/qca-gcrypt/qca-gcrypt.cpp --- qca2-2.0.3/plugins/qca-gcrypt/qca-gcrypt.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gcrypt/qca-gcrypt.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,691 @@ +/* + * Copyright (C) 2004 Justin Karneges + * Copyright (C) 2004-2006 Brad Hards + * + * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ +#include + +#include + +#include + +#include +#include +#include + +namespace gcryptQCAPlugin { + +#include "pkcs5.c" + +void check_error( const QString &label, gcry_error_t err ) +{ + // we ignore the case where it is not an error, and + // we also don't flag weak keys. + if ( ( GPG_ERR_NO_ERROR != err ) && ( GPG_ERR_WEAK_KEY != gpg_err_code(err) ) ) { + std::cout << "Failure (" << qPrintable(label) << "): "; + std::cout << gcry_strsource(err) << "/"; + std::cout << gcry_strerror(err) << std::endl; + } +} + +class gcryHashContext : public QCA::HashContext +{ +public: + gcryHashContext(int hashAlgorithm, QCA::Provider *p, const QString &type) : QCA::HashContext(p, type) + { + m_hashAlgorithm = hashAlgorithm; + err = gcry_md_open( &context, m_hashAlgorithm, 0 ); + if ( GPG_ERR_NO_ERROR != err ) { + std::cout << "Failure: " ; + std::cout << gcry_strsource(err) << "/"; + std::cout << gcry_strerror(err) << std::endl; + } + } + + ~gcryHashContext() + { + gcry_md_close( context ); + } + + Context *clone() const + { + return new gcryHashContext(*this); + } + + void clear() + { + gcry_md_reset( context ); + } + + void update(const QCA::MemoryRegion &a) + { + gcry_md_write( context, a.data(), a.size() ); + } + + QCA::MemoryRegion final() + { + unsigned char *md; + QCA::SecureArray a( gcry_md_get_algo_dlen( m_hashAlgorithm ) ); + md = gcry_md_read( context, m_hashAlgorithm ); + memcpy( a.data(), md, a.size() ); + return a; + } + +protected: + gcry_md_hd_t context; + gcry_error_t err; + int m_hashAlgorithm; +}; + +class gcryHMACContext : public QCA::MACContext +{ +public: + gcryHMACContext(int hashAlgorithm, QCA::Provider *p, const QString &type) : QCA::MACContext(p, type) + { + m_hashAlgorithm = hashAlgorithm; + err = gcry_md_open( &context, m_hashAlgorithm, GCRY_MD_FLAG_HMAC ); + if ( GPG_ERR_NO_ERROR != err ) { + std::cout << "Failure: " ; + std::cout << gcry_strsource(err) << "/"; + std::cout << gcry_strerror(err) << std::endl; + } + } + + ~gcryHMACContext() + { + gcry_md_close( context ); + } + + void setup(const QCA::SymmetricKey &key) + { + gcry_md_setkey( context, key.data(), key.size() ); + } + + Context *clone() const + { + return new gcryHMACContext(*this); + } + + void clear() + { + gcry_md_reset( context ); + } + + QCA::KeyLength keyLength() const + { + return anyKeyLength(); + } + + void update(const QCA::MemoryRegion &a) + { + gcry_md_write( context, a.data(), a.size() ); + } + + void final( QCA::MemoryRegion *out) + { + QCA::SecureArray sa( gcry_md_get_algo_dlen( m_hashAlgorithm ), 0 ); + unsigned char *md; + md = gcry_md_read( context, m_hashAlgorithm ); + memcpy( sa.data(), md, sa.size() ); + *out = sa; + } + +protected: + gcry_md_hd_t context; + gcry_error_t err; + int m_hashAlgorithm; +}; + + +class gcryCipherContext : public QCA::CipherContext +{ +public: + gcryCipherContext(int algorithm, int mode, bool pad, QCA::Provider *p, const QString &type) : QCA::CipherContext(p, type) + { + m_cryptoAlgorithm = algorithm; + m_mode = mode; + m_pad = pad; + } + + void setup(QCA::Direction dir, + const QCA::SymmetricKey &key, + const QCA::InitializationVector &iv) + { + m_direction = dir; + err = gcry_cipher_open( &context, m_cryptoAlgorithm, m_mode, 0 ); + check_error( "gcry_cipher_open", err ); + if ( ( GCRY_CIPHER_3DES == m_cryptoAlgorithm ) && (key.size() == 16) ) { + // this is triple DES with two keys, and gcrypt wants three + QCA::SymmetricKey keyCopy(key); + QCA::SecureArray thirdKey(key); + thirdKey.resize(8); + keyCopy += thirdKey; + err = gcry_cipher_setkey( context, keyCopy.data(), keyCopy.size() ); + } else { + err = gcry_cipher_setkey( context, key.data(), key.size() ); + } + check_error( "gcry_cipher_setkey", err ); + err = gcry_cipher_setiv( context, iv.data(), iv.size() ); + check_error( "gcry_cipher_setiv", err ); + } + + Context *clone() const + { + return new gcryCipherContext( *this ); + } + + int blockSize() const + { + unsigned int blockSize; + gcry_cipher_algo_info( m_cryptoAlgorithm, GCRYCTL_GET_BLKLEN, 0, (size_t*)&blockSize ); + return blockSize; + } + + bool update(const QCA::SecureArray &in, QCA::SecureArray *out) + { + QCA::SecureArray result( in.size() ); + if (QCA::Encode == m_direction) { + err = gcry_cipher_encrypt( context, (unsigned char*)result.data(), result.size(), (unsigned char*)in.data(), in.size() ); + } else { + err = gcry_cipher_decrypt( context, (unsigned char*)result.data(), result.size(), (unsigned char*)in.data(), in.size() ); + } + check_error( "update cipher encrypt/decrypt", err ); + result.resize( in.size() ); + *out = result; + return true; + } + + bool final(QCA::SecureArray *out) + { + QCA::SecureArray result; + if (m_pad) { + result.resize( blockSize() ); + if (QCA::Encode == m_direction) { + err = gcry_cipher_encrypt( context, (unsigned char*)result.data(), result.size(), NULL, 0 ); + } else { + err = gcry_cipher_decrypt( context, (unsigned char*)result.data(), result.size(), NULL, 0 ); + } + check_error( "final cipher encrypt/decrypt", err ); + } else { + // just return null + } + *out = result; + return true; + } + + QCA::KeyLength keyLength() const + { + switch (m_cryptoAlgorithm) + { + case GCRY_CIPHER_DES: + return QCA::KeyLength( 8, 8, 1); + case GCRY_CIPHER_AES128: + return QCA::KeyLength( 16, 16, 1); + case GCRY_CIPHER_AES192: + return QCA::KeyLength( 24, 24, 1); + case GCRY_CIPHER_3DES: + // we do two and three key versions + return QCA::KeyLength( 16, 24, 8); + case GCRY_CIPHER_AES256: + return QCA::KeyLength( 32, 32, 1); + case GCRY_CIPHER_BLOWFISH: + // Don't know - TODO + return QCA::KeyLength( 1, 32, 1); + default: + return QCA::KeyLength( 0, 1, 1); + } + } + + +protected: + gcry_cipher_hd_t context; + gcry_error_t err; + int m_cryptoAlgorithm; + QCA::Direction m_direction; + int m_mode; + bool m_pad; +}; + + +class pbkdf1Context : public QCA::KDFContext +{ +public: + pbkdf1Context(int algorithm, QCA::Provider *p, const QString &type) : QCA::KDFContext(p, type) + { + m_hashAlgorithm = algorithm; + err = gcry_md_open( &context, m_hashAlgorithm, 0 ); + if ( GPG_ERR_NO_ERROR != err ) { + std::cout << "Failure: " ; + std::cout << gcry_strsource(err) << "/"; + std::cout << gcry_strerror(err) << std::endl; + } + } + + ~pbkdf1Context() + { + gcry_md_close( context ); + } + + Context *clone() const + { + return new pbkdf1Context( *this ); + } + + QCA::SymmetricKey makeKey(const QCA::SecureArray &secret, const QCA::InitializationVector &salt, + unsigned int keyLength, unsigned int iterationCount) + { + /* from RFC2898: + Steps: + + 1. If dkLen > 16 for MD2 and MD5, or dkLen > 20 for SHA-1, output + "derived key too long" and stop. + */ + if ( keyLength > gcry_md_get_algo_dlen(m_hashAlgorithm) ) { + std::cout << "derived key too long" << std::endl; + return QCA::SymmetricKey(); + } + + /* + 2. Apply the underlying hash function Hash for c iterations to the + concatenation of the password P and the salt S, then extract + the first dkLen octets to produce a derived key DK: + + T_1 = Hash (P || S) , + T_2 = Hash (T_1) , + ... + T_c = Hash (T_{c-1}) , + DK = Tc<0..dkLen-1> + */ + // calculate T_1 + gcry_md_write( context, secret.data(), secret.size() ); + gcry_md_write( context, salt.data(), salt.size() ); + unsigned char *md; + md = gcry_md_read( context, m_hashAlgorithm ); + QCA::SecureArray a( gcry_md_get_algo_dlen( m_hashAlgorithm ) ); + memcpy( a.data(), md, a.size() ); + + // calculate T_2 up to T_c + for ( unsigned int i = 2; i <= iterationCount; ++i ) { + gcry_md_reset( context ); + gcry_md_write( context, a.data(), a.size() ); + md = gcry_md_read( context, m_hashAlgorithm ); + memcpy( a.data(), md, a.size() ); + } + + // shrink a to become DK, of the required length + a.resize(keyLength); + + /* + 3. Output the derived key DK. + */ + return a; + } + + QCA::SymmetricKey makeKey(const QCA::SecureArray &secret, + const QCA::InitializationVector &salt, + unsigned int keyLength, + int msecInterval, + unsigned int *iterationCount) + { + Q_ASSERT(iterationCount != NULL); + QTime timer; + + /* + from RFC2898: + Steps: + + 1. If dkLen > 16 for MD2 and MD5, or dkLen > 20 for SHA-1, output + "derived key too long" and stop. + */ + if ( keyLength > gcry_md_get_algo_dlen(m_hashAlgorithm) ) { + std::cout << "derived key too long" << std::endl; + return QCA::SymmetricKey(); + } + + /* + 2. Apply the underlying hash function Hash for M milliseconds + to the concatenation of the password P and the salt S, incrementing c, + then extract the first dkLen octets to produce a derived key DK: + + time from 0 to M + T_1 = Hash (P || S) , + T_2 = Hash (T_1) , + ... + T_c = Hash (T_{c-1}) , + when time = 0: stop, + DK = Tc<0..dkLen-1> + */ + // calculate T_1 + gcry_md_write( context, secret.data(), secret.size() ); + gcry_md_write( context, salt.data(), salt.size() ); + unsigned char *md; + md = gcry_md_read( context, m_hashAlgorithm ); + QCA::SecureArray a( gcry_md_get_algo_dlen( m_hashAlgorithm ) ); + memcpy( a.data(), md, a.size() ); + + // calculate T_2 up to T_c + *iterationCount = 2 - 1; // <- Have to remove 1, unless it computes one + timer.start(); // ^ time more than the base function + // ^ with the same iterationCount + while (timer.elapsed() < msecInterval) { + gcry_md_reset( context ); + gcry_md_write( context, a.data(), a.size() ); + md = gcry_md_read( context, m_hashAlgorithm ); + memcpy( a.data(), md, a.size() ); + ++(*iterationCount); + } + + // shrink a to become DK, of the required length + a.resize(keyLength); + + /* + 3. Output the derived key DK. + */ + return a; + } + +protected: + gcry_md_hd_t context; + gcry_error_t err; + int m_hashAlgorithm; +}; + + +class pbkdf2Context : public QCA::KDFContext +{ +public: + pbkdf2Context(int algorithm, QCA::Provider *p, const QString &type) : QCA::KDFContext(p, type) + { + m_algorithm = algorithm; + } + + Context *clone() const + { + return new pbkdf2Context( *this ); + } + + QCA::SymmetricKey makeKey(const QCA::SecureArray &secret, const QCA::InitializationVector &salt, + unsigned int keyLength, unsigned int iterationCount) + { + QCA::SymmetricKey result(keyLength); + gcry_error_t retval = gcry_pbkdf2(m_algorithm, secret.data(), secret.size(), + salt.data(), salt.size(), + iterationCount, keyLength, result.data()); + if (retval == GPG_ERR_NO_ERROR) { + return result; + } else { + // std::cout << "got: " << retval << std::endl; + return QCA::SymmetricKey(); + } + } + + QCA::SymmetricKey makeKey(const QCA::SecureArray &secret, + const QCA::InitializationVector &salt, + unsigned int keyLength, + int msecInterval, + unsigned int *iterationCount) + { + Q_ASSERT(iterationCount != NULL); + QCA::SymmetricKey result(keyLength); + QTime timer; + + *iterationCount = 0; + timer.start(); + + while (timer.elapsed() < msecInterval) { + gcry_pbkdf2(m_algorithm, + secret.data(), + secret.size(), + salt.data(), + salt.size(), + 1, + keyLength, + result.data()); + ++(*iterationCount); + } + + return makeKey(secret, salt, keyLength, *iterationCount); + } + +protected: + int m_algorithm; +}; + +} + +extern "C" +{ + +static void * qca_func_malloc(size_t n) +{ + return qca_secure_alloc(n); +} + +static void * qca_func_secure_malloc(size_t n) +{ + return qca_secure_alloc(n); +} + +static void * qca_func_realloc(void *oldBlock, size_t newBlockSize) +{ + return qca_secure_realloc(oldBlock, newBlockSize); +} + +static void qca_func_free(void *mem) +{ + qca_secure_free(mem); +} + +int qca_func_secure_check (const void *) +{ + return (int)QCA::haveSecureMemory(); +} +} // extern "C" + +class gcryptProvider : public QCA::Provider +{ +public: + void init() + { + if (!gcry_control (GCRYCTL_ANY_INITIALIZATION_P)) + { /* No other library has already initialized libgcrypt. */ + + if (!gcry_check_version (GCRYPT_VERSION) ) + { + std::cout << "libgcrypt is too old (need " << GCRYPT_VERSION; + std::cout << ", have " << gcry_check_version(NULL) << ")" << std::endl; + } + gcry_set_allocation_handler (qca_func_malloc, + qca_func_secure_malloc, + qca_func_secure_check, + qca_func_realloc, + qca_func_free); + gcry_control (GCRYCTL_INITIALIZATION_FINISHED); + } + } + + int qcaVersion() const + { + return QCA_VERSION; + } + + QString name() const + { + return "qca-gcrypt"; + } + + QStringList features() const + { + QStringList list; + list += "sha1"; + list += "md4"; + list += "md5"; + list += "ripemd160"; +#ifdef GCRY_MD_SHA224 + list += "sha224"; +#endif + list += "sha256"; + list += "sha384"; + list += "sha512"; + list += "hmac(md5)"; + list += "hmac(sha1)"; +#ifdef GCRY_MD_SHA224 + list += "hmac(sha224)"; +#endif + list += "hmac(sha256)"; + if ( ! ( NULL == gcry_check_version("1.3.0") ) ) { + // 1.2 and earlier have broken implementation + list += "hmac(sha384)"; + list += "hmac(sha512)"; + } + list += "hmac(ripemd160)"; + list += "aes128-ecb"; + list += "aes128-cfb"; + list += "aes128-cbc"; + list += "aes192-ecb"; + list += "aes192-cfb"; + list += "aes192-cbc"; + list += "aes256-ecb"; + list += "aes256-cfb"; + list += "aes256-cbc"; + list += "blowfish-ecb"; + list += "blowfish-cbc"; + list += "blowfish-cfb"; + list += "tripledes-ecb"; + list += "des-ecb"; + list += "des-cbc"; + list += "des-cfb"; + if ( ! ( NULL == gcry_check_version("1.3.0") ) ) { + // 1.2 branch and earlier doesn't support OFB mode + list += "aes128-ofb"; + list += "aes192-ofb"; + list += "aes256-ofb"; + list += "des-ofb"; + list += "tripledes-ofb"; + list += "blowfish-ofb"; + } + list += "pbkdf1(sha1)"; + list += "pbkdf2(sha1)"; + return list; + } + + Context *createContext(const QString &type) + { + // std::cout << "type: " << qPrintable(type) << std::endl; + if ( type == "sha1" ) + return new gcryptQCAPlugin::gcryHashContext( GCRY_MD_SHA1, this, type ); + else if ( type == "md4" ) + return new gcryptQCAPlugin::gcryHashContext( GCRY_MD_MD4, this, type ); + else if ( type == "md5" ) + return new gcryptQCAPlugin::gcryHashContext( GCRY_MD_MD5, this, type ); + else if ( type == "ripemd160" ) + return new gcryptQCAPlugin::gcryHashContext( GCRY_MD_RMD160, this, type ); +#ifdef GCRY_MD_SHA224 + else if ( type == "sha224" ) + return new gcryptQCAPlugin::gcryHashContext( GCRY_MD_SHA224, this, type ); +#endif + else if ( type == "sha256" ) + return new gcryptQCAPlugin::gcryHashContext( GCRY_MD_SHA256, this, type ); + else if ( type == "sha384" ) + return new gcryptQCAPlugin::gcryHashContext( GCRY_MD_SHA384, this, type ); + else if ( type == "sha512" ) + return new gcryptQCAPlugin::gcryHashContext( GCRY_MD_SHA512, this, type ); + else if ( type == "hmac(md5)" ) + return new gcryptQCAPlugin::gcryHMACContext( GCRY_MD_MD5, this, type ); + else if ( type == "hmac(sha1)" ) + return new gcryptQCAPlugin::gcryHMACContext( GCRY_MD_SHA1, this, type ); +#ifdef GCRY_MD_SHA224 + else if ( type == "hmac(sha224)" ) + return new gcryptQCAPlugin::gcryHMACContext( GCRY_MD_SHA224, this, type ); +#endif + else if ( type == "hmac(sha256)" ) + return new gcryptQCAPlugin::gcryHMACContext( GCRY_MD_SHA256, this, type ); + else if ( type == "hmac(sha384)" ) + return new gcryptQCAPlugin::gcryHMACContext( GCRY_MD_SHA384, this, type ); + else if ( type == "hmac(sha512)" ) + return new gcryptQCAPlugin::gcryHMACContext( GCRY_MD_SHA512, this, type ); + else if ( type == "hmac(ripemd160)" ) + return new gcryptQCAPlugin::gcryHMACContext( GCRY_MD_RMD160, this, type ); + else if ( type == "aes128-ecb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_ECB, false, this, type ); + else if ( type == "aes128-cfb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CFB, false, this, type ); + else if ( type == "aes128-ofb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_OFB, false, this, type ); + else if ( type == "aes128-cbc" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CBC, false, this, type ); + else if ( type == "aes192-ecb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_AES192, GCRY_CIPHER_MODE_ECB, false, this, type ); + else if ( type == "aes192-cfb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_AES192, GCRY_CIPHER_MODE_CFB, false, this, type ); + else if ( type == "aes192-ofb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_AES192, GCRY_CIPHER_MODE_OFB, false, this, type ); + else if ( type == "aes192-cbc" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_AES192, GCRY_CIPHER_MODE_CBC, false, this, type ); + else if ( type == "aes256-ecb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_AES256, GCRY_CIPHER_MODE_ECB, false, this, type ); + else if ( type == "aes256-cfb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_AES256, GCRY_CIPHER_MODE_CFB, false, this, type ); + else if ( type == "aes256-ofb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_AES256, GCRY_CIPHER_MODE_OFB, false, this, type ); + else if ( type == "aes256-cbc" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_AES256, GCRY_CIPHER_MODE_CBC, false, this, type ); + else if ( type == "blowfish-ecb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_BLOWFISH, GCRY_CIPHER_MODE_ECB, false, this, type ); + else if ( type == "blowfish-cbc" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_BLOWFISH, GCRY_CIPHER_MODE_CBC, false, this, type ); + else if ( type == "blowfish-cfb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_BLOWFISH, GCRY_CIPHER_MODE_CFB, false, this, type ); + else if ( type == "blowfish-ofb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_BLOWFISH, GCRY_CIPHER_MODE_OFB, false, this, type ); + else if ( type == "tripledes-ecb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_ECB, false, this, type ); + else if ( type == "tripledes-ofb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_OFB, false, this, type ); + else if ( type == "des-ecb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_DES, GCRY_CIPHER_MODE_ECB, false, this, type ); + else if ( type == "des-cbc" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_DES, GCRY_CIPHER_MODE_CBC, false, this, type ); + else if ( type == "des-cfb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_DES, GCRY_CIPHER_MODE_CFB, false, this, type ); + else if ( type == "des-ofb" ) + return new gcryptQCAPlugin::gcryCipherContext( GCRY_CIPHER_DES, GCRY_CIPHER_MODE_OFB, false, this, type ); + else if ( type == "pbkdf1(sha1)" ) + return new gcryptQCAPlugin::pbkdf1Context( GCRY_MD_SHA1, this, type ); + else if ( type == "pbkdf2(sha1)" ) + return new gcryptQCAPlugin::pbkdf2Context( GCRY_MD_SHA1, this, type ); + else + return 0; + } +}; + +class gcryptPlugin : public QObject, public QCAPlugin +{ + Q_OBJECT +#if QT_VERSION >= 0x050000 + Q_PLUGIN_METADATA(IID "com.affinix.qca.Plugin/1.0") +#endif + Q_INTERFACES(QCAPlugin) + public: + virtual QCA::Provider *createProvider() { return new gcryptProvider; } +}; + +#include "qca-gcrypt.moc" + +#if QT_VERSION < 0x050000 +Q_EXPORT_PLUGIN2(qca_gcrypt, gcryptPlugin) +#endif diff -Nru qca2-2.0.3/plugins/qca-gcrypt/README qca2-2.1.0/plugins/qca-gcrypt/README --- qca2-2.0.3/plugins/qca-gcrypt/README 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gcrypt/README 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,17 @@ +QCA libgcrypt plugin +------------------ +Author: Brad Hards + +This plugin provides features based on libgcrypt. It implements: +* Hashing - SHA1, SHA256, SHA384, SHA512 +* Symmetric encryption - AES128 + + +Requirements: + libgcrypt 1.2.0 or later + +Installation procedure: + ./configure + make + su -c "make install" + diff -Nru qca2-2.0.3/plugins/qca-gcrypt/TODO qca2-2.1.0/plugins/qca-gcrypt/TODO --- qca2-2.0.3/plugins/qca-gcrypt/TODO 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gcrypt/TODO 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,8 @@ +Configuration: +* Add check for libgcrypt support for SHA224 + +Implementation: +* Cipher is incomplete - it can't handle cases where + data is not provided in blocksize chunks. Needs buffering + and padding to be added. + diff -Nru qca2-2.0.3/plugins/qca-gnupg/CMakeLists.txt qca2-2.1.0/plugins/qca-gnupg/CMakeLists.txt --- qca2-2.0.3/plugins/qca-gnupg/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,56 @@ +# QCA GnuPG + +enable_plugin("gnupg") + +set(QCA_GNUPG_MOC_SOURCES + qca-gnupg.cpp +) + +set(QCA_GNUPG_NONMOC_SOURCES + gpgop.cpp + utils.cpp + gpgproc/sprocess.cpp + mypgpkeycontext.cpp + mykeystoreentry.cpp + myopenpgpcontext.cpp + mykeystorelist.cpp + mymessagecontext.cpp + ringwatch.cpp + lineconverter.cpp + gpgaction.cpp + gpgproc/gpgproc.cpp +) + +my_automoc(QCA_GNUPG_MOC_SOURCES) + +qt4_wrap_cpp(EXTRA_GNUPG_SOURCES gpgop.h) +qt4_wrap_cpp(EXTRA_GNUPG_SOURCES gpgop_p.h) +qt4_wrap_cpp(EXTRA_GNUPG_SOURCES gpgproc/gpgproc.h) +qt4_wrap_cpp(EXTRA_GNUPG_SOURCES gpgproc/gpgproc_p.h) +qt4_wrap_cpp(EXTRA_GNUPG_SOURCES gpgproc/sprocess.h) +qt4_wrap_cpp(EXTRA_GNUPG_SOURCES ringwatch.h) +qt4_wrap_cpp(EXTRA_GNUPG_SOURCES mykeystorelist.h) +qt4_wrap_cpp(EXTRA_GNUPG_SOURCES mymessagecontext.h) +qt4_wrap_cpp(EXTRA_GNUPG_SOURCES gpgaction.h) + +add_library(qca-gnupg ${PLUGIN_TYPE} ${QCA_GNUPG_MOC_SOURCES} ${QCA_GNUPG_NONMOC_SOURCES} ${EXTRA_GNUPG_SOURCES}) + +if(APPLE AND ${PLUGIN_TYPE} STREQUAL "MODULE") + set_property(TARGET qca-gnupg PROPERTY SUFFIX ".dylib") +endif() + +include_directories(gpgproc) +target_link_libraries(qca-gnupg ${QT_QTCORE_LIBRARY} ${QCA_LIB_NAME}) + +if (WIN32) + target_link_libraries(qca-gnupg advapi32) +endif (WIN32) + +if(NOT DEVELOPER_MODE) + install(TARGETS qca-gnupg DESTINATION + LIBRARY DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + ARCHIVE DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + RUNTIME DESTINATION "${QCA_CRYPTO_INSTALL_DIR}") + + install_pdb(qca-gnupg ${QCA_CRYPTO_INSTALL_DIR}) +endif() diff -Nru qca2-2.0.3/plugins/qca-gnupg/COPYING qca2-2.1.0/plugins/qca-gnupg/COPYING --- qca2-2.0.3/plugins/qca-gnupg/COPYING 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/COPYING 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff -Nru qca2-2.0.3/plugins/qca-gnupg/gpgaction.cpp qca2-2.1.0/plugins/qca-gnupg/gpgaction.cpp --- qca2-2.0.3/plugins/qca-gnupg/gpgaction.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/gpgaction.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,924 @@ +/* + * Copyright (C) 2003-2005 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +// #define GPGOP_DEBUG + +#include "gpgaction.h" + +#ifdef GPGOP_DEBUG +#include "stdio.h" +#endif + +namespace gpgQCAPlugin { + +static QDateTime getTimestamp(const QString &s) +{ + if(s.isEmpty()) + return QDateTime(); + + if(s.contains('T')) + { + return QDateTime::fromString(s, Qt::ISODate); + } + else + { + QDateTime dt; + dt.setTime_t(s.toInt()); + return dt; + } +} + +static QByteArray getCString(const QByteArray &a) +{ + QByteArray out; + + // convert the "backslash" C-string syntax + for(int n = 0; n < a.size(); ++n) + { + if(a[n] == '\\' && n + 1 < a.size()) + { + ++n; + unsigned char c = (unsigned char)a[n]; + if(c == '\\') + { + out += '\\'; + } + else if(c == 'x' && n + 2 < a.size()) + { + ++n; + QByteArray hex = a.mid(n, 2); + ++n; // only skip one, loop will skip the next + + bool ok; + uint val = hex.toInt(&ok, 16); + if(ok) + { + out += (unsigned char)val; + } + else + { + out += "\\x"; + out += hex; + } + } + } + else + { + out += a[n]; + } + } + + return out; +} + +static bool stringToKeyList(const QString &outstr, GpgOp::KeyList *_keylist, QString *_keyring) +{ + GpgOp::KeyList keyList; + QStringList lines = outstr.split('\n'); + + if(lines.count() < 1) + return false; + + QStringList::ConstIterator it = lines.constBegin(); + + // first line is keyring file + QString keyring = *(it++); + + // if the second line isn't a divider, we are dealing + // with a new version of gnupg that doesn't give us + // the keyring file on gpg --list-keys --with-colons + if(it == lines.constEnd() || (*it).isEmpty() || (*it).at(0) != '-') + { + // first line wasn't the keyring name... + keyring.clear(); + // ...so read the first line again + it--; + } + else + { + // this was the divider line - skip it + it++; + } + + for(; it != lines.constEnd(); ++it) + { + QStringList f = (*it).split(':'); + if(f.count() < 1) + continue; + QString type = f[0]; + + bool key = false; // key or not + bool primary = false; // primary key or sub key + // bool sec = false; // private key or not + + if(type == "pub") + { + key = true; + primary = true; + } + else if(type == "sec") + { + key = true; + primary = true; + // sec = true; + } + else if(type == "sub") + { + key = true; + } + else if(type == "ssb") + { + key = true; + // sec = true; + } + + if(key) + { + if(primary) + { + keyList += GpgOp::Key(); + + QString trust = f[1]; + if(trust == "f" || trust == "u") + keyList.last().isTrusted = true; + } + + int key_type = f[3].toInt(); + QString caps = f[11]; + + GpgOp::KeyItem item; + item.bits = f[2].toInt(); + if(key_type == 1) + item.type = GpgOp::KeyItem::RSA; + else if(key_type == 16) + item.type = GpgOp::KeyItem::ElGamal; + else if(key_type == 17) + item.type = GpgOp::KeyItem::DSA; + else + item.type = GpgOp::KeyItem::Unknown; + item.id = f[4]; + item.creationDate = getTimestamp(f[5]); + item.expirationDate = getTimestamp(f[6]); + if(caps.contains('e')) + item.caps |= GpgOp::KeyItem::Encrypt; + if(caps.contains('s')) + item.caps |= GpgOp::KeyItem::Sign; + if(caps.contains('c')) + item.caps |= GpgOp::KeyItem::Certify; + if(caps.contains('a')) + item.caps |= GpgOp::KeyItem::Auth; + + keyList.last().keyItems += item; + } + else if(type == "uid") + { + QByteArray uid = getCString(f[9].toUtf8()); + keyList.last().userIds.append(QString::fromUtf8(uid)); + } + else if(type == "fpr") + { + QString s = f[9]; + keyList.last().keyItems.last().fingerprint = s; + } + } + + if(_keylist) + *_keylist = keyList; + if(_keyring) + *_keyring = keyring; + + return true; +} + +static bool findKeyringFilename(const QString &outstr, QString *_keyring) +{ + QStringList lines = outstr.split('\n'); + if(lines.count() < 1) + return false; + + *_keyring = lines[0]; + return true; +} + +GpgAction::GpgAction(QObject *parent) + : QObject(parent) + , proc(this) + , dtextTimer(this) +{ + dtextTimer.setSingleShot(true); + + connect(&proc, SIGNAL(error(gpgQCAPlugin::GPGProc::Error)), SLOT(proc_error(gpgQCAPlugin::GPGProc::Error))); + connect(&proc, SIGNAL(finished(int)), SLOT(proc_finished(int))); + connect(&proc, SIGNAL(readyReadStdout()), SLOT(proc_readyReadStdout())); + connect(&proc, SIGNAL(readyReadStderr()), SLOT(proc_readyReadStderr())); + connect(&proc, SIGNAL(readyReadStatusLines()), SLOT(proc_readyReadStatusLines())); + connect(&proc, SIGNAL(bytesWrittenStdin(int)), SLOT(proc_bytesWrittenStdin(int))); + connect(&proc, SIGNAL(bytesWrittenAux(int)), SLOT(proc_bytesWrittenAux(int))); + connect(&proc, SIGNAL(bytesWrittenCommand(int)), SLOT(proc_bytesWrittenCommand(int))); + connect(&proc, SIGNAL(debug(const QString &)), SLOT(proc_debug(const QString &))); + connect(&dtextTimer, SIGNAL(timeout()), SLOT(t_dtext())); + + reset(); +} + +GpgAction::~GpgAction() +{ + reset(); +} + +void GpgAction::reset() +{ + collectOutput = true; + allowInput = false; + readConv.setup(LineConverter::Read); + writeConv.setup(LineConverter::Write); + readText = false; + writeText = false; + useAux = false; + passphraseKeyId = QString(); + signing = false; + decryptGood = false; + signGood = false; + curError = GpgOp::ErrorUnknown; + badPassphrase = false; + need_submitPassphrase = false; + need_cardOkay = false; + diagnosticText = QString(); + dtextTimer.stop(); + + output = Output(); + + proc.reset(); +} + +void GpgAction::start() +{ + reset(); + + QStringList args; + bool extra = false; + + if(input.opt_ascii) + args += "--armor"; + + if(input.opt_noagent) + args += "--no-use-agent"; + + if(input.opt_alwaystrust) + args += "--always-trust"; + + if(!input.opt_pubfile.isEmpty() && !input.opt_secfile.isEmpty()) + { + args += "--no-default-keyring"; + args += "--keyring"; + args += input.opt_pubfile; + args += "--secret-keyring"; + args += input.opt_secfile; + } + + switch(input.op) + { + case GpgOp::Check: + { + args += "--version"; + readText = true; + break; + } + case GpgOp::SecretKeyringFile: + { + args += "--list-secret-keys"; + readText = true; + break; + } + case GpgOp::PublicKeyringFile: + { + args += "--list-public-keys"; + readText = true; + break; + } + case GpgOp::SecretKeys: + { + args += "--fixed-list-mode"; + args += "--with-colons"; + args += "--with-fingerprint"; + args += "--with-fingerprint"; + args += "--list-secret-keys"; + readText = true; + break; + } + case GpgOp::PublicKeys: + { + args += "--fixed-list-mode"; + args += "--with-colons"; + args += "--with-fingerprint"; + args += "--with-fingerprint"; + args += "--list-public-keys"; + readText = true; + break; + } + case GpgOp::Encrypt: + { + args += "--encrypt"; + + // recipients + for(QStringList::ConstIterator it = input.recip_ids.constBegin(); it != input.recip_ids.constEnd(); ++it) + { + args += "--recipient"; + args += QString("0x") + *it; + } + extra = true; + collectOutput = false; + allowInput = true; + if(input.opt_ascii) + readText = true; + break; + } + case GpgOp::Decrypt: + { + args += "--decrypt"; + extra = true; + collectOutput = false; + allowInput = true; + if(input.opt_ascii) + writeText = true; + break; + } + case GpgOp::Sign: + { + args += "--default-key"; + args += QString("0x") + input.signer_id; + args += "--sign"; + extra = true; + collectOutput = false; + allowInput = true; + if(input.opt_ascii) + readText = true; + signing = true; + break; + } + case GpgOp::SignAndEncrypt: + { + args += "--default-key"; + args += QString("0x") + input.signer_id; + args += "--sign"; + args += "--encrypt"; + + // recipients + for(QStringList::ConstIterator it = input.recip_ids.constBegin(); it != input.recip_ids.constEnd(); ++it) + { + args += "--recipient"; + args += QString("0x") + *it; + } + extra = true; + collectOutput = false; + allowInput = true; + if(input.opt_ascii) + readText = true; + signing = true; + break; + } + case GpgOp::SignClearsign: + { + args += "--default-key"; + args += QString("0x") + input.signer_id; + args += "--clearsign"; + extra = true; + collectOutput = false; + allowInput = true; + if(input.opt_ascii) + readText = true; + signing = true; + break; + } + case GpgOp::SignDetached: + { + args += "--default-key"; + args += QString("0x") + input.signer_id; + args += "--detach-sign"; + extra = true; + collectOutput = false; + allowInput = true; + if(input.opt_ascii) + readText = true; + signing = true; + break; + } + case GpgOp::Verify: + { + args += "--verify"; + args += "-"; //krazy:exclude=doublequote_chars + extra = true; + allowInput = true; + if(input.opt_ascii) + writeText = true; + break; + } + case GpgOp::VerifyDetached: + { + args += "--verify"; + args += "-"; //krazy:exclude=doublequote_chars + args += "-&?"; + extra = true; + allowInput = true; + useAux = true; + break; + } + case GpgOp::Import: + { + args += "--import"; + readText = true; + if(input.opt_ascii) + writeText = true; + break; + } + case GpgOp::Export: + { + args += "--export"; + args += QString("0x") + input.export_key_id; + collectOutput = false; + if(input.opt_ascii) + readText = true; + break; + } + case GpgOp::DeleteKey: + { + args += "--batch"; + args += "--delete-key"; + args += QString("0x") + input.delete_key_fingerprint; + break; + } + } + +#ifdef GPG_PROFILE + timer.start(); + printf("<< launch >>\n"); +#endif + proc.start(input.bin, args, extra ? GPGProc::ExtendedMode : GPGProc::NormalMode); + + // detached sig + if(input.op == GpgOp::VerifyDetached) + { + QByteArray a = input.sig; + if(input.opt_ascii) + { + LineConverter conv; + conv.setup(LineConverter::Write); + a = conv.process(a); + } + proc.writeStdin(a); + proc.closeStdin(); + } + + // import + if(input.op == GpgOp::Import) + { + QByteArray a = input.inkey; + if(writeText) + { + LineConverter conv; + conv.setup(LineConverter::Write); + a = conv.process(a); + } + proc.writeStdin(a); + proc.closeStdin(); + } +} + +#ifdef QPIPE_SECURE +void GpgAction::submitPassphrase(const QCA::SecureArray &a) +#else + void GpgAction::submitPassphrase(const QByteArray &a) +#endif +{ + if(!need_submitPassphrase) + return; + + need_submitPassphrase = false; + +#ifdef QPIPE_SECURE + QCA::SecureArray b; +#else + QByteArray b; +#endif + // filter out newlines, since that's the delimiter used + // to indicate a submitted passphrase + b.resize(a.size()); + int at = 0; + for(int n = 0; n < a.size(); ++n) + { + if(a[n] != '\n') + b[at++] = a[n]; + } + b.resize(at); + + // append newline + b.resize(b.size() + 1); + b[b.size() - 1] = '\n'; + proc.writeCommand(b); +} + +QByteArray GpgAction::read() +{ + if(collectOutput) + return QByteArray(); + + QByteArray a = proc.readStdout(); + if(readText) + a = readConv.update(a); + if(!proc.isActive()) + a += readConv.final(); + return a; +} + +void GpgAction::write(const QByteArray &in) +{ + if(!allowInput) + return; + + QByteArray a = in; + if(writeText) + a = writeConv.update(in); + + if(useAux) + proc.writeAux(a); + else + proc.writeStdin(a); +} + +void GpgAction::endWrite() +{ + if(!allowInput) + return; + + if(useAux) + proc.closeAux(); + else + proc.closeStdin(); +} + +void GpgAction::cardOkay() +{ + if(need_cardOkay) + { + need_cardOkay = false; + submitCommand("\n"); + } +} + +QString GpgAction::readDiagnosticText() +{ + QString s = diagnosticText; + diagnosticText = QString(); + return s; +} + +void GpgAction::submitCommand(const QByteArray &a) +{ + proc.writeCommand(a); +} + +// since str is taken as a value, it is ok to use the same variable for 'rest' +QString GpgAction::nextArg(QString str, QString *rest) +{ + QString out; + int n = str.indexOf(' '); + if(n == -1) + { + if(rest) + *rest = QString(); + return str; + } + else + { + if(rest) + *rest = str.mid(n + 1); + return str.mid(0, n); + } +} + +void GpgAction::processStatusLine(const QString &line) +{ + appendDiagnosticText("{" + line + "}"); + ensureDTextEmit(); + + if(!proc.isActive()) + return; + + QString s, rest; + s = nextArg(line, &rest); + + if(s == "NODATA") + { + // only set this if it'll make it better + if(curError == GpgOp::ErrorUnknown) + curError = GpgOp::ErrorFormat; + } + else if(s == "UNEXPECTED") + { + if(curError == GpgOp::ErrorUnknown) + curError = GpgOp::ErrorFormat; + } + else if(s == "EXPKEYSIG") + { + curError = GpgOp::ErrorSignerExpired; + } + else if(s == "REVKEYSIG") + { + curError = GpgOp::ErrorSignerRevoked; + } + else if(s == "EXPSIG") + { + curError = GpgOp::ErrorSignatureExpired; + } + else if(s == "INV_RECP") + { + int r = nextArg(rest).toInt(); + + if(curError == GpgOp::ErrorUnknown) + { + if(r == 10) + curError = GpgOp::ErrorEncryptUntrusted; + else if(r == 4) + curError = GpgOp::ErrorEncryptRevoked; + else if(r == 5) + curError = GpgOp::ErrorEncryptExpired; + else + // due to GnuPG bug #1650 + // + // encrypting to expired and revoked keys will + // not specify any reason for failing, + // defaulting to this + curError = GpgOp::ErrorEncryptInvalid; + } + } + else if(s == "NO_SECKEY") + { + output.encryptedToId = nextArg(rest); + + if(curError == GpgOp::ErrorUnknown) + curError = GpgOp::ErrorDecryptNoKey; + } + else if(s == "DECRYPTION_OKAY") + { + decryptGood = true; + + // message could be encrypted with several keys + if(curError == GpgOp::ErrorDecryptNoKey) + curError = GpgOp::ErrorUnknown; + } + else if(s == "SIG_CREATED") + { + signGood = true; + } + else if(s == "USERID_HINT") + { + passphraseKeyId = nextArg(rest); + } + else if(s == "GET_HIDDEN") + { + QString arg = nextArg(rest); + if(arg == "passphrase.enter" || arg == "passphrase.pin.ask") + { + need_submitPassphrase = true; + + // for signal-safety, emit later + QMetaObject::invokeMethod(this, "needPassphrase", Qt::QueuedConnection, Q_ARG(QString, passphraseKeyId)); + } + } + else if(s == "GET_LINE") + { + QString arg = nextArg(rest); + if(arg == "cardctrl.insert_card.okay") + { + need_cardOkay = true; + + QMetaObject::invokeMethod(this, "needCard", Qt::QueuedConnection); + } + } + else if(s == "GET_BOOL") + { + QString arg = nextArg(rest); + if(arg == "untrusted_key.override") + submitCommand("no\n"); + } + else if(s == "GOOD_PASSPHRASE") + { + badPassphrase = false; + } + else if(s == "BAD_PASSPHRASE") + { + badPassphrase = true; + } + else if(s == "GOODSIG") + { + output.wasSigned = true; + output.signerId = nextArg(rest); + output.verifyResult = GpgOp::VerifyGood; + } + else if(s == "BADSIG") + { + output.wasSigned = true; + output.signerId = nextArg(rest); + output.verifyResult = GpgOp::VerifyBad; + } + else if(s == "ERRSIG") + { + output.wasSigned = true; + QStringList list = rest.split(' ', QString::SkipEmptyParts); + output.signerId = list[0]; + output.timestamp = getTimestamp(list[4]); + output.verifyResult = GpgOp::VerifyNoKey; + } + else if(s == "VALIDSIG") + { + QStringList list = rest.split(' ', QString::SkipEmptyParts); + output.timestamp = getTimestamp(list[2]); + } +} + +void GpgAction::processResult(int code) +{ +#ifdef GPG_PROFILE + printf("<< launch: %d >>\n", timer.elapsed()); +#endif + + // put stdout and stderr into QStrings + + // FIXME: on Windows gpg returns --with-colons in + // utf-8 charset but for -k or -K it uses + // console output charset (which may will be differs + // then system charse). Will be wait a resolving of + // QTBUG-13303 https://bugreports.qt-project.org/browse/QTBUG-13303 + // After it need to make some changes. + QString outstr = QString::fromUtf8(buf_stdout); + QString errstr = QString::fromUtf8(buf_stderr); + + if(collectOutput) + appendDiagnosticText(QString("stdout: [%1]").arg(outstr)); + appendDiagnosticText(QString("stderr: [%1]").arg(errstr)); + ensureDTextEmit(); + + if(badPassphrase) + { + output.errorCode = GpgOp::ErrorPassphrase; + } + else if(curError != GpgOp::ErrorUnknown) + { + output.errorCode = curError; + } + else if(code == 0) + { + if(input.op == GpgOp::SecretKeyringFile || input.op == GpgOp::PublicKeyringFile) + { + if(findKeyringFilename(outstr, &output.keyringFile)) + output.success = true; + } + else if(input.op == GpgOp::SecretKeys || input.op == GpgOp::PublicKeys) + { + if(stringToKeyList(outstr, &output.keys, &output.keyringFile)) + output.success = true; + } + else + output.success = true; + } + else + { + // decrypt and sign success based on status only. + // this is mainly because gpg uses fatal return + // values if there is trouble with gpg-agent, even + // though the operation otherwise works. + + if(input.op == GpgOp::Decrypt && decryptGood) + output.success = true; + if(signing && signGood) + output.success = true; + + // gpg will indicate failure for bad sigs, but we don't + // consider this to be operation failure. + + bool signedMakesItGood = false; + if(input.op == GpgOp::Verify || input.op == GpgOp::VerifyDetached) + signedMakesItGood = true; + + if(signedMakesItGood && output.wasSigned) + output.success = true; + } + + emit finished(); +} + +void GpgAction::ensureDTextEmit() +{ + if(!dtextTimer.isActive()) + dtextTimer.start(); +} + +void GpgAction::t_dtext() +{ + emit readyReadDiagnosticText(); +} + +void GpgAction::proc_error(gpgQCAPlugin::GPGProc::Error e) +{ + QString str; + if(e == GPGProc::FailedToStart) + str = "FailedToStart"; + else if(e == GPGProc::UnexpectedExit) + str = "UnexpectedExit"; + else if(e == GPGProc::ErrorWrite) + str = "ErrorWrite"; + + appendDiagnosticText(QString("GPG Process Error: %1").arg(str)); + ensureDTextEmit(); + + output.errorCode = GpgOp::ErrorProcess; + emit finished(); +} + +void GpgAction::proc_finished(int exitCode) +{ + appendDiagnosticText(QString("GPG Process Finished: exitStatus=%1").arg(exitCode)); + ensureDTextEmit(); + + processResult(exitCode); +} + +void GpgAction::proc_readyReadStdout() +{ + if(collectOutput) + { + QByteArray a = proc.readStdout(); + if(readText) + a = readConv.update(a); + buf_stdout.append(a); + } + else + emit readyRead(); +} + +void GpgAction::proc_readyReadStderr() +{ + buf_stderr.append(proc.readStderr()); +} + +void GpgAction::proc_readyReadStatusLines() +{ + QStringList lines = proc.readStatusLines(); + for(int n = 0; n < lines.count(); ++n) + processStatusLine(lines[n]); +} + +void GpgAction::proc_bytesWrittenStdin(int bytes) +{ + if(!useAux) + { + int actual = writeConv.writtenToActual(bytes); + emit bytesWritten(actual); + } +} + +void GpgAction::proc_bytesWrittenAux(int bytes) +{ + if(useAux) + { + int actual = writeConv.writtenToActual(bytes); + emit bytesWritten(actual); + } +} + +void GpgAction::proc_bytesWrittenCommand(int) +{ + // don't care about this +} + +void GpgAction::proc_debug(const QString &str) +{ + appendDiagnosticText("GPGProc: " + str); + ensureDTextEmit(); +} + +void GpgAction::appendDiagnosticText(const QString &line) +{ +#ifdef GPGOP_DEBUG + printf("%s\n", qPrintable(line)); +#endif + diagnosticText += line; +} + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/gpgaction.h qca2-2.1.0/plugins/qca-gnupg/gpgaction.h --- qca2-2.0.3/plugins/qca-gnupg/gpgaction.h 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/gpgaction.h 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,141 @@ +/* + * Copyright (C) 2003-2005 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#pragma once + +#include "lineconverter.h" +#include "qca_safetimer.h" +#include "gpgop.h" +#include "gpgproc.h" +#include +#include +#include + +#ifdef GPG_PROFILE +#include +#endif + +namespace gpgQCAPlugin { + +class GpgAction : public QObject +{ + Q_OBJECT +public: + struct Input + { + QString bin; + GpgOp::Type op; + bool opt_ascii, opt_noagent, opt_alwaystrust; + QString opt_pubfile, opt_secfile; + QStringList recip_ids; + QString signer_id; + QByteArray sig; + QByteArray inkey; + QString export_key_id; + QString delete_key_fingerprint; + + Input() : opt_ascii(false), opt_noagent(false), opt_alwaystrust(false) {} + }; + + struct Output + { + bool success; + GpgOp::Error errorCode; + GpgOp::KeyList keys; + QString keyringFile; + QString encryptedToId; + bool wasSigned; + QString signerId; + QDateTime timestamp; + GpgOp::VerifyResult verifyResult; + + Output() : success(false), errorCode(GpgOp::ErrorUnknown), wasSigned(false) {} + }; + + Input input; + Output output; + + GpgAction(QObject *parent = 0); + ~GpgAction(); + void reset(); + void start(); +#ifdef QPIPE_SECURE + void submitPassphrase(const QCA::SecureArray &a); +#else + void submitPassphrase(const QByteArray &a); +#endif + +public slots: + QByteArray read(); + void write(const QByteArray &in); + void endWrite(); + void cardOkay(); + QString readDiagnosticText(); + +signals: + void readyRead(); + void bytesWritten(int bytes); + void finished(); + void needPassphrase(const QString &keyId); + void needCard(); + void readyReadDiagnosticText(); + +private: + void submitCommand(const QByteArray &a); + + // since str is taken as a value, it is ok to use the same variable for 'rest' + QString nextArg(QString str, QString *rest = 0); + void processStatusLine(const QString &line); + void processResult(int code); + void ensureDTextEmit(); + + GPGProc proc; + bool collectOutput, allowInput; + LineConverter readConv, writeConv; + bool readText, writeText; + QByteArray buf_stdout, buf_stderr; + bool useAux; + QString passphraseKeyId; + bool signing, decryptGood, signGood; + GpgOp::Error curError; + bool badPassphrase; + bool need_submitPassphrase, need_cardOkay; + QString diagnosticText; + QCA::SafeTimer dtextTimer; + +#ifdef GPG_PROFILE + QTime timer; +#endif + +private slots: + void t_dtext(); + void proc_error(gpgQCAPlugin::GPGProc::Error e); + void proc_finished(int exitCode); + void proc_readyReadStdout(); + void proc_readyReadStderr(); + void proc_readyReadStatusLines(); + void proc_bytesWrittenStdin(int bytes); + void proc_bytesWrittenAux(int bytes); + void proc_bytesWrittenCommand(int); + void proc_debug(const QString &str); + void appendDiagnosticText(const QString &line); +}; + + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/gpgop.cpp qca2-2.1.0/plugins/qca-gnupg/gpgop.cpp --- qca2-2.0.3/plugins/qca-gnupg/gpgop.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/gpgop.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,484 @@ +/* + * Copyright (C) 2003-2005 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include "gpgop_p.h" +#include "gpgop.h" +#include "gpgaction.h" + +namespace gpgQCAPlugin { + +//---------------------------------------------------------------------------- +// GpgOp +//---------------------------------------------------------------------------- +GpgOp::Private::Private(GpgOp *_q) + : QObject(_q) + , sync(_q) + , q(_q) + , act(0) + , waiting(false) +{ + reset(ResetAll); +} + +GpgOp::Private::~Private() +{ + reset(ResetAll); +} + +void GpgOp::Private::reset(ResetMode mode) +{ + if(act) + { + act->disconnect(this); + act->setParent(0); + act->deleteLater(); + + act = 0; + } + + if(mode >= ResetSessionAndData) + { + output = GpgAction::Output(); + result.clear(); + diagnosticText = QString(); + eventList.clear(); + } + + if(mode >= ResetAll) + { + opt_ascii = false; + opt_noagent = false; + opt_alwaystrust = false; + opt_pubfile = QString(); + opt_secfile = QString(); + } +} + +void GpgOp::Private::make_act(GpgOp::Type _op) +{ + reset(ResetSessionAndData); + + op = _op; + + act = new GpgAction(this); + + connect(act, SIGNAL(readyRead()), SLOT(act_readyRead())); + connect(act, SIGNAL(bytesWritten(int)), SLOT(act_bytesWritten(int))); + connect(act, SIGNAL(needPassphrase(const QString &)), SLOT(act_needPassphrase(const QString &))); + connect(act, SIGNAL(needCard()), SLOT(act_needCard())); + connect(act, SIGNAL(finished()), SLOT(act_finished())); + connect(act, SIGNAL(readyReadDiagnosticText()), SLOT(act_readyReadDiagnosticText())); + + act->input.bin = bin; + act->input.op = op; + act->input.opt_ascii = opt_ascii; + act->input.opt_noagent = opt_noagent; + act->input.opt_alwaystrust = opt_alwaystrust; + act->input.opt_pubfile = opt_pubfile; + act->input.opt_secfile = opt_secfile; +} + +void GpgOp::Private::eventReady(const GpgOp::Event &e) +{ + eventList += e; + sync.conditionMet(); +} + +void GpgOp::Private::eventReady(GpgOp::Event::Type type) +{ + GpgOp::Event e; + e.type = type; + eventReady(e); +} + +void GpgOp::Private::eventReady(GpgOp::Event::Type type, int written) +{ + GpgOp::Event e; + e.type = type; + e.written = written; + eventReady(e); +} + +void GpgOp::Private::eventReady(GpgOp::Event::Type type, const QString &keyId) +{ + GpgOp::Event e; + e.type = type; + e.keyId = keyId; + eventReady(e); +} + +void GpgOp::Private::act_readyRead() +{ + if(waiting) + eventReady(GpgOp::Event::ReadyRead); + else + emit q->readyRead(); +} + +void GpgOp::Private::act_bytesWritten(int bytes) +{ + if(waiting) + eventReady(GpgOp::Event::BytesWritten, bytes); + else + emit q->bytesWritten(bytes); +} + +void GpgOp::Private::act_needPassphrase(const QString &keyId) +{ + if(waiting) + eventReady(GpgOp::Event::NeedPassphrase, keyId); + else + emit q->needPassphrase(keyId); +} + +void GpgOp::Private::act_needCard() +{ + if(waiting) + eventReady(GpgOp::Event::NeedCard); + else + emit q->needCard(); +} + +void GpgOp::Private::act_readyReadDiagnosticText() +{ + QString s = act->readDiagnosticText(); + //printf("dtext ready: [%s]\n", qPrintable(s)); + diagnosticText += s; + + if(waiting) + eventReady(GpgOp::Event::ReadyReadDiagnosticText); + else + emit q->readyReadDiagnosticText(); +} + +void GpgOp::Private::act_finished() +{ +#ifdef GPG_PROFILE + if(op == GpgOp::Encrypt) + printf("<< doEncrypt: %d >>\n", timer.elapsed()); +#endif + + result = act->read(); + diagnosticText += act->readDiagnosticText(); + output = act->output; + + QMap errmap; + errmap[GpgOp::ErrorProcess] = "ErrorProcess"; + errmap[GpgOp::ErrorPassphrase] = "ErrorPassphrase"; + errmap[GpgOp::ErrorFormat] = "ErrorFormat"; + errmap[GpgOp::ErrorSignerExpired] = "ErrorSignerExpired"; + errmap[GpgOp::ErrorEncryptExpired] = "ErrorEncryptExpired"; + errmap[GpgOp::ErrorEncryptUntrusted] = "ErrorEncryptUntrusted"; + errmap[GpgOp::ErrorEncryptInvalid] = "ErrorEncryptInvalid"; + errmap[GpgOp::ErrorDecryptNoKey] = "ErrorDecryptNoKey"; + errmap[GpgOp::ErrorUnknown] = "ErrorUnknown"; + if(output.success) + diagnosticText += "GpgAction success\n"; + else + diagnosticText += QString("GpgAction error: %1\n").arg(errmap[output.errorCode]); + + if(output.wasSigned) + { + QString s; + if(output.verifyResult == GpgOp::VerifyGood) + s = "VerifyGood"; + else if(output.verifyResult == GpgOp::VerifyBad) + s = "VerifyBad"; + else + s = "VerifyNoKey"; + diagnosticText += QString("wasSigned: verifyResult: %1\n").arg(s); + } + + //printf("diagnosticText:\n%s", qPrintable(diagnosticText)); + + reset(ResetSession); + + if(waiting) + eventReady(GpgOp::Event::Finished); + else + emit q->finished(); +} + +GpgOp::GpgOp(const QString &bin, QObject *parent) + :QObject(parent) +{ + d = new Private(this); + d->bin = bin; +} + +GpgOp::~GpgOp() +{ + delete d; +} + +void GpgOp::reset() +{ + d->reset(ResetAll); +} + +bool GpgOp::isActive() const +{ + return (d->act ? true : false); +} + +GpgOp::Type GpgOp::op() const +{ + return d->op; +} + +void GpgOp::setAsciiFormat(bool b) +{ + d->opt_ascii = b; +} + +void GpgOp::setDisableAgent(bool b) +{ + d->opt_noagent = b; +} + +void GpgOp::setAlwaysTrust(bool b) +{ + d->opt_alwaystrust = b; +} + +void GpgOp::setKeyrings(const QString &pubfile, const QString &secfile) +{ + d->opt_pubfile = pubfile; + d->opt_secfile = secfile; +} + +void GpgOp::doCheck() +{ + d->make_act(Check); + d->act->start(); +} + +void GpgOp::doSecretKeyringFile() +{ + d->make_act(SecretKeyringFile); + d->act->start(); +} + +void GpgOp::doPublicKeyringFile() +{ + d->make_act(PublicKeyringFile); + d->act->start(); +} + +void GpgOp::doSecretKeys() +{ + d->make_act(SecretKeys); + d->act->start(); +} + +void GpgOp::doPublicKeys() +{ + d->make_act(PublicKeys); + d->act->start(); +} + +void GpgOp::doEncrypt(const QStringList &recip_ids) +{ +#ifdef GPG_PROFILE + d->timer.start(); + printf("<< doEncrypt >>\n"); +#endif + + d->make_act(Encrypt); + d->act->input.recip_ids = recip_ids; + d->act->start(); +} + +void GpgOp::doDecrypt() +{ + d->make_act(Decrypt); + d->act->start(); +} + +void GpgOp::doSign(const QString &signer_id) +{ + d->make_act(Sign); + d->act->input.signer_id = signer_id; + d->act->start(); +} + +void GpgOp::doSignAndEncrypt(const QString &signer_id, const QStringList &recip_ids) +{ + d->make_act(SignAndEncrypt); + d->act->input.signer_id = signer_id; + d->act->input.recip_ids = recip_ids; + d->act->start(); +} + +void GpgOp::doSignClearsign(const QString &signer_id) +{ + d->make_act(SignClearsign); + d->act->input.signer_id = signer_id; + d->act->start(); +} + +void GpgOp::doSignDetached(const QString &signer_id) +{ + d->make_act(SignDetached); + d->act->input.signer_id = signer_id; + d->act->start(); +} + +void GpgOp::doVerify() +{ + d->make_act(Verify); + d->act->start(); +} + +void GpgOp::doVerifyDetached(const QByteArray &sig) +{ + d->make_act(VerifyDetached); + d->act->input.sig = sig; + d->act->start(); +} + +void GpgOp::doImport(const QByteArray &in) +{ + d->make_act(Import); + d->act->input.inkey = in; + d->act->start(); +} + +void GpgOp::doExport(const QString &key_id) +{ + d->make_act(Export); + d->act->input.export_key_id = key_id; + d->act->start(); +} + +void GpgOp::doDeleteKey(const QString &key_fingerprint) +{ + d->make_act(DeleteKey); + d->act->input.delete_key_fingerprint = key_fingerprint; + d->act->start(); +} + +#ifdef QPIPE_SECURE +void GpgOp::submitPassphrase(const QCA::SecureArray &a) +#else +void GpgOp::submitPassphrase(const QByteArray &a) +#endif +{ + d->act->submitPassphrase(a); +} + +void GpgOp::cardOkay() +{ + d->act->cardOkay(); +} + +QByteArray GpgOp::read() +{ + if(d->act) + { + return d->act->read(); + } + else + { + QByteArray a = d->result; + d->result.clear(); + return a; + } +} + +void GpgOp::write(const QByteArray &in) +{ + d->act->write(in); +} + +void GpgOp::endWrite() +{ + d->act->endWrite(); +} + +QString GpgOp::readDiagnosticText() +{ + QString s = d->diagnosticText; + d->diagnosticText = QString(); + return s; +} + +GpgOp::Event GpgOp::waitForEvent(int msecs) +{ + if(!d->eventList.isEmpty()) + return d->eventList.takeFirst(); + + if(!d->act) + return GpgOp::Event(); + + d->waiting = true; + d->sync.waitForCondition(msecs); + d->waiting = false; + if(!d->eventList.isEmpty()) + return d->eventList.takeFirst(); + else + return GpgOp::Event(); +} + +bool GpgOp::success() const +{ + return d->output.success; +} + +GpgOp::Error GpgOp::errorCode() const +{ + return d->output.errorCode; +} + +GpgOp::KeyList GpgOp::keys() const +{ + return d->output.keys; +} + +QString GpgOp::keyringFile() const +{ + return d->output.keyringFile; +} + +QString GpgOp::encryptedToId() const +{ + return d->output.encryptedToId; +} + +bool GpgOp::wasSigned() const +{ + return d->output.wasSigned; +} + +QString GpgOp::signerId() const +{ + return d->output.signerId; +} + +QDateTime GpgOp::timestamp() const +{ + return d->output.timestamp; +} + +GpgOp::VerifyResult GpgOp::verifyResult() const +{ + return d->output.verifyResult; +} + +} diff -Nru qca2-2.0.3/plugins/qca-gnupg/gpgop.h qca2-2.1.0/plugins/qca-gnupg/gpgop.h --- qca2-2.0.3/plugins/qca-gnupg/gpgop.h 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/gpgop.h 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,211 @@ +/* + * Copyright (C) 2003-2005 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifndef GPGOP_H +#define GPGOP_H + +#include +#include "qpipe.h" + +namespace gpgQCAPlugin { + +class GpgOp : public QObject +{ + Q_OBJECT +public: + enum Type + { + Check, // --version + SecretKeyringFile, // --list-secret-keys + PublicKeyringFile, // --list-public-keys + SecretKeys, // --fixed-list-mode --with-colons --list-secret-keys + PublicKeys, // --fixed-list-mode --with-colons --list-public-keys + Encrypt, // --encrypt + Decrypt, // --decrypt + Sign, // --sign + SignAndEncrypt, // --sign --encrypt + SignClearsign, // --clearsign + SignDetached, // --detach-sign + Verify, // --verify + VerifyDetached, // --verify + Import, // --import + Export, // --export + DeleteKey // --delete-key + }; + + enum VerifyResult + { + VerifyGood, // good sig + VerifyBad, // bad sig + VerifyNoKey // we don't have signer's public key + }; + + enum Error + { + ErrorProcess, // startup, process, or ipc error + ErrorPassphrase, // passphrase was either wrong or not provided + ErrorFormat, // input format was bad + ErrorSignerExpired, // signing key is expired + ErrorEncryptExpired, // encrypting key is expired + ErrorEncryptUntrusted, // encrypting key is untrusted + ErrorEncryptInvalid, // encrypting key is invalid in some way + ErrorDecryptNoKey, // missing decrypt key + ErrorUnknown, // other error + ErrorSignerRevoked, // signing key is revoked + ErrorSignatureExpired, // signature is expired + ErrorEncryptRevoked // encrypting key is revoked + }; + + class Event + { + public: + enum Type + { + None, + ReadyRead, + BytesWritten, + Finished, + NeedPassphrase, + NeedCard, + ReadyReadDiagnosticText + }; + + Type type; + int written; // BytesWritten + QString keyId; // NeedPassphrase + + Event() : type(None), written(0) {} + }; + + class KeyItem + { + public: + enum Type + { + RSA, + DSA, + ElGamal, + Unknown + }; + + enum Caps + { + Encrypt = 0x01, + Sign = 0x02, + Certify = 0x04, + Auth = 0x08 + }; + + QString id; + Type type; + int bits; + QDateTime creationDate; + QDateTime expirationDate; + int caps; // flags OR'd together + QString fingerprint; + + KeyItem() : type(Unknown), bits(0), caps(0) {} + }; + + class Key + { + public: + QList keyItems; // first item is primary + QStringList userIds; + bool isTrusted; + + Key() : isTrusted(false) {} + }; + typedef QList KeyList; + + explicit GpgOp(const QString &bin, QObject *parent = 0); + ~GpgOp(); + + void reset(); + + bool isActive() const; + Type op() const; + + void setAsciiFormat(bool b); + void setDisableAgent(bool b); + void setAlwaysTrust(bool b); + void setKeyrings(const QString &pubfile, const QString &secfile); // for keylists and import + + void doCheck(); + void doSecretKeyringFile(); + void doPublicKeyringFile(); + void doSecretKeys(); + void doPublicKeys(); + void doEncrypt(const QStringList &recip_ids); + void doDecrypt(); + void doSign(const QString &signer_id); + void doSignAndEncrypt(const QString &signer_id, const QStringList &recip_ids); + void doSignClearsign(const QString &signer_id); + void doSignDetached(const QString &signer_id); + void doVerify(); + void doVerifyDetached(const QByteArray &sig); + void doImport(const QByteArray &in); + void doExport(const QString &key_id); + void doDeleteKey(const QString &key_fingerprint); + +#ifdef QPIPE_SECURE + void submitPassphrase(const QCA::SecureArray &a); +#else + void submitPassphrase(const QByteArray &a); +#endif + void cardOkay(); + + // for encrypt, decrypt, sign, verify, export + QByteArray read(); + void write(const QByteArray &in); + void endWrite(); + + QString readDiagnosticText(); + + // for synchronous operation + Event waitForEvent(int msecs = -1); + + // results + bool success() const; + Error errorCode() const; + KeyList keys() const; // Keys + QString keyringFile() const; // KeyringFile + QString encryptedToId() const; // Decrypt (for ErrorDecryptNoKey) + bool wasSigned() const; // Decrypt + QString signerId() const; // Verify + QDateTime timestamp() const; // Verify + VerifyResult verifyResult() const; // Verify + +Q_SIGNALS: + void readyRead(); + void bytesWritten(int bytes); + void finished(); + void needPassphrase(const QString &keyId); + void needCard(); + void readyReadDiagnosticText(); + +private: + class Private; + friend class Private; + Private *d; +}; + +} + +#endif diff -Nru qca2-2.0.3/plugins/qca-gnupg/gpgop_p.h qca2-2.1.0/plugins/qca-gnupg/gpgop_p.h --- qca2-2.0.3/plugins/qca-gnupg/gpgop_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/gpgop_p.h 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2003-2005 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#pragma once + +#include "gpgop.h" +#include "gpgaction.h" +#include + +namespace gpgQCAPlugin { + +enum ResetMode +{ + ResetSession = 0, + ResetSessionAndData = 1, + ResetAll = 2 +}; + +class GpgOp::Private : public QObject +{ + Q_OBJECT +public: + QCA::Synchronizer sync; + GpgOp *q; + GpgAction *act; + QString bin; + GpgOp::Type op; + GpgAction::Output output; + QByteArray result; + QString diagnosticText; + QList eventList; + bool waiting; + + bool opt_ascii, opt_noagent, opt_alwaystrust; + QString opt_pubfile, opt_secfile; + +#ifdef GPG_PROFILE + QTime timer; +#endif + + Private(GpgOp *_q); + ~Private(); + void reset(ResetMode mode); + void make_act(GpgOp::Type _op); + void eventReady(const GpgOp::Event &e); + void eventReady(GpgOp::Event::Type type); + void eventReady(GpgOp::Event::Type type, int written); + void eventReady(GpgOp::Event::Type type, const QString &keyId); + +public slots: + void act_readyRead(); + void act_bytesWritten(int bytes); + void act_needPassphrase(const QString &keyId); + void act_needCard(); + void act_readyReadDiagnosticText(); + void act_finished(); +}; + +} // namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/gpgproc/gpgproc.cpp qca2-2.1.0/plugins/qca-gnupg/gpgproc/gpgproc.cpp --- qca2-2.0.3/plugins/qca-gnupg/gpgproc/gpgproc.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/gpgproc/gpgproc.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,682 @@ +/* + * Copyright (C) 2003-2007 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include "gpgproc_p.h" + +#ifdef Q_OS_MAC +#define QT_PIPE_HACK +#endif + + +using namespace QCA; + +namespace gpgQCAPlugin { + +void releaseAndDeleteLater(QObject *owner, QObject *obj) +{ + obj->disconnect(owner); + obj->setParent(0); + obj->deleteLater(); +} + + +GPGProc::Private::Private(GPGProc *_q) + : QObject(_q) + , q(_q) + , pipeAux(this) + , pipeCommand(this) + , pipeStatus(this) + , startTrigger(this) + , doneTrigger(this) +{ + qRegisterMetaType("gpgQCAPlugin::GPGProc::Error"); + + proc = 0; +#ifdef QPROC_SIGNAL_RELAY + proc_relay = 0; +#endif + startTrigger.setSingleShot(true); + doneTrigger.setSingleShot(true); + + connect(&pipeAux.writeEnd(), SIGNAL(bytesWritten(int)), SLOT(aux_written(int))); + connect(&pipeAux.writeEnd(), SIGNAL(error(QCA::QPipeEnd::Error)), SLOT(aux_error(QCA::QPipeEnd::Error))); + connect(&pipeCommand.writeEnd(), SIGNAL(bytesWritten(int)), SLOT(command_written(int))); + connect(&pipeCommand.writeEnd(), SIGNAL(error(QCA::QPipeEnd::Error)), SLOT(command_error(QCA::QPipeEnd::Error))); + connect(&pipeStatus.readEnd(), SIGNAL(readyRead()), SLOT(status_read())); + connect(&pipeStatus.readEnd(), SIGNAL(error(QCA::QPipeEnd::Error)), SLOT(status_error(QCA::QPipeEnd::Error))); + connect(&startTrigger, SIGNAL(timeout()), SLOT(doStart())); + connect(&doneTrigger, SIGNAL(timeout()), SLOT(doTryDone())); + + reset(ResetSessionAndData); +} + +GPGProc::Private::~Private() +{ + reset(ResetSession); +} + +void GPGProc::Private::closePipes() +{ +#ifdef QT_PIPE_HACK + pipeAux.readEnd().reset(); + pipeCommand.readEnd().reset(); + pipeStatus.writeEnd().reset(); +#endif + + pipeAux.reset(); + pipeCommand.reset(); + pipeStatus.reset(); +} + +void GPGProc::Private::reset(ResetMode mode) +{ +#ifndef QT_PIPE_HACK + closePipes(); +#endif + + if(proc) + { + proc->disconnect(this); + + if(proc->state() != QProcess::NotRunning) + { + // Before try to correct end proccess + // Terminate if failed + proc->close(); + bool finished = proc->waitForFinished(5000); + if (!finished) + proc->terminate(); + } + + proc->setParent(0); +#ifdef QPROC_SIGNAL_RELAY + releaseAndDeleteLater(this, proc_relay); + proc_relay = 0; + delete proc; // should be safe to do thanks to relay +#else + proc->deleteLater(); +#endif + proc = 0; + } + +#ifdef QT_PIPE_HACK + closePipes(); +#endif + + startTrigger.stop(); + doneTrigger.stop(); + + pre_stdin.clear(); + pre_aux.clear(); + pre_command.clear(); + pre_stdin_close = false; + pre_aux_close = false; + pre_command_close = false; + + need_status = false; + fin_process = false; + fin_status = false; + + if(mode >= ResetSessionAndData) + { + statusBuf.clear(); + statusLines.clear(); + leftover_stdout.clear(); + leftover_stderr.clear(); + error = GPGProc::FailedToStart; + exitCode = -1; + } +} + +bool GPGProc::Private::setupPipes(bool makeAux) +{ + if(makeAux && !pipeAux.create()) + { + closePipes(); + emit q->debug("Error creating pipeAux"); + return false; + } + +#ifdef QPIPE_SECURE + if(!pipeCommand.create(true)) // secure +#else + if(!pipeCommand.create()) +#endif + { + closePipes(); + emit q->debug("Error creating pipeCommand"); + return false; + } + + if(!pipeStatus.create()) + { + closePipes(); + emit q->debug("Error creating pipeStatus"); + return false; + } + + return true; +} + +void GPGProc::Private::setupArguments() +{ + QStringList fullargs; + fullargs += "--no-tty"; + + if(mode == ExtendedMode) + { + fullargs += "--enable-special-filenames"; + + fullargs += "--status-fd"; + fullargs += QString::number(pipeStatus.writeEnd().idAsInt()); + + fullargs += "--command-fd"; + fullargs += QString::number(pipeCommand.readEnd().idAsInt()); + } + + for(int n = 0; n < args.count(); ++n) + { + QString a = args[n]; + if(mode == ExtendedMode && a == "-&?") + fullargs += QString("-&") + QString::number(pipeAux.readEnd().idAsInt()); + else + fullargs += a; + } + + QString fullcmd = fullargs.join(" "); + emit q->debug(QString("Running: [") + bin + ' ' + fullcmd + ']'); + + args = fullargs; +} + +void GPGProc::Private::doStart() +{ +#ifdef Q_OS_WIN + // Note: for unix, inheritability is set in SProcess + if(pipeAux.readEnd().isValid()) + pipeAux.readEnd().setInheritable(true); + if(pipeCommand.readEnd().isValid()) + pipeCommand.readEnd().setInheritable(true); + if(pipeStatus.writeEnd().isValid()) + pipeStatus.writeEnd().setInheritable(true); +#endif + + setupArguments(); + + proc->start(bin, args); + proc->waitForStarted(); + + pipeAux.readEnd().close(); + pipeCommand.readEnd().close(); + pipeStatus.writeEnd().close(); +} + +void GPGProc::Private::aux_written(int x) +{ + emit q->bytesWrittenAux(x); +} + +void GPGProc::Private::aux_error(QCA::QPipeEnd::Error) +{ + emit q->debug("Aux: Pipe error"); + reset(ResetSession); + emit q->error(GPGProc::ErrorWrite); +} + +void GPGProc::Private::command_written(int x) +{ + emit q->bytesWrittenCommand(x); +} + +void GPGProc::Private::command_error(QCA::QPipeEnd::Error) +{ + emit q->debug("Command: Pipe error"); + reset(ResetSession); + emit q->error(GPGProc::ErrorWrite); +} + +void GPGProc::Private::status_read() +{ + if(readAndProcessStatusData()) + emit q->readyReadStatusLines(); +} + +void GPGProc::Private::status_error(QCA::QPipeEnd::Error e) +{ + if(e == QPipeEnd::ErrorEOF) + emit q->debug("Status: Closed (EOF)"); + else + emit q->debug("Status: Closed (gone)"); + + fin_status = true; + doTryDone(); +} + +void GPGProc::Private::proc_started() +{ + emit q->debug("Process started"); + + // Note: we don't close these here anymore. instead we + // do it just after calling proc->start(). + // close these, we don't need them + /*pipeAux.readEnd().close(); + pipeCommand.readEnd().close(); + pipeStatus.writeEnd().close();*/ + + // do the pre* stuff + if(!pre_stdin.isEmpty()) + { + proc->write(pre_stdin); + pre_stdin.clear(); + } + if(!pre_aux.isEmpty()) + { + pipeAux.writeEnd().write(pre_aux); + pre_aux.clear(); + } + if(!pre_command.isEmpty()) + { +#ifdef QPIPE_SECURE + pipeCommand.writeEnd().writeSecure(pre_command); +#else + pipeCommand.writeEnd().write(pre_command); +#endif + pre_command.clear(); + } + + if(pre_stdin_close) + { + proc->waitForBytesWritten(); + proc->closeWriteChannel(); + } + + if(pre_aux_close) + pipeAux.writeEnd().close(); + if(pre_command_close) + pipeCommand.writeEnd().close(); +} + +void GPGProc::Private::proc_readyReadStandardOutput() +{ + emit q->readyReadStdout(); +} + +void GPGProc::Private::proc_readyReadStandardError() +{ + emit q->readyReadStderr(); +} + +void GPGProc::Private::proc_bytesWritten(qint64 lx) +{ + int x = (int)lx; + emit q->bytesWrittenStdin(x); +} + +void GPGProc::Private::proc_finished(int x) +{ + emit q->debug(QString("Process finished: %1").arg(x)); + exitCode = x; + + fin_process = true; + fin_process_success = true; + + if(need_status && !fin_status) + { + pipeStatus.readEnd().finalize(); + fin_status = true; + if(readAndProcessStatusData()) + { + doneTrigger.start(); + emit q->readyReadStatusLines(); + return; + } + } + + doTryDone(); +} + +void GPGProc::Private::proc_error(QProcess::ProcessError x) +{ + QMap errmap; + errmap[QProcess::FailedToStart] = "FailedToStart"; + errmap[QProcess::Crashed] = "Crashed"; + errmap[QProcess::Timedout] = "Timedout"; + errmap[QProcess::WriteError] = "WriteError"; + errmap[QProcess::ReadError] = "ReadError"; + errmap[QProcess::UnknownError] = "UnknownError"; + + emit q->debug(QString("Process error: %1").arg(errmap[x])); + + if(x == QProcess::FailedToStart) + error = GPGProc::FailedToStart; + else if(x == QProcess::WriteError) + error = GPGProc::ErrorWrite; + else + error = GPGProc::UnexpectedExit; + + fin_process = true; + fin_process_success = false; + +#ifdef QT_PIPE_HACK + // If the process fails to start, then the ends of the pipes + // intended for the child process are still open. Some Mac + // users experience a lockup if we close our ends of the pipes + // when the child's ends are still open. If we ensure the + // child's ends are closed, we prevent this lockup. I have no + // idea why the problem even happens or why this fix should + // work. + pipeAux.readEnd().reset(); + pipeCommand.readEnd().reset(); + pipeStatus.writeEnd().reset(); +#endif + + if(need_status && !fin_status) + { + pipeStatus.readEnd().finalize(); + fin_status = true; + if(readAndProcessStatusData()) + { + doneTrigger.start(); + emit q->readyReadStatusLines(); + return; + } + } + + doTryDone(); +} + +void GPGProc::Private::doTryDone() +{ + if(!fin_process) + return; + + if(need_status && !fin_status) + return; + + emit q->debug("Done"); + + // get leftover data + proc->setReadChannel(QProcess::StandardOutput); + leftover_stdout = proc->readAll(); + + proc->setReadChannel(QProcess::StandardError); + leftover_stderr = proc->readAll(); + + reset(ResetSession); + if(fin_process_success) + emit q->finished(exitCode); + else + emit q->error(error); +} + +bool GPGProc::Private::readAndProcessStatusData() +{ + QByteArray buf = pipeStatus.readEnd().read(); + if(buf.isEmpty()) + return false; + + return processStatusData(buf); +} + +// return true if there are newly parsed lines available +bool GPGProc::Private::processStatusData(const QByteArray &buf) +{ + statusBuf.append(buf); + + // extract all lines + QStringList list; + while(1) + { + int n = statusBuf.indexOf('\n'); + if(n == -1) + break; + + // extract the string from statusbuf + ++n; + char *p = (char *)statusBuf.data(); + QByteArray cs(p, n); + int newsize = statusBuf.size() - n; + memmove(p, p + n, newsize); + statusBuf.resize(newsize); + + // convert to string without newline + QString str = QString::fromUtf8(cs); + str.truncate(str.length() - 1); + + // ensure it has a proper header + if(str.left(9) != "[GNUPG:] ") + continue; + + // take it off + str = str.mid(9); + + // add to the list + list += str; + } + + if(list.isEmpty()) + return false; + + statusLines += list; + return true; +} + +GPGProc::GPGProc(QObject *parent) +:QObject(parent) +{ + d = new Private(this); +} + +GPGProc::~GPGProc() +{ + delete d; +} + +void GPGProc::reset() +{ + d->reset(ResetAll); +} + +bool GPGProc::isActive() const +{ + return (d->proc ? true : false); +} + +void GPGProc::start(const QString &bin, const QStringList &args, Mode mode) +{ + if(isActive()) + d->reset(ResetSessionAndData); + + if(mode == ExtendedMode) + { + if(!d->setupPipes(args.contains("-&?"))) + { + d->error = FailedToStart; + + // emit later + QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, Q_ARG(gpgQCAPlugin::GPGProc::Error, d->error)); + return; + } + + d->need_status = true; + + emit debug("Pipe setup complete"); + } + + d->proc = new SProcess(d); + +#ifdef Q_OS_UNIX + QList plist; + if(d->pipeAux.readEnd().isValid()) + plist += d->pipeAux.readEnd().id(); + if(d->pipeCommand.readEnd().isValid()) + plist += d->pipeCommand.readEnd().id(); + if(d->pipeStatus.writeEnd().isValid()) + plist += d->pipeStatus.writeEnd().id(); + d->proc->setInheritPipeList(plist); +#endif + + // enable the pipes we want + if(d->pipeAux.writeEnd().isValid()) + d->pipeAux.writeEnd().enable(); + if(d->pipeCommand.writeEnd().isValid()) + d->pipeCommand.writeEnd().enable(); + if(d->pipeStatus.readEnd().isValid()) + d->pipeStatus.readEnd().enable(); + +#ifdef QPROC_SIGNAL_RELAY + d->proc_relay = new QProcessSignalRelay(d->proc, d); + connect(d->proc_relay, SIGNAL(started()), d, SLOT(proc_started())); + connect(d->proc_relay, SIGNAL(readyReadStandardOutput()), d, SLOT(proc_readyReadStandardOutput())); + connect(d->proc_relay, SIGNAL(readyReadStandardError()), d, SLOT(proc_readyReadStandardError())); + connect(d->proc_relay, SIGNAL(bytesWritten(qint64)), d, SLOT(proc_bytesWritten(qint64))); + connect(d->proc_relay, SIGNAL(finished(int)), d, SLOT(proc_finished(int))); + connect(d->proc_relay, SIGNAL(error(QProcess::ProcessError)), d, SLOT(proc_error(QProcess::ProcessError))); +#else + connect(d->proc, SIGNAL(started()), d, SLOT(proc_started())); + connect(d->proc, SIGNAL(readyReadStandardOutput()), d, SLOT(proc_readyReadStandardOutput())); + connect(d->proc, SIGNAL(readyReadStandardError()), d, SLOT(proc_readyReadStandardError())); + connect(d->proc, SIGNAL(bytesWritten(qint64)), d, SLOT(proc_bytesWritten(qint64))); + connect(d->proc, SIGNAL(finished(int)), d, SLOT(proc_finished(int))); + connect(d->proc, SIGNAL(error(QProcess::ProcessError)), d, SLOT(proc_error(QProcess::ProcessError))); +#endif + + d->bin = bin; + d->args = args; + d->mode = mode; + d->startTrigger.start(); +} + +QByteArray GPGProc::readStdout() +{ + if(d->proc) + { + d->proc->setReadChannel(QProcess::StandardOutput); + return d->proc->readAll(); + } + else + { + QByteArray a = d->leftover_stdout; + d->leftover_stdout.clear(); + return a; + } +} + +QByteArray GPGProc::readStderr() +{ + if(d->proc) + { + d->proc->setReadChannel(QProcess::StandardError); + return d->proc->readAll(); + } + else + { + QByteArray a = d->leftover_stderr; + d->leftover_stderr.clear(); + return a; + } +} + +QStringList GPGProc::readStatusLines() +{ + QStringList out = d->statusLines; + d->statusLines.clear(); + return out; +} + +void GPGProc::writeStdin(const QByteArray &a) +{ + if(!d->proc || a.isEmpty()) + return; + + if(d->proc->state() == QProcess::Running) + d->proc->write(a); + else + d->pre_stdin += a; +} + +void GPGProc::writeAux(const QByteArray &a) +{ + if(!d->proc || a.isEmpty()) + return; + + if(d->proc->state() == QProcess::Running) + d->pipeAux.writeEnd().write(a); + else + d->pre_aux += a; +} + +#ifdef QPIPE_SECURE +void GPGProc::writeCommand(const SecureArray &a) +#else +void GPGProc::writeCommand(const QByteArray &a) +#endif +{ + if(!d->proc || a.isEmpty()) + return; + + if(d->proc->state() == QProcess::Running) +#ifdef QPIPE_SECURE + d->pipeCommand.writeEnd().writeSecure(a); +#else + d->pipeCommand.writeEnd().write(a); +#endif + else + d->pre_command += a; +} + +void GPGProc::closeStdin() +{ + if(!d->proc) + return; + + if(d->proc->state() == QProcess::Running) + { + d->proc->waitForBytesWritten(); + d->proc->closeWriteChannel(); + } + else + { + d->pre_stdin_close = true; + } +} + +void GPGProc::closeAux() +{ + if(!d->proc) + return; + + if(d->proc->state() == QProcess::Running) + d->pipeAux.writeEnd().close(); + else + d->pre_aux_close = true; +} + +void GPGProc::closeCommand() +{ + if(!d->proc) + return; + + if(d->proc->state() == QProcess::Running) + d->pipeCommand.writeEnd().close(); + else + d->pre_command_close = true; +} + +} diff -Nru qca2-2.0.3/plugins/qca-gnupg/gpgproc/gpgproc.h qca2-2.1.0/plugins/qca-gnupg/gpgproc/gpgproc.h --- qca2-2.0.3/plugins/qca-gnupg/gpgproc/gpgproc.h 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/gpgproc/gpgproc.h 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2003-2005 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifndef GPGPROC_H +#define GPGPROC_H + +#include "qpipe.h" + +namespace gpgQCAPlugin { + +// GPGProc - executes gpg and provides access to all 6 channels. NormalMode +// enables stdout, stderr, and stdin. ExtendedMode has those 3 plus status +// aux, and command. The aux channel is connected to the '-&?' argument. +// The debug() signal, as well as stderr, can be used for diagnostic text. +class GPGProc : public QObject +{ + Q_OBJECT +public: + enum Error { FailedToStart, UnexpectedExit, ErrorWrite }; + enum Mode { NormalMode, ExtendedMode }; + GPGProc(QObject *parent = 0); + ~GPGProc(); + + void reset(); + + bool isActive() const; + void start(const QString &bin, const QStringList &args, Mode m = ExtendedMode); + + QByteArray readStdout(); + QByteArray readStderr(); + QStringList readStatusLines(); + void writeStdin(const QByteArray &a); + void writeAux(const QByteArray &a); +#ifdef QPIPE_SECURE + void writeCommand(const QCA::SecureArray &a); +#else + void writeCommand(const QByteArray &a); +#endif + void closeStdin(); + void closeAux(); + void closeCommand(); + +Q_SIGNALS: + void error(gpgQCAPlugin::GPGProc::Error error); + void finished(int exitCode); + void readyReadStdout(); + void readyReadStderr(); + void readyReadStatusLines(); + void bytesWrittenStdin(int bytes); + void bytesWrittenAux(int bytes); + void bytesWrittenCommand(int bytes); + void debug(const QString &str); // not signal-safe + +private: + class Private; + friend class Private; + Private *d; +}; + +} + +#endif diff -Nru qca2-2.0.3/plugins/qca-gnupg/gpgproc/gpgproc_p.h qca2-2.1.0/plugins/qca-gnupg/gpgproc/gpgproc_p.h --- qca2-2.0.3/plugins/qca-gnupg/gpgproc/gpgproc_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/gpgproc/gpgproc_p.h 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,156 @@ +/* + * Copyright (C) 2003-2007 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#pragma once + +#define QPROC_SIGNAL_RELAY + +#include "qpipe.h" +#include "sprocess.h" +#include "gpgproc.h" +#include + +namespace gpgQCAPlugin { + +class QProcessSignalRelay : public QObject +{ + Q_OBJECT +public: + QProcessSignalRelay(QProcess *proc, QObject *parent = 0) + :QObject(parent) + { + qRegisterMetaType("QProcess::ProcessError"); + connect(proc, SIGNAL(started()), SLOT(proc_started()), Qt::QueuedConnection); + connect(proc, SIGNAL(readyReadStandardOutput()), SLOT(proc_readyReadStandardOutput()), Qt::QueuedConnection); + connect(proc, SIGNAL(readyReadStandardError()), SLOT(proc_readyReadStandardError()), Qt::QueuedConnection); + connect(proc, SIGNAL(bytesWritten(qint64)), SLOT(proc_bytesWritten(qint64)), Qt::QueuedConnection); + connect(proc, SIGNAL(finished(int)), SLOT(proc_finished(int)), Qt::QueuedConnection); + connect(proc, SIGNAL(error(QProcess::ProcessError)), SLOT(proc_error(QProcess::ProcessError)), Qt::QueuedConnection); + } + +signals: + void started(); + void readyReadStandardOutput(); + void readyReadStandardError(); + void bytesWritten(qint64); + void finished(int); + void error(QProcess::ProcessError); + +public slots: + void proc_started() + { + emit started(); + } + + void proc_readyReadStandardOutput() + { + emit readyReadStandardOutput(); + } + + void proc_readyReadStandardError() + { + emit readyReadStandardError(); + } + + void proc_bytesWritten(qint64 x) + { + emit bytesWritten(x); + } + + void proc_finished(int x) + { + emit finished(x); + } + + void proc_error(QProcess::ProcessError x) + { + emit error(x); + } +}; + +enum ResetMode +{ + ResetSession = 0, + ResetSessionAndData = 1, + ResetAll = 2 +}; + +class GPGProc::Private : public QObject +{ + Q_OBJECT +public: + GPGProc *q; + QString bin; + QStringList args; + GPGProc::Mode mode; + SProcess *proc; +#ifdef QPROC_SIGNAL_RELAY + QProcessSignalRelay *proc_relay; +#endif + QCA::QPipe pipeAux, pipeCommand, pipeStatus; + QByteArray statusBuf; + QStringList statusLines; + GPGProc::Error error; + int exitCode; + QCA::SafeTimer startTrigger, doneTrigger; + + QByteArray pre_stdin, pre_aux; +#ifdef QPIPE_SECURE + QCA::SecureArray pre_command; +#else + QByteArray pre_command; +#endif + bool pre_stdin_close, pre_aux_close, pre_command_close; + + bool need_status, fin_process, fin_process_success, fin_status; + QByteArray leftover_stdout; + QByteArray leftover_stderr; + + Private(GPGProc *_q); + ~Private(); + void closePipes(); + void reset(ResetMode mode); + bool setupPipes(bool makeAux); + void setupArguments(); + +public slots: + void doStart(); + void aux_written(int x); + void aux_error(QCA::QPipeEnd::Error); + void command_written(int x); + void command_error(QCA::QPipeEnd::Error); + void status_read(); + void status_error(QCA::QPipeEnd::Error e); + void proc_started(); + void proc_readyReadStandardOutput(); + void proc_readyReadStandardError(); + void proc_bytesWritten(qint64 lx); + void proc_finished(int x); + void proc_error(QProcess::ProcessError x); + void doTryDone(); + +private: + bool readAndProcessStatusData(); + // return true if there are newly parsed lines available + bool processStatusData(const QByteArray &buf); + + +}; + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/gpgproc/README qca2-2.1.0/plugins/qca-gnupg/gpgproc/README --- qca2-2.0.3/plugins/qca-gnupg/gpgproc/README 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/gpgproc/README 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,8 @@ +GPGProc launches a single instance of GPG and provides a friendly API to +work with all six possible pipe channels. Theoretically, it should be +possible to build any GPG front end with it, even though qca-gnupg uses it +for only a handful of operations. If you are writing a Qt-based GPG front +end, please use this class. + +GPGProc works on both Windows and Unix platforms. + diff -Nru qca2-2.0.3/plugins/qca-gnupg/gpgproc/sprocess.cpp qca2-2.1.0/plugins/qca-gnupg/gpgproc/sprocess.cpp --- qca2-2.0.3/plugins/qca-gnupg/gpgproc/sprocess.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/gpgproc/sprocess.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2003-2005 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include "sprocess.h" + +#ifdef Q_OS_UNIX +# include +# include +#endif + +namespace gpgQCAPlugin { + +//---------------------------------------------------------------------------- +// SProcess +//---------------------------------------------------------------------------- +SProcess::SProcess(QObject *parent) +:QProcess(parent) +{ +} + +SProcess::~SProcess() +{ +} + +#ifdef Q_OS_UNIX +void SProcess::setInheritPipeList(const QList &list) +{ + pipeList = list; +} + +void SProcess::setupChildProcess() +{ + // set the pipes to be inheritable + for(int n = 0; n < pipeList.count(); ++n) + ::fcntl(pipeList[n], F_SETFD, (::fcntl(pipeList[n], F_GETFD) & ~FD_CLOEXEC)); +} +#endif + +} diff -Nru qca2-2.0.3/plugins/qca-gnupg/gpgproc/sprocess.h qca2-2.1.0/plugins/qca-gnupg/gpgproc/sprocess.h --- qca2-2.0.3/plugins/qca-gnupg/gpgproc/sprocess.h 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/gpgproc/sprocess.h 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2003-2005 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#ifndef SPROCESS_H +#define SPROCESS_H + +#include + +namespace gpgQCAPlugin { + +class SProcess : public QProcess +{ + Q_OBJECT +public: + SProcess(QObject *parent = 0); + ~SProcess(); + +#ifdef Q_OS_UNIX + void setInheritPipeList(const QList &); + +protected: + virtual void setupChildProcess(); + +private: + QList pipeList; +#endif +}; + +} + +#endif diff -Nru qca2-2.0.3/plugins/qca-gnupg/lineconverter.cpp qca2-2.1.0/plugins/qca-gnupg/lineconverter.cpp --- qca2-2.0.3/plugins/qca-gnupg/lineconverter.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/lineconverter.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,183 @@ +/* + * Copyright (C) 2003-2005 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include "lineconverter.h" + +namespace gpgQCAPlugin { + +void LineConverter::setup(LineConverter::Mode m) +{ + state = Normal; + mode = m; + prebytes = 0; + list.clear(); +} + +QByteArray LineConverter::update(const QByteArray &buf) +{ + if(mode == Read) + { + // Convert buf to UNIX line ending style + // If buf ends with '\r' set state to Partival + + QByteArray out; + + if(state == Normal) + { + out = buf; + } + else + { + out.resize(buf.size() + 1); + out[0] = '\r'; + memcpy(out.data() + 1, buf.data(), buf.size()); + } + + int n = 0; + while(1) + { + n = out.indexOf('\r', n); + // not found + if(n == -1) + { + break; + } + // found, not last character + if(n < (buf.size() - 1)) + { + // found windows line ending "\r\n" + if(out[n + 1] == '\n') + { + // clip out the '\r' + memmove(out.data() + n, out.data() + n + 1, out.size() - n - 1); + out.resize(out.size() - 1); + } + } + // found, last character + else + { + state = Partial; + break; + } + ++n; + } + + return out; + } + else + { + // On Windows use DOS line ending style. + // On UNIX don't do any convertation. Return buf as is. +#ifdef Q_OS_WIN + QByteArray out; + int prev = 0; + int at = 0; + + while(1) + { + int n = buf.indexOf('\n', at); + if(n == -1) + break; + + int chunksize = n - at; + int oldsize = out.size(); + out.resize(oldsize + chunksize + 2); + memcpy(out.data() + oldsize, buf.data() + at, chunksize); + memcpy(out.data() + oldsize + chunksize, "\r\n", 2); + + list.append(prebytes + n + 1 - prev); + prebytes = 0; + prev = n; + + at = n + 1; + } + if(at < buf.size()) + { + int chunksize = buf.size() - at; + int oldsize = out.size(); + out.resize(oldsize + chunksize); + memcpy(out.data() + oldsize, buf.data() + at, chunksize); + } + + prebytes += buf.size() - prev; + return out; +#else + return buf; +#endif + } +} + +QByteArray LineConverter::final() +{ + if(mode == Read) + { + QByteArray out; + if(state == Partial) + { + out.resize(1); + out[0] = '\n'; + } + return out; + } + else + { + return QByteArray(); + } +} + +QByteArray LineConverter::process(const QByteArray &buf) +{ + return update(buf) + final(); +} + +int LineConverter::writtenToActual(int bytes) +{ +#ifdef Q_OS_WIN + int n = 0; + int counter = bytes; + while(counter > 0) + { + if(!list.isEmpty() && bytes >= list.first()) + { + ++n; + counter -= list.takeFirst(); + } + else + { + if(list.isEmpty()) + prebytes -= counter; + else + list.first() -= counter; + + if(prebytes < 0) + { + bytes += prebytes; + prebytes = 0; + } + + break; + } + } + return bytes - n; +#else + return bytes; +#endif +} + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/lineconverter.h qca2-2.1.0/plugins/qca-gnupg/lineconverter.h --- qca2-2.0.3/plugins/qca-gnupg/lineconverter.h 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/lineconverter.h 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2003-2005 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#pragma once + +#include +#include + +namespace gpgQCAPlugin { + +class LineConverter +{ +public: + enum Mode { Read, Write }; + + void setup(Mode m); + QByteArray update(const QByteArray &buf); + QByteArray final(); + QByteArray process(const QByteArray &buf); + int writtenToActual(int bytes); + +private: + enum State { Normal, Partial }; + Mode mode; + State state; + int prebytes; + QList list; +}; + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/mykeystoreentry.cpp qca2-2.1.0/plugins/qca-gnupg/mykeystoreentry.cpp --- qca2-2.0.3/plugins/qca-gnupg/mykeystoreentry.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/mykeystoreentry.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2003-2008 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "mykeystoreentry.h" +#include "utils.h" + +using namespace QCA; + +namespace gpgQCAPlugin +{ + +MyKeyStoreEntry::MyKeyStoreEntry(const PGPKey &_pub, const PGPKey &_sec, Provider *p) : KeyStoreEntryContext(p) +{ + pub = _pub; + sec = _sec; + if(!sec.isNull()) + item_type = KeyStoreEntry::TypePGPSecretKey; + else + item_type = KeyStoreEntry::TypePGPPublicKey; +} + +MyKeyStoreEntry::MyKeyStoreEntry(const MyKeyStoreEntry &from) : KeyStoreEntryContext(from) +{ +} + +MyKeyStoreEntry::~MyKeyStoreEntry() +{ +} + +Provider::Context *MyKeyStoreEntry::clone() const +{ + return new MyKeyStoreEntry(*this); +} + +KeyStoreEntry::Type MyKeyStoreEntry::type() const +{ + return item_type; +} + +QString MyKeyStoreEntry::name() const +{ + return pub.primaryUserId(); +} + +QString MyKeyStoreEntry::id() const +{ + return pub.keyId(); +} + +QString MyKeyStoreEntry::storeId() const +{ + return _storeId; +} + +QString MyKeyStoreEntry::storeName() const +{ + return _storeName; +} + +PGPKey MyKeyStoreEntry::pgpSecretKey() const +{ + return sec; +} + +PGPKey MyKeyStoreEntry::pgpPublicKey() const +{ + return pub; +} + +QString MyKeyStoreEntry::serialize() const +{ + // we only serialize the key id. this means the keyring + // must be available to restore the data + QStringList out; + out += escape_string("qca-gnupg-1"); + out += escape_string(pub.keyId()); + return out.join(":"); +} + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/mykeystoreentry.h qca2-2.1.0/plugins/qca-gnupg/mykeystoreentry.h --- qca2-2.0.3/plugins/qca-gnupg/mykeystoreentry.h 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/mykeystoreentry.h 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2003-2008 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#pragma once + +#include "qcaprovider.h" + +namespace gpgQCAPlugin +{ + +class MyKeyStoreList; + +class MyKeyStoreEntry : public QCA::KeyStoreEntryContext +{ +public: + QCA::KeyStoreEntry::Type item_type; + QCA::PGPKey pub, sec; + QString _storeId, _storeName; + + MyKeyStoreEntry(const QCA::PGPKey &_pub, const QCA::PGPKey &_sec, QCA::Provider *p); + MyKeyStoreEntry(const MyKeyStoreEntry &from); + ~MyKeyStoreEntry(); + + // reimplemented Provider::Context + QCA::Provider::Context *clone() const; + + // reimplemented KeyStoreEntryContext + QCA::KeyStoreEntry::Type type() const; + QString name() const; + QString id() const; + QString storeId() const; + QString storeName() const; + QCA::PGPKey pgpSecretKey() const; + QCA::PGPKey pgpPublicKey() const; + QString serialize() const; +}; + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/mykeystorelist.cpp qca2-2.1.0/plugins/qca-gnupg/mykeystorelist.cpp --- qca2-2.0.3/plugins/qca-gnupg/mykeystorelist.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/mykeystorelist.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,484 @@ +/* + * Copyright (C) 2003-2008 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "mykeystorelist.h" +#include "utils.h" +#include "mypgpkeycontext.h" +#include +#include + +using namespace QCA; + +namespace gpgQCAPlugin +{ + +Q_GLOBAL_STATIC(QMutex, ksl_mutex) + +static MyKeyStoreList *keyStoreList = 0; +MyKeyStoreList::MyKeyStoreList(Provider *p) + : KeyStoreListContext(p) + , initialized(false) + , gpg(find_bin(), this) + , pubdirty(false) + , secdirty(false) + , ringWatch(this) +{ + QMutexLocker locker(ksl_mutex()); + keyStoreList = this; + + connect(&gpg, SIGNAL(finished()), SLOT(gpg_finished())); + connect(&ringWatch, SIGNAL(changed(const QString &)), SLOT(ring_changed(const QString &))); +} + +MyKeyStoreList::~MyKeyStoreList() +{ + QMutexLocker locker(ksl_mutex()); + keyStoreList = 0; +} + +Provider::Context *MyKeyStoreList::clone() const +{ + return 0; +} + +QString MyKeyStoreList::name(int) const +{ + return "GnuPG Keyring"; +} + +KeyStore::Type MyKeyStoreList::type(int) const +{ + return KeyStore::PGPKeyring; +} + +QString MyKeyStoreList::storeId(int) const +{ + return "qca-gnupg"; +} + +QList MyKeyStoreList::keyStores() +{ + // we just support one fixed keyring, if any + QList list; + if(initialized) + list += 0; + return list; +} + +void MyKeyStoreList::start() +{ + // kick start our init procedure: + // ensure gpg is installed + // obtain keyring file names for monitoring + // cache initial keyrings + + init_step = 0; + gpg.doCheck(); +} + +bool MyKeyStoreList::isReadOnly(int) const +{ + return false; +} + +QList MyKeyStoreList::entryTypes(int) const +{ + QList list; + list += KeyStoreEntry::TypePGPSecretKey; + list += KeyStoreEntry::TypePGPPublicKey; + return list; +} + +QList MyKeyStoreList::entryList(int) +{ + QMutexLocker locker(&ringMutex); + + QList out; + + foreach(const GpgOp::Key &pkey, pubkeys) + { + PGPKey pub, sec; + + QString id = pkey.keyItems.first().id; + + MyPGPKeyContext *kc = new MyPGPKeyContext(provider()); + // not secret, in keyring + kc->set(pkey, false, true, pkey.isTrusted); + pub.change(kc); + + // optional + sec = getSecKey(id, pkey.userIds); + + MyKeyStoreEntry *c = new MyKeyStoreEntry(pub, sec, provider()); + c->_storeId = storeId(0); + c->_storeName = name(0); + out.append(c); + } + + return out; +} + +KeyStoreEntryContext *MyKeyStoreList::entry(int, const QString &entryId) +{ + QMutexLocker locker(&ringMutex); + + PGPKey pub = getPubKey(entryId); + if(pub.isNull()) + return 0; + + // optional + PGPKey sec = getSecKey(entryId, static_cast(pub.context())->_props.userIds); + + MyKeyStoreEntry *c = new MyKeyStoreEntry(pub, sec, provider()); + c->_storeId = storeId(0); + c->_storeName = name(0); + return c; +} + +KeyStoreEntryContext *MyKeyStoreList::entryPassive(const QString &serialized) +{ + QMutexLocker locker(&ringMutex); + + QStringList parts = serialized.split(':'); + if(parts.count() < 2) + return 0; + if(unescape_string(parts[0]) != "qca-gnupg-1") + return 0; + + QString entryId = unescape_string(parts[1]); + if(entryId.isEmpty()) + return 0; + + PGPKey pub = getPubKey(entryId); + if(pub.isNull()) + return 0; + + // optional + PGPKey sec = getSecKey(entryId, static_cast(pub.context())->_props.userIds); + + MyKeyStoreEntry *c = new MyKeyStoreEntry(pub, sec, provider()); + c->_storeId = storeId(0); + c->_storeName = name(0); + return c; +} + +// TODO: cache should reflect this change immediately +QString MyKeyStoreList::writeEntry(int, const PGPKey &key) +{ + const MyPGPKeyContext *kc = static_cast(key.context()); + QByteArray buf = kc->toBinary(); + + GpgOp gpg(find_bin()); + gpg.doImport(buf); + gpg_waitForFinished(&gpg); + gpg_keyStoreLog(gpg.readDiagnosticText()); + if(!gpg.success()) + return QString(); + + return kc->_props.keyId; +} + +// TODO: cache should reflect this change immediately +bool MyKeyStoreList::removeEntry(int, const QString &entryId) +{ + ringMutex.lock(); + PGPKey pub = getPubKey(entryId); + ringMutex.unlock(); + + const MyPGPKeyContext *kc = static_cast(pub.context()); + QString fingerprint = kc->_props.fingerprint; + + GpgOp gpg(find_bin()); + gpg.doDeleteKey(fingerprint); + gpg_waitForFinished(&gpg); + gpg_keyStoreLog(gpg.readDiagnosticText()); + return gpg.success(); +} + +MyKeyStoreList *MyKeyStoreList::instance() +{ + QMutexLocker locker(ksl_mutex()); + return keyStoreList; +} + +void MyKeyStoreList::ext_keyStoreLog(const QString &str) +{ + if(str.isEmpty()) + return; + + // FIXME: collect and emit in one pass + QMetaObject::invokeMethod(this, "diagnosticText", Qt::QueuedConnection, Q_ARG(QString, str)); +} + +PGPKey MyKeyStoreList::getPubKey(const QString &keyId) const +{ + int at = -1; + for(int n = 0; n < pubkeys.count(); ++n) + { + if(pubkeys[n].keyItems.first().id == keyId) + { + at = n; + break; + } + } + if(at == -1) + return PGPKey(); + + const GpgOp::Key &pkey = pubkeys[at]; + + PGPKey pub; + MyPGPKeyContext *kc = new MyPGPKeyContext(provider()); + // not secret, in keyring + kc->set(pkey, false, true, pkey.isTrusted); + pub.change(kc); + + return pub; +} + +PGPKey MyKeyStoreList::getSecKey(const QString &keyId, const QStringList &userIdsOverride) const +{ + Q_UNUSED(userIdsOverride); + + int at = -1; + for(int n = 0; n < seckeys.count(); ++n) + { + if(seckeys[n].keyItems.first().id == keyId) + { + at = n; + break; + } + } + if(at == -1) + return PGPKey(); + + const GpgOp::Key &skey = seckeys[at]; + + PGPKey sec; + MyPGPKeyContext *kc = new MyPGPKeyContext(provider()); + // secret, in keyring, trusted + kc->set(skey, true, true, true); + //kc->_props.userIds = userIdsOverride; + sec.change(kc); + + return sec; +} + +PGPKey MyKeyStoreList::publicKeyFromId(const QString &keyId) +{ + QMutexLocker locker(&ringMutex); + + int at = -1; + for(int n = 0; n < pubkeys.count(); ++n) + { + const GpgOp::Key &pkey = pubkeys[n]; + for(int k = 0; k < pkey.keyItems.count(); ++k) + { + const GpgOp::KeyItem &ki = pkey.keyItems[k]; + if(ki.id == keyId) + { + at = n; + break; + } + } + if(at != -1) + break; + } + if(at == -1) + return PGPKey(); + + const GpgOp::Key &pkey = pubkeys[at]; + + PGPKey pub; + MyPGPKeyContext *kc = new MyPGPKeyContext(provider()); + // not secret, in keyring + kc->set(pkey, false, true, pkey.isTrusted); + pub.change(kc); + + return pub; +} + +PGPKey MyKeyStoreList::secretKeyFromId(const QString &keyId) +{ + QMutexLocker locker(&ringMutex); + + int at = -1; + for(int n = 0; n < seckeys.count(); ++n) + { + const GpgOp::Key &skey = seckeys[n]; + for(int k = 0; k < skey.keyItems.count(); ++k) + { + const GpgOp::KeyItem &ki = skey.keyItems[k]; + if(ki.id == keyId) + { + at = n; + break; + } + } + if(at != -1) + break; + } + if(at == -1) + return PGPKey(); + + const GpgOp::Key &skey = seckeys[at]; + + PGPKey sec; + MyPGPKeyContext *kc = new MyPGPKeyContext(provider()); + // secret, in keyring, trusted + kc->set(skey, true, true, true); + sec.change(kc); + + return sec; +} + +void MyKeyStoreList::gpg_finished() +{ + gpg_keyStoreLog(gpg.readDiagnosticText()); + + if(!initialized) + { + // any steps that fail during init, just give up completely + if(!gpg.success()) + { + ringWatch.clear(); + emit busyEnd(); + return; + } + + // check + if(init_step == 0) + { + // obtain keyring file names for monitoring + init_step = 1; + gpg.doSecretKeyringFile(); + } + // secret keyring filename + else if(init_step == 1) + { + secring = QFileInfo(gpg.keyringFile()).canonicalFilePath(); + + if(!secring.isEmpty()) + { + ringWatch.add(secring); + } + + // obtain keyring file names for monitoring + init_step = 2; + gpg.doPublicKeyringFile(); + } + // public keyring filename + else if(init_step == 2) + { + pubring = QFileInfo(gpg.keyringFile()).canonicalFilePath(); + if(!pubring.isEmpty()) + { + ringWatch.add(pubring); + } + + // cache initial keyrings + init_step = 3; + gpg.doSecretKeys(); + } + else if(init_step == 3) + { + ringMutex.lock(); + seckeys = gpg.keys(); + ringMutex.unlock(); + + // cache initial keyrings + init_step = 4; + gpg.doPublicKeys(); + } + else if(init_step == 4) + { + ringMutex.lock(); + pubkeys = gpg.keys(); + ringMutex.unlock(); + + initialized = true; + handleDirtyRings(); + emit busyEnd(); + } + } + else + { + if(!gpg.success()) + return; + + GpgOp::Type op = gpg.op(); + if(op == GpgOp::SecretKeys) + { + ringMutex.lock(); + seckeys = gpg.keys(); + ringMutex.unlock(); + + secdirty = false; + } + else if(op == GpgOp::PublicKeys) + { + ringMutex.lock(); + pubkeys = gpg.keys(); + ringMutex.unlock(); + + pubdirty = false; + } + + if(!secdirty && !pubdirty) + { + emit storeUpdated(0); + return; + } + + handleDirtyRings(); + } +} + +void MyKeyStoreList::ring_changed(const QString &filePath) +{ + ext_keyStoreLog(QString("ring_changed: [%1]\n").arg(filePath)); + + if(filePath == secring) + sec_changed(); + else if(filePath == pubring) + pub_changed(); +} + +void MyKeyStoreList::pub_changed() +{ + pubdirty = true; + handleDirtyRings(); +} + +void MyKeyStoreList::sec_changed() +{ + secdirty = true; + handleDirtyRings(); +} + +void MyKeyStoreList::handleDirtyRings() +{ + if(!initialized || gpg.isActive()) + return; + + if(secdirty) + gpg.doSecretKeys(); + else if(pubdirty) + gpg.doPublicKeys(); +} + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/mykeystorelist.h qca2-2.1.0/plugins/qca-gnupg/mykeystorelist.h --- qca2-2.0.3/plugins/qca-gnupg/mykeystorelist.h 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/mykeystorelist.h 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2003-2008 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#pragma once + +#include "ringwatch.h" +#include "gpgop.h" +#include "qcaprovider.h" +#include "mykeystoreentry.h" +#include + +namespace gpgQCAPlugin +{ + +class MyKeyStoreList : public QCA::KeyStoreListContext +{ + Q_OBJECT +public: + int init_step; + bool initialized; + GpgOp gpg; + GpgOp::KeyList pubkeys, seckeys; + QString pubring, secring; + bool pubdirty, secdirty; + RingWatch ringWatch; + QMutex ringMutex; + + MyKeyStoreList(QCA::Provider *p); + ~MyKeyStoreList(); + + // reimplemented Provider::Context + QCA::Provider::Context *clone() const; + + // reimplemented KeyStoreListContext + QString name(int) const; + QCA::KeyStore::Type type(int) const; + QString storeId(int) const; + QList keyStores(); + + void start(); + + bool isReadOnly(int) const; + + QList entryTypes(int) const; + QList entryList(int); + QCA::KeyStoreEntryContext *entry(int, const QString &entryId); + QCA::KeyStoreEntryContext *entryPassive(const QString &serialized); + QString writeEntry(int, const QCA::PGPKey &key); + bool removeEntry(int, const QString &entryId); + + static MyKeyStoreList *instance(); + void ext_keyStoreLog(const QString &str); + + QCA::PGPKey getPubKey(const QString &keyId) const; + QCA::PGPKey getSecKey(const QString &keyId, const QStringList &userIdsOverride) const; + QCA::PGPKey publicKeyFromId(const QString &keyId); + QCA::PGPKey secretKeyFromId(const QString &keyId); + +private slots: + void gpg_finished(); + void ring_changed(const QString &filePath); + +private: + void pub_changed(); + void sec_changed(); + void handleDirtyRings(); +}; + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/mymessagecontext.cpp qca2-2.1.0/plugins/qca-gnupg/mymessagecontext.cpp --- qca2-2.0.3/plugins/qca-gnupg/mymessagecontext.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/mymessagecontext.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,436 @@ +/* + * Copyright (C) 2003-2008 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "mymessagecontext.h" +#include "utils.h" +#include "mypgpkeycontext.h" +#include "mykeystorelist.h" + +using namespace QCA; + +namespace gpgQCAPlugin +{ + +MyMessageContext::MyMessageContext(MyOpenPGPContext *_sms, Provider *p) + : MessageContext(p, "pgpmsg") + , sms(_sms) + , op(Sign) + , signMode(SecureMessage::Detached) + , format(SecureMessage::Ascii) + , wrote(0) + , ok(false) + , wasSigned(false) + , op_err(GpgOp::ErrorUnknown), gpg(find_bin()) ,_finished(false) +{ + connect(&gpg, SIGNAL(readyRead()), SLOT(gpg_readyRead())); + connect(&gpg, SIGNAL(bytesWritten(int)), SLOT(gpg_bytesWritten(int))); + connect(&gpg, SIGNAL(finished()), SLOT(gpg_finished())); + connect(&gpg, SIGNAL(needPassphrase(const QString &)), SLOT(gpg_needPassphrase(const QString &))); + connect(&gpg, SIGNAL(needCard()), SLOT(gpg_needCard())); + connect(&gpg, SIGNAL(readyReadDiagnosticText()), SLOT(gpg_readyReadDiagnosticText())); + + connect(&asker, SIGNAL(responseReady()), SLOT(asker_responseReady())); + connect(&tokenAsker, SIGNAL(responseReady()), SLOT(tokenAsker_responseReady())); +} + +Provider::Context *MyMessageContext::clone() const +{ + return 0; +} + +bool MyMessageContext::canSignMultiple() const +{ + return false; +} + +SecureMessage::Type MyMessageContext::type() const +{ + return SecureMessage::OpenPGP; +} + +void MyMessageContext::reset() +{ + wrote = 0; + ok = false; + wasSigned = false; +} + +void MyMessageContext::setupEncrypt(const SecureMessageKeyList &keys) +{ + recipIds.clear(); + for(int n = 0; n < keys.count(); ++n) + recipIds += keys[n].pgpPublicKey().keyId(); +} + +void MyMessageContext::setupSign(const SecureMessageKeyList &keys, SecureMessage::SignMode m, bool, bool) +{ + signerId = keys.first().pgpSecretKey().keyId(); + signMode = m; +} + +void MyMessageContext::setupVerify(const QByteArray &detachedSig) +{ + sig = detachedSig; +} + +void MyMessageContext::start(SecureMessage::Format f, Operation op) +{ + _finished = false; + format = f; + this->op = op; + + if(getProperty("pgp-always-trust").toBool()) + gpg.setAlwaysTrust(true); + + if(format == SecureMessage::Ascii) + gpg.setAsciiFormat(true); + else + gpg.setAsciiFormat(false); + + if(op == Encrypt) + { + gpg.doEncrypt(recipIds); + } + else if(op == Decrypt) + { + gpg.doDecrypt(); + } + else if(op == Sign) + { + if(signMode == SecureMessage::Message) + { + gpg.doSign(signerId); + } + else if(signMode == SecureMessage::Clearsign) + { + gpg.doSignClearsign(signerId); + } + else // SecureMessage::Detached + { + gpg.doSignDetached(signerId); + } + } + else if(op == Verify) + { + if(!sig.isEmpty()) + gpg.doVerifyDetached(sig); + else + gpg.doDecrypt(); + } + else if(op == SignAndEncrypt) + { + gpg.doSignAndEncrypt(signerId, recipIds); + } +} + +void MyMessageContext::update(const QByteArray &in) +{ + gpg.write(in); + //this->in.append(in); +} + +QByteArray MyMessageContext::read() +{ + QByteArray a = out; + out.clear(); + return a; +} + +int MyMessageContext::written() +{ + int x = wrote; + wrote = 0; + return x; +} + +void MyMessageContext::end() +{ + gpg.endWrite(); +} + +void MyMessageContext::seterror() +{ + gpg.reset(); + _finished = true; + ok = false; + op_err = GpgOp::ErrorUnknown; +} + +void MyMessageContext::complete() +{ + _finished = true; + + dtext = gpg.readDiagnosticText(); + + ok = gpg.success(); + if(ok) + { + if(op == Sign && signMode == SecureMessage::Detached) + sig = gpg.read(); + else + out = gpg.read(); + } + + if(ok) + { + if(gpg.wasSigned()) + { + QString signerId = gpg.signerId(); + QDateTime ts = gpg.timestamp(); + GpgOp::VerifyResult vr = gpg.verifyResult(); + + SecureMessageSignature::IdentityResult ir; + Validity v; + if(vr == GpgOp::VerifyGood) + { + ir = SecureMessageSignature::Valid; + v = ValidityGood; + } + else if(vr == GpgOp::VerifyBad) + { + ir = SecureMessageSignature::InvalidSignature; + v = ValidityGood; // good key, bad sig + } + else // GpgOp::VerifyNoKey + { + ir = SecureMessageSignature::NoKey; + v = ErrorValidityUnknown; + } + + SecureMessageKey key; + PGPKey pub = publicKeyFromId(signerId); + if(pub.isNull()) + { + MyPGPKeyContext *kc = new MyPGPKeyContext(provider()); + kc->_props.keyId = signerId; + pub.change(kc); + } + key.setPGPPublicKey(pub); + + signer = SecureMessageSignature(ir, v, key, ts); + wasSigned = true; + } + } + else + op_err = gpg.errorCode(); +} + +bool MyMessageContext::finished() const +{ + return _finished; +} + +bool MyMessageContext::waitForFinished(int msecs) +{ + // FIXME + Q_UNUSED(msecs); + MyKeyStoreList *keyStoreList = MyKeyStoreList::instance(); + + while(1) + { + // TODO: handle token prompt events + + GpgOp::Event e = gpg.waitForEvent(-1); + if(e.type == GpgOp::Event::NeedPassphrase) + { + // TODO + + QString keyId; + PGPKey sec = secretKeyFromId(e.keyId); + if(!sec.isNull()) + keyId = sec.keyId(); + else + keyId = e.keyId; + QStringList out; + out += escape_string("qca-gnupg-1"); + out += escape_string(keyId); + QString serialized = out.join(":"); + + KeyStoreEntry kse; + KeyStoreEntryContext *c = keyStoreList->entryPassive(serialized); + if(c) + kse.change(c); + + asker.ask(Event::StylePassphrase, KeyStoreInfo(KeyStore::PGPKeyring, keyStoreList->storeId(0), keyStoreList->name(0)), kse, 0); + asker.waitForResponse(); + + if(!asker.accepted()) + { + seterror(); + return true; + } + + gpg.submitPassphrase(asker.password()); + } + else if(e.type == GpgOp::Event::NeedCard) + { + tokenAsker.ask(KeyStoreInfo(KeyStore::PGPKeyring, keyStoreList->storeId(0), keyStoreList->name(0)), KeyStoreEntry(), 0); + + if(!tokenAsker.accepted()) + { + seterror(); + return true; + } + + gpg.cardOkay(); + } + else if(e.type == GpgOp::Event::Finished) + break; + } + + complete(); + return true; +} + +bool MyMessageContext::success() const +{ + return ok; +} + +SecureMessage::Error MyMessageContext::errorCode() const +{ + SecureMessage::Error e = SecureMessage::ErrorUnknown; + if(op_err == GpgOp::ErrorProcess) + e = SecureMessage::ErrorUnknown; + else if(op_err == GpgOp::ErrorPassphrase) + e = SecureMessage::ErrorPassphrase; + else if(op_err == GpgOp::ErrorFormat) + e = SecureMessage::ErrorFormat; + else if(op_err == GpgOp::ErrorSignerExpired) + e = SecureMessage::ErrorSignerExpired; + else if(op_err == GpgOp::ErrorSignerRevoked) + e = SecureMessage::ErrorSignerRevoked; + else if(op_err == GpgOp::ErrorSignatureExpired) + e = SecureMessage::ErrorSignatureExpired; + else if(op_err == GpgOp::ErrorEncryptExpired) + e = SecureMessage::ErrorEncryptExpired; + else if(op_err == GpgOp::ErrorEncryptRevoked) + e = SecureMessage::ErrorEncryptRevoked; + else if(op_err == GpgOp::ErrorEncryptUntrusted) + e = SecureMessage::ErrorEncryptUntrusted; + else if(op_err == GpgOp::ErrorEncryptInvalid) + e = SecureMessage::ErrorEncryptInvalid; + else if(op_err == GpgOp::ErrorDecryptNoKey) + e = SecureMessage::ErrorUnknown; + else if(op_err == GpgOp::ErrorUnknown) + e = SecureMessage::ErrorUnknown; + return e; +} + +QByteArray MyMessageContext::signature() const +{ + return sig; +} + +QString MyMessageContext::hashName() const +{ + // TODO + return "sha1"; +} + +SecureMessageSignatureList MyMessageContext::signers() const +{ + SecureMessageSignatureList list; + if(ok && wasSigned) + list += signer; + return list; +} + +QString MyMessageContext::diagnosticText() const +{ + return dtext; +} + +void MyMessageContext::gpg_readyRead() +{ + emit updated(); +} + +void MyMessageContext::gpg_bytesWritten(int bytes) +{ + wrote += bytes; +} + +void MyMessageContext::gpg_finished() +{ + complete(); + emit updated(); +} + +void MyMessageContext::gpg_needPassphrase(const QString &in_keyId) +{ + // FIXME: copied from above, clean up later + + QString keyId; + PGPKey sec = secretKeyFromId(in_keyId); + if(!sec.isNull()) + keyId = sec.keyId(); + else + keyId = in_keyId; + //emit keyStoreList->storeNeedPassphrase(0, 0, keyId); + QStringList out; + out += escape_string("qca-gnupg-1"); + out += escape_string(keyId); + QString serialized = out.join(":"); + + KeyStoreEntry kse; + MyKeyStoreList *keyStoreList = MyKeyStoreList::instance(); + KeyStoreEntryContext *c = keyStoreList->entryPassive(serialized); + if(c) + kse.change(c); + + asker.ask(Event::StylePassphrase, KeyStoreInfo(KeyStore::PGPKeyring, keyStoreList->storeId(0), keyStoreList->name(0)), kse, 0); +} + +void MyMessageContext::gpg_needCard() +{ + MyKeyStoreList *keyStoreList = MyKeyStoreList::instance(); + tokenAsker.ask(KeyStoreInfo(KeyStore::PGPKeyring, keyStoreList->storeId(0), keyStoreList->name(0)), KeyStoreEntry(), 0); +} + +void MyMessageContext::gpg_readyReadDiagnosticText() +{ + // TODO ? +} + +void MyMessageContext::asker_responseReady() +{ + if(!asker.accepted()) + { + seterror(); + emit updated(); + return; + } + + SecureArray a = asker.password(); + gpg.submitPassphrase(a); +} + +void MyMessageContext::tokenAsker_responseReady() +{ + if(!tokenAsker.accepted()) + { + seterror(); + emit updated(); + return; + } + + gpg.cardOkay(); +} + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/mymessagecontext.h qca2-2.1.0/plugins/qca-gnupg/mymessagecontext.h --- qca2-2.0.3/plugins/qca-gnupg/mymessagecontext.h 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/mymessagecontext.h 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2003-2008 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#pragma once + +#include "qcaprovider.h" +#include "gpgop.h" + +namespace gpgQCAPlugin +{ + +class MyOpenPGPContext; + +class MyMessageContext : public QCA::MessageContext +{ + Q_OBJECT +public: + MyOpenPGPContext *sms; + + QString signerId; + QStringList recipIds; + QCA::MessageContext::Operation op; + QCA::SecureMessage::SignMode signMode; + QCA::SecureMessage::Format format; + QByteArray in, out, sig; + int wrote; + bool ok, wasSigned; + GpgOp::Error op_err; + QCA::SecureMessageSignature signer; + GpgOp gpg; + bool _finished; + QString dtext; + + QCA::PasswordAsker asker; + QCA::TokenAsker tokenAsker; + + MyMessageContext(MyOpenPGPContext *_sms, QCA::Provider *p); + + // reimplemented Provider::Context + QCA::Provider::Context *clone() const; + + // reimplemented MessageContext + bool canSignMultiple() const; + QCA::SecureMessage::Type type() const; + void reset(); + void setupEncrypt(const QCA::SecureMessageKeyList &keys); + void setupSign(const QCA::SecureMessageKeyList &keys, QCA::SecureMessage::SignMode m, bool, bool); + void setupVerify(const QByteArray &detachedSig); + void start(QCA::SecureMessage::Format f, QCA::MessageContext::Operation op); + void update(const QByteArray &in); + QByteArray read(); + int written(); + void end(); + bool finished() const; + bool waitForFinished(int msecs); + bool success() const; + QCA::SecureMessage::Error errorCode() const; + QByteArray signature() const; + QString hashName() const; + QCA::SecureMessageSignatureList signers() const; + QString diagnosticText() const; + + void seterror(); + void complete(); + +private slots: + void gpg_readyRead(); + void gpg_bytesWritten(int bytes); + void gpg_finished(); + void gpg_needPassphrase(const QString &in_keyId); + void gpg_needCard(); + void gpg_readyReadDiagnosticText(); + void asker_responseReady(); + void tokenAsker_responseReady(); +}; + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/myopenpgpcontext.cpp qca2-2.1.0/plugins/qca-gnupg/myopenpgpcontext.cpp --- qca2-2.0.3/plugins/qca-gnupg/myopenpgpcontext.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/myopenpgpcontext.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2003-2008 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "myopenpgpcontext.h" +#include "mymessagecontext.h" + +using namespace QCA; + +namespace gpgQCAPlugin +{ + +MyOpenPGPContext::MyOpenPGPContext(QCA::Provider *p) + : SMSContext(p, "openpgp") +{ + // TODO +} + +Provider::Context *MyOpenPGPContext::clone() const +{ + return 0; +} + +MessageContext *MyOpenPGPContext::createMessage() +{ + return new MyMessageContext(this, provider()); +} + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/myopenpgpcontext.h qca2-2.1.0/plugins/qca-gnupg/myopenpgpcontext.h --- qca2-2.0.3/plugins/qca-gnupg/myopenpgpcontext.h 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/myopenpgpcontext.h 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2003-2008 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#pragma once + +#include "qcaprovider.h" + +namespace gpgQCAPlugin +{ + +class MyOpenPGPContext : public QCA::SMSContext +{ +public: + MyOpenPGPContext(QCA::Provider *p); + + // reimplemented Provider::Context + QCA::Provider::Context *clone() const; + + // reimplemented SMSContext + QCA::MessageContext *createMessage(); +}; + + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/mypgpkeycontext.cpp qca2-2.1.0/plugins/qca-gnupg/mypgpkeycontext.cpp --- qca2-2.0.3/plugins/qca-gnupg/mypgpkeycontext.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/mypgpkeycontext.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,218 @@ +#include "mypgpkeycontext.h" +#include "utils.h" +#include "gpgop.h" +#include +#include + +using namespace QCA; + +namespace gpgQCAPlugin +{ + +MyPGPKeyContext::MyPGPKeyContext(Provider *p) + : PGPKeyContext(p) +{ + // zero out the props + _props.isSecret = false; + _props.inKeyring = true; + _props.isTrusted = false; +} + +Provider::Context *MyPGPKeyContext::clone() const +{ + return new MyPGPKeyContext(*this); +} + +const PGPKeyContextProps *MyPGPKeyContext::props() const +{ + return &_props; +} + +QByteArray MyPGPKeyContext::toBinary() const +{ + if(_props.inKeyring) + { + GpgOp gpg(find_bin()); + gpg.setAsciiFormat(false); + gpg.doExport(_props.keyId); + gpg_waitForFinished(&gpg); + gpg_keyStoreLog(gpg.readDiagnosticText()); + if(!gpg.success()) + return QByteArray(); + return gpg.read(); + } + else + return cacheExportBinary; +} + +ConvertResult MyPGPKeyContext::fromBinary(const QByteArray &a) +{ + GpgOp::Key key; + bool sec = false; + + // temporary keyrings + QString pubname, secname; + + QTemporaryFile pubtmp(QDir::tempPath() + QLatin1String("/qca_gnupg_tmp.XXXXXX.gpg")); + if(!pubtmp.open()) + return ErrorDecode; + + QTemporaryFile sectmp(QDir::tempPath() + QLatin1String("/qca_gnupg_tmp.XXXXXX.gpg")); + if(!sectmp.open()) + return ErrorDecode; + + pubname = pubtmp.fileName(); + secname = sectmp.fileName(); + + // we turn off autoRemove so that we can close the files + // without them getting deleted + pubtmp.setAutoRemove(false); + sectmp.setAutoRemove(false); + pubtmp.close(); + sectmp.close(); + + // import key into temporary keyring + GpgOp gpg(find_bin()); + gpg.setKeyrings(pubname, secname); + gpg.doImport(a); + gpg_waitForFinished(&gpg); + gpg_keyStoreLog(gpg.readDiagnosticText()); + // comment this out. apparently gpg will report failure for + // an import if there are trust issues, even though the + // key actually did get imported + /*if(!gpg.success()) + { + cleanup_temp_keyring(pubname); + cleanup_temp_keyring(secname); + return ErrorDecode; + }*/ + + // now extract the key from gpg like normal + + // is it a public key? + gpg.doPublicKeys(); + gpg_waitForFinished(&gpg); + gpg_keyStoreLog(gpg.readDiagnosticText()); + if(!gpg.success()) + { + cleanup_temp_keyring(pubname); + cleanup_temp_keyring(secname); + return ErrorDecode; + } + + GpgOp::KeyList pubkeys = gpg.keys(); + if(!pubkeys.isEmpty()) + { + key = pubkeys.first(); + } + else + { + // is it a secret key? + gpg.doSecretKeys(); + gpg_waitForFinished(&gpg); + gpg_keyStoreLog(gpg.readDiagnosticText()); + if(!gpg.success()) + { + cleanup_temp_keyring(pubname); + cleanup_temp_keyring(secname); + return ErrorDecode; + } + + GpgOp::KeyList seckeys = gpg.keys(); + if(!seckeys.isEmpty()) + { + key = seckeys.first(); + sec = true; + } + else + { + // no keys found + cleanup_temp_keyring(pubname); + cleanup_temp_keyring(secname); + return ErrorDecode; + } + } + + // export binary/ascii and cache + + gpg.setAsciiFormat(false); + gpg.doExport(key.keyItems.first().id); + gpg_waitForFinished(&gpg); + gpg_keyStoreLog(gpg.readDiagnosticText()); + if(!gpg.success()) + { + cleanup_temp_keyring(pubname); + cleanup_temp_keyring(secname); + return ErrorDecode; + } + cacheExportBinary = gpg.read(); + + gpg.setAsciiFormat(true); + gpg.doExport(key.keyItems.first().id); + gpg_waitForFinished(&gpg); + gpg_keyStoreLog(gpg.readDiagnosticText()); + if(!gpg.success()) + { + cleanup_temp_keyring(pubname); + cleanup_temp_keyring(secname); + return ErrorDecode; + } + cacheExportAscii = QString::fromLocal8Bit(gpg.read()); + + // all done + + cleanup_temp_keyring(pubname); + cleanup_temp_keyring(secname); + + set(key, sec, false, false); + return ConvertGood; +} + +QString MyPGPKeyContext::toAscii() const +{ + if(_props.inKeyring) + { + GpgOp gpg(find_bin()); + gpg.setAsciiFormat(true); + gpg.doExport(_props.keyId); + gpg_waitForFinished(&gpg); + gpg_keyStoreLog(gpg.readDiagnosticText()); + if(!gpg.success()) + return QString(); + return QString::fromLocal8Bit(gpg.read()); + } + else + { + return cacheExportAscii; + } +} + +ConvertResult MyPGPKeyContext::fromAscii(const QString &s) +{ + // GnuPG does ascii/binary detection for imports, so for + // simplicity we consider an ascii import to just be a + // binary import that happens to be comprised of ascii + return fromBinary(s.toLocal8Bit()); +} + +void MyPGPKeyContext::set(const GpgOp::Key &i, bool isSecret, bool inKeyring, bool isTrusted) +{ + const GpgOp::KeyItem &ki = i.keyItems.first(); + + _props.keyId = ki.id; + _props.userIds = i.userIds; + _props.isSecret = isSecret; + _props.creationDate = ki.creationDate; + _props.expirationDate = ki.expirationDate; + _props.fingerprint = ki.fingerprint.toLower(); + _props.inKeyring = inKeyring; + _props.isTrusted = isTrusted; +} + +void MyPGPKeyContext::cleanup_temp_keyring(const QString &name) +{ + QFile::remove(name); + QFile::remove(name + '~'); // remove possible backup file +} + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/mypgpkeycontext.h qca2-2.1.0/plugins/qca-gnupg/mypgpkeycontext.h --- qca2-2.0.3/plugins/qca-gnupg/mypgpkeycontext.h 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/mypgpkeycontext.h 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2003-2008 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#pragma once + +#include "qcaprovider.h" +#include "ringwatch.h" +#include "gpgop.h" + +namespace gpgQCAPlugin +{ + +class MyPGPKeyContext : public QCA::PGPKeyContext +{ +public: + QCA::PGPKeyContextProps _props; + + // keys loaded externally (not from the keyring) need to have these + // values cached, since we can't extract them later + QByteArray cacheExportBinary; + QString cacheExportAscii; + + MyPGPKeyContext(QCA::Provider *p); + + // reimplemented Provider::Context + QCA::Provider::Context *clone() const; + + // reimplemented PGPKeyContext + const QCA::PGPKeyContextProps *props() const; + + QByteArray toBinary() const; + QCA::ConvertResult fromBinary(const QByteArray &a); + + QString toAscii() const; + QCA::ConvertResult fromAscii(const QString &s); + + void set(const GpgOp::Key &i, bool isSecret, bool inKeyring, bool isTrusted); + static void cleanup_temp_keyring(const QString &name); +}; + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/qca-gnupg.cpp qca2-2.1.0/plugins/qca-gnupg/qca-gnupg.cpp --- qca2-2.0.3/plugins/qca-gnupg/qca-gnupg.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/qca-gnupg.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2003-2008 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "mypgpkeycontext.h" +#include "myopenpgpcontext.h" +#include "mykeystorelist.h" +#include "qcaprovider.h" +#include + +using namespace gpgQCAPlugin; + +class gnupgProvider : public QCA::Provider +{ +public: + virtual void init() + { + } + + virtual int qcaVersion() const + { + return QCA_VERSION; + } + + virtual QString name() const + { + return "qca-gnupg"; + } + + virtual QStringList features() const + { + QStringList list; + list += "pgpkey"; + list += "openpgp"; + list += "keystorelist"; + return list; + } + + virtual Context *createContext(const QString &type) + { + if(type == "pgpkey") + return new MyPGPKeyContext(this); + else if(type == "openpgp") + return new MyOpenPGPContext(this); + else if(type == "keystorelist") + return new MyKeyStoreList(this); + else + return 0; + } +}; + +class gnupgPlugin : public QObject, public QCAPlugin +{ + Q_OBJECT +#if QT_VERSION >= 0x050000 + Q_PLUGIN_METADATA(IID "com.affinix.qca.Plugin/1.0") +#endif + Q_INTERFACES(QCAPlugin) +public: + virtual QCA::Provider *createProvider() { return new gnupgProvider; } +}; + +#include "qca-gnupg.moc" +#if QT_VERSION < 0x050000 +Q_EXPORT_PLUGIN2(qca_gnupg, gnupgPlugin) +#endif diff -Nru qca2-2.0.3/plugins/qca-gnupg/README qca2-2.1.0/plugins/qca-gnupg/README --- qca2-2.0.3/plugins/qca-gnupg/README 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/README 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,29 @@ +QCA GnuPG plugin version 2.0.0 +------------------------------ +Date: October 11th, 2007 +Website: http://delta.affinix.com/qca/ +Mailing List: Delta Project + +Author: Justin Karneges + +This plugin provides features based on GnuPG. + +Requirements: + GnuPG 1.x or 2.x (runtime dependency only) + +Installing +---------- + +For Unix/Linux/Mac: + + ./configure + make + make install + +For Windows: + + configwin rd + qmake + nmake (or make) + copy lib\*.dll qtdir\plugins\crypto + diff -Nru qca2-2.0.3/plugins/qca-gnupg/ringwatch.cpp qca2-2.1.0/plugins/qca-gnupg/ringwatch.cpp --- qca2-2.0.3/plugins/qca-gnupg/ringwatch.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/ringwatch.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,182 @@ +/* + * Copyright (C) 2003-2008 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +// since keyring files are often modified by creating a new copy and +// overwriting the original file, this messes up Qt's file watching +// capability since the original file goes away. to work around this +// problem, we'll watch the directories containing the keyring files +// instead of watching the actual files themselves. +// +// FIXME: qca 2.0.1 FileWatch has this logic already, so we can probably +// simplify this class. + +#include "qca_safetimer.h" +#include "qca_support.h" +#include "ringwatch.h" +#include + +using namespace QCA; + +namespace gpgQCAPlugin +{ + +RingWatch::RingWatch(QObject *parent) + : QObject(parent) +{ +} + +RingWatch::~RingWatch() +{ + clear(); +} + +void RingWatch::add(const QString &filePath) +{ + QFileInfo fi(filePath); + QString path = fi.absolutePath(); + + // watching this path already? + DirWatch *dirWatch = 0; + foreach(const DirItem &di, dirs) + { + if(di.dirWatch->dirName() == path) + { + dirWatch = di.dirWatch; + break; + } + } + + // if not, make a watcher + if(!dirWatch) + { + //printf("creating dirwatch for [%s]\n", qPrintable(path)); + + DirItem di; + di.dirWatch = new DirWatch(path, this); + connect(di.dirWatch, SIGNAL(changed()), SLOT(dirChanged())); + + di.changeTimer = new SafeTimer(this); + di.changeTimer->setSingleShot(true); + connect(di.changeTimer, SIGNAL(timeout()), SLOT(handleChanged())); + + dirWatch = di.dirWatch; + dirs += di; + } + + FileItem i; + i.dirWatch = dirWatch; + i.fileName = fi.fileName(); + i.exists = fi.exists(); + if(i.exists) + { + i.size = fi.size(); + i.lastModified = fi.lastModified(); + } + files += i; + + //printf("watching [%s] in [%s]\n", qPrintable(fi.fileName()), qPrintable(i.dirWatch->dirName())); +} + +void RingWatch::clear() +{ + files.clear(); + + foreach(const DirItem &di, dirs) + { + delete di.changeTimer; + delete di.dirWatch; + } + + dirs.clear(); +} + +void RingWatch::dirChanged() +{ + DirWatch *dirWatch = (DirWatch *)sender(); + + int at = -1; + for(int n = 0; n < dirs.count(); ++n) + { + if(dirs[n].dirWatch == dirWatch) + { + at = n; + break; + } + } + if(at == -1) + return; + + // we get a ton of change notifications for the dir when + // something happens.. let's collect them and only + // report after 100ms + + if(!dirs[at].changeTimer->isActive()) + dirs[at].changeTimer->start(100); +} + +void RingWatch::handleChanged() +{ + SafeTimer *t = (SafeTimer *)sender(); + + int at = -1; + for(int n = 0; n < dirs.count(); ++n) + { + if(dirs[n].changeTimer == t) + { + at = n; + break; + } + } + if(at == -1) + return; + + DirWatch *dirWatch = dirs[at].dirWatch; + QString dir = dirWatch->dirName(); + + // see which files changed + QStringList changeList; + for(int n = 0; n < files.count(); ++n) + { + FileItem &i = files[n]; + QString filePath = dir + '/' + i.fileName; + QFileInfo fi(filePath); + + // if the file didn't exist, and still doesn't, skip + if(!i.exists && !fi.exists()) + continue; + + // size/lastModified should only get checked here if + // the file existed and still exists + if(fi.exists() != i.exists || fi.size() != i.size || fi.lastModified() != i.lastModified) + { + changeList += filePath; + + i.exists = fi.exists(); + if(i.exists) + { + i.size = fi.size(); + i.lastModified = fi.lastModified(); + } + } + } + + foreach(const QString &s, changeList) + emit changed(s); +} + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/ringwatch.h qca2-2.1.0/plugins/qca-gnupg/ringwatch.h --- qca2-2.0.3/plugins/qca-gnupg/ringwatch.h 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/ringwatch.h 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2003-2008 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#pragma once + +#include +#include +#include + +namespace QCA +{ + +class SafeTimer; +class DirWatch; + +} + +namespace gpgQCAPlugin +{ + +class RingWatch : public QObject +{ + Q_OBJECT +public: + class DirItem + { + public: + QCA::DirWatch *dirWatch; + QCA::SafeTimer *changeTimer; + }; + + class FileItem + { + public: + QCA::DirWatch *dirWatch; + QString fileName; + bool exists; + qint64 size; + QDateTime lastModified; + }; + + QList dirs; + QList files; + + RingWatch(QObject *parent = 0); + ~RingWatch(); + + void add(const QString &filePath); + void clear(); + +signals: + void changed(const QString &filePath); + +private slots: + void dirChanged(); + void handleChanged(); +}; + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/TODO qca2-2.1.0/plugins/qca-gnupg/TODO --- qca2-2.0.3/plugins/qca-gnupg/TODO 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/TODO 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1 @@ +don't write stdin to signing until status channel says it is okay diff -Nru qca2-2.0.3/plugins/qca-gnupg/utils.cpp qca2-2.1.0/plugins/qca-gnupg/utils.cpp --- qca2-2.0.3/plugins/qca-gnupg/utils.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/utils.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,228 @@ +/* + * Copyright (C) 2003-2008 Justin Karneges + * Copyright (C) 2014 Ivan Romanov + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "utils.h" +#include "mykeystorelist.h" +#include +#include +#include +#ifdef Q_OS_WIN +#include +#endif + +using namespace QCA; + +namespace gpgQCAPlugin +{ + +void gpg_waitForFinished(GpgOp *gpg) +{ + while(1) + { + GpgOp::Event e = gpg->waitForEvent(-1); + if(e.type == GpgOp::Event::Finished) + break; + } +} + +void gpg_keyStoreLog(const QString &str) +{ + MyKeyStoreList *ksl = MyKeyStoreList::instance(); + if(ksl) + ksl->ext_keyStoreLog(str); +} + +inline bool check_bin(const QString &bin) +{ + QFileInfo fi(bin); + return fi.exists(); +} + +#ifdef Q_OS_WIN +static bool get_reg_key(HKEY root, const char *path, QString &value) +{ + HKEY hkey = 0; + + char szValue[256]; + DWORD dwLen = 256; + + bool res = false; + + if(RegOpenKeyExA(root, path, 0, KEY_QUERY_VALUE, &hkey) == ERROR_SUCCESS) + { + if (RegQueryValueExA(hkey, "Install Directory", NULL, NULL, (LPBYTE)szValue, &dwLen) == ERROR_SUCCESS) + { + value = QString::fromLocal8Bit(szValue); + res = true; + } + RegCloseKey(hkey); + } + return res; +} + + +static QString find_reg_gpgProgram() +{ + QStringList bins; + bins << "gpg.exe" << "gpg2.exe"; + + HKEY root; + root = HKEY_CURRENT_USER; + + const char *path = "Software\\GNU\\GnuPG"; + const char *path2 = "Software\\Wow6432Node\\GNU\\GnuPG"; + + QString dir; + // check list of possible places in registry + get_reg_key(HKEY_CURRENT_USER, path, dir) || + get_reg_key(HKEY_CURRENT_USER, path2, dir) || + get_reg_key(HKEY_LOCAL_MACHINE, path, dir) || + get_reg_key(HKEY_LOCAL_MACHINE, path2, dir); + + if (!dir.isEmpty()) + { + foreach (const QString &bin, bins) + { + if (check_bin(dir + "\\" + bin)) + { + return dir + "\\" + bin; + } + } + } + return QString(); +} +#endif + +QString find_bin() +{ + // gpg and gpg2 has identical semantics + // so any from them can be used + QStringList bins; +#ifdef Q_OS_WIN + bins << "gpg.exe" << "gpg2.exe"; +#else + bins << "gpg" << "gpg2"; +#endif + + // Prefer bundled gpg + foreach (const QString &bin, bins) + { + if (check_bin(QCoreApplication::applicationDirPath() + "/" + bin)) + { + return QCoreApplication::applicationDirPath() + "/" + bin; + } + } + +#ifdef Q_OS_WIN + // On Windows look up at registry + QString bin = find_reg_gpgProgram(); + if (!bin.isEmpty()) + return bin; +#endif + + // Look up at PATH environment +#ifdef Q_OS_WIN + QString pathSep = ";"; +#else + QString pathSep = ":"; +#endif + + QStringList paths = QString::fromLocal8Bit(qgetenv("PATH")).split(pathSep, QString::SkipEmptyParts); + +#ifdef Q_OS_MAC + // On Mac OS bundled always uses system default PATH + // so it need explicity add extra paths which can + // contain gpg + // Mac GPG and brew use /usr/local/bin + // MacPorts uses /opt/local/bin + paths << "/usr/local/bin" << "/opt/local/bin"; +#endif + paths.removeDuplicates(); + + foreach (const QString &path, paths) + { + foreach (const QString &bin, bins) + { + if (check_bin(path + "/" + bin)) + { + return path + "/" + bin; + } + } + } + + // Return nothing if gpg not found + return QString(); +} + +QString escape_string(const QString &in) +{ + QString out; + for(int n = 0; n < in.length(); ++n) + { + if(in[n] == '\\') + out += "\\\\"; + else if(in[n] == ':') + out += "\\c"; + else + out += in[n]; + } + return out; +} + +QString unescape_string(const QString &in) +{ + QString out; + for(int n = 0; n < in.length(); ++n) + { + if(in[n] == '\\') + { + if(n + 1 < in.length()) + { + if(in[n + 1] == '\\') + out += '\\'; + else if(in[n + 1] == 'c') + out += ':'; + ++n; + } + } + else + out += in[n]; + } + return out; +} + +PGPKey publicKeyFromId(const QString &id) +{ + MyKeyStoreList *ksl = MyKeyStoreList::instance(); + if(!ksl) + return PGPKey(); + + return ksl->publicKeyFromId(id); +} + +PGPKey secretKeyFromId(const QString &id) +{ + MyKeyStoreList *ksl = MyKeyStoreList::instance(); + if(!ksl) + return PGPKey(); + + return ksl->secretKeyFromId(id); +} + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-gnupg/utils.h qca2-2.1.0/plugins/qca-gnupg/utils.h --- qca2-2.0.3/plugins/qca-gnupg/utils.h 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-gnupg/utils.h 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2003-2008 Justin Karneges + * Copyright (C) 2014 Ivan Romanov + * + * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#pragma once + +#include "qca_cert.h" +#include + +namespace gpgQCAPlugin +{ + +class GpgOp; +void gpg_waitForFinished(GpgOp *gpg); +void gpg_keyStoreLog(const QString &str); +QString find_bin(); +QString escape_string(const QString &in); +QString unescape_string(const QString &in); +QCA::PGPKey publicKeyFromId(const QString &id); +QCA::PGPKey secretKeyFromId(const QString &id); + +} // end namespace gpgQCAPlugin diff -Nru qca2-2.0.3/plugins/qca-logger/CMakeLists.txt qca2-2.1.0/plugins/qca-logger/CMakeLists.txt --- qca2-2.0.3/plugins/qca-logger/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-logger/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,25 @@ +# qca-logger + +enable_plugin("logger") +set(QCA_LOGGER_SOURCES qca-logger.cpp) +my_automoc( QCA_LOGGER_SOURCES ) + +add_library(qca-logger ${PLUGIN_TYPE} ${QCA_LOGGER_SOURCES}) + +if(APPLE AND ${PLUGIN_TYPE} STREQUAL "MODULE") + set_property(TARGET qca-logger PROPERTY SUFFIX ".dylib") +endif() + +add_definitions(${LOGGERH_DEFINITIONS}) +include_directories(${LOGGERH_INCLUDE_DIR}) +target_link_libraries(qca-logger ${QT_QTCORE_LIBRARY}) +target_link_libraries(qca-logger ${QCA_LIB_NAME}) + +if(NOT DEVELOPER_MODE) + install(TARGETS qca-logger + LIBRARY DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + ARCHIVE DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + RUNTIME DESTINATION "${QCA_CRYPTO_INSTALL_DIR}") + + install_pdb(qca-logger ${QCA_CRYPTO_INSTALL_DIR}) +endif() diff -Nru qca2-2.0.3/plugins/qca-logger/COPYING qca2-2.1.0/plugins/qca-logger/COPYING --- qca2-2.0.3/plugins/qca-logger/COPYING 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-logger/COPYING 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff -Nru qca2-2.0.3/plugins/qca-logger/qca-logger.cpp qca2-2.1.0/plugins/qca-logger/qca-logger.cpp --- qca2-2.0.3/plugins/qca-logger/qca-logger.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-logger/qca-logger.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,227 @@ +/* + * Copyright (C) 2007 Alon Bar-Lev + * + * 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 WITHANY 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include +#include +#include +#include +#include + +#include + +using namespace QCA; + +namespace loggerQCAPlugin { + +class StreamLogger : public QCA::AbstractLogDevice +{ +public: + StreamLogger(QTextStream &stream) : QCA::AbstractLogDevice( "Stream logger" ), _stream(stream) + { + QCA::logger()->registerLogDevice (this); + } + + ~StreamLogger() + { + QCA::logger()->unregisterLogDevice (name ()); + } + + void logTextMessage( const QString &message, enum QCA::Logger::Severity severity ) + { + _stream << now () << " " << severityName (severity) << " " << message << endl; + } + + void logBinaryMessage( const QByteArray &blob, enum QCA::Logger::Severity severity ) + { + Q_UNUSED(blob); + _stream << now () << " " << severityName (severity) << " " << "Binary blob not implemented yet" << endl; + } + +private: + inline const char *severityName( enum QCA::Logger::Severity severity ) + { + if (severity <= QCA::Logger::Debug) { + return s_severityNames[severity]; + } + else { + return s_severityNames[QCA::Logger::Debug+1]; + } + } + + inline QString now() { + static QString format = "yyyy-MM-dd hh:mm:ss"; + return QDateTime::currentDateTime ().toString (format); + } + +private: + static const char *s_severityNames[]; + QTextStream &_stream; +}; + +const char *StreamLogger::s_severityNames[] = { + "Q", + "M", + "A", + "C", + "E", + "W", + "N", + "I", + "D", + "U" +}; + +} + +using namespace loggerQCAPlugin; + +class loggerProvider : public Provider +{ +private: + QFile _logFile; + QTextStream _logStream; + StreamLogger *_streamLogger; + bool _externalConfig; + +public: + loggerProvider () { + _externalConfig = false; + _streamLogger = NULL; + + QByteArray level = qgetenv ("QCALOGGER_LEVEL"); + QByteArray file = qgetenv ("QCALOGGER_FILE"); + + if (!level.isEmpty ()) { + printf ("XXXX %s %s\n", level.data (), file.data ()); + _externalConfig = true; + createLogger ( + atoi (level), + file.isEmpty () ? QString() : QString::fromUtf8 (file) + ); + } + } + + ~loggerProvider () { + delete _streamLogger; + _streamLogger = NULL; + } + +public: + virtual + int + qcaVersion() const { + return QCA_VERSION; + } + + virtual + void + init () {} + + virtual + QString + name () const { + return "qca-logger"; + } + + virtual + QStringList + features () const { + QStringList list; + list += "log"; + return list; + } + + virtual + Context * + createContext ( + const QString &type + ) { + Q_UNUSED(type); + return NULL; + } + + virtual + QVariantMap + defaultConfig () const { + QVariantMap mytemplate; + + mytemplate["formtype"] = "http://affinix.com/qca/forms/qca-logger#1.0"; + mytemplate["enabled"] = false; + mytemplate["file"] = ""; + mytemplate["level"] = (int)Logger::Quiet; + + return mytemplate; + } + + virtual + void + configChanged (const QVariantMap &config) { + if (!_externalConfig) { + delete _streamLogger; + _streamLogger = NULL; + + if (config["enabled"].toBool ()) { + createLogger ( + config["level"].toInt (), + config["file"].toString () + ); + } + } + } + +private: + void + createLogger ( + const int level, + const QString &file + ) { + bool success = false; + if (file.isEmpty ()) { + success = _logFile.open (stderr, QIODevice::WriteOnly | QIODevice::Text | QIODevice::Unbuffered); + } + else { + _logFile.setFileName (file); + success = _logFile.open (QIODevice::Append | QIODevice::Text | QIODevice::Unbuffered); + } + + if (success) { + _logStream.setDevice (&_logFile); + logger ()->setLevel ((Logger::Severity)level); + _streamLogger = new StreamLogger (_logStream); + } + } +}; + +class loggerPlugin : public QObject, public QCAPlugin +{ + Q_OBJECT +#if QT_VERSION >= 0x050000 + Q_PLUGIN_METADATA(IID "com.affinix.qca.Plugin/1.0") +#endif + Q_INTERFACES(QCAPlugin) + +public: + virtual Provider *createProvider() { return new loggerProvider; } +}; + +#include "qca-logger.moc" + +#if QT_VERSION < 0x050000 +Q_EXPORT_PLUGIN2(qca_logger, loggerPlugin) +#endif diff -Nru qca2-2.0.3/plugins/qca-logger/README qca2-2.1.0/plugins/qca-logger/README --- qca2-2.0.3/plugins/qca-logger/README 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-logger/README 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,49 @@ +qca-logger 2.0.0 -- Logger Plug-in to QCA + +ABOUT + qca-logger provides simple logger writer for QCA framework. + +DEPENDENCIES + None. + +INSTALL + For Unix/Linux/Mac: + ./configure + make + make install + + For Windows: + configwin rd + qmake + nmake (or make) + copy lib\*.dll qtdir\plugins\crypto + +ENVIRONMENT + Configuration can be overridden by environment variables. + + Variables: + QCALOGGER_LEVEL + qca-logger log level. + + QCALOGGER_FILE + File to write to, if empty stderr will be used. + +CONFIGURATION + Configuration is stored at ~/.config/Affinix/QCA.conf, in order to + generate default configuration use: + + $ qcatool --config save qca-logger + + Attributes: + enabled (Boolean) + Enable/disable the plugin. + + file (String) + File to write into, if empty stderr will be used. + + level (Integer) + Log level 0 least. + +AUTHORS + Alon Bar-Lev + diff -Nru qca2-2.0.3/plugins/qca-nss/CMakeLists.txt qca2-2.1.0/plugins/qca-nss/CMakeLists.txt --- qca2-2.0.3/plugins/qca-nss/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-nss/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,32 @@ +if(WITH_nss_PLUGIN STREQUAL "yes") + find_package(Nss REQUIRED) +else(WITH_nss_PLUGIN STREQUAL "yes") + find_package(Nss) +endif(WITH_nss_PLUGIN STREQUAL "yes") + +if(NSS_FOUND) + enable_plugin("nss") + + set(QCA_NSS_SOURCES qca-nss.cpp) + add_definitions(${NSS_CFLAGS_OTHER}) + include_directories(${NSS_INCLUDE_DIRS}) + my_automoc( QCA_NSS_SOURCES ) + add_library(qca-nss ${PLUGIN_TYPE} ${QCA_NSS_SOURCES}) + target_link_libraries(qca-nss ${QT_QTCORE_LIBRARY} ${QCA_LIB_NAME} ${NSS_LDFLAGS}) + + if(APPLE AND ${PLUGIN_TYPE} STREQUAL "MODULE") + set_property(TARGET qca-nss PROPERTY SUFFIX ".dylib") + endif() + + if(NOT DEVELOPER_MODE) + install(TARGETS qca-nss + LIBRARY DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + ARCHIVE DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + RUNTIME DESTINATION "${QCA_CRYPTO_INSTALL_DIR}") + + install_pdb(qca-nss ${QCA_CRYPTO_INSTALL_DIR}) + endif() +else(NSS_FOUND) + disable_plugin("nss") + set(WITH_nss_PLUGIN "no" PARENT_SCOPE) +endif(NSS_FOUND) diff -Nru qca2-2.0.3/plugins/qca-nss/COPYING qca2-2.1.0/plugins/qca-nss/COPYING --- qca2-2.0.3/plugins/qca-nss/COPYING 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-nss/COPYING 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff -Nru qca2-2.0.3/plugins/qca-nss/qca-nss.cpp qca2-2.1.0/plugins/qca-nss/qca-nss.cpp --- qca2-2.0.3/plugins/qca-nss/qca-nss.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-nss/qca-nss.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,543 @@ +/* + * Copyright (C) 2006 Brad Hards + * + * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ +#include "pk11func.h" +#include "nss.h" +#include "hasht.h" + +#include + +#include +#include +#include + + +//----------------------------------------------------------- +class nssHashContext : public QCA::HashContext +{ +public: + nssHashContext( QCA::Provider *p, const QString &type) : QCA::HashContext(p, type) + { + SECStatus s; + + NSS_NoDB_Init("."); + + m_status = 0; + + /* Get a slot to use for the crypto operations */ + m_slot = PK11_GetInternalKeySlot(); + if (!m_slot) + { + qDebug() << "GetInternalKeySlot failed"; + m_status = 1; + return; + } + + if ( QString("md2") == type ) { + m_hashAlgo = SEC_OID_MD2; + } + else if ( QString("md5") == type ) { + m_hashAlgo = SEC_OID_MD5; + } + else if ( QString("sha1") == type ) { + m_hashAlgo = SEC_OID_SHA1; + } + else if ( QString("sha256") == type ) { + m_hashAlgo = SEC_OID_SHA256; + } + else if ( QString("sha384") == type ) { + m_hashAlgo = SEC_OID_SHA384; + } + else if ( QString("sha512") == type ) { + m_hashAlgo = SEC_OID_SHA512; + } else { + qDebug() << "Unknown provider type: " << type; + return; /* this will probably cause a segfault... */ + } + + m_context = PK11_CreateDigestContext(m_hashAlgo); + if (! m_context) { + qDebug() << "CreateDigestContext failed"; + return; + } + + s = PK11_DigestBegin(m_context); + if (s != SECSuccess) { + qDebug() << "DigestBegin failed"; + return; + } + } + + ~nssHashContext() + { + PK11_DestroyContext(m_context, PR_TRUE); + if (m_slot) + PK11_FreeSlot(m_slot); + } + + Context *clone() const + { + return new nssHashContext(*this); + } + + void clear() + { + SECStatus s; + + PK11_DestroyContext(m_context, PR_TRUE); + + m_context = PK11_CreateDigestContext(m_hashAlgo); + if (! m_context) { + qDebug() << "CreateDigestContext failed"; + return; + } + + s = PK11_DigestBegin(m_context); + if (s != SECSuccess) { + qDebug() << "DigestBegin failed"; + return; + } + } + + void update(const QCA::MemoryRegion &a) + { + PK11_DigestOp(m_context, (const unsigned char*)a.data(), a.size()); + } + + QCA::MemoryRegion final() + { + unsigned int len = 0; + QCA::SecureArray a( 64 ); + PK11_DigestFinal(m_context, (unsigned char*)a.data(), &len, a.size()); + a.resize(len); + return a; + } + +private: + PK11SlotInfo *m_slot; + int m_status; + PK11Context *m_context; + SECOidTag m_hashAlgo; +}; + + +//----------------------------------------------------------- +class nssHmacContext : public QCA::MACContext +{ +public: + nssHmacContext( QCA::Provider *p, const QString &type) : QCA::MACContext(p, type) + { + NSS_NoDB_Init("."); + + m_status = 0; + + /* Get a slot to use for the crypto operations */ + m_slot = PK11_GetInternalKeySlot(); + if (!m_slot) + { + qDebug() << "GetInternalKeySlot failed"; + m_status = 1; + return; + } + + if ( QString("hmac(md5)") == type ) { + m_macAlgo = CKM_MD5_HMAC; + } + else if ( QString("hmac(sha1)") == type ) { + m_macAlgo = CKM_SHA_1_HMAC; + } + else if ( QString("hmac(sha256)") == type ) { + m_macAlgo = CKM_SHA256_HMAC; + } + else if ( QString("hmac(sha384)") == type ) { + m_macAlgo = CKM_SHA384_HMAC; + } + else if ( QString("hmac(sha512)") == type ) { + m_macAlgo = CKM_SHA512_HMAC; + } + else if ( QString("hmac(ripemd160)") == type ) { + m_macAlgo = CKM_RIPEMD160_HMAC; + } + else { + qDebug() << "Unknown provider type: " << type; + return; /* this will probably cause a segfault... */ + } + } + + ~nssHmacContext() + { + PK11_DestroyContext(m_context, PR_TRUE); + if (m_slot) + PK11_FreeSlot(m_slot); + } + + Context *clone() const + { + return new nssHmacContext(*this); + } + + void clear() + { + PK11_DestroyContext(m_context, PR_TRUE); + + SECItem noParams; + noParams.data = 0; + noParams.len = 0; + + m_context = PK11_CreateContextBySymKey(m_macAlgo, CKA_SIGN, m_nssKey, &noParams); + if (! m_context) { + qDebug() << "CreateContextBySymKey failed"; + return; + } + + SECStatus s = PK11_DigestBegin(m_context); + if (s != SECSuccess) { + qDebug() << "DigestBegin failed"; + return; + } + } + + QCA::KeyLength keyLength() const + { + return anyKeyLength(); + } + + void setup(const QCA::SymmetricKey &key) + { + /* turn the raw key into a SECItem */ + SECItem keyItem; + keyItem.data = (unsigned char*) key.data(); + keyItem.len = key.size(); + + m_nssKey = PK11_ImportSymKey(m_slot, m_macAlgo, PK11_OriginUnwrap, CKA_SIGN, &keyItem, NULL); + + SECItem noParams; + noParams.data = 0; + noParams.len = 0; + + m_context = PK11_CreateContextBySymKey(m_macAlgo, CKA_SIGN, m_nssKey, &noParams); + if (! m_context) { + qDebug() << "CreateContextBySymKey failed"; + return; + } + + SECStatus s = PK11_DigestBegin(m_context); + if (s != SECSuccess) { + qDebug() << "DigestBegin failed"; + return; + } + } + + void update(const QCA::MemoryRegion &a) + { + PK11_DigestOp(m_context, (const unsigned char*)a.data(), a.size()); + } + + void final( QCA::MemoryRegion *out) + { + // NSS doesn't appear to be able to tell us how big the digest will + // be for a given algorithm until after we finalise it, so we work + // around the problem a bit. + QCA::SecureArray sa( HASH_LENGTH_MAX, 0 ); // assume the biggest hash size we know + unsigned int len = 0; + PK11_DigestFinal(m_context, (unsigned char*)sa.data(), &len, sa.size()); + sa.resize(len); // and fix it up later + *out = sa; + } + +private: + PK11SlotInfo *m_slot; + int m_status; + PK11Context *m_context; + CK_MECHANISM_TYPE m_macAlgo; + PK11SymKey* m_nssKey; +}; + +//----------------------------------------------------------- +class nssCipherContext : public QCA::CipherContext +{ +public: + nssCipherContext( QCA::Provider *p, const QString &type) : QCA::CipherContext(p, type) + { + NSS_NoDB_Init("."); + + if ( QString("aes128-ecb") == type ) { + m_cipherMechanism = CKM_AES_ECB; + } + else if ( QString("aes128-cbc") == type ) { + m_cipherMechanism = CKM_AES_CBC; + } + else if ( QString("des-ecb") == type ) { + m_cipherMechanism = CKM_DES_ECB; + } + else if ( QString("des-cbc") == type ) { + m_cipherMechanism = CKM_DES_CBC; + } + else if ( QString("des-cbc-pkcs7") == type ) { + m_cipherMechanism = CKM_DES_CBC_PAD; + } + else if ( QString("tripledes-ecb") == type ) { + m_cipherMechanism = CKM_DES3_ECB; + } + else { + qDebug() << "Unknown provider type: " << type; + return; /* this will probably cause a segfault... */ + } + } + + ~nssCipherContext() + { + } + + void setup( QCA::Direction dir, + const QCA::SymmetricKey &key, + const QCA::InitializationVector &iv ) + { + /* Get a slot to use for the crypto operations */ + m_slot = PK11_GetBestSlot( m_cipherMechanism, NULL ); + if (!m_slot) + { + qDebug() << "GetBestSlot failed"; + return; + } + + /* turn the raw key into a SECItem */ + SECItem keyItem; + keyItem.data = (unsigned char*) key.data(); + keyItem.len = key.size(); + + if (QCA::Encode == dir) { + m_nssKey = PK11_ImportSymKey(m_slot, m_cipherMechanism, + PK11_OriginUnwrap, CKA_ENCRYPT, + &keyItem, NULL); + } else { + // decryption + m_nssKey = PK11_ImportSymKey(m_slot, m_cipherMechanism, + PK11_OriginUnwrap, CKA_DECRYPT, + &keyItem, NULL); + } + + SECItem ivItem; + ivItem.data = (unsigned char*) iv.data(); + ivItem.len = iv.size(); + + m_params = PK11_ParamFromIV(m_cipherMechanism, &ivItem); + + if (QCA::Encode == dir) { + m_context = PK11_CreateContextBySymKey(m_cipherMechanism, + CKA_ENCRYPT, m_nssKey, + m_params); + } else { + // decryption + m_context = PK11_CreateContextBySymKey(m_cipherMechanism, + CKA_DECRYPT, m_nssKey, + m_params); + } + + if (! m_context) { + qDebug() << "CreateContextBySymKey failed"; + return; + } + } + + QCA::Provider::Context *clone() const + { + return new nssCipherContext(*this); + } + + int blockSize() const + { + return PK11_GetBlockSize( m_cipherMechanism, m_params); + } + + bool update( const QCA::SecureArray &in, QCA::SecureArray *out ) + { + out->resize(in.size()+blockSize()); + int resultLength; + + PK11_CipherOp(m_context, (unsigned char*)out->data(), + &resultLength, out->size(), + (unsigned char*)in.data(), in.size()); + out->resize(resultLength); + + return true; + } + + bool final( QCA::SecureArray *out ) + { + out->resize(blockSize()); + unsigned int resultLength; + + PK11_DigestFinal(m_context, (unsigned char*)out->data(), + &resultLength, out->size()); + out->resize(resultLength); + + return true; + } + + QCA::KeyLength keyLength() const + { + int min = 0; + int max = 0; + int multiple = 0; + + switch (m_cipherMechanism) { + case CKM_AES_ECB: + case CKM_AES_CBC: + min = max = 16; + multiple = 1; + break; + + case CKM_DES_ECB: + case CKM_DES_CBC: + case CKM_DES_CBC_PAD: + min = max = 8; + multiple = 1; + break; + + case CKM_DES3_ECB: + min = 16; + max = 24; + multiple = 1; + break; + } + + return QCA::KeyLength(min, max, multiple); + } + +private: + PK11SymKey* m_nssKey; + CK_MECHANISM_TYPE m_cipherMechanism; + PK11SlotInfo *m_slot; + PK11Context *m_context; + SECItem* m_params; +}; + + +//========================================================== +class nssProvider : public QCA::Provider +{ +public: + void init() + { + } + + ~nssProvider() + { + } + + int qcaVersion() const + { + return QCA_VERSION; + } + + QString name() const + { + return "qca-nss"; + } + + QStringList features() const + { + QStringList list; + + list += "md2"; + list += "md5"; + list += "sha1"; + list += "sha256"; + list += "sha384"; + list += "sha512"; + + list += "hmac(md5)"; + list += "hmac(sha1)"; + list += "hmac(sha256)"; + list += "hmac(sha384)"; + list += "hmac(sha512)"; + // appears to not be implemented in NSS yet + // list += "hmac(ripemd160)"; + + list += "aes128-ecb"; + list += "aes128-cbc"; + list += "des-ecb"; + list += "des-cbc"; + list += "des-cbc-pkcs7"; + list += "tripledes-ecb"; + + return list; + } + + Context *createContext(const QString &type) + { + if ( type == "md2" ) + return new nssHashContext( this, type ); + if ( type == "md5" ) + return new nssHashContext( this, type ); + if ( type == "sha1" ) + return new nssHashContext( this, type ); + if ( type == "sha256" ) + return new nssHashContext( this, type ); + if ( type == "sha384" ) + return new nssHashContext( this, type ); + if ( type == "sha512" ) + return new nssHashContext( this, type ); + + if ( type == "hmac(md5)" ) + return new nssHmacContext( this, type ); + if ( type == "hmac(sha1)" ) + return new nssHmacContext( this, type ); + if ( type == "hmac(sha256)" ) + return new nssHmacContext( this, type ); + if ( type == "hmac(sha384)" ) + return new nssHmacContext( this, type ); + if ( type == "hmac(sha512)" ) + return new nssHmacContext( this, type ); + if ( type == "hmac(ripemd160)" ) + return new nssHmacContext( this, type ); + + if ( type == "aes128-ecb" ) + return new nssCipherContext( this, type); + if ( type == "aes128-cbc" ) + return new nssCipherContext( this, type); + if ( type == "des-ecb" ) + return new nssCipherContext( this, type); + if ( type == "des-cbc" ) + return new nssCipherContext( this, type); + if ( type == "des-cbc-pkcs7" ) + return new nssCipherContext( this, type); + if ( type == "tripledes-ecb" ) + return new nssCipherContext( this, type); + else + return 0; + } +}; + +class nssPlugin : public QObject, public QCAPlugin +{ + Q_OBJECT +#if QT_VERSION >= 0x050000 + Q_PLUGIN_METADATA(IID "com.affinix.qca.Plugin/1.0") +#endif + Q_INTERFACES( QCAPlugin ) +public: + virtual QCA::Provider *createProvider() { return new nssProvider; } +}; + +#include "qca-nss.moc" + +#if QT_VERSION < 0x050000 +Q_EXPORT_PLUGIN2(qca_nss, nssPlugin) +#endif diff -Nru qca2-2.0.3/plugins/qca-nss/qcextra qca2-2.1.0/plugins/qca-nss/qcextra --- qca2-2.0.3/plugins/qca-nss/qcextra 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-nss/qcextra 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,9 @@ +#!/bin/sh + +cat >extra.pri < + +This plugin provides features based on Mozilla NSS. It implements: +* Hashing + + +Requirements: + Recent version of NSS. + +Installation procedure: + ./configure + make + su -c "make install" + diff -Nru qca2-2.0.3/plugins/qca-ossl/CMakeLists.txt qca2-2.1.0/plugins/qca-ossl/CMakeLists.txt --- qca2-2.0.3/plugins/qca-ossl/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-ossl/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,65 @@ +# QCA OSSL + +if(WITH_ossl_PLUGIN STREQUAL "yes") + find_package(OpenSSL REQUIRED) +else(WITH_ossl_PLUGIN STREQUAL "yes") + find_package(OpenSSL) +endif(WITH_ossl_PLUGIN STREQUAL "yes") + +if(OPENSSL_FOUND) + enable_plugin("ossl") + + include(CheckFunctionExists) + set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES}) + check_function_exists(EVP_md2 HAVE_OPENSSL_MD2) + if(HAVE_OPENSSL_MD2) + add_definitions(-DHAVE_OPENSSL_MD2) + else(HAVE_OPENSSL_MD2) + message(WARNING "qca-ossl will be compiled without MD2 digest algorithm support") + endif(HAVE_OPENSSL_MD2) + + check_function_exists(EVP_aes_128_ctr HAVE_OPENSSL_AES_CTR) + if(HAVE_OPENSSL_AES_CTR) + add_definitions(-DHAVE_OPENSSL_AES_CTR) + else(HAVE_OPENSSL_AES_CTR) + message(WARNING "qca-ossl will be compiled without AES CTR mode encryption support") + endif(HAVE_OPENSSL_AES_CTR) + + set(QCA_OSSL_SOURCES qca-ossl.cpp) + + my_automoc( QCA_OSSL_SOURCES ) + + add_library(qca-ossl ${PLUGIN_TYPE} ${QCA_OSSL_SOURCES}) + + if(APPLE AND ${PLUGIN_TYPE} STREQUAL "MODULE") + set_property(TARGET qca-ossl PROPERTY SUFFIX ".dylib") + endif() + + include_directories(${OPENSSL_INCLUDE_DIR}) + target_link_libraries(qca-ossl ${QT_QTCORE_LIBRARY}) + target_link_libraries(qca-ossl ${QCA_LIB_NAME}) + target_link_libraries(qca-ossl ${OPENSSL_LIBRARIES}) + + if(APPLE) + target_link_libraries(qca-ossl crypto) + endif(APPLE) + + if(WIN32) + add_definitions(-DOSSL_097) + target_link_libraries(qca-ossl gdi32) + target_link_libraries(qca-ossl wsock32) + target_link_libraries(qca-ossl ${OPENSSL_EAY_LIBRARIES}) + endif(WIN32) + + if(NOT DEVELOPER_MODE) + install(TARGETS qca-ossl + LIBRARY DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + ARCHIVE DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + RUNTIME DESTINATION "${QCA_CRYPTO_INSTALL_DIR}") + + install_pdb(qca-ossl ${QCA_CRYPTO_INSTALL_DIR}) + endif() + + else(OPENSSL_FOUND) + disable_plugin("ossl") +endif(OPENSSL_FOUND) diff -Nru qca2-2.0.3/plugins/qca-ossl/COPYING qca2-2.1.0/plugins/qca-ossl/COPYING --- qca2-2.0.3/plugins/qca-ossl/COPYING 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-ossl/COPYING 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff -Nru qca2-2.0.3/plugins/qca-ossl/qca-ossl.cpp qca2-2.1.0/plugins/qca-ossl/qca-ossl.cpp --- qca2-2.0.3/plugins/qca-ossl/qca-ossl.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-ossl/qca-ossl.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,7319 @@ +/* + * Copyright (C) 2004-2007 Justin Karneges + * Copyright (C) 2004-2006 Brad Hards + * + * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#ifndef OSSL_097 +// comment this out if you'd rather use openssl 0.9.6 +#define OSSL_097 +#endif + +#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10000000L +// OpenSSL 1.0.0 makes a few changes that aren't very C++ friendly... +// Among other things, CHECKED_PTR_OF returns a void*, but is used in +// contexts requiring STACK pointers. +#undef CHECKED_PTR_OF +#define CHECKED_PTR_OF(type, p) \ + ((_STACK*) (1 ? p : (type*)0)) +#endif + +using namespace QCA; + +namespace opensslQCAPlugin { + +//---------------------------------------------------------------------------- +// Util +//---------------------------------------------------------------------------- +static SecureArray bio2buf(BIO *b) +{ + SecureArray buf; + while(1) { + SecureArray block(1024); + int ret = BIO_read(b, block.data(), block.size()); + if(ret <= 0) + break; + block.resize(ret); + buf.append(block); + if(ret != 1024) + break; + } + BIO_free(b); + return buf; +} + +static QByteArray bio2ba(BIO *b) +{ + QByteArray buf; + while(1) { + QByteArray block(1024, 0); + int ret = BIO_read(b, block.data(), block.size()); + if(ret <= 0) + break; + block.resize(ret); + buf.append(block); + if(ret != 1024) + break; + } + BIO_free(b); + return buf; +} + +static BigInteger bn2bi(BIGNUM *n) +{ + SecureArray buf(BN_num_bytes(n) + 1); + buf[0] = 0; // positive + BN_bn2bin(n, (unsigned char *)buf.data() + 1); + return BigInteger(buf); +} + +static BIGNUM *bi2bn(const BigInteger &n) +{ + SecureArray buf = n.toArray(); + return BN_bin2bn((const unsigned char *)buf.data(), buf.size(), NULL); +} + +// take lowest bytes of BIGNUM to fit +// pad with high byte zeroes to fit +static SecureArray bn2fixedbuf(BIGNUM *n, int size) +{ + SecureArray buf(BN_num_bytes(n)); + BN_bn2bin(n, (unsigned char *)buf.data()); + + SecureArray out(size); + memset(out.data(), 0, size); + int len = qMin(size, buf.size()); + memcpy(out.data() + (size - len), buf.data(), len); + return out; +} + +static SecureArray dsasig_der_to_raw(const SecureArray &in) +{ + DSA_SIG *sig = DSA_SIG_new(); + const unsigned char *inp = (const unsigned char *)in.data(); + d2i_DSA_SIG(&sig, &inp, in.size()); + + SecureArray part_r = bn2fixedbuf(sig->r, 20); + SecureArray part_s = bn2fixedbuf(sig->s, 20); + SecureArray result; + result.append(part_r); + result.append(part_s); + + DSA_SIG_free(sig); + return result; +} + +static SecureArray dsasig_raw_to_der(const SecureArray &in) +{ + if(in.size() != 40) + return SecureArray(); + + DSA_SIG *sig = DSA_SIG_new(); + SecureArray part_r(20); + SecureArray part_s(20); + memcpy(part_r.data(), in.data(), 20); + memcpy(part_s.data(), in.data() + 20, 20); + sig->r = BN_bin2bn((const unsigned char *)part_r.data(), part_r.size(), NULL); + sig->s = BN_bin2bn((const unsigned char *)part_s.data(), part_s.size(), NULL); + + int len = i2d_DSA_SIG(sig, NULL); + SecureArray result(len); + unsigned char *p = (unsigned char *)result.data(); + i2d_DSA_SIG(sig, &p); + + DSA_SIG_free(sig); + return result; +} + +static int passphrase_cb(char *buf, int size, int rwflag, void *u) +{ + Q_UNUSED(buf); + Q_UNUSED(size); + Q_UNUSED(rwflag); + Q_UNUSED(u); + return 0; +} + +/*static bool is_basic_constraint(const ConstraintType &t) +{ + bool basic = false; + switch(t.known()) + { + case DigitalSignature: + case NonRepudiation: + case KeyEncipherment: + case DataEncipherment: + case KeyAgreement: + case KeyCertificateSign: + case CRLSign: + case EncipherOnly: + case DecipherOnly: + basic = true; + break; + + case ServerAuth: + case ClientAuth: + case CodeSigning: + case EmailProtection: + case IPSecEndSystem: + case IPSecTunnel: + case IPSecUser: + case TimeStamping: + case OCSPSigning: + break; + } + return basic; +} + +static Constraints basic_only(const Constraints &list) +{ + Constraints out; + for(int n = 0; n < list.count(); ++n) + { + if(is_basic_constraint(list[n])) + out += list[n]; + } + return out; +} + +static Constraints ext_only(const Constraints &list) +{ + Constraints out; + for(int n = 0; n < list.count(); ++n) + { + if(!is_basic_constraint(list[n])) + out += list[n]; + } + return out; +}*/ + +// logic from Botan +/*static Constraints find_constraints(const PKeyContext &key, const Constraints &orig) +{ + Constraints constraints; + + if(key.key()->type() == PKey::RSA) + constraints += KeyEncipherment; + + if(key.key()->type() == PKey::DH) + constraints += KeyAgreement; + + if(key.key()->type() == PKey::RSA || key.key()->type() == PKey::DSA) + { + constraints += DigitalSignature; + constraints += NonRepudiation; + } + + Constraints limits = basic_only(orig); + Constraints the_rest = ext_only(orig); + + if(!limits.isEmpty()) + { + Constraints reduced; + for(int n = 0; n < constraints.count(); ++n) + { + if(limits.contains(constraints[n])) + reduced += constraints[n]; + } + constraints = reduced; + } + + constraints += the_rest; + + return constraints; +}*/ + +static void try_add_name_item(X509_NAME **name, int nid, const QString &val) +{ + if(val.isEmpty()) + return; + QByteArray buf = val.toLatin1(); + if(!(*name)) + *name = X509_NAME_new(); + X509_NAME_add_entry_by_NID(*name, nid, MBSTRING_ASC, (unsigned char *)buf.data(), buf.size(), -1, 0); +} + +static X509_NAME *new_cert_name(const CertificateInfo &info) +{ + X509_NAME *name = 0; + // FIXME support multiple items of each type + try_add_name_item(&name, NID_commonName, info.value(CommonName)); + try_add_name_item(&name, NID_countryName, info.value(Country)); + try_add_name_item(&name, NID_localityName, info.value(Locality)); + try_add_name_item(&name, NID_stateOrProvinceName, info.value(State)); + try_add_name_item(&name, NID_organizationName, info.value(Organization)); + try_add_name_item(&name, NID_organizationalUnitName, info.value(OrganizationalUnit)); + return name; +} + +static void try_get_name_item(X509_NAME *name, int nid, const CertificateInfoType &t, CertificateInfo *info) +{ + int loc; + loc = -1; + while ((loc = X509_NAME_get_index_by_NID(name, nid, loc)) != -1) { + X509_NAME_ENTRY *ne = X509_NAME_get_entry(name, loc); + ASN1_STRING *data = X509_NAME_ENTRY_get_data(ne); + QByteArray cs((const char *)data->data, data->length); + info->insert(t, QString::fromLatin1(cs)); + } +} + +static void try_get_name_item_by_oid(X509_NAME *name, const QString &oidText, const CertificateInfoType &t, CertificateInfo *info) +{ + ASN1_OBJECT *oid = OBJ_txt2obj( oidText.toLatin1().data(), 1); // 1 = only accept dotted input + if(!oid) + return; + + int loc; + loc = -1; + while ((loc = X509_NAME_get_index_by_OBJ(name, oid, loc)) != -1) { + X509_NAME_ENTRY *ne = X509_NAME_get_entry(name, loc); + ASN1_STRING *data = X509_NAME_ENTRY_get_data(ne); + QByteArray cs((const char *)data->data, data->length); + info->insert(t, QString::fromLatin1(cs)); + qDebug() << "oid: " << oidText << ", result: " << cs; + } + ASN1_OBJECT_free(oid); +} + +static CertificateInfo get_cert_name(X509_NAME *name) +{ + CertificateInfo info; + try_get_name_item(name, NID_commonName, CommonName, &info); + try_get_name_item(name, NID_countryName, Country, &info); + try_get_name_item_by_oid(name, QString("1.3.6.1.4.1.311.60.2.1.3"), IncorporationCountry, &info); + try_get_name_item(name, NID_localityName, Locality, &info); + try_get_name_item_by_oid(name, QString("1.3.6.1.4.1.311.60.2.1.1"), IncorporationLocality, &info); + try_get_name_item(name, NID_stateOrProvinceName, State, &info); + try_get_name_item_by_oid(name, QString("1.3.6.1.4.1.311.60.2.1.2"), IncorporationState, &info); + try_get_name_item(name, NID_organizationName, Organization, &info); + try_get_name_item(name, NID_organizationalUnitName, OrganizationalUnit, &info); + + // legacy email + { + CertificateInfo p9_info; + try_get_name_item(name, NID_pkcs9_emailAddress, EmailLegacy, &p9_info); + QList emails = info.values(Email); + QMapIterator it(p9_info); + while(it.hasNext()) + { + it.next(); + if(!emails.contains(it.value())) + info.insert(Email, it.value()); + } + } + + return info; +} + +static X509_EXTENSION *new_subject_key_id(X509 *cert) +{ + X509V3_CTX ctx; + X509V3_set_ctx_nodb(&ctx); + X509V3_set_ctx(&ctx, NULL, cert, NULL, NULL, 0); + X509_EXTENSION *ex = X509V3_EXT_conf_nid(NULL, &ctx, NID_subject_key_identifier, (char *)"hash"); + return ex; +} + +static X509_EXTENSION *new_basic_constraints(bool ca, int pathlen) +{ + BASIC_CONSTRAINTS *bs = BASIC_CONSTRAINTS_new(); + bs->ca = (ca ? 1: 0); + bs->pathlen = ASN1_INTEGER_new(); + ASN1_INTEGER_set(bs->pathlen, pathlen); + + X509_EXTENSION *ex = X509V3_EXT_i2d(NID_basic_constraints, 1, bs); // 1 = critical + BASIC_CONSTRAINTS_free(bs); + return ex; +} + +static void get_basic_constraints(X509_EXTENSION *ex, bool *ca, int *pathlen) +{ + BASIC_CONSTRAINTS *bs = (BASIC_CONSTRAINTS *)X509V3_EXT_d2i(ex); + *ca = (bs->ca ? true: false); + if(bs->pathlen) + *pathlen = ASN1_INTEGER_get(bs->pathlen); + else + *pathlen = 0; + BASIC_CONSTRAINTS_free(bs); +} + +enum ConstraintBit +{ + Bit_DigitalSignature = 0, + Bit_NonRepudiation = 1, + Bit_KeyEncipherment = 2, + Bit_DataEncipherment = 3, + Bit_KeyAgreement = 4, + Bit_KeyCertificateSign = 5, + Bit_CRLSign = 6, + Bit_EncipherOnly = 7, + Bit_DecipherOnly = 8 +}; + +static QByteArray ipaddress_string_to_bytes(const QString &) +{ + return QByteArray(4, 0); +} + +static GENERAL_NAME *new_general_name(const CertificateInfoType &t, const QString &val) +{ + GENERAL_NAME *name = 0; + switch(t.known()) + { + case Email: + { + QByteArray buf = val.toLatin1(); + + ASN1_IA5STRING *str = M_ASN1_IA5STRING_new(); + ASN1_STRING_set((ASN1_STRING *)str, (unsigned char *)buf.data(), buf.size()); + + name = GENERAL_NAME_new(); + name->type = GEN_EMAIL; + name->d.rfc822Name = str; + break; + } + case URI: + { + QByteArray buf = val.toLatin1(); + + ASN1_IA5STRING *str = M_ASN1_IA5STRING_new(); + ASN1_STRING_set((ASN1_STRING *)str, (unsigned char *)buf.data(), buf.size()); + + name = GENERAL_NAME_new(); + name->type = GEN_URI; + name->d.uniformResourceIdentifier = str; + break; + } + case DNS: + { + QByteArray buf = val.toLatin1(); + + ASN1_IA5STRING *str = M_ASN1_IA5STRING_new(); + ASN1_STRING_set((ASN1_STRING *)str, (unsigned char *)buf.data(), buf.size()); + + name = GENERAL_NAME_new(); + name->type = GEN_DNS; + name->d.dNSName = str; + break; + } + case IPAddress: + { + QByteArray buf = ipaddress_string_to_bytes(val); + + ASN1_OCTET_STRING *str = ASN1_OCTET_STRING_new(); + ASN1_STRING_set((ASN1_STRING *)str, (unsigned char *)buf.data(), buf.size()); + + name = GENERAL_NAME_new(); + name->type = GEN_IPADD; + name->d.iPAddress = str; + break; + } + case XMPP: + { + QByteArray buf = val.toUtf8(); + + ASN1_UTF8STRING *str = ASN1_UTF8STRING_new(); + ASN1_STRING_set((ASN1_STRING *)str, (unsigned char *)buf.data(), buf.size()); + + ASN1_TYPE *at = ASN1_TYPE_new(); + at->type = V_ASN1_UTF8STRING; + at->value.utf8string = str; + + OTHERNAME *other = OTHERNAME_new(); + other->type_id = OBJ_txt2obj("1.3.6.1.5.5.7.8.5", 1); // 1 = only accept dotted input + other->value = at; + + name = GENERAL_NAME_new(); + name->type = GEN_OTHERNAME; + name->d.otherName = other; + break; + } + default: + break; + } + return name; +} + +static void try_add_general_name(GENERAL_NAMES **gn, const CertificateInfoType &t, const QString &val) +{ + if(val.isEmpty()) + return; + GENERAL_NAME *name = new_general_name(t, val); + if(name) + { + if(!(*gn)) + *gn = sk_GENERAL_NAME_new_null(); + sk_GENERAL_NAME_push(*gn, name); + } +} + +static X509_EXTENSION *new_cert_subject_alt_name(const CertificateInfo &info) +{ + GENERAL_NAMES *gn = 0; + // FIXME support multiple items of each type + try_add_general_name(&gn, Email, info.value(Email)); + try_add_general_name(&gn, URI, info.value(URI)); + try_add_general_name(&gn, DNS, info.value(DNS)); + try_add_general_name(&gn, IPAddress, info.value(IPAddress)); + try_add_general_name(&gn, XMPP, info.value(XMPP)); + if(!gn) + return 0; + + X509_EXTENSION *ex = X509V3_EXT_i2d(NID_subject_alt_name, 0, gn); + sk_GENERAL_NAME_pop_free(gn, GENERAL_NAME_free); + return ex; +} + +static GENERAL_NAME *find_next_general_name(GENERAL_NAMES *names, int type, int *pos) +{ + int temp = *pos; + GENERAL_NAME *gn = 0; + *pos = -1; + for(int n = temp; n < sk_GENERAL_NAME_num(names); ++n) + { + GENERAL_NAME *i = sk_GENERAL_NAME_value(names, n); + if(i->type == type) + { + gn = i; + *pos = n; + break; + } + } + return gn; +} + +static void try_get_general_name(GENERAL_NAMES *names, const CertificateInfoType &t, CertificateInfo *info) +{ + switch(t.known()) + { + case Email: + { + int pos = 0; + while (pos != -1) + { + GENERAL_NAME *gn = find_next_general_name(names, GEN_EMAIL, &pos); + if (pos != -1) + { + QByteArray cs((const char *)ASN1_STRING_data(gn->d.rfc822Name), ASN1_STRING_length(gn->d.rfc822Name)); + info->insert(t, QString::fromLatin1(cs)); + ++pos; + } + } + break; + } + case URI: + { + int pos = 0; + while (pos != -1) + { + GENERAL_NAME *gn = find_next_general_name(names, GEN_URI, &pos); + if (pos != -1) + { + QByteArray cs((const char *)ASN1_STRING_data(gn->d.uniformResourceIdentifier), ASN1_STRING_length(gn->d.uniformResourceIdentifier)); + info->insert(t, QString::fromLatin1(cs)); + ++pos; + } + } + break; + } + case DNS: + { + int pos = 0; + while (pos != -1) + { + GENERAL_NAME *gn = find_next_general_name(names, GEN_DNS, &pos); + if (pos != -1) + { + QByteArray cs((const char *)ASN1_STRING_data(gn->d.dNSName), ASN1_STRING_length(gn->d.dNSName)); + info->insert(t, QString::fromLatin1(cs)); + ++pos; + } + } + break; + } + case IPAddress: + { + int pos = 0; + while (pos != -1) + { + GENERAL_NAME *gn = find_next_general_name(names, GEN_IPADD, &pos); + if (pos != -1) + { + ASN1_OCTET_STRING *str = gn->d.iPAddress; + QByteArray buf((const char *)ASN1_STRING_data(str), ASN1_STRING_length(str)); + + QString out; + // IPv4 (TODO: handle IPv6) + if(buf.size() == 4) + { + out = "0.0.0.0"; + } + else + break; + info->insert(t, out); + ++pos; + } + } + break; + } + case XMPP: + { + int pos = 0; + while( pos != -1) + { + GENERAL_NAME *gn = find_next_general_name(names, GEN_OTHERNAME, &pos); + if (pos != -1) + { + OTHERNAME *other = gn->d.otherName; + if(!other) + break; + + ASN1_OBJECT *obj = OBJ_txt2obj("1.3.6.1.5.5.7.8.5", 1); // 1 = only accept dotted input + if(OBJ_cmp(other->type_id, obj) != 0) + break; + ASN1_OBJECT_free(obj); + + ASN1_TYPE *at = other->value; + if(at->type != V_ASN1_UTF8STRING) + break; + + ASN1_UTF8STRING *str = at->value.utf8string; + QByteArray buf((const char *)ASN1_STRING_data(str), ASN1_STRING_length(str)); + info->insert(t, QString::fromUtf8(buf)); + ++pos; + } + } + break; + } + default: + break; + } +} + +static CertificateInfo get_cert_alt_name(X509_EXTENSION *ex) +{ + CertificateInfo info; + GENERAL_NAMES *gn = (GENERAL_NAMES *)X509V3_EXT_d2i(ex); + try_get_general_name(gn, Email, &info); + try_get_general_name(gn, URI, &info); + try_get_general_name(gn, DNS, &info); + try_get_general_name(gn, IPAddress, &info); + try_get_general_name(gn, XMPP, &info); + GENERAL_NAMES_free(gn); + return info; +} + +static X509_EXTENSION *new_cert_key_usage(const Constraints &constraints) +{ + ASN1_BIT_STRING *keyusage = 0; + for(int n = 0; n < constraints.count(); ++n) + { + int bit = -1; + switch(constraints[n].known()) + { + case DigitalSignature: + bit = Bit_DigitalSignature; + break; + case NonRepudiation: + bit = Bit_NonRepudiation; + break; + case KeyEncipherment: + bit = Bit_KeyEncipherment; + break; + case DataEncipherment: + bit = Bit_DataEncipherment; + break; + case KeyAgreement: + bit = Bit_KeyAgreement; + break; + case KeyCertificateSign: + bit = Bit_KeyCertificateSign; + break; + case CRLSign: + bit = Bit_CRLSign; + break; + case EncipherOnly: + bit = Bit_EncipherOnly; + break; + case DecipherOnly: + bit = Bit_DecipherOnly; + break; + default: + break; + } + if(bit != -1) + { + if(!keyusage) + keyusage = ASN1_BIT_STRING_new(); + ASN1_BIT_STRING_set_bit(keyusage, bit, 1); + } + } + if(!keyusage) + return 0; + + X509_EXTENSION *ex = X509V3_EXT_i2d(NID_key_usage, 1, keyusage); // 1 = critical + ASN1_BIT_STRING_free(keyusage); + return ex; +} + +static Constraints get_cert_key_usage(X509_EXTENSION *ex) +{ + Constraints constraints; + int bit_table[9] = + { + DigitalSignature, + NonRepudiation, + KeyEncipherment, + DataEncipherment, + KeyAgreement, + KeyCertificateSign, + CRLSign, + EncipherOnly, + DecipherOnly + }; + + ASN1_BIT_STRING *keyusage = (ASN1_BIT_STRING *)X509V3_EXT_d2i(ex); + for(int n = 0; n < 9; ++n) + { + if(ASN1_BIT_STRING_get_bit(keyusage, n)) + constraints += ConstraintType((ConstraintTypeKnown)bit_table[n]); + } + ASN1_BIT_STRING_free(keyusage); + return constraints; +} + +static X509_EXTENSION *new_cert_ext_key_usage(const Constraints &constraints) +{ + EXTENDED_KEY_USAGE *extkeyusage = 0; + for(int n = 0; n < constraints.count(); ++n) + { + int nid = -1; + // TODO: don't use known/nid, and instead just use OIDs + switch(constraints[n].known()) + { + case ServerAuth: + nid = NID_server_auth; + break; + case ClientAuth: + nid = NID_client_auth; + break; + case CodeSigning: + nid = NID_code_sign; + break; + case EmailProtection: + nid = NID_email_protect; + break; + case IPSecEndSystem: + nid = NID_ipsecEndSystem; + break; + case IPSecTunnel: + nid = NID_ipsecTunnel; + break; + case IPSecUser: + nid = NID_ipsecUser; + break; + case TimeStamping: + nid = NID_time_stamp; + break; + case OCSPSigning: + nid = NID_OCSP_sign; + break; + default: + break; + } + if(nid != -1) + { + if(!extkeyusage) + extkeyusage = sk_ASN1_OBJECT_new_null(); + ASN1_OBJECT *obj = OBJ_nid2obj(nid); + sk_ASN1_OBJECT_push(extkeyusage, obj); + } + } + if(!extkeyusage) + return 0; + + X509_EXTENSION *ex = X509V3_EXT_i2d(NID_ext_key_usage, 0, extkeyusage); // 0 = not critical + sk_ASN1_OBJECT_pop_free(extkeyusage, ASN1_OBJECT_free); + return ex; +} + +static Constraints get_cert_ext_key_usage(X509_EXTENSION *ex) +{ + Constraints constraints; + + EXTENDED_KEY_USAGE *extkeyusage = (EXTENDED_KEY_USAGE *)X509V3_EXT_d2i(ex); + for(int n = 0; n < sk_ASN1_OBJECT_num(extkeyusage); ++n) + { + ASN1_OBJECT *obj = sk_ASN1_OBJECT_value(extkeyusage, n); + int nid = OBJ_obj2nid(obj); + if(nid == NID_undef) + continue; + + // TODO: don't use known/nid, and instead just use OIDs + int t = -1; + switch(nid) + { + case NID_server_auth: + t = ServerAuth; + break; + case NID_client_auth: + t = ClientAuth; + break; + case NID_code_sign: + t = CodeSigning; + break; + case NID_email_protect: + t = EmailProtection; + break; + case NID_ipsecEndSystem: + t = IPSecEndSystem; + break; + case NID_ipsecTunnel: + t = IPSecTunnel; + break; + case NID_ipsecUser: + t = IPSecUser; + break; + case NID_time_stamp: + t = TimeStamping; + break; + case NID_OCSP_sign: + t = OCSPSigning; + break; + }; + + if(t == -1) + continue; + + constraints.append(ConstraintType((ConstraintTypeKnown)t)); + } + sk_ASN1_OBJECT_pop_free(extkeyusage, ASN1_OBJECT_free); + return constraints; +} + +static X509_EXTENSION *new_cert_policies(const QStringList &policies) +{ + STACK_OF(POLICYINFO) *pols = 0; + for(int n = 0; n < policies.count(); ++n) + { + QByteArray cs = policies[n].toLatin1(); + ASN1_OBJECT *obj = OBJ_txt2obj(cs.data(), 1); // 1 = only accept dotted input + if(!obj) + continue; + if(!pols) + pols = sk_POLICYINFO_new_null(); + POLICYINFO *pol = POLICYINFO_new(); + pol->policyid = obj; + sk_POLICYINFO_push(pols, pol); + } + if(!pols) + return 0; + + X509_EXTENSION *ex = X509V3_EXT_i2d(NID_certificate_policies, 0, pols); // 0 = not critical + sk_POLICYINFO_pop_free(pols, POLICYINFO_free); + return ex; +} + +static QStringList get_cert_policies(X509_EXTENSION *ex) +{ + QStringList out; + STACK_OF(POLICYINFO) *pols = (STACK_OF(POLICYINFO) *)X509V3_EXT_d2i(ex); + for(int n = 0; n < sk_POLICYINFO_num(pols); ++n) + { + POLICYINFO *pol = sk_POLICYINFO_value(pols, n); + QByteArray buf(128, 0); + OBJ_obj2txt((char *)buf.data(), buf.size(), pol->policyid, 1); // 1 = only accept dotted input + out += QString::fromLatin1(buf); + } + sk_POLICYINFO_pop_free(pols, POLICYINFO_free); + return out; +} + +static QByteArray get_cert_subject_key_id(X509_EXTENSION *ex) +{ + ASN1_OCTET_STRING *skid = (ASN1_OCTET_STRING *)X509V3_EXT_d2i(ex); + QByteArray out((const char *)ASN1_STRING_data(skid), ASN1_STRING_length(skid)); + ASN1_OCTET_STRING_free(skid); + return out; +} + +// If you get any more crashes in this code, please provide a copy +// of the cert to bradh AT frogmouth.net +static QByteArray get_cert_issuer_key_id(X509_EXTENSION *ex) +{ + AUTHORITY_KEYID *akid = (AUTHORITY_KEYID *)X509V3_EXT_d2i(ex); + QByteArray out; + if (akid->keyid) + out = QByteArray((const char *)ASN1_STRING_data(akid->keyid), ASN1_STRING_length(akid->keyid)); + AUTHORITY_KEYID_free(akid); + return out; +} + +static Validity convert_verify_error(int err) +{ + // TODO: ErrorExpiredCA + Validity rc; + switch(err) + { + case X509_V_ERR_CERT_REJECTED: + rc = ErrorRejected; + break; + case X509_V_ERR_CERT_UNTRUSTED: + rc = ErrorUntrusted; + break; + case X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE: + case X509_V_ERR_CERT_SIGNATURE_FAILURE: + case X509_V_ERR_CRL_SIGNATURE_FAILURE: + case X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE: + case X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE: + rc = ErrorSignatureFailed; + break; + case X509_V_ERR_INVALID_CA: + case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: + case X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY: + case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY: + rc = ErrorInvalidCA; + break; + case X509_V_ERR_INVALID_PURPOSE: // note: not used by store verify + rc = ErrorInvalidPurpose; + break; + case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: + case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: + rc = ErrorSelfSigned; + break; + case X509_V_ERR_CERT_REVOKED: + rc = ErrorRevoked; + break; + case X509_V_ERR_PATH_LENGTH_EXCEEDED: + rc = ErrorPathLengthExceeded; + break; + case X509_V_ERR_CERT_NOT_YET_VALID: + case X509_V_ERR_CERT_HAS_EXPIRED: + case X509_V_ERR_CRL_NOT_YET_VALID: + case X509_V_ERR_CRL_HAS_EXPIRED: + case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD: + case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD: + case X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD: + case X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD: + rc = ErrorExpired; + break; + case X509_V_ERR_APPLICATION_VERIFICATION: + case X509_V_ERR_OUT_OF_MEM: + case X509_V_ERR_UNABLE_TO_GET_CRL: + case X509_V_ERR_CERT_CHAIN_TOO_LONG: + default: + rc = ErrorValidityUnknown; + break; + } + return rc; +} + +EVP_PKEY *qca_d2i_PKCS8PrivateKey(const SecureArray &in, EVP_PKEY **x, pem_password_cb *cb, void *u) +{ + PKCS8_PRIV_KEY_INFO *p8inf; + + // first try unencrypted form + BIO *bi = BIO_new(BIO_s_mem()); + BIO_write(bi, in.data(), in.size()); + p8inf = d2i_PKCS8_PRIV_KEY_INFO_bio(bi, NULL); + BIO_free(bi); + if(!p8inf) + { + X509_SIG *p8; + + // now try encrypted form + bi = BIO_new(BIO_s_mem()); + BIO_write(bi, in.data(), in.size()); + p8 = d2i_PKCS8_bio(bi, NULL); + BIO_free(bi); + if(!p8) + return NULL; + + // get passphrase + char psbuf[PEM_BUFSIZE]; + int klen; + if(cb) + klen = cb(psbuf, PEM_BUFSIZE, 0, u); + else + klen = PEM_def_callback(psbuf, PEM_BUFSIZE, 0, u); + if(klen <= 0) + { + PEMerr(PEM_F_D2I_PKCS8PRIVATEKEY_BIO, PEM_R_BAD_PASSWORD_READ); + X509_SIG_free(p8); + return NULL; + } + + // decrypt it + p8inf = PKCS8_decrypt(p8, psbuf, klen); + X509_SIG_free(p8); + if(!p8inf) + return NULL; + } + + EVP_PKEY *ret = EVP_PKCS82PKEY(p8inf); + PKCS8_PRIV_KEY_INFO_free(p8inf); + if(!ret) + return NULL; + if(x) + { + if(*x) + EVP_PKEY_free(*x); + *x = ret; + } + return ret; +} + +class opensslHashContext : public HashContext +{ +public: + opensslHashContext(const EVP_MD *algorithm, Provider *p, const QString &type) : HashContext(p, type) + { + m_algorithm = algorithm; + EVP_DigestInit( &m_context, m_algorithm ); + } + + ~opensslHashContext() + { + EVP_MD_CTX_cleanup(&m_context); + } + + void clear() + { + EVP_MD_CTX_cleanup(&m_context); + EVP_DigestInit( &m_context, m_algorithm ); + } + + void update(const MemoryRegion &a) + { + EVP_DigestUpdate( &m_context, (unsigned char*)a.data(), a.size() ); + } + + MemoryRegion final() + { + SecureArray a( EVP_MD_size( m_algorithm ) ); + EVP_DigestFinal( &m_context, (unsigned char*)a.data(), 0 ); + return a; + } + + Provider::Context *clone() const + { + return new opensslHashContext(*this); + } + +protected: + const EVP_MD *m_algorithm; + EVP_MD_CTX m_context; +}; + + +class opensslPbkdf1Context : public KDFContext +{ +public: + opensslPbkdf1Context(const EVP_MD *algorithm, Provider *p, const QString &type) : KDFContext(p, type) + { + m_algorithm = algorithm; + EVP_DigestInit( &m_context, m_algorithm ); + } + + Provider::Context *clone() const + { + return new opensslPbkdf1Context( *this ); + } + + SymmetricKey makeKey(const SecureArray &secret, const InitializationVector &salt, + unsigned int keyLength, unsigned int iterationCount) + { + /* from RFC2898: + Steps: + + 1. If dkLen > 16 for MD2 and MD5, or dkLen > 20 for SHA-1, output + "derived key too long" and stop. + */ + if ( keyLength > (unsigned int)EVP_MD_size( m_algorithm ) ) { + std::cout << "derived key too long" << std::endl; + return SymmetricKey(); + } + + /* + 2. Apply the underlying hash function Hash for c iterations to the + concatenation of the password P and the salt S, then extract + the first dkLen octets to produce a derived key DK: + + T_1 = Hash (P || S) , + T_2 = Hash (T_1) , + ... + T_c = Hash (T_{c-1}) , + DK = Tc<0..dkLen-1> + */ + // calculate T_1 + EVP_DigestUpdate( &m_context, (unsigned char*)secret.data(), secret.size() ); + EVP_DigestUpdate( &m_context, (unsigned char*)salt.data(), salt.size() ); + SecureArray a( EVP_MD_size( m_algorithm ) ); + EVP_DigestFinal( &m_context, (unsigned char*)a.data(), 0 ); + + // calculate T_2 up to T_c + for ( unsigned int i = 2; i <= iterationCount; ++i ) { + EVP_DigestInit( &m_context, m_algorithm ); + EVP_DigestUpdate( &m_context, (unsigned char*)a.data(), a.size() ); + EVP_DigestFinal( &m_context, (unsigned char*)a.data(), 0 ); + } + + // shrink a to become DK, of the required length + a.resize(keyLength); + + /* + 3. Output the derived key DK. + */ + return a; + } + + SymmetricKey makeKey(const SecureArray &secret, + const InitializationVector &salt, + unsigned int keyLength, + int msecInterval, + unsigned int *iterationCount) + { + Q_ASSERT(iterationCount != NULL); + QTime timer; + + /* from RFC2898: + Steps: + + 1. If dkLen > 16 for MD2 and MD5, or dkLen > 20 for SHA-1, output + "derived key too long" and stop. + */ + if ( keyLength > (unsigned int)EVP_MD_size( m_algorithm ) ) { + std::cout << "derived key too long" << std::endl; + return SymmetricKey(); + } + + /* + 2. Apply the underlying hash function Hash for M milliseconds + to the concatenation of the password P and the salt S, incrementing c, + then extract the first dkLen octets to produce a derived key DK: + + time from M to 0 + T_1 = Hash (P || S) , + T_2 = Hash (T_1) , + ... + T_c = Hash (T_{c-1}) , + when time = 0: stop, + DK = Tc<0..dkLen-1> + */ + // calculate T_1 + EVP_DigestUpdate( &m_context, (unsigned char*)secret.data(), secret.size() ); + EVP_DigestUpdate( &m_context, (unsigned char*)salt.data(), salt.size() ); + SecureArray a( EVP_MD_size( m_algorithm ) ); + EVP_DigestFinal( &m_context, (unsigned char*)a.data(), 0 ); + + // calculate T_2 up to T_c + *iterationCount = 2 - 1; // <- Have to remove 1, unless it computes one + timer.start(); // ^ time more than the base function + // ^ with the same iterationCount + while (timer.elapsed() < msecInterval) { + EVP_DigestInit( &m_context, m_algorithm ); + EVP_DigestUpdate( &m_context, (unsigned char*)a.data(), a.size() ); + EVP_DigestFinal( &m_context, (unsigned char*)a.data(), 0 ); + ++(*iterationCount); + } + + // shrink a to become DK, of the required length + a.resize(keyLength); + + /* + 3. Output the derived key DK. + */ + return a; + } + +protected: + const EVP_MD *m_algorithm; + EVP_MD_CTX m_context; +}; + +class opensslPbkdf2Context : public KDFContext +{ +public: + opensslPbkdf2Context(Provider *p, const QString &type) : KDFContext(p, type) + { + } + + Provider::Context *clone() const + { + return new opensslPbkdf2Context( *this ); + } + + SymmetricKey makeKey(const SecureArray &secret, const InitializationVector &salt, + unsigned int keyLength, unsigned int iterationCount) + { + SecureArray out(keyLength); + PKCS5_PBKDF2_HMAC_SHA1( (char*)secret.data(), secret.size(), + (unsigned char*)salt.data(), salt.size(), + iterationCount, keyLength, (unsigned char*)out.data() ); + return out; + } + + SymmetricKey makeKey(const SecureArray &secret, + const InitializationVector &salt, + unsigned int keyLength, + int msecInterval, + unsigned int *iterationCount) + { + Q_ASSERT(iterationCount != NULL); + QTime timer; + SecureArray out(keyLength); + + *iterationCount = 0; + timer.start(); + + // PBKDF2 needs an iterationCount itself, unless PBKDF1. + // So we need to calculate first the number of iterations for + // That time interval, then feed the iterationCounts to PBKDF2 + while (timer.elapsed() < msecInterval) { + PKCS5_PBKDF2_HMAC_SHA1((char*)secret.data(), + secret.size(), + (unsigned char*)salt.data(), + salt.size(), + 1, + keyLength, + (unsigned char*)out.data()); + ++(*iterationCount); + } + + // Now we can directely call makeKey base function, + // as we now have the iterationCount + out = makeKey(secret, salt, keyLength, *iterationCount); + + return out; + } + +protected: +}; + +class opensslHMACContext : public MACContext +{ +public: + opensslHMACContext(const EVP_MD *algorithm, Provider *p, const QString &type) : MACContext(p, type) + { + m_algorithm = algorithm; + HMAC_CTX_init( &m_context ); + } + + void setup(const SymmetricKey &key) + { + HMAC_Init_ex( &m_context, key.data(), key.size(), m_algorithm, 0 ); + } + + KeyLength keyLength() const + { + return anyKeyLength(); + } + + void update(const MemoryRegion &a) + { + HMAC_Update( &m_context, (unsigned char *)a.data(), a.size() ); + } + + void final(MemoryRegion *out) + { + SecureArray sa( EVP_MD_size( m_algorithm ), 0 ); + HMAC_Final(&m_context, (unsigned char *)sa.data(), 0 ); + HMAC_CTX_cleanup(&m_context); + *out = sa; + } + + Provider::Context *clone() const + { + return new opensslHMACContext(*this); + } + +protected: + HMAC_CTX m_context; + const EVP_MD *m_algorithm; +}; + +//---------------------------------------------------------------------------- +// EVPKey +//---------------------------------------------------------------------------- + +// note: this class squelches processing errors, since QCA doesn't care about them +class EVPKey +{ +public: + enum State { Idle, SignActive, SignError, VerifyActive, VerifyError }; + EVP_PKEY *pkey; + EVP_MD_CTX mdctx; + State state; + bool raw_type; + SecureArray raw; + + EVPKey() + { + pkey = 0; + raw_type = false; + state = Idle; + } + + EVPKey(const EVPKey &from) + { + pkey = from.pkey; + CRYPTO_add(&pkey->references, 1, CRYPTO_LOCK_EVP_PKEY); + raw_type = false; + state = Idle; + } + + ~EVPKey() + { + reset(); + } + + void reset() + { + if(pkey) + EVP_PKEY_free(pkey); + pkey = 0; + raw.clear (); + raw_type = false; + } + + void startSign(const EVP_MD *type) + { + state = SignActive; + if(!type) + { + raw_type = true; + raw.clear (); + } + else + { + raw_type = false; + EVP_MD_CTX_init(&mdctx); + if(!EVP_SignInit_ex(&mdctx, type, NULL)) + state = SignError; + } + } + + void startVerify(const EVP_MD *type) + { + state = VerifyActive; + if(!type) + { + raw_type = true; + raw.clear (); + } + else + { + raw_type = false; + EVP_MD_CTX_init(&mdctx); + if(!EVP_VerifyInit_ex(&mdctx, type, NULL)) + state = VerifyError; + } + } + + void update(const MemoryRegion &in) + { + if(state == SignActive) + { + if (raw_type) + raw += in; + else + if(!EVP_SignUpdate(&mdctx, in.data(), (unsigned int)in.size())) + state = SignError; + } + else if(state == VerifyActive) + { + if (raw_type) + raw += in; + else + if(!EVP_VerifyUpdate(&mdctx, in.data(), (unsigned int)in.size())) + state = VerifyError; + } + } + + SecureArray endSign() + { + if(state == SignActive) + { + SecureArray out(EVP_PKEY_size(pkey)); + unsigned int len = out.size(); + if (raw_type) + { + if (pkey->type == EVP_PKEY_RSA) + { + if(RSA_private_encrypt (raw.size(), (unsigned char *)raw.data(), + (unsigned char *)out.data(), pkey->pkey.rsa, + RSA_PKCS1_PADDING) == -1) { + + state = SignError; + return SecureArray (); + } + } + else if (pkey->type == EVP_PKEY_DSA) + { + state = SignError; + return SecureArray (); + } + else + { + state = SignError; + return SecureArray (); + } + } + else { + if(!EVP_SignFinal(&mdctx, (unsigned char *)out.data(), &len, pkey)) + { + state = SignError; + return SecureArray(); + } + } + out.resize(len); + state = Idle; + return out; + } + else + return SecureArray(); + } + + bool endVerify(const SecureArray &sig) + { + if(state == VerifyActive) + { + if (raw_type) + { + SecureArray out(EVP_PKEY_size(pkey)); + int len = 0; + + if (pkey->type == EVP_PKEY_RSA) { + if((len = RSA_public_decrypt (sig.size(), (unsigned char *)sig.data(), + (unsigned char *)out.data (), pkey->pkey.rsa, + RSA_PKCS1_PADDING)) == -1) { + + state = VerifyError; + return false; + } + } + else if (pkey->type == EVP_PKEY_DSA) + { + state = VerifyError; + return false; + } + else + { + state = VerifyError; + return false; + } + + out.resize (len); + + if (out != raw) { + state = VerifyError; + return false; + } + } + else + { + if(EVP_VerifyFinal(&mdctx, (unsigned char *)sig.data(), (unsigned int)sig.size(), pkey) != 1) + { + state = VerifyError; + return false; + } + } + state = Idle; + return true; + } + else + return false; + } +}; + +//---------------------------------------------------------------------------- +// MyDLGroup +//---------------------------------------------------------------------------- + +// IETF primes from Botan +const char* IETF_1024_PRIME = + "FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1" + "29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD" + "EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245" + "E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED" + "EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381" + "FFFFFFFF FFFFFFFF"; + +const char* IETF_2048_PRIME = + "FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1" + "29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD" + "EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245" + "E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED" + "EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE45B3D" + "C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 FD24CF5F" + "83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D" + "670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B" + "E39E772C 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9" + "DE2BCBF6 95581718 3995497C EA956AE5 15D22618 98FA0510" + "15728E5A 8AACAA68 FFFFFFFF FFFFFFFF"; + +const char* IETF_4096_PRIME = + "FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1" + "29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD" + "EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245" + "E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED" + "EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE45B3D" + "C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8 FD24CF5F" + "83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D" + "670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B" + "E39E772C 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9" + "DE2BCBF6 95581718 3995497C EA956AE5 15D22618 98FA0510" + "15728E5A 8AAAC42D AD33170D 04507A33 A85521AB DF1CBA64" + "ECFB8504 58DBEF0A 8AEA7157 5D060C7D B3970F85 A6E1E4C7" + "ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226 1AD2EE6B" + "F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C" + "BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31" + "43DB5BFC E0FD108E 4B82D120 A9210801 1A723C12 A787E6D7" + "88719A10 BDBA5B26 99C32718 6AF4E23C 1A946834 B6150BDA" + "2583E9CA 2AD44CE8 DBBBC2DB 04DE8EF9 2E8EFC14 1FBECAA6" + "287C5947 4E6BC05D 99B2964F A090C3A2 233BA186 515BE7ED" + "1F612970 CEE2D7AF B81BDD76 2170481C D0069127 D5B05AA9" + "93B4EA98 8D8FDDC1 86FFB7DC 90A6C08F 4DF435C9 34063199" + "FFFFFFFF FFFFFFFF"; + +// JCE seeds from Botan +const char* JCE_512_SEED = "B869C82B 35D70E1B 1FF91B28 E37A62EC DC34409B"; +const int JCE_512_COUNTER = 123; + +const char* JCE_768_SEED = "77D0F8C4 DAD15EB8 C4F2F8D6 726CEFD9 6D5BB399"; +const int JCE_768_COUNTER = 263; + +const char* JCE_1024_SEED = "8D515589 4229D5E6 89EE01E6 018A237E 2CAE64CD"; +const int JCE_1024_COUNTER = 92; + +static QByteArray dehex(const QString &hex) +{ + QString str; + for(int n = 0; n < hex.length(); ++n) + { + if(hex[n] != ' ') + str += hex[n]; + } + return hexToArray(str); +} + +static BigInteger decode(const QString &prime) +{ + QByteArray a(1, 0); // 1 byte of zero padding + a.append(dehex(prime)); + return BigInteger(SecureArray(a)); +} + +static QByteArray decode_seed(const QString &hex_seed) +{ + return dehex(hex_seed); +} + +class DLParams +{ +public: + BigInteger p, q, g; +}; + +static bool make_dlgroup(const QByteArray &seed, int bits, int counter, DLParams *params) +{ + int ret_counter; + DSA *dsa = DSA_generate_parameters(bits, (unsigned char *)seed.data(), seed.size(), &ret_counter, NULL, NULL, NULL); + if(!dsa) + return false; + if(ret_counter != counter) + return false; + params->p = bn2bi(dsa->p); + params->q = bn2bi(dsa->q); + params->g = bn2bi(dsa->g); + DSA_free(dsa); + return true; +} + +static bool get_dlgroup(const BigInteger &p, const BigInteger &g, DLParams *params) +{ + params->p = p; + params->q = BigInteger(0); + params->g = g; + return true; +} + +class DLGroupMaker : public QThread +{ + Q_OBJECT +public: + DLGroupSet set; + bool ok; + DLParams params; + + DLGroupMaker(DLGroupSet _set) + { + set = _set; + } + + ~DLGroupMaker() + { + wait(); + } + + virtual void run() + { + switch (set) + { +#ifndef OPENSSL_FIPS + case DSA_512: + ok = make_dlgroup(decode_seed(JCE_512_SEED), 512, JCE_512_COUNTER, ¶ms); + break; + + case DSA_768: + ok = make_dlgroup(decode_seed(JCE_768_SEED), 768, JCE_768_COUNTER, ¶ms); + break; + + case DSA_1024: + ok = make_dlgroup(decode_seed(JCE_1024_SEED), 1024, JCE_1024_COUNTER, ¶ms); + break; +#endif + + case IETF_1024: + ok = get_dlgroup(decode(IETF_1024_PRIME), 2, ¶ms); + break; + + case IETF_2048: + ok = get_dlgroup(decode(IETF_2048_PRIME), 2, ¶ms); + break; + + case IETF_4096: + ok = get_dlgroup(decode(IETF_4096_PRIME), 2, ¶ms); + break; + + default: + ok = false; + break; + } + } +}; + +class MyDLGroup : public DLGroupContext +{ + Q_OBJECT +public: + DLGroupMaker *gm; + bool wasBlocking; + DLParams params; + bool empty; + + MyDLGroup(Provider *p) : DLGroupContext(p) + { + gm = 0; + empty = true; + } + + MyDLGroup(const MyDLGroup &from) : DLGroupContext(from.provider()) + { + gm = 0; + empty = true; + } + + ~MyDLGroup() + { + delete gm; + } + + virtual Provider::Context *clone() const + { + return new MyDLGroup(*this); + } + + virtual QList supportedGroupSets() const + { + QList list; + + // DSA_* was removed in FIPS specification + // https://bugzilla.redhat.com/show_bug.cgi?id=1144655 +#ifndef OPENSSL_FIPS + list += DSA_512; + list += DSA_768; + list += DSA_1024; +#endif + list += IETF_1024; + list += IETF_2048; + list += IETF_4096; + return list; + } + + virtual bool isNull() const + { + return empty; + } + + virtual void fetchGroup(DLGroupSet set, bool block) + { + params = DLParams(); + empty = true; + + gm = new DLGroupMaker(set); + wasBlocking = block; + if(block) + { + gm->run(); + gm_finished(); + } + else + { + connect(gm, SIGNAL(finished()), SLOT(gm_finished())); + gm->start(); + } + } + + virtual void getResult(BigInteger *p, BigInteger *q, BigInteger *g) const + { + *p = params.p; + *q = params.q; + *g = params.g; + } + +private slots: + void gm_finished() + { + bool ok = gm->ok; + if(ok) + { + params = gm->params; + empty = false; + } + + if(wasBlocking) + delete gm; + else + gm->deleteLater(); + gm = 0; + + if(!wasBlocking) + emit finished(); + } +}; + +//---------------------------------------------------------------------------- +// RSAKey +//---------------------------------------------------------------------------- +class RSAKeyMaker : public QThread +{ + Q_OBJECT +public: + RSA *result; + int bits, exp; + + RSAKeyMaker(int _bits, int _exp, QObject *parent = 0) : QThread(parent), result(0), bits(_bits), exp(_exp) + { + } + + ~RSAKeyMaker() + { + wait(); + if(result) + RSA_free(result); + } + + virtual void run() + { + RSA *rsa = RSA_generate_key(bits, exp, NULL, NULL); + if(!rsa) + return; + result = rsa; + } + + RSA *takeResult() + { + RSA *rsa = result; + result = 0; + return rsa; + } +}; + +class RSAKey : public RSAContext +{ + Q_OBJECT +public: + EVPKey evp; + RSAKeyMaker *keymaker; + bool wasBlocking; + bool sec; + + RSAKey(Provider *p) : RSAContext(p) + { + keymaker = 0; + sec = false; + } + + RSAKey(const RSAKey &from) : RSAContext(from.provider()), evp(from.evp) + { + keymaker = 0; + sec = from.sec; + } + + ~RSAKey() + { + delete keymaker; + } + + virtual Provider::Context *clone() const + { + return new RSAKey(*this); + } + + virtual bool isNull() const + { + return (evp.pkey ? false: true); + } + + virtual PKey::Type type() const + { + return PKey::RSA; + } + + virtual bool isPrivate() const + { + return sec; + } + + virtual bool canExport() const + { + return true; + } + + virtual void convertToPublic() + { + if(!sec) + return; + + // extract the public key into DER format + int len = i2d_RSAPublicKey(evp.pkey->pkey.rsa, NULL); + SecureArray result(len); + unsigned char *p = (unsigned char *)result.data(); + i2d_RSAPublicKey(evp.pkey->pkey.rsa, &p); + p = (unsigned char *)result.data(); + + // put the DER public key back into openssl + evp.reset(); + RSA *rsa; +#ifdef OSSL_097 + rsa = d2i_RSAPublicKey(NULL, (const unsigned char **)&p, result.size()); +#else + rsa = d2i_RSAPublicKey(NULL, (unsigned char **)&p, result.size()); +#endif + evp.pkey = EVP_PKEY_new(); + EVP_PKEY_assign_RSA(evp.pkey, rsa); + sec = false; + } + + virtual int bits() const + { + return EVP_PKEY_bits(evp.pkey); + } + + virtual int maximumEncryptSize(EncryptionAlgorithm alg) const + { + RSA *rsa = evp.pkey->pkey.rsa; + int size = 0; + switch(alg) + { + case EME_PKCS1v15: size = RSA_size(rsa) - 11 - 1; break; + case EME_PKCS1_OAEP: size = RSA_size(rsa) - 41 - 1; break; + case EME_PKCS1v15_SSL: size = RSA_size(rsa) - 11 - 1; break; + case EME_NO_PADDING: size = RSA_size(rsa) - 1; break; + } + + return size; + } + + virtual SecureArray encrypt(const SecureArray &in, EncryptionAlgorithm alg) + { + RSA *rsa = evp.pkey->pkey.rsa; + SecureArray buf = in; + int max = maximumEncryptSize(alg); + + if(buf.size() > max) + buf.resize(max); + SecureArray result(RSA_size(rsa)); + + int pad; + switch(alg) + { + case EME_PKCS1v15: pad = RSA_PKCS1_PADDING; break; + case EME_PKCS1_OAEP: pad = RSA_PKCS1_OAEP_PADDING; break; + case EME_PKCS1v15_SSL: pad = RSA_SSLV23_PADDING; break; + case EME_NO_PADDING: pad = RSA_NO_PADDING; break; + default: return SecureArray(); break; + } + + int ret; + if (isPrivate()) + ret = RSA_private_encrypt(buf.size(), (unsigned char *)buf.data(), (unsigned char *)result.data(), rsa, pad); + else + ret = RSA_public_encrypt(buf.size(), (unsigned char *)buf.data(), (unsigned char *)result.data(), rsa, pad); + + if(ret < 0) + return SecureArray(); + result.resize(ret); + + return result; + } + + virtual bool decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg) + { + RSA *rsa = evp.pkey->pkey.rsa; + SecureArray result(RSA_size(rsa)); + int pad; + + switch(alg) + { + case EME_PKCS1v15: pad = RSA_PKCS1_PADDING; break; + case EME_PKCS1_OAEP: pad = RSA_PKCS1_OAEP_PADDING; break; + case EME_PKCS1v15_SSL: pad = RSA_SSLV23_PADDING; break; + case EME_NO_PADDING: pad = RSA_NO_PADDING; break; + default: return false; break; + } + + int ret; + if (isPrivate()) + ret = RSA_private_decrypt(in.size(), (unsigned char *)in.data(), (unsigned char *)result.data(), rsa, pad); + else + ret = RSA_public_decrypt(in.size(), (unsigned char *)in.data(), (unsigned char *)result.data(), rsa, pad); + + if(ret < 0) + return false; + result.resize(ret); + + *out = result; + return true; + } + + virtual void startSign(SignatureAlgorithm alg, SignatureFormat) + { + const EVP_MD *md = 0; + if(alg == EMSA3_SHA1) + md = EVP_sha1(); + else if(alg == EMSA3_MD5) + md = EVP_md5(); +#ifdef HAVE_OPENSSL_MD2 + else if(alg == EMSA3_MD2) + md = EVP_md2(); +#endif + else if(alg == EMSA3_RIPEMD160) + md = EVP_ripemd160(); + else if(alg == EMSA3_SHA224) + md = EVP_sha224(); + else if(alg == EMSA3_SHA256) + md = EVP_sha256(); + else if(alg == EMSA3_SHA384) + md = EVP_sha384(); + else if(alg == EMSA3_SHA512) + md = EVP_sha512(); + else if(alg == EMSA3_Raw) + { + // md = 0 + } + evp.startSign(md); + } + + virtual void startVerify(SignatureAlgorithm alg, SignatureFormat) + { + const EVP_MD *md = 0; + if(alg == EMSA3_SHA1) + md = EVP_sha1(); + else if(alg == EMSA3_MD5) + md = EVP_md5(); +#ifdef HAVE_OPENSSL_MD2 + else if(alg == EMSA3_MD2) + md = EVP_md2(); +#endif + else if(alg == EMSA3_RIPEMD160) + md = EVP_ripemd160(); + else if(alg == EMSA3_SHA224) + md = EVP_sha224(); + else if(alg == EMSA3_SHA256) + md = EVP_sha256(); + else if(alg == EMSA3_SHA384) + md = EVP_sha384(); + else if(alg == EMSA3_SHA512) + md = EVP_sha512(); + else if(alg == EMSA3_Raw) + { + // md = 0 + } + evp.startVerify(md); + } + + virtual void update(const MemoryRegion &in) + { + evp.update(in); + } + + virtual QByteArray endSign() + { + return evp.endSign().toByteArray(); + } + + virtual bool endVerify(const QByteArray &sig) + { + return evp.endVerify(sig); + } + + virtual void createPrivate(int bits, int exp, bool block) + { + evp.reset(); + + keymaker = new RSAKeyMaker(bits, exp, !block ? this : 0); + wasBlocking = block; + if(block) + { + keymaker->run(); + km_finished(); + } + else + { + connect(keymaker, SIGNAL(finished()), SLOT(km_finished())); + keymaker->start(); + } + } + + virtual void createPrivate(const BigInteger &n, const BigInteger &e, const BigInteger &p, const BigInteger &q, const BigInteger &d) + { + evp.reset(); + + RSA *rsa = RSA_new(); + rsa->n = bi2bn(n); + rsa->e = bi2bn(e); + rsa->p = bi2bn(p); + rsa->q = bi2bn(q); + rsa->d = bi2bn(d); + + if(!rsa->n || !rsa->e || !rsa->p || !rsa->q || !rsa->d) + { + RSA_free(rsa); + return; + } + + // When private key has no Public Exponent (e) or Private Exponent (d) + // need to disable blinding. Otherwise decryption will be broken. + // http://www.mail-archive.com/openssl-users@openssl.org/msg63530.html + if(BN_is_zero(rsa->e) || BN_is_zero(rsa->d)) + RSA_blinding_off(rsa); + + evp.pkey = EVP_PKEY_new(); + EVP_PKEY_assign_RSA(evp.pkey, rsa); + sec = true; + } + + virtual void createPublic(const BigInteger &n, const BigInteger &e) + { + evp.reset(); + + RSA *rsa = RSA_new(); + rsa->n = bi2bn(n); + rsa->e = bi2bn(e); + + if(!rsa->n || !rsa->e) + { + RSA_free(rsa); + return; + } + + evp.pkey = EVP_PKEY_new(); + EVP_PKEY_assign_RSA(evp.pkey, rsa); + sec = false; + } + + virtual BigInteger n() const + { + return bn2bi(evp.pkey->pkey.rsa->n); + } + + virtual BigInteger e() const + { + return bn2bi(evp.pkey->pkey.rsa->e); + } + + virtual BigInteger p() const + { + return bn2bi(evp.pkey->pkey.rsa->p); + } + + virtual BigInteger q() const + { + return bn2bi(evp.pkey->pkey.rsa->q); + } + + virtual BigInteger d() const + { + return bn2bi(evp.pkey->pkey.rsa->d); + } + +private slots: + void km_finished() + { + RSA *rsa = keymaker->takeResult(); + if(wasBlocking) + delete keymaker; + else + keymaker->deleteLater(); + keymaker = 0; + + if(rsa) + { + evp.pkey = EVP_PKEY_new(); + EVP_PKEY_assign_RSA(evp.pkey, rsa); + sec = true; + } + + if(!wasBlocking) + emit finished(); + } +}; + +//---------------------------------------------------------------------------- +// DSAKey +//---------------------------------------------------------------------------- +class DSAKeyMaker : public QThread +{ + Q_OBJECT +public: + DLGroup domain; + DSA *result; + + DSAKeyMaker(const DLGroup &_domain, QObject *parent = 0) : QThread(parent), domain(_domain), result(0) + { + } + + ~DSAKeyMaker() + { + wait(); + if(result) + DSA_free(result); + } + + virtual void run() + { + DSA *dsa = DSA_new(); + dsa->p = bi2bn(domain.p()); + dsa->q = bi2bn(domain.q()); + dsa->g = bi2bn(domain.g()); + if(!DSA_generate_key(dsa)) + { + DSA_free(dsa); + return; + } + result = dsa; + } + + DSA *takeResult() + { + DSA *dsa = result; + result = 0; + return dsa; + } +}; + +// note: DSA doesn't use SignatureAlgorithm, since EMSA1 is always assumed +class DSAKey : public DSAContext +{ + Q_OBJECT +public: + EVPKey evp; + DSAKeyMaker *keymaker; + bool wasBlocking; + bool transformsig; + bool sec; + + DSAKey(Provider *p) : DSAContext(p) + { + keymaker = 0; + sec = false; + } + + DSAKey(const DSAKey &from) : DSAContext(from.provider()), evp(from.evp) + { + keymaker = 0; + sec = from.sec; + } + + ~DSAKey() + { + delete keymaker; + } + + virtual Provider::Context *clone() const + { + return new DSAKey(*this); + } + + virtual bool isNull() const + { + return (evp.pkey ? false: true); + } + + virtual PKey::Type type() const + { + return PKey::DSA; + } + + virtual bool isPrivate() const + { + return sec; + } + + virtual bool canExport() const + { + return true; + } + + virtual void convertToPublic() + { + if(!sec) + return; + + // extract the public key into DER format + int len = i2d_DSAPublicKey(evp.pkey->pkey.dsa, NULL); + SecureArray result(len); + unsigned char *p = (unsigned char *)result.data(); + i2d_DSAPublicKey(evp.pkey->pkey.dsa, &p); + p = (unsigned char *)result.data(); + + // put the DER public key back into openssl + evp.reset(); + DSA *dsa; +#ifdef OSSL_097 + dsa = d2i_DSAPublicKey(NULL, (const unsigned char **)&p, result.size()); +#else + dsa = d2i_DSAPublicKey(NULL, (unsigned char **)&p, result.size()); +#endif + evp.pkey = EVP_PKEY_new(); + EVP_PKEY_assign_DSA(evp.pkey, dsa); + sec = false; + } + + virtual int bits() const + { + return EVP_PKEY_bits(evp.pkey); + } + + virtual void startSign(SignatureAlgorithm, SignatureFormat format) + { + // openssl native format is DER, so transform otherwise + if(format != DERSequence) + transformsig = true; + else + transformsig = false; + + evp.startSign(EVP_dss1()); + } + + virtual void startVerify(SignatureAlgorithm, SignatureFormat format) + { + // openssl native format is DER, so transform otherwise + if(format != DERSequence) + transformsig = true; + else + transformsig = false; + + evp.startVerify(EVP_dss1()); + } + + virtual void update(const MemoryRegion &in) + { + evp.update(in); + } + + virtual QByteArray endSign() + { + SecureArray out = evp.endSign(); + if(transformsig) + return dsasig_der_to_raw(out).toByteArray(); + else + return out.toByteArray(); + } + + virtual bool endVerify(const QByteArray &sig) + { + SecureArray in; + if(transformsig) + in = dsasig_raw_to_der(sig); + else + in = sig; + return evp.endVerify(in); + } + + virtual void createPrivate(const DLGroup &domain, bool block) + { + evp.reset(); + + keymaker = new DSAKeyMaker(domain, !block ? this : 0); + wasBlocking = block; + if(block) + { + keymaker->run(); + km_finished(); + } + else + { + connect(keymaker, SIGNAL(finished()), SLOT(km_finished())); + keymaker->start(); + } + } + + virtual void createPrivate(const DLGroup &domain, const BigInteger &y, const BigInteger &x) + { + evp.reset(); + + DSA *dsa = DSA_new(); + dsa->p = bi2bn(domain.p()); + dsa->q = bi2bn(domain.q()); + dsa->g = bi2bn(domain.g()); + dsa->pub_key = bi2bn(y); + dsa->priv_key = bi2bn(x); + + if(!dsa->p || !dsa->q || !dsa->g || !dsa->pub_key || !dsa->priv_key) + { + DSA_free(dsa); + return; + } + + evp.pkey = EVP_PKEY_new(); + EVP_PKEY_assign_DSA(evp.pkey, dsa); + sec = true; + } + + virtual void createPublic(const DLGroup &domain, const BigInteger &y) + { + evp.reset(); + + DSA *dsa = DSA_new(); + dsa->p = bi2bn(domain.p()); + dsa->q = bi2bn(domain.q()); + dsa->g = bi2bn(domain.g()); + dsa->pub_key = bi2bn(y); + + if(!dsa->p || !dsa->q || !dsa->g || !dsa->pub_key) + { + DSA_free(dsa); + return; + } + + evp.pkey = EVP_PKEY_new(); + EVP_PKEY_assign_DSA(evp.pkey, dsa); + sec = false; + } + + virtual DLGroup domain() const + { + return DLGroup(bn2bi(evp.pkey->pkey.dsa->p), bn2bi(evp.pkey->pkey.dsa->q), bn2bi(evp.pkey->pkey.dsa->g)); + } + + virtual BigInteger y() const + { + return bn2bi(evp.pkey->pkey.dsa->pub_key); + } + + virtual BigInteger x() const + { + return bn2bi(evp.pkey->pkey.dsa->priv_key); + } + +private slots: + void km_finished() + { + DSA *dsa = keymaker->takeResult(); + if(wasBlocking) + delete keymaker; + else + keymaker->deleteLater(); + keymaker = 0; + + if(dsa) + { + evp.pkey = EVP_PKEY_new(); + EVP_PKEY_assign_DSA(evp.pkey, dsa); + sec = true; + } + + if(!wasBlocking) + emit finished(); + } +}; + +//---------------------------------------------------------------------------- +// DHKey +//---------------------------------------------------------------------------- +class DHKeyMaker : public QThread +{ + Q_OBJECT +public: + DLGroup domain; + DH *result; + + DHKeyMaker(const DLGroup &_domain, QObject *parent = 0) : QThread(parent), domain(_domain), result(0) + { + } + + ~DHKeyMaker() + { + wait(); + if(result) + DH_free(result); + } + + virtual void run() + { + DH *dh = DH_new(); + dh->p = bi2bn(domain.p()); + dh->g = bi2bn(domain.g()); + if(!DH_generate_key(dh)) + { + DH_free(dh); + return; + } + result = dh; + } + + DH *takeResult() + { + DH *dh = result; + result = 0; + return dh; + } +}; + +class DHKey : public DHContext +{ + Q_OBJECT +public: + EVPKey evp; + DHKeyMaker *keymaker; + bool wasBlocking; + bool sec; + + DHKey(Provider *p) : DHContext(p) + { + keymaker = 0; + sec = false; + } + + DHKey(const DHKey &from) : DHContext(from.provider()), evp(from.evp) + { + keymaker = 0; + sec = from.sec; + } + + ~DHKey() + { + delete keymaker; + } + + virtual Provider::Context *clone() const + { + return new DHKey(*this); + } + + virtual bool isNull() const + { + return (evp.pkey ? false: true); + } + + virtual PKey::Type type() const + { + return PKey::DH; + } + + virtual bool isPrivate() const + { + return sec; + } + + virtual bool canExport() const + { + return true; + } + + virtual void convertToPublic() + { + if(!sec) + return; + + DH *orig = evp.pkey->pkey.dh; + DH *dh = DH_new(); + dh->p = BN_dup(orig->p); + dh->g = BN_dup(orig->g); + dh->pub_key = BN_dup(orig->pub_key); + + evp.reset(); + + evp.pkey = EVP_PKEY_new(); + EVP_PKEY_assign_DH(evp.pkey, dh); + sec = false; + } + + virtual int bits() const + { + return EVP_PKEY_bits(evp.pkey); + } + + virtual SymmetricKey deriveKey(const PKeyBase &theirs) + { + DH *dh = evp.pkey->pkey.dh; + DH *them = static_cast(&theirs)->evp.pkey->pkey.dh; + SecureArray result(DH_size(dh)); + int ret = DH_compute_key((unsigned char *)result.data(), them->pub_key, dh); + if(ret <= 0) + return SymmetricKey(); + result.resize(ret); + return SymmetricKey(result); + } + + virtual void createPrivate(const DLGroup &domain, bool block) + { + evp.reset(); + + keymaker = new DHKeyMaker(domain, !block ? this : 0); + wasBlocking = block; + if(block) + { + keymaker->run(); + km_finished(); + } + else + { + connect(keymaker, SIGNAL(finished()), SLOT(km_finished())); + keymaker->start(); + } + } + + virtual void createPrivate(const DLGroup &domain, const BigInteger &y, const BigInteger &x) + { + evp.reset(); + + DH *dh = DH_new(); + dh->p = bi2bn(domain.p()); + dh->g = bi2bn(domain.g()); + dh->pub_key = bi2bn(y); + dh->priv_key = bi2bn(x); + + if(!dh->p || !dh->g || !dh->pub_key || !dh->priv_key) + { + DH_free(dh); + return; + } + + evp.pkey = EVP_PKEY_new(); + EVP_PKEY_assign_DH(evp.pkey, dh); + sec = true; + } + + virtual void createPublic(const DLGroup &domain, const BigInteger &y) + { + evp.reset(); + + DH *dh = DH_new(); + dh->p = bi2bn(domain.p()); + dh->g = bi2bn(domain.g()); + dh->pub_key = bi2bn(y); + + if(!dh->p || !dh->g || !dh->pub_key) + { + DH_free(dh); + return; + } + + evp.pkey = EVP_PKEY_new(); + EVP_PKEY_assign_DH(evp.pkey, dh); + sec = false; + } + + virtual DLGroup domain() const + { + return DLGroup(bn2bi(evp.pkey->pkey.dh->p), bn2bi(evp.pkey->pkey.dh->g)); + } + + virtual BigInteger y() const + { + return bn2bi(evp.pkey->pkey.dh->pub_key); + } + + virtual BigInteger x() const + { + return bn2bi(evp.pkey->pkey.dh->priv_key); + } + +private slots: + void km_finished() + { + DH *dh = keymaker->takeResult(); + if(wasBlocking) + delete keymaker; + else + keymaker->deleteLater(); + keymaker = 0; + + if(dh) + { + evp.pkey = EVP_PKEY_new(); + EVP_PKEY_assign_DH(evp.pkey, dh); + sec = true; + } + + if(!wasBlocking) + emit finished(); + } +}; + +//---------------------------------------------------------------------------- +// QCA-based RSA_METHOD +//---------------------------------------------------------------------------- + +// only supports EMSA3_Raw for now +class QCA_RSA_METHOD +{ +public: + RSAPrivateKey key; + + QCA_RSA_METHOD(RSAPrivateKey _key, RSA *rsa) + { + key = _key; + RSA_set_method(rsa, rsa_method()); + rsa->flags |= RSA_FLAG_SIGN_VER; + RSA_set_app_data(rsa, this); + rsa->n = bi2bn(_key.n()); + rsa->e = bi2bn(_key.e()); + } + + RSA_METHOD *rsa_method() + { + static RSA_METHOD *ops = 0; + + if(!ops) + { + ops = new RSA_METHOD(*RSA_get_default_method()); + ops->rsa_priv_enc = 0;//pkcs11_rsa_encrypt; + ops->rsa_priv_dec = rsa_priv_dec; + ops->rsa_sign = rsa_sign; + ops->rsa_verify = 0;//pkcs11_rsa_verify; + ops->finish = rsa_finish; + } + return ops; + } + + static int rsa_priv_dec(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding) + { + QCA::EncryptionAlgorithm algo; + + if (padding == RSA_PKCS1_PADDING) + { + algo = QCA::EME_PKCS1v15; + } + else if (padding == RSA_PKCS1_OAEP_PADDING) + { + algo = QCA::EME_PKCS1_OAEP; + } + else + { + RSAerr(RSA_F_RSA_EAY_PRIVATE_DECRYPT, RSA_R_UNKNOWN_PADDING_TYPE); + return -1; + } + + QCA_RSA_METHOD *self = (QCA_RSA_METHOD *)RSA_get_app_data(rsa); + + QCA::SecureArray input; + input.resize(flen); + memcpy(input.data(), from, input.size()); + + QCA::SecureArray output; + + if (self->key.decrypt(input, &output, algo)) { + memcpy(to, output.data(), output.size()); + return output.size(); + } + + // XXX: An error should be set in this case too. + return -1; + } + + static int rsa_sign(int type, const unsigned char *m, unsigned int m_len, unsigned char *sigret, unsigned int *siglen, const RSA *rsa) + { + QCA_RSA_METHOD *self = (QCA_RSA_METHOD *)RSA_get_app_data(rsa); + + // TODO: this is disgusting + + unsigned char *p, *tmps = NULL; + const unsigned char *s = NULL; + int i,j; + j = 0; + + if(type == NID_md5_sha1) + { + } + else + { + + // make X509 packet + X509_SIG sig; + ASN1_TYPE parameter; + + X509_ALGOR algor; + ASN1_OCTET_STRING digest; + int rsa_size = RSA_size(rsa); + //int rsa_size = 128; + //CK_ULONG sigsize = rsa_size; + + sig.algor= &algor; + sig.algor->algorithm=OBJ_nid2obj(type); + if (sig.algor->algorithm == NULL) + { + //RSAerr(RSA_F_RSA_SIGN,RSA_R_UNKNOWN_ALGORITHM_TYPE); + return 0; + } + if (sig.algor->algorithm->length == 0) + { + //RSAerr(RSA_F_RSA_SIGN,RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD); + return 0; + } + parameter.type=V_ASN1_NULL; + parameter.value.ptr=NULL; + sig.algor->parameter= ¶meter; + + sig.digest= &digest; + sig.digest->data=(unsigned char *)m; /* TMP UGLY CAST */ + sig.digest->length=m_len; + + i=i2d_X509_SIG(&sig,NULL); + + j=rsa_size; + if (i > (j-RSA_PKCS1_PADDING_SIZE)) + { + //RSAerr(RSA_F_RSA_SIGN,RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY); + return 0; + } + + tmps=(unsigned char *)OPENSSL_malloc((unsigned int)j+1); + if (tmps == NULL) + { + //RSAerr(RSA_F_RSA_SIGN,ERR_R_MALLOC_FAILURE); + return 0; + } + p=tmps; + i2d_X509_SIG(&sig,&p); + s=tmps; + m = s; + m_len = i; + } + + SecureArray input; + input.resize(m_len); + memcpy(input.data(), m, input.size()); + SecureArray result = self->key.signMessage(input, EMSA3_Raw); + + if(tmps) + { + OPENSSL_cleanse(tmps,(unsigned int)j+1); + OPENSSL_free(tmps); + } + + // TODO: even though we return error here, PKCS7_sign will + // not return error. what gives? + if(result.isEmpty()) + return 0; + + memcpy(sigret, result.data(), result.size()); + *siglen = result.size(); + + return 1; + } + + static int rsa_finish(RSA *rsa) + { + QCA_RSA_METHOD *self = (QCA_RSA_METHOD *)RSA_get_app_data(rsa); + delete self; + return 1; + } +}; + +static RSA *createFromExisting(const RSAPrivateKey &key) +{ + RSA *r = RSA_new(); + new QCA_RSA_METHOD(key, r); // will delete itself on RSA_free + return r; +} + +//---------------------------------------------------------------------------- +// MyPKeyContext +//---------------------------------------------------------------------------- +class MyPKeyContext : public PKeyContext +{ +public: + PKeyBase *k; + + MyPKeyContext(Provider *p) : PKeyContext(p) + { + k = 0; + } + + ~MyPKeyContext() + { + delete k; + } + + virtual Provider::Context *clone() const + { + MyPKeyContext *c = new MyPKeyContext(*this); + c->k = (PKeyBase *)k->clone(); + return c; + } + + virtual QList supportedTypes() const + { + QList list; + list += PKey::RSA; + list += PKey::DSA; + list += PKey::DH; + return list; + } + + virtual QList supportedIOTypes() const + { + QList list; + list += PKey::RSA; + list += PKey::DSA; + return list; + } + + virtual QList supportedPBEAlgorithms() const + { + QList list; + list += PBES2_DES_SHA1; + list += PBES2_TripleDES_SHA1; + return list; + } + + virtual PKeyBase *key() + { + return k; + } + + virtual const PKeyBase *key() const + { + return k; + } + + virtual void setKey(PKeyBase *key) + { + k = key; + } + + virtual bool importKey(const PKeyBase *key) + { + Q_UNUSED(key); + return false; + } + + EVP_PKEY *get_pkey() const + { + PKey::Type t = k->type(); + if(t == PKey::RSA) + return static_cast(k)->evp.pkey; + else if(t == PKey::DSA) + return static_cast(k)->evp.pkey; + else + return static_cast(k)->evp.pkey; + } + + PKeyBase *pkeyToBase(EVP_PKEY *pkey, bool sec) const + { + PKeyBase *nk = 0; + if(pkey->type == EVP_PKEY_RSA) + { + RSAKey *c = new RSAKey(provider()); + c->evp.pkey = pkey; + c->sec = sec; + nk = c; + } + else if(pkey->type == EVP_PKEY_DSA) + { + DSAKey *c = new DSAKey(provider()); + c->evp.pkey = pkey; + c->sec = sec; + nk = c; + } + else if(pkey->type == EVP_PKEY_DH) + { + DHKey *c = new DHKey(provider()); + c->evp.pkey = pkey; + c->sec = sec; + nk = c; + } + else + { + EVP_PKEY_free(pkey); + } + return nk; + } + + virtual QByteArray publicToDER() const + { + EVP_PKEY *pkey = get_pkey(); + + // OpenSSL does not have DH import/export support + if(pkey->type == EVP_PKEY_DH) + return QByteArray(); + + BIO *bo = BIO_new(BIO_s_mem()); + i2d_PUBKEY_bio(bo, pkey); + QByteArray buf = bio2ba(bo); + return buf; + } + + virtual QString publicToPEM() const + { + EVP_PKEY *pkey = get_pkey(); + + // OpenSSL does not have DH import/export support + if(pkey->type == EVP_PKEY_DH) + return QString(); + + BIO *bo = BIO_new(BIO_s_mem()); + PEM_write_bio_PUBKEY(bo, pkey); + QByteArray buf = bio2ba(bo); + return QString::fromLatin1(buf); + } + + virtual ConvertResult publicFromDER(const QByteArray &in) + { + delete k; + k = 0; + + BIO *bi = BIO_new(BIO_s_mem()); + BIO_write(bi, in.data(), in.size()); + EVP_PKEY *pkey = d2i_PUBKEY_bio(bi, NULL); + BIO_free(bi); + + if(!pkey) + return ErrorDecode; + + k = pkeyToBase(pkey, false); + if(k) + return ConvertGood; + else + return ErrorDecode; + } + + virtual ConvertResult publicFromPEM(const QString &s) + { + delete k; + k = 0; + + QByteArray in = s.toLatin1(); + BIO *bi = BIO_new(BIO_s_mem()); + BIO_write(bi, in.data(), in.size()); + EVP_PKEY *pkey = PEM_read_bio_PUBKEY(bi, NULL, passphrase_cb, NULL); + BIO_free(bi); + + if(!pkey) + return ErrorDecode; + + k = pkeyToBase(pkey, false); + if(k) + return ConvertGood; + else + return ErrorDecode; + } + + virtual SecureArray privateToDER(const SecureArray &passphrase, PBEAlgorithm pbe) const + { + //if(pbe == PBEDefault) + // pbe = PBES2_TripleDES_SHA1; + + const EVP_CIPHER *cipher = 0; + if(pbe == PBES2_TripleDES_SHA1) + cipher = EVP_des_ede3_cbc(); + else if(pbe == PBES2_DES_SHA1) + cipher = EVP_des_cbc(); + + if(!cipher) + return SecureArray(); + + EVP_PKEY *pkey = get_pkey(); + + // OpenSSL does not have DH import/export support + if(pkey->type == EVP_PKEY_DH) + return SecureArray(); + + BIO *bo = BIO_new(BIO_s_mem()); + if(!passphrase.isEmpty()) + i2d_PKCS8PrivateKey_bio(bo, pkey, cipher, NULL, 0, NULL, (void *)passphrase.data()); + else + i2d_PKCS8PrivateKey_bio(bo, pkey, NULL, NULL, 0, NULL, NULL); + SecureArray buf = bio2buf(bo); + return buf; + } + + virtual QString privateToPEM(const SecureArray &passphrase, PBEAlgorithm pbe) const + { + //if(pbe == PBEDefault) + // pbe = PBES2_TripleDES_SHA1; + + const EVP_CIPHER *cipher = 0; + if(pbe == PBES2_TripleDES_SHA1) + cipher = EVP_des_ede3_cbc(); + else if(pbe == PBES2_DES_SHA1) + cipher = EVP_des_cbc(); + + if(!cipher) + return QString(); + + EVP_PKEY *pkey = get_pkey(); + + // OpenSSL does not have DH import/export support + if(pkey->type == EVP_PKEY_DH) + return QString(); + + BIO *bo = BIO_new(BIO_s_mem()); + if(!passphrase.isEmpty()) + PEM_write_bio_PKCS8PrivateKey(bo, pkey, cipher, NULL, 0, NULL, (void *)passphrase.data()); + else + PEM_write_bio_PKCS8PrivateKey(bo, pkey, NULL, NULL, 0, NULL, NULL); + SecureArray buf = bio2buf(bo); + return QString::fromLatin1(buf.toByteArray()); + } + + virtual ConvertResult privateFromDER(const SecureArray &in, const SecureArray &passphrase) + { + delete k; + k = 0; + + EVP_PKEY *pkey; + if(!passphrase.isEmpty()) + pkey = qca_d2i_PKCS8PrivateKey(in, NULL, NULL, (void *)passphrase.data()); + else + pkey = qca_d2i_PKCS8PrivateKey(in, NULL, passphrase_cb, NULL); + + if(!pkey) + return ErrorDecode; + + k = pkeyToBase(pkey, true); + if(k) + return ConvertGood; + else + return ErrorDecode; + } + + virtual ConvertResult privateFromPEM(const QString &s, const SecureArray &passphrase) + { + delete k; + k = 0; + + QByteArray in = s.toLatin1(); + BIO *bi = BIO_new(BIO_s_mem()); + BIO_write(bi, in.data(), in.size()); + EVP_PKEY *pkey; + if(!passphrase.isEmpty()) + pkey = PEM_read_bio_PrivateKey(bi, NULL, NULL, (void *)passphrase.data()); + else + pkey = PEM_read_bio_PrivateKey(bi, NULL, passphrase_cb, NULL); + BIO_free(bi); + + if(!pkey) + return ErrorDecode; + + k = pkeyToBase(pkey, true); + if(k) + return ConvertGood; + else + return ErrorDecode; + } +}; + +//---------------------------------------------------------------------------- +// MyCertContext +//---------------------------------------------------------------------------- +class X509Item +{ +public: + X509 *cert; + X509_REQ *req; + X509_CRL *crl; + + enum Type { TypeCert, TypeReq, TypeCRL }; + + X509Item() + { + cert = 0; + req = 0; + crl = 0; + } + + X509Item(const X509Item &from) + { + cert = 0; + req = 0; + crl = 0; + *this = from; + } + + ~X509Item() + { + reset(); + } + + X509Item & operator=(const X509Item &from) + { + if(this != &from) + { + reset(); + cert = from.cert; + req = from.req; + crl = from.crl; + + if(cert) + CRYPTO_add(&cert->references, 1, CRYPTO_LOCK_X509); + if(req) + CRYPTO_add(&req->references, 1, CRYPTO_LOCK_X509_REQ); + if(crl) + CRYPTO_add(&crl->references, 1, CRYPTO_LOCK_X509_CRL); + } + + return *this; + } + + void reset() + { + if(cert) + { + X509_free(cert); + cert = 0; + } + if(req) + { + X509_REQ_free(req); + req = 0; + } + if(crl) + { + X509_CRL_free(crl); + crl = 0; + } + } + + bool isNull() const + { + return (!cert && !req && !crl); + } + + QByteArray toDER() const + { + BIO *bo = BIO_new(BIO_s_mem()); + if(cert) + i2d_X509_bio(bo, cert); + else if(req) + i2d_X509_REQ_bio(bo, req); + else if(crl) + i2d_X509_CRL_bio(bo, crl); + QByteArray buf = bio2ba(bo); + return buf; + } + + QString toPEM() const + { + BIO *bo = BIO_new(BIO_s_mem()); + if(cert) + PEM_write_bio_X509(bo, cert); + else if(req) + PEM_write_bio_X509_REQ(bo, req); + else if(crl) + PEM_write_bio_X509_CRL(bo, crl); + QByteArray buf = bio2ba(bo); + return QString::fromLatin1(buf); + } + + ConvertResult fromDER(const QByteArray &in, Type t) + { + reset(); + + BIO *bi = BIO_new(BIO_s_mem()); + BIO_write(bi, in.data(), in.size()); + + if(t == TypeCert) + cert = d2i_X509_bio(bi, NULL); + else if(t == TypeReq) + req = d2i_X509_REQ_bio(bi, NULL); + else if(t == TypeCRL) + crl = d2i_X509_CRL_bio(bi, NULL); + + BIO_free(bi); + + if(isNull()) + return ErrorDecode; + + return ConvertGood; + } + + ConvertResult fromPEM(const QString &s, Type t) + { + reset(); + + QByteArray in = s.toLatin1(); + BIO *bi = BIO_new(BIO_s_mem()); + BIO_write(bi, in.data(), in.size()); + + if(t == TypeCert) + cert = PEM_read_bio_X509(bi, NULL, passphrase_cb, NULL); + else if(t == TypeReq) + req = PEM_read_bio_X509_REQ(bi, NULL, passphrase_cb, NULL); + else if(t == TypeCRL) + crl = PEM_read_bio_X509_CRL(bi, NULL, passphrase_cb, NULL); + + BIO_free(bi); + + if(isNull()) + return ErrorDecode; + + return ConvertGood; + } +}; + +// (taken from kdelibs) -- Justin +// +// This code is mostly taken from OpenSSL v0.9.5a +// by Eric Young +QDateTime ASN1_UTCTIME_QDateTime(ASN1_UTCTIME *tm, int *isGmt) +{ + QDateTime qdt; + char *v; + int gmt=0; + int i; + int y=0,M=0,d=0,h=0,m=0,s=0; + QDate qdate; + QTime qtime; + + i = tm->length; + v = (char *)tm->data; + + if (i < 10) goto auq_err; + if (v[i-1] == 'Z') gmt=1; + for (i=0; i<10; i++) + if ((v[i] > '9') || (v[i] < '0')) goto auq_err; + y = (v[0]-'0')*10+(v[1]-'0'); + if (y < 50) y+=100; + M = (v[2]-'0')*10+(v[3]-'0'); + if ((M > 12) || (M < 1)) goto auq_err; + d = (v[4]-'0')*10+(v[5]-'0'); + h = (v[6]-'0')*10+(v[7]-'0'); + m = (v[8]-'0')*10+(v[9]-'0'); + if ( (v[10] >= '0') && (v[10] <= '9') && + (v[11] >= '0') && (v[11] <= '9')) + s = (v[10]-'0')*10+(v[11]-'0'); + + // localize the date and display it. + qdate.setDate(y+1900, M, d); + qtime.setHMS(h,m,s); + qdt.setDate(qdate); qdt.setTime(qtime); + if (gmt) qdt.setTimeSpec(Qt::UTC); + auq_err: + if (isGmt) *isGmt = gmt; + return qdt; +} + +class MyCertContext; +static bool sameChain(STACK_OF(X509) *ossl, const QList &qca); + +// TODO: support read/write of multiple info values with the same name +class MyCertContext : public CertContext +{ +public: + X509Item item; + CertContextProps _props; + + MyCertContext(Provider *p) : CertContext(p) + { + //printf("[%p] ** created\n", this); + } + + MyCertContext(const MyCertContext &from) : CertContext(from), item(from.item), _props(from._props) + { + //printf("[%p] ** created as copy (from [%p])\n", this, &from); + } + + ~MyCertContext() + { + //printf("[%p] ** deleted\n", this); + } + + virtual Provider::Context *clone() const + { + return new MyCertContext(*this); + } + + virtual QByteArray toDER() const + { + return item.toDER(); + } + + virtual QString toPEM() const + { + return item.toPEM(); + } + + virtual ConvertResult fromDER(const QByteArray &a) + { + _props = CertContextProps(); + ConvertResult r = item.fromDER(a, X509Item::TypeCert); + if(r == ConvertGood) + make_props(); + return r; + } + + virtual ConvertResult fromPEM(const QString &s) + { + _props = CertContextProps(); + ConvertResult r = item.fromPEM(s, X509Item::TypeCert); + if(r == ConvertGood) + make_props(); + return r; + } + + void fromX509(X509 *x) + { + CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509); + item.cert = x; + make_props(); + } + + virtual bool createSelfSigned(const CertificateOptions &opts, const PKeyContext &priv) + { + _props = CertContextProps(); + item.reset(); + + CertificateInfo info = opts.info(); + + // Note: removing default constraints, let the app choose these if it wants + Constraints constraints = opts.constraints(); + // constraints - logic from Botan + /*Constraints constraints; + if(opts.isCA()) + { + constraints += KeyCertificateSign; + constraints += CRLSign; + } + else + constraints = find_constraints(priv, opts.constraints());*/ + + EVP_PKEY *pk = static_cast(&priv)->get_pkey(); + X509_EXTENSION *ex; + + const EVP_MD *md; + if(priv.key()->type() == PKey::RSA) + md = EVP_sha1(); + else if(priv.key()->type() == PKey::DSA) + md = EVP_dss1(); + else + return false; + + // create + X509 *x = X509_new(); + X509_set_version(x, 2); + + // serial + BIGNUM *bn = bi2bn(opts.serialNumber()); + BN_to_ASN1_INTEGER(bn, X509_get_serialNumber(x)); + BN_free(bn); + + // validity period + ASN1_TIME_set(X509_get_notBefore(x), opts.notValidBefore().toTime_t()); + ASN1_TIME_set(X509_get_notAfter(x), opts.notValidAfter().toTime_t()); + + // public key + X509_set_pubkey(x, pk); + + // subject + X509_NAME *name = new_cert_name(info); + X509_set_subject_name(x, name); + + // issuer == subject + X509_set_issuer_name(x, name); + + // subject key id + ex = new_subject_key_id(x); + { + X509_add_ext(x, ex, -1); + X509_EXTENSION_free(ex); + } + + // CA mode + ex = new_basic_constraints(opts.isCA(), opts.pathLimit()); + if(ex) + { + X509_add_ext(x, ex, -1); + X509_EXTENSION_free(ex); + } + + // subject alt name + ex = new_cert_subject_alt_name(info); + if(ex) + { + X509_add_ext(x, ex, -1); + X509_EXTENSION_free(ex); + } + + // key usage + ex = new_cert_key_usage(constraints); + if(ex) + { + X509_add_ext(x, ex, -1); + X509_EXTENSION_free(ex); + } + + // extended key usage + ex = new_cert_ext_key_usage(constraints); + if(ex) + { + X509_add_ext(x, ex, -1); + X509_EXTENSION_free(ex); + } + + // policies + ex = new_cert_policies(opts.policies()); + if(ex) + { + X509_add_ext(x, ex, -1); + X509_EXTENSION_free(ex); + } + + // finished + X509_sign(x, pk, md); + + item.cert = x; + make_props(); + return true; + } + + virtual const CertContextProps *props() const + { + //printf("[%p] grabbing props\n", this); + return &_props; + } + + virtual bool compare(const CertContext *other) const + { + const CertContextProps *a = &_props; + const CertContextProps *b = other->props(); + + PublicKey akey, bkey; + PKeyContext *ac = subjectPublicKey(); + akey.change(ac); + PKeyContext *bc = other->subjectPublicKey(); + bkey.change(bc); + + // logic from Botan + if(a->sig != b->sig || a->sigalgo != b->sigalgo || akey != bkey) + return false; + + if(a->issuer != b->issuer || a->subject != b->subject) + return false; + if(a->serial != b->serial || a->version != b->version) + return false; + if(a->start != b->start || a->end != b->end) + return false; + + return true; + } + + // does a new + virtual PKeyContext *subjectPublicKey() const + { + MyPKeyContext *kc = new MyPKeyContext(provider()); + EVP_PKEY *pkey = X509_get_pubkey(item.cert); + PKeyBase *kb = kc->pkeyToBase(pkey, false); + kc->setKey(kb); + return kc; + } + + virtual bool isIssuerOf(const CertContext *other) const + { + + // to check a single issuer, we make a list of 1 + STACK_OF(X509) *untrusted_list = sk_X509_new_null(); + + const MyCertContext *our_cc = this; + X509 *x = our_cc->item.cert; + CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509); + sk_X509_push(untrusted_list, x); + + const MyCertContext *other_cc = static_cast(other); + X509 *ox = other_cc->item.cert; + + X509_STORE *store = X509_STORE_new(); + + X509_STORE_CTX *ctx = X509_STORE_CTX_new(); + X509_STORE_CTX_init(ctx, store, ox, untrusted_list); + + // we don't care about the verify result here + X509_verify_cert(ctx); + + // grab the chain, which may not be fully populated + STACK_OF(X509) *chain = X509_STORE_CTX_get_chain(ctx); + + bool ok = false; + + // chain should be exactly 2 items + QList expected; + expected += other_cc; + expected += our_cc; + if(chain && sameChain(chain, expected)) + ok = true; + + // cleanup + X509_STORE_CTX_free(ctx); + X509_STORE_free(store); + sk_X509_pop_free(untrusted_list, X509_free); + + return ok; + } + + // implemented later because it depends on MyCRLContext + virtual Validity validate(const QList &trusted, const QList &untrusted, const QList &crls, UsageMode u, ValidateFlags vf) const; + + virtual Validity validate_chain(const QList &chain, const QList &trusted, const QList &crls, UsageMode u, ValidateFlags vf) const; + + void make_props() + { + X509 *x = item.cert; + CertContextProps p; + + p.version = X509_get_version(x); + + ASN1_INTEGER *ai = X509_get_serialNumber(x); + if(ai) + { + char *rep = i2s_ASN1_INTEGER(NULL, ai); + QString str = rep; + OPENSSL_free(rep); + p.serial.fromString(str); + } + + p.start = ASN1_UTCTIME_QDateTime(X509_get_notBefore(x), NULL); + p.end = ASN1_UTCTIME_QDateTime(X509_get_notAfter(x), NULL); + + CertificateInfo subject, issuer; + + subject = get_cert_name(X509_get_subject_name(x)); + issuer = get_cert_name(X509_get_issuer_name(x)); + + p.isSelfSigned = ( X509_V_OK == X509_check_issued( x, x ) ); + + p.isCA = false; + p.pathLimit = 0; + int pos = X509_get_ext_by_NID(x, NID_basic_constraints, -1); + if(pos != -1) + { + X509_EXTENSION *ex = X509_get_ext(x, pos); + if(ex) + get_basic_constraints(ex, &p.isCA, &p.pathLimit); + } + + pos = X509_get_ext_by_NID(x, NID_subject_alt_name, -1); + if(pos != -1) + { + X509_EXTENSION *ex = X509_get_ext(x, pos); + if(ex) + subject.unite(get_cert_alt_name(ex)); + } + + pos = X509_get_ext_by_NID(x, NID_issuer_alt_name, -1); + if(pos != -1) + { + X509_EXTENSION *ex = X509_get_ext(x, pos); + if(ex) + issuer.unite(get_cert_alt_name(ex)); + } + + pos = X509_get_ext_by_NID(x, NID_key_usage, -1); + if(pos != -1) + { + X509_EXTENSION *ex = X509_get_ext(x, pos); + if(ex) + p.constraints = get_cert_key_usage(ex); + } + + pos = X509_get_ext_by_NID(x, NID_ext_key_usage, -1); + if(pos != -1) + { + X509_EXTENSION *ex = X509_get_ext(x, pos); + if(ex) + p.constraints += get_cert_ext_key_usage(ex); + } + + pos = X509_get_ext_by_NID(x, NID_certificate_policies, -1); + if(pos != -1) + { + X509_EXTENSION *ex = X509_get_ext(x, pos); + if(ex) + p.policies = get_cert_policies(ex); + } + + if (x->signature) + { + p.sig = QByteArray(x->signature->length, 0); + for (int i=0; i< x->signature->length; i++) + p.sig[i] = x->signature->data[i]; + } + + switch( OBJ_obj2nid(x->cert_info->signature->algorithm) ) + { + case NID_sha1WithRSAEncryption: + p.sigalgo = QCA::EMSA3_SHA1; + break; + case NID_md5WithRSAEncryption: + p.sigalgo = QCA::EMSA3_MD5; + break; +#ifdef HAVE_OPENSSL_MD2 + case NID_md2WithRSAEncryption: + p.sigalgo = QCA::EMSA3_MD2; + break; +#endif + case NID_ripemd160WithRSA: + p.sigalgo = QCA::EMSA3_RIPEMD160; + break; + case NID_dsaWithSHA1: + p.sigalgo = QCA::EMSA1_SHA1; + break; + case NID_sha224WithRSAEncryption: + p.sigalgo = QCA::EMSA3_SHA224; + break; + case NID_sha256WithRSAEncryption: + p.sigalgo = QCA::EMSA3_SHA256; + break; + case NID_sha384WithRSAEncryption: + p.sigalgo = QCA::EMSA3_SHA384; + break; + case NID_sha512WithRSAEncryption: + p.sigalgo = QCA::EMSA3_SHA512; + break; + default: + qDebug() << "Unknown signature value: " << OBJ_obj2nid(x->cert_info->signature->algorithm); + p.sigalgo = QCA::SignatureUnknown; + } + + pos = X509_get_ext_by_NID(x, NID_subject_key_identifier, -1); + if(pos != -1) + { + X509_EXTENSION *ex = X509_get_ext(x, pos); + if(ex) + p.subjectId += get_cert_subject_key_id(ex); + } + + pos = X509_get_ext_by_NID(x, NID_authority_key_identifier, -1); + if(pos != -1) + { + X509_EXTENSION *ex = X509_get_ext(x, pos); + if(ex) + p.issuerId += get_cert_issuer_key_id(ex); + } + + // FIXME: super hack + CertificateOptions opts; + opts.setInfo(subject); + p.subject = opts.infoOrdered(); + opts.setInfo(issuer); + p.issuer = opts.infoOrdered(); + + _props = p; + //printf("[%p] made props: [%s]\n", this, _props.subject[CommonName].toLatin1().data()); + } +}; + +bool sameChain(STACK_OF(X509) *ossl, const QList &qca) +{ + if(sk_X509_num(ossl) != qca.count()) + return false; + + for(int n = 0; n < sk_X509_num(ossl); ++n) + { + X509 *a = sk_X509_value(ossl, n); + X509 *b = qca[n]->item.cert; + if(X509_cmp(a, b) != 0) + return false; + } + + return true; +} + +//---------------------------------------------------------------------------- +// MyCAContext +//---------------------------------------------------------------------------- +// Thanks to Pascal Patry +class MyCAContext : public CAContext +{ +public: + X509Item caCert; + MyPKeyContext *privateKey; + + MyCAContext(Provider *p) : CAContext(p) + { + privateKey = 0; + } + + MyCAContext(const MyCAContext &from) : CAContext(from), caCert(from.caCert) + { + privateKey = static_cast(from.privateKey -> clone()); + } + + ~MyCAContext() + { + delete privateKey; + } + + virtual CertContext *certificate() const + { + MyCertContext *cert = new MyCertContext(provider()); + + cert->fromX509(caCert.cert); + return cert; + } + + virtual CertContext *createCertificate(const PKeyContext &pub, const CertificateOptions &opts) const + { + // TODO: implement + Q_UNUSED(pub) + Q_UNUSED(opts) + return 0; + } + + virtual CRLContext *createCRL(const QDateTime &nextUpdate) const + { + // TODO: implement + Q_UNUSED(nextUpdate) + return 0; + } + + virtual void setup(const CertContext &cert, const PKeyContext &priv) + { + caCert = static_cast(cert).item; + delete privateKey; + privateKey = 0; + privateKey = static_cast(priv.clone()); + } + + virtual CertContext *signRequest(const CSRContext &req, const QDateTime ¬ValidAfter) const + { + MyCertContext *cert = 0; + const EVP_MD *md = 0; + X509 *x = 0; + const CertContextProps &props = *req.props(); + CertificateOptions subjectOpts; + X509_NAME *subjectName = 0; + X509_EXTENSION *ex = 0; + + if(privateKey -> key()->type() == PKey::RSA) + md = EVP_sha1(); + else if(privateKey -> key()->type() == PKey::DSA) + md = EVP_dss1(); + else + return 0; + + cert = new MyCertContext(provider()); + + subjectOpts.setInfoOrdered(props.subject); + subjectName = new_cert_name(subjectOpts.info()); + + // create + x = X509_new(); + X509_set_version(x, 2); + + // serial + BIGNUM *bn = bi2bn(props.serial); + BN_to_ASN1_INTEGER(bn, X509_get_serialNumber(x)); + BN_free(bn); + + // validity period + ASN1_TIME_set(X509_get_notBefore(x), QDateTime::currentDateTime().toUTC().toTime_t()); + ASN1_TIME_set(X509_get_notAfter(x), notValidAfter.toTime_t()); + + X509_set_pubkey(x, static_cast(req.subjectPublicKey()) -> get_pkey()); + X509_set_subject_name(x, subjectName); + X509_set_issuer_name(x, X509_get_subject_name(caCert.cert)); + + // subject key id + ex = new_subject_key_id(x); + { + X509_add_ext(x, ex, -1); + X509_EXTENSION_free(ex); + } + + // CA mode + ex = new_basic_constraints(props.isCA, props.pathLimit); + if(ex) + { + X509_add_ext(x, ex, -1); + X509_EXTENSION_free(ex); + } + + // subject alt name + ex = new_cert_subject_alt_name(subjectOpts.info()); + if(ex) + { + X509_add_ext(x, ex, -1); + X509_EXTENSION_free(ex); + } + + // key usage + ex = new_cert_key_usage(props.constraints); + if(ex) + { + X509_add_ext(x, ex, -1); + X509_EXTENSION_free(ex); + } + + // extended key usage + ex = new_cert_ext_key_usage(props.constraints); + if(ex) + { + X509_add_ext(x, ex, -1); + X509_EXTENSION_free(ex); + } + + // policies + ex = new_cert_policies(props.policies); + if(ex) + { + X509_add_ext(x, ex, -1); + X509_EXTENSION_free(ex); + } + + if(!X509_sign(x, privateKey->get_pkey(), md)) + { + X509_free(x); + delete cert; + return 0; + } + + cert->fromX509(x); + X509_free(x); + return cert; + } + + virtual CRLContext *updateCRL(const CRLContext &crl, const QList &entries, const QDateTime &nextUpdate) const + { + // TODO: implement + Q_UNUSED(crl) + Q_UNUSED(entries) + Q_UNUSED(nextUpdate) + return 0; + } + + virtual Provider::Context *clone() const + { + return new MyCAContext(*this); + } +}; + +//---------------------------------------------------------------------------- +// MyCSRContext +//---------------------------------------------------------------------------- +class MyCSRContext : public CSRContext +{ +public: + X509Item item; + CertContextProps _props; + + MyCSRContext(Provider *p) : CSRContext(p) + { + } + + MyCSRContext(const MyCSRContext &from) : CSRContext(from), item(from.item), _props(from._props) + { + } + + virtual Provider::Context *clone() const + { + return new MyCSRContext(*this); + } + + virtual QByteArray toDER() const + { + return item.toDER(); + } + + virtual QString toPEM() const + { + return item.toPEM(); + } + + virtual ConvertResult fromDER(const QByteArray &a) + { + _props = CertContextProps(); + ConvertResult r = item.fromDER(a, X509Item::TypeReq); + if(r == ConvertGood) + make_props(); + return r; + } + + virtual ConvertResult fromPEM(const QString &s) + { + _props = CertContextProps(); + ConvertResult r = item.fromPEM(s, X509Item::TypeReq); + if(r == ConvertGood) + make_props(); + return r; + } + + virtual bool canUseFormat(CertificateRequestFormat f) const + { + if(f == PKCS10) + return true; + return false; + } + + virtual bool createRequest(const CertificateOptions &opts, const PKeyContext &priv) + { + _props = CertContextProps(); + item.reset(); + + CertificateInfo info = opts.info(); + + // Note: removing default constraints, let the app choose these if it wants + Constraints constraints = opts.constraints(); + // constraints - logic from Botan + /*Constraints constraints; + if(opts.isCA()) + { + constraints += KeyCertificateSign; + constraints += CRLSign; + } + else + constraints = find_constraints(priv, opts.constraints());*/ + + EVP_PKEY *pk = static_cast(&priv)->get_pkey(); + X509_EXTENSION *ex; + + const EVP_MD *md; + if(priv.key()->type() == PKey::RSA) + md = EVP_sha1(); + else if(priv.key()->type() == PKey::DSA) + md = EVP_dss1(); + else + return false; + + // create + X509_REQ *x = X509_REQ_new(); + + // public key + X509_REQ_set_pubkey(x, pk); + + // subject + X509_NAME *name = new_cert_name(info); + X509_REQ_set_subject_name(x, name); + + // challenge + QByteArray cs = opts.challenge().toLatin1(); + if(!cs.isEmpty()) + X509_REQ_add1_attr_by_NID(x, NID_pkcs9_challengePassword, MBSTRING_UTF8, (const unsigned char *)cs.data(), -1); + + STACK_OF(X509_EXTENSION) *exts = sk_X509_EXTENSION_new_null(); + + // CA mode + ex = new_basic_constraints(opts.isCA(), opts.pathLimit()); + if(ex) + sk_X509_EXTENSION_push(exts, ex); + + // subject alt name + ex = new_cert_subject_alt_name(info); + if(ex) + sk_X509_EXTENSION_push(exts, ex); + + // key usage + ex = new_cert_key_usage(constraints); + if(ex) + sk_X509_EXTENSION_push(exts, ex); + + // extended key usage + ex = new_cert_ext_key_usage(constraints); + if(ex) + sk_X509_EXTENSION_push(exts, ex); + + // policies + ex = new_cert_policies(opts.policies()); + if(ex) + sk_X509_EXTENSION_push(exts, ex); + + if(sk_X509_EXTENSION_num(exts) > 0) + X509_REQ_add_extensions(x, exts); + sk_X509_EXTENSION_pop_free(exts, X509_EXTENSION_free); + + // finished + X509_REQ_sign(x, pk, md); + + item.req = x; + make_props(); + return true; + } + + virtual const CertContextProps *props() const + { + return &_props; + } + + virtual bool compare(const CSRContext *other) const + { + const CertContextProps *a = &_props; + const CertContextProps *b = other->props(); + + PublicKey akey, bkey; + PKeyContext *ac = subjectPublicKey(); + akey.change(ac); + PKeyContext *bc = other->subjectPublicKey(); + bkey.change(bc); + + if(a->sig != b->sig || a->sigalgo != b->sigalgo || akey != bkey) + return false; + + // TODO: Anything else we should compare? + + return true; + } + + virtual PKeyContext *subjectPublicKey() const // does a new + { + MyPKeyContext *kc = new MyPKeyContext(provider()); + EVP_PKEY *pkey = X509_REQ_get_pubkey(item.req); + PKeyBase *kb = kc->pkeyToBase(pkey, false); + kc->setKey(kb); + return kc; + } + + virtual QString toSPKAC() const + { + return QString(); + } + + virtual ConvertResult fromSPKAC(const QString &s) + { + Q_UNUSED(s); + return ErrorDecode; + } + + void make_props() + { + X509_REQ *x = item.req; + CertContextProps p; + + // TODO: QString challenge; + + p.format = PKCS10; + + CertificateInfo subject; + + subject = get_cert_name(X509_REQ_get_subject_name(x)); + + STACK_OF(X509_EXTENSION) *exts = X509_REQ_get_extensions(x); + + p.isCA = false; + p.pathLimit = 0; + int pos = X509v3_get_ext_by_NID(exts, NID_basic_constraints, -1); + if(pos != -1) + { + X509_EXTENSION *ex = X509v3_get_ext(exts, pos); + if(ex) + get_basic_constraints(ex, &p.isCA, &p.pathLimit); + } + + pos = X509v3_get_ext_by_NID(exts, NID_subject_alt_name, -1); + if(pos != -1) + { + X509_EXTENSION *ex = X509v3_get_ext(exts, pos); + if(ex) + subject.unite(get_cert_alt_name(ex)); + } + + pos = X509v3_get_ext_by_NID(exts, NID_key_usage, -1); + if(pos != -1) + { + X509_EXTENSION *ex = X509v3_get_ext(exts, pos); + if(ex) + p.constraints = get_cert_key_usage(ex); + } + + pos = X509v3_get_ext_by_NID(exts, NID_ext_key_usage, -1); + if(pos != -1) + { + X509_EXTENSION *ex = X509v3_get_ext(exts, pos); + if(ex) + p.constraints += get_cert_ext_key_usage(ex); + } + + pos = X509v3_get_ext_by_NID(exts, NID_certificate_policies, -1); + if(pos != -1) + { + X509_EXTENSION *ex = X509v3_get_ext(exts, pos); + if(ex) + p.policies = get_cert_policies(ex); + } + + sk_X509_EXTENSION_pop_free(exts, X509_EXTENSION_free); + + if (x->signature) + { + p.sig = QByteArray(x->signature->length, 0); + for (int i=0; i< x->signature->length; i++) + p.sig[i] = x->signature->data[i]; + } + + switch( OBJ_obj2nid(x->sig_alg->algorithm) ) + { + case NID_sha1WithRSAEncryption: + p.sigalgo = QCA::EMSA3_SHA1; + break; + case NID_md5WithRSAEncryption: + p.sigalgo = QCA::EMSA3_MD5; + break; +#ifdef HAVE_OPENSSL_MD2 + case NID_md2WithRSAEncryption: + p.sigalgo = QCA::EMSA3_MD2; + break; +#endif + case NID_ripemd160WithRSA: + p.sigalgo = QCA::EMSA3_RIPEMD160; + break; + case NID_dsaWithSHA1: + p.sigalgo = QCA::EMSA1_SHA1; + break; + default: + qDebug() << "Unknown signature value: " << OBJ_obj2nid(x->sig_alg->algorithm); + p.sigalgo = QCA::SignatureUnknown; + } + + // FIXME: super hack + CertificateOptions opts; + opts.setInfo(subject); + p.subject = opts.infoOrdered(); + + _props = p; + } +}; + +//---------------------------------------------------------------------------- +// MyCRLContext +//---------------------------------------------------------------------------- +class MyCRLContext : public CRLContext +{ +public: + X509Item item; + CRLContextProps _props; + + MyCRLContext(Provider *p) : CRLContext(p) + { + } + + MyCRLContext(const MyCRLContext &from) : CRLContext(from), item(from.item) + { + } + + virtual Provider::Context *clone() const + { + return new MyCRLContext(*this); + } + + virtual QByteArray toDER() const + { + return item.toDER(); + } + + virtual QString toPEM() const + { + return item.toPEM(); + } + + virtual ConvertResult fromDER(const QByteArray &a) + { + _props = CRLContextProps(); + ConvertResult r = item.fromDER(a, X509Item::TypeCRL); + if(r == ConvertGood) + make_props(); + return r; + } + + virtual ConvertResult fromPEM(const QString &s) + { + ConvertResult r = item.fromPEM(s, X509Item::TypeCRL); + if(r == ConvertGood) + make_props(); + return r; + } + + void fromX509(X509_CRL *x) + { + CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509_CRL); + item.crl = x; + make_props(); + } + + virtual const CRLContextProps *props() const + { + return &_props; + } + + virtual bool compare(const CRLContext *other) const + { + const CRLContextProps *a = &_props; + const CRLContextProps *b = other->props(); + + if(a->issuer != b->issuer) + return false; + if(a->number != b->number) + return false; + if(a->thisUpdate != b->thisUpdate) + return false; + if(a->nextUpdate != b->nextUpdate) + return false; + if(a->revoked != b->revoked) + return false; + if(a->sig != b->sig) + return false; + if(a->sigalgo != b->sigalgo) + return false; + if(a->issuerId != b->issuerId) + return false; + + return true; + } + + void make_props() + { + X509_CRL *x = item.crl; + + CRLContextProps p; + + CertificateInfo issuer; + + issuer = get_cert_name(X509_CRL_get_issuer(x)); + + p.thisUpdate = ASN1_UTCTIME_QDateTime(X509_CRL_get_lastUpdate(x), NULL); + p.nextUpdate = ASN1_UTCTIME_QDateTime(X509_CRL_get_nextUpdate(x), NULL); + + STACK_OF(X509_REVOKED)* revokeStack = X509_CRL_get_REVOKED(x); + + for (int i = 0; i < sk_X509_REVOKED_num(revokeStack); ++i) { + X509_REVOKED *rev = sk_X509_REVOKED_value(revokeStack, i); + BigInteger serial = bn2bi(ASN1_INTEGER_to_BN(rev->serialNumber, NULL)); + QDateTime time = ASN1_UTCTIME_QDateTime( rev->revocationDate, NULL); + QCA::CRLEntry::Reason reason = QCA::CRLEntry::Unspecified; + int pos = X509_REVOKED_get_ext_by_NID(rev, NID_crl_reason, -1); + if (pos != -1) { + X509_EXTENSION *ex = X509_REVOKED_get_ext(rev, pos); + if(ex) { + int *result = (int*) X509V3_EXT_d2i(ex); + switch (*result) { + case 0: + reason = QCA::CRLEntry::Unspecified; + break; + case 1: + reason = QCA::CRLEntry::KeyCompromise; + break; + case 2: + reason = QCA::CRLEntry::CACompromise; + break; + case 3: + reason = QCA::CRLEntry::AffiliationChanged; + break; + case 4: + reason = QCA::CRLEntry::Superseded; + break; + case 5: + reason = QCA::CRLEntry::CessationOfOperation; + break; + case 6: + reason = QCA::CRLEntry::CertificateHold; + break; + case 8: + reason = QCA::CRLEntry::RemoveFromCRL; + break; + case 9: + reason = QCA::CRLEntry::PrivilegeWithdrawn; + break; + case 10: + reason = QCA::CRLEntry::AACompromise; + break; + default: + reason = QCA::CRLEntry::Unspecified; + break; + } + ASN1_INTEGER_free((ASN1_INTEGER*)result); + } + } + CRLEntry thisEntry( serial, time, reason); + p.revoked.append(thisEntry); + } + + if (x->signature) + { + p.sig = QByteArray(x->signature->length, 0); + for (int i=0; i< x->signature->length; i++) + p.sig[i] = x->signature->data[i]; + } + switch( OBJ_obj2nid(x->sig_alg->algorithm) ) + { + case NID_sha1WithRSAEncryption: + p.sigalgo = QCA::EMSA3_SHA1; + break; + case NID_md5WithRSAEncryption: + p.sigalgo = QCA::EMSA3_MD5; + break; +#ifdef HAVE_OPENSSL_MD2 + case NID_md2WithRSAEncryption: + p.sigalgo = QCA::EMSA3_MD2; + break; +#endif + case NID_ripemd160WithRSA: + p.sigalgo = QCA::EMSA3_RIPEMD160; + break; + case NID_dsaWithSHA1: + p.sigalgo = QCA::EMSA1_SHA1; + break; + case NID_sha224WithRSAEncryption: + p.sigalgo = QCA::EMSA3_SHA224; + break; + case NID_sha256WithRSAEncryption: + p.sigalgo = QCA::EMSA3_SHA256; + break; + case NID_sha384WithRSAEncryption: + p.sigalgo = QCA::EMSA3_SHA384; + break; + case NID_sha512WithRSAEncryption: + p.sigalgo = QCA::EMSA3_SHA512; + break; + default: + qWarning() << "Unknown signature value: " << OBJ_obj2nid(x->sig_alg->algorithm); + p.sigalgo = QCA::SignatureUnknown; + } + + int pos = X509_CRL_get_ext_by_NID(x, NID_authority_key_identifier, -1); + if(pos != -1) + { + X509_EXTENSION *ex = X509_CRL_get_ext(x, pos); + if(ex) + p.issuerId += get_cert_issuer_key_id(ex); + } + + p.number = -1; + pos = X509_CRL_get_ext_by_NID(x, NID_crl_number, -1); + if(pos != -1) + { + X509_EXTENSION *ex = X509_CRL_get_ext(x, pos); + if(ex) { + int *result = (int*) X509V3_EXT_d2i(ex); + p.number = (*result); + ASN1_INTEGER_free((ASN1_INTEGER*)result); + } + } + + // FIXME: super hack + CertificateOptions opts; + opts.setInfo(issuer); + p.issuer = opts.infoOrdered(); + + _props = p; + } +}; + +//---------------------------------------------------------------------------- +// MyCertCollectionContext +//---------------------------------------------------------------------------- +class MyCertCollectionContext : public CertCollectionContext +{ + Q_OBJECT +public: + MyCertCollectionContext(Provider *p) : CertCollectionContext(p) + { + } + + virtual Provider::Context *clone() const + { + return new MyCertCollectionContext(*this); + } + + virtual QByteArray toPKCS7(const QList &certs, const QList &crls) const + { + // TODO: implement + Q_UNUSED(certs); + Q_UNUSED(crls); + return QByteArray(); + } + + virtual ConvertResult fromPKCS7(const QByteArray &a, QList *certs, QList *crls) const + { + BIO *bi = BIO_new(BIO_s_mem()); + BIO_write(bi, a.data(), a.size()); + PKCS7 *p7 = d2i_PKCS7_bio(bi, NULL); + BIO_free(bi); + if(!p7) + return ErrorDecode; + + STACK_OF(X509) *xcerts = 0; + STACK_OF(X509_CRL) *xcrls = 0; + + int i = OBJ_obj2nid(p7->type); + if(i == NID_pkcs7_signed) + { + xcerts = p7->d.sign->cert; + xcrls = p7->d.sign->crl; + } + else if(i == NID_pkcs7_signedAndEnveloped) + { + xcerts = p7->d.signed_and_enveloped->cert; + xcrls = p7->d.signed_and_enveloped->crl; + } + + QList _certs; + QList _crls; + + if(xcerts) + { + for(int n = 0; n < sk_X509_num(xcerts); ++n) + { + MyCertContext *cc = new MyCertContext(provider()); + cc->fromX509(sk_X509_value(xcerts, n)); + _certs += cc; + } + } + if(xcrls) + { + for(int n = 0; n < sk_X509_CRL_num(xcrls); ++n) + { + MyCRLContext *cc = new MyCRLContext(provider()); + cc->fromX509(sk_X509_CRL_value(xcrls, n)); + _crls += cc; + } + } + + PKCS7_free(p7); + + *certs = _certs; + *crls = _crls; + + return ConvertGood; + } +}; + +static bool usage_check(const MyCertContext &cc, UsageMode u) +{ + if (cc._props.constraints.isEmpty() ) { + // then any usage is OK + return true; + } + + switch (u) + { + case UsageAny : + return true; + break; + case UsageTLSServer : + return cc._props.constraints.contains(ServerAuth); + break; + case UsageTLSClient : + return cc._props.constraints.contains(ClientAuth); + break; + case UsageCodeSigning : + return cc._props.constraints.contains(CodeSigning); + break; + case UsageEmailProtection : + return cc._props.constraints.contains(EmailProtection); + break; + case UsageTimeStamping : + return cc._props.constraints.contains(TimeStamping); + break; + case UsageCRLSigning : + return cc._props.constraints.contains(CRLSign); + break; + default: + return true; + } +} + +Validity MyCertContext::validate(const QList &trusted, const QList &untrusted, const QList &crls, UsageMode u, ValidateFlags vf) const +{ + // TODO + Q_UNUSED(vf); + + STACK_OF(X509) *trusted_list = sk_X509_new_null(); + STACK_OF(X509) *untrusted_list = sk_X509_new_null(); + QList crl_list; + + int n; + for(n = 0; n < trusted.count(); ++n) + { + const MyCertContext *cc = static_cast(trusted[n]); + X509 *x = cc->item.cert; + CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509); + sk_X509_push(trusted_list, x); + } + for(n = 0; n < untrusted.count(); ++n) + { + const MyCertContext *cc = static_cast(untrusted[n]); + X509 *x = cc->item.cert; + CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509); + sk_X509_push(untrusted_list, x); + } + for(n = 0; n < crls.count(); ++n) + { + const MyCRLContext *cc = static_cast(crls[n]); + X509_CRL *x = cc->item.crl; + CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509_CRL); + crl_list.append(x); + } + + const MyCertContext *cc = this; + X509 *x = cc->item.cert; + + // verification happens through a store "context" + X509_STORE_CTX *ctx = X509_STORE_CTX_new(); + + // make a store of crls + X509_STORE *store = X509_STORE_new(); + for(int n = 0; n < crl_list.count(); ++n) + X509_STORE_add_crl(store, crl_list[n]); + + // the first initialization handles untrusted certs, crls, and target cert + X509_STORE_CTX_init(ctx, store, x, untrusted_list); + + // this initializes the trusted certs + X509_STORE_CTX_trusted_stack(ctx, trusted_list); + + // verify! + int ret = X509_verify_cert(ctx); + int err = -1; + if(!ret) + err = ctx->error; + + // cleanup + X509_STORE_CTX_free(ctx); + X509_STORE_free(store); + + sk_X509_pop_free(trusted_list, X509_free); + sk_X509_pop_free(untrusted_list, X509_free); + for(int n = 0; n < crl_list.count(); ++n) + X509_CRL_free(crl_list[n]); + + if(!ret) + return convert_verify_error(err); + + if(!usage_check(*cc, u)) + return ErrorInvalidPurpose; + + return ValidityGood; +} + +Validity MyCertContext::validate_chain(const QList &chain, const QList &trusted, const QList &crls, UsageMode u, ValidateFlags vf) const +{ + // TODO + Q_UNUSED(vf); + + STACK_OF(X509) *trusted_list = sk_X509_new_null(); + STACK_OF(X509) *untrusted_list = sk_X509_new_null(); + QList crl_list; + + int n; + for(n = 0; n < trusted.count(); ++n) + { + const MyCertContext *cc = static_cast(trusted[n]); + X509 *x = cc->item.cert; + CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509); + sk_X509_push(trusted_list, x); + } + for(n = 1; n < chain.count(); ++n) + { + const MyCertContext *cc = static_cast(chain[n]); + X509 *x = cc->item.cert; + CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509); + sk_X509_push(untrusted_list, x); + } + for(n = 0; n < crls.count(); ++n) + { + const MyCRLContext *cc = static_cast(crls[n]); + X509_CRL *x = cc->item.crl; + CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509_CRL); + crl_list.append(x); + } + + const MyCertContext *cc = static_cast(chain[0]); + X509 *x = cc->item.cert; + + // verification happens through a store "context" + X509_STORE_CTX *ctx = X509_STORE_CTX_new(); + + // make a store of crls + X509_STORE *store = X509_STORE_new(); + for(int n = 0; n < crl_list.count(); ++n) + X509_STORE_add_crl(store, crl_list[n]); + + // the first initialization handles untrusted certs, crls, and target cert + X509_STORE_CTX_init(ctx, store, x, untrusted_list); + + // this initializes the trusted certs + X509_STORE_CTX_trusted_stack(ctx, trusted_list); + + // verify! + int ret = X509_verify_cert(ctx); + int err = -1; + if(!ret) + err = ctx->error; + + // grab the chain, which may not be fully populated + STACK_OF(X509) *xchain = X509_STORE_CTX_get_chain(ctx); + + // make sure the chain is what we expect. the reason we need to do + // this is because I don't think openssl cares about the order of + // input. that is, if there's a chain A<-B<-C, and we input A as + // the base cert, with B and C as the issuers, we will get a + // successful validation regardless of whether the issuer list is + // in the order B,C or C,B. we don't want an input chain of A,C,B + // to be considered correct, so we must account for that here. + QList expected; + for(int n = 0; n < chain.count(); ++n) + expected += static_cast(chain[n]); + if(!xchain || !sameChain(xchain, expected)) + err = ErrorValidityUnknown; + + // cleanup + X509_STORE_CTX_free(ctx); + X509_STORE_free(store); + + sk_X509_pop_free(trusted_list, X509_free); + sk_X509_pop_free(untrusted_list, X509_free); + for(int n = 0; n < crl_list.count(); ++n) + X509_CRL_free(crl_list[n]); + + if(!ret) + return convert_verify_error(err); + + if(!usage_check(*cc, u)) + return ErrorInvalidPurpose; + + return ValidityGood; +} + +class MyPKCS12Context : public PKCS12Context +{ +public: + MyPKCS12Context(Provider *p) : PKCS12Context(p) + { + } + + ~MyPKCS12Context() + { + } + + virtual Provider::Context *clone() const + { + return 0; + } + + virtual QByteArray toPKCS12(const QString &name, const QList &chain, const PKeyContext &priv, const SecureArray &passphrase) const + { + if(chain.count() < 1) + return QByteArray(); + + X509 *cert = static_cast(chain[0])->item.cert; + STACK_OF(X509) *ca = sk_X509_new_null(); + if(chain.count() > 1) + { + for(int n = 1; n < chain.count(); ++n) + { + X509 *x = static_cast(chain[n])->item.cert; + CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509); + sk_X509_push(ca, x); + } + } + const MyPKeyContext &pk = static_cast(priv); + PKCS12 *p12 = PKCS12_create((char *)passphrase.data(), (char *)name.toLatin1().data(), pk.get_pkey(), cert, ca, 0, 0, 0, 0, 0); + sk_X509_pop_free(ca, X509_free); + + if(!p12) + return QByteArray(); + + BIO *bo = BIO_new(BIO_s_mem()); + i2d_PKCS12_bio(bo, p12); + QByteArray out = bio2ba(bo); + return out; + } + + virtual ConvertResult fromPKCS12(const QByteArray &in, const SecureArray &passphrase, QString *name, QList *chain, PKeyContext **priv) const + { + BIO *bi = BIO_new(BIO_s_mem()); + BIO_write(bi, in.data(), in.size()); + PKCS12 *p12 = d2i_PKCS12_bio(bi, NULL); + if(!p12) + return ErrorDecode; + + EVP_PKEY *pkey; + X509 *cert; + STACK_OF(X509) *ca = NULL; + if(!PKCS12_parse(p12, passphrase.data(), &pkey, &cert, &ca)) + { + PKCS12_free(p12); + return ErrorDecode; + } + PKCS12_free(p12); + + // require private key + if(!pkey) + { + if(cert) + X509_free(cert); + if(ca) + sk_X509_pop_free(ca, X509_free); + return ErrorDecode; + } + + // TODO: require cert + + int aliasLength; + char *aliasData = (char*)X509_alias_get0(cert, &aliasLength); + *name = QString::fromLatin1(aliasData, aliasLength); + + MyPKeyContext *pk = new MyPKeyContext(provider()); + PKeyBase *k = pk->pkeyToBase(pkey, true); // does an EVP_PKEY_free() + pk->k = k; + *priv = pk; + + QList certs; + if(cert) + { + MyCertContext *cc = new MyCertContext(provider()); + cc->fromX509(cert); + certs.append(cc); + X509_free(cert); + } + if(ca) + { + // TODO: reorder in chain-order? + // TODO: throw out certs that don't fit the chain? + for(int n = 0; n < sk_X509_num(ca); ++n) + { + MyCertContext *cc = new MyCertContext(provider()); + cc->fromX509(sk_X509_value(ca, n)); + certs.append(cc); + } + sk_X509_pop_free(ca, X509_free); + } + + // reorder, throw out + QCA::CertificateChain ch; + for(int n = 0; n < certs.count(); ++n) + { + QCA::Certificate cert; + cert.change(certs[n]); + ch += cert; + } + certs.clear(); + ch = ch.complete(QList()); + for(int n = 0; n < ch.count(); ++n) + { + MyCertContext *cc = (MyCertContext *)ch[n].context(); + certs += (new MyCertContext(*cc)); + } + ch.clear(); + + *chain = certs; + return ConvertGood; + } +}; + +//========================================================== +static QString cipherIDtoString( const TLS::Version &version, const unsigned long &cipherID) +{ + if (TLS::TLS_v1 == version) { + switch( cipherID & 0xFFFF ) { + case 0x0000: + // RFC 2246 A.5 + return QString("TLS_NULL_WITH_NULL_NULL"); + break; + case 0x0001: + // RFC 2246 A.5 + return QString("TLS_RSA_WITH_NULL_MD5"); + break; + case 0x0002: + // RFC 2246 A.5 + return QString("TLS_RSA_WITH_NULL_SHA"); + break; + case 0x0003: + // RFC 2246 A.5 + return QString("TLS_RSA_EXPORT_WITH_RC4_40_MD5"); + break; + case 0x0004: + // RFC 2246 A.5 + return QString("TLS_RSA_WITH_RC4_128_MD5"); + break; + case 0x0005: + // RFC 2246 A.5 + return QString("TLS_RSA_WITH_RC4_128_SHA"); + break; + case 0x0006: + // RFC 2246 A.5 + return QString("TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5"); + break; + case 0x0007: + // RFC 2246 A.5 + return QString("TLS_RSA_WITH_IDEA_CBC_SHA"); + break; + case 0x0008: + // RFC 2246 A.5 + return QString("TLS_RSA_EXPORT_WITH_DES40_CBC_SHA"); + break; + case 0x0009: + // RFC 2246 A.5 + return QString("TLS_RSA_WITH_DES_CBC_SHA"); + break; + case 0x000A: + // RFC 2246 A.5 + return QString("TLS_RSA_WITH_3DES_EDE_CBC_SHA"); + break; + case 0x000B: + // RFC 2246 A.5 + return QString("TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA"); + break; + case 0x000C: + // RFC 2246 A.5 + return QString("TLS_DH_DSS_WITH_DES_CBC_SHA"); + break; + case 0x000D: + // RFC 2246 A.5 + return QString("TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA"); + break; + case 0x000E: + // RFC 2246 A.5 + return QString("TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA"); + break; + case 0x000F: + // RFC 2246 A.5 + return QString("TLS_DH_RSA_WITH_DES_CBC_SHA"); + break; + case 0x0010: + // RFC 2246 A.5 + return QString("TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA"); + break; + case 0x0011: + // RFC 2246 A.5 + return QString("TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"); + break; + case 0x0012: + // RFC 2246 A.5 + return QString("TLS_DHE_DSS_WITH_DES_CBC_SHA"); + break; + case 0x0013: + // RFC 2246 A.5 + return QString("TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA"); + break; + case 0x0014: + // RFC 2246 A.5 + return QString("TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA"); + break; + case 0x0015: + // RFC 2246 A.5 + return QString("TLS_DHE_RSA_WITH_DES_CBC_SHA"); + break; + case 0x0016: + // RFC 2246 A.5 + return QString("TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA"); + break; + case 0x0017: + // RFC 2246 A.5 + return QString("TLS_DH_anon_EXPORT_WITH_RC4_40_MD5"); + break; + case 0x0018: + // RFC 2246 A.5 + return QString("TLS_DH_anon_WITH_RC4_128_MD5"); + break; + case 0x0019: + // RFC 2246 A.5 + return QString("TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA"); + break; + case 0x001A: + // RFC 2246 A.5 + return QString("TLS_DH_anon_WITH_DES_CBC_SHA"); + break; + case 0x001B: + // RFC 2246 A.5 + return QString("TLS_DH_anon_WITH_3DES_EDE_CBC_SHA"); + break; + + // 0x001C and 0x001D are reserved to avoid collision with SSL3 Fortezza. + case 0x001E: + // RFC 2712 Section 3 + return QString("TLS_KRB5_WITH_DES_CBC_SHA"); + break; + case 0x001F: + // RFC 2712 Section 3 + return QString("TLS_KRB5_WITH_3DES_EDE_CBC_SHA"); + break; + case 0x0020: + // RFC 2712 Section 3 + return QString("TLS_KRB5_WITH_RC4_128_SHA"); + break; + case 0x0021: + // RFC 2712 Section 3 + return QString("TLS_KRB5_WITH_IDEA_CBC_SHA"); + break; + case 0x0022: + // RFC 2712 Section 3 + return QString("TLS_KRB5_WITH_DES_CBC_MD5"); + break; + case 0x0023: + // RFC 2712 Section 3 + return QString("TLS_KRB5_WITH_3DES_EDE_CBC_MD5"); + break; + case 0x0024: + // RFC 2712 Section 3 + return QString("TLS_KRB5_WITH_RC4_128_MD5"); + break; + case 0x0025: + // RFC 2712 Section 3 + return QString("TLS_KRB5_WITH_IDEA_CBC_MD5"); + break; + case 0x0026: + // RFC 2712 Section 3 + return QString("TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA"); + break; + case 0x0027: + // RFC 2712 Section 3 + return QString("TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA"); + break; + case 0x0028: + // RFC 2712 Section 3 + return QString("TLS_KRB5_EXPORT_WITH_RC4_40_SHA"); + break; + case 0x0029: + // RFC 2712 Section 3 + return QString("TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5"); + break; + case 0x002A: + // RFC 2712 Section 3 + return QString("TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5"); + break; + case 0x002B: + // RFC 2712 Section 3 + return QString("TLS_KRB5_EXPORT_WITH_RC4_40_MD5"); + break; + + case 0x002F: + // RFC 3268 + return QString("TLS_RSA_WITH_AES_128_CBC_SHA"); + break; + case 0x0030: + // RFC 3268 + return QString("TLS_DH_DSS_WITH_AES_128_CBC_SHA"); + break; + case 0x0031: + // RFC 3268 + return QString("TLS_DH_RSA_WITH_AES_128_CBC_SHA"); + break; + case 0x0032: + // RFC 3268 + return QString("TLS_DHE_DSS_WITH_AES_128_CBC_SHA"); + break; + case 0x0033: + // RFC 3268 + return QString("TLS_DHE_RSA_WITH_AES_128_CBC_SHA"); + break; + case 0x0034: + // RFC 3268 + return QString("TLS_DH_anon_WITH_AES_128_CBC_SHA"); + break; + case 0x0035: + // RFC 3268 + return QString("TLS_RSA_WITH_AES_256_CBC_SHA"); + break; + case 0x0036: + // RFC 3268 + return QString("TLS_DH_DSS_WITH_AES_256_CBC_SHA"); + break; + case 0x0037: + // RFC 3268 + return QString("TLS_DH_RSA_WITH_AES_256_CBC_SHA"); + break; + case 0x0038: + // RFC 3268 + return QString("TLS_DHE_DSS_WITH_AES_256_CBC_SHA"); + break; + case 0x0039: + // RFC 3268 + return QString("TLS_DHE_RSA_WITH_AES_256_CBC_SHA"); + break; + case 0x003A: + // RFC 3268 + return QString("TLS_DH_anon_WITH_AES_256_CBC_SHA"); + break; + + // TODO: 0x0041 -> 0x0046 are from RFC4132 (Camellia) + + case 0x0060: + // Was meant to be from draft-ietf-tls-56-bit-ciphersuites-01.txt, but isn't + return QString("TLS_CK_RSA_EXPORT1024_WITH_RC4_56_MD5"); + break; + case 0x0061: + // Was meant to be from draft-ietf-tls-56-bit-ciphersuites-01.txt, but isn't + return QString("TLS_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5"); + break; + case 0x0062: + // Apparently from draft-ietf-tls-56-bit-ciphersuites-01.txt + return QString("TLS_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA"); + break; + case 0x0063: + // Apparently from draft-ietf-tls-56-bit-ciphersuites-01.txt + return QString("TLS_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA"); + break; + case 0x0064: + // Apparently from draft-ietf-tls-56-bit-ciphersuites-01.txt + return QString("TLS_CK_RSA_EXPORT1024_WITH_RC4_56_SHA"); + break; + case 0x0065: + // Apparently from draft-ietf-tls-56-bit-ciphersuites-01.txt + return QString("TLS_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA"); + break; + case 0x0066: + // Apparently from draft-ietf-tls-56-bit-ciphersuites-01.txt + return QString("TLS_CK_DHE_DSS_WITH_RC4_128_SHA"); + break; + + // TODO: 0x0084 -> 0x0089 are from RFC4132 (Camellia) + + // TODO: 0x008A -> 0x0095 are from RFC4279 (PSK) + + // TODO: 0xC000 -> 0xC019 are from the ECC draft + + default: + return QString("TLS algo to be added: %1").arg(cipherID & 0xffff, 0, 16); + break; + } + } else if (TLS::SSL_v3 == version) { + switch( cipherID & 0xFFFF ) { + case 0x0000: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_NULL_WITH_NULL_NULL"); + break; + case 0x0001: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_RSA_WITH_NULL_MD5"); + break; + case 0x0002: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_RSA_WITH_NULL_SHA"); + break; + case 0x0003: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_RSA_EXPORT_WITH_RC4_40_MD5"); + break; + case 0x0004: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_RSA_WITH_RC4_128_MD5"); + break; + case 0x0005: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_RSA_WITH_RC4_128_SHA"); + break; + case 0x0006: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5"); + break; + case 0x0007: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_RSA_WITH_IDEA_CBC_SHA"); + break; + case 0x0008: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_RSA_EXPORT_WITH_DES40_CBC_SHA"); + break; + case 0x0009: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_RSA_WITH_DES_CBC_SHA"); + break; + case 0x000A: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_RSA_WITH_3DES_EDE_CBC_SHA"); + break; + case 0x000B: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA"); + break; + case 0x000C: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DH_DSS_WITH_DES_CBC_SHA"); + break; + case 0x000D: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA"); + break; + case 0x000E: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DH_RSA_WITH_DES_CBC_SHA"); + break; + case 0x000F: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DH_RSA_WITH_DES_CBC_SHA"); + break; + case 0x0010: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA"); + break; + case 0x0011: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"); + break; + case 0x0012: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DHE_DSS_WITH_DES_CBC_SHA"); + break; + case 0x0013: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"); + break; + case 0x0014: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA"); + break; + case 0x0015: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DHE_RSA_WITH_DES_CBC_SHA"); + break; + case 0x0016: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA"); + break; + case 0x0017: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SL_DH_anon_EXPORT_WITH_RC4_40_MD5"); + break; + case 0x0018: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DH_anon_WITH_RC4_128_MD5"); + break; + case 0x0019: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA"); + break; + case 0x001A: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DH_anon_WITH_DES_CBC_SHA"); + break; + case 0x001B: + // From the Netscape SSL3 Draft (nov 1996) + return QString("SSL_DH_anon_WITH_3DES_EDE_CBC_SHA"); + break; + + // TODO: Sort out the Fortezza mess... + + // These aren't in the Netscape SSL3 draft, but openssl does + // allow you to use them with SSL3. + case 0x001E: + return QString("SSL_KRB5_WITH_DES_CBC_SHA"); + break; + case 0x001F: + return QString("SSL_KRB5_WITH_3DES_EDE_CBC_SHA"); + break; + case 0x0020: + return QString("SSL_KRB5_WITH_RC4_128_SHA"); + break; + case 0x0021: + return QString("SSL_KRB5_WITH_IDEA_CBC_SHA"); + break; + case 0x0022: + return QString("SSL_KRB5_WITH_DES_CBC_MD5"); + break; + case 0x0023: + return QString("SSL_KRB5_WITH_3DES_EDE_CBC_MD5"); + break; + case 0x0024: + return QString("SSL_KRB5_WITH_RC4_128_MD5"); + break; + case 0x0025: + return QString("SSL_KRB5_WITH_IDEA_CBC_MD5"); + break; + case 0x0026: + return QString("SSL_KRB5_EXPORT_WITH_DES_CBC_40_SHA"); + break; + case 0x0027: + return QString("SSL_KRB5_EXPORT_WITH_RC2_CBC_40_SHA"); + break; + case 0x0028: + return QString("SSL_KRB5_EXPORT_WITH_RC4_40_SHA"); + break; + case 0x0029: + return QString("SSL_KRB5_EXPORT_WITH_DES_CBC_40_MD5"); + break; + case 0x002A: + return QString("SSL_KRB5_EXPORT_WITH_RC2_CBC_40_MD5"); + break; + case 0x002B: + return QString("SSL_KRB5_EXPORT_WITH_RC4_40_MD5"); + break; + case 0x002F: + return QString("SSL_RSA_WITH_AES_128_CBC_SHA"); + break; + case 0x0030: + return QString("SSL_DH_DSS_WITH_AES_128_CBC_SHA"); + break; + case 0x0031: + return QString("SSL_DH_RSA_WITH_AES_128_CBC_SHA"); + break; + case 0x0032: + return QString("SSL_DHE_DSS_WITH_AES_128_CBC_SHA"); + break; + case 0x0033: + return QString("SSL_DHE_RSA_WITH_AES_128_CBC_SHA"); + break; + case 0x0034: + return QString("SSL_DH_anon_WITH_AES_128_CBC_SHA"); + break; + case 0x0035: + return QString("SSL_RSA_WITH_AES_256_CBC_SHA"); + break; + case 0x0036: + return QString("SSL_DH_DSS_WITH_AES_256_CBC_SHA"); + break; + case 0x0037: + return QString("SSL_DH_RSA_WITH_AES_256_CBC_SHA"); + break; + case 0x0038: + return QString("SSL_DHE_DSS_WITH_AES_256_CBC_SHA"); + break; + case 0x0039: + return QString("SSL_DHE_RSA_WITH_AES_256_CBC_SHA"); + break; + case 0x003A: + return QString("SSL_DH_anon_WITH_AES_256_CBC_SHA"); + break; + case 0x0060: + // Was meant to be from draft-ietf-tls-56-bit-ciphersuites-01.txt, but isn't + return QString("SSL_CK_RSA_EXPORT1024_WITH_RC4_56_MD5"); + break; + case 0x0061: + // Was meant to be from draft-ietf-tls-56-bit-ciphersuites-01.txt, but isn't + return QString("SSL_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5"); + break; + case 0x0062: + // Apparently from draft-ietf-tls-56-bit-ciphersuites-01.txt + return QString("SSL_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA"); + break; + case 0x0063: + // Apparently from draft-ietf-tls-56-bit-ciphersuites-01.txt + return QString("SSL_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA"); + break; + case 0x0064: + // Apparently from draft-ietf-tls-56-bit-ciphersuites-01.txt + return QString("SSL_CK_RSA_EXPORT1024_WITH_RC4_56_SHA"); + break; + case 0x0065: + // Apparently from draft-ietf-tls-56-bit-ciphersuites-01.txt + return QString("SSL_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA"); + break; + case 0x0066: + // Apparently from draft-ietf-tls-56-bit-ciphersuites-01.txt + return QString("SSL_CK_DHE_DSS_WITH_RC4_128_SHA"); + break; + default: + return QString("SSL3 to be added: %1").arg(cipherID & 0xffff, 0, 16); + break; + } + } else if (TLS::SSL_v2 == version) { + switch( cipherID & 0xffffff) { + case 0x010080: + // From the Netscape SSL2 Draft Section C.4 (nov 1994) + return QString("SSL_CK_RC4_128_WITH_MD5"); + break; + case 0x020080: + // From the Netscape SSL2 Draft Section C.4 (nov 1994) + return QString("SSL_CK_RC4_128_EXPORT40_WITH_MD5"); + break; + case 0x030080: + // From the Netscape SSL2 Draft Section C.4 (nov 1994) + return QString("SSL_CK_RC2_128_CBC_WITH_MD5"); + break; + case 0x040080: + // From the Netscape SSL2 Draft Section C.4 (nov 1994) + return QString("SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5"); + break; + case 0x050080: + // From the Netscape SSL2 Draft Section C.4 (nov 1994) + return QString("SSL_CK_RC4_128_EXPORT40_WITH_MD5"); + break; + case 0x060040: + // From the Netscape SSL2 Draft Section C.4 (nov 1994) + return QString("SSL_CK_DES_64_CBC_WITH_MD5"); + break; + case 0x0700C0: + // From the Netscape SSL2 Draft Section C.4 (nov 1994) + return QString("SSL_CK_DES_192_EDE3_CBC_WITH_MD5"); + break; + case 0x080080: + // From the openssl source, which says "MS hack" + return QString("SSL_CK_RC4_64_WITH_MD5"); + break; + default: + return QString("SSL2 to be added: %1").arg(cipherID & 0xffffff, 0, 16); + break; + } + } + else { + return QString("Unknown version!"); + } +} + +// TODO: test to ensure there is no cert-test lag +static bool ssl_init = false; +class MyTLSContext : public TLSContext +{ +public: + enum { Good, TryAgain, Bad }; + enum { Idle, Connect, Accept, Handshake, Active, Closing }; + + bool serv; // true if we are acting as a server + int mode; + QByteArray sendQueue; + QByteArray recvQueue; + + CertificateCollection trusted; + Certificate cert, peercert; // TODO: support cert chains + PrivateKey key; + QString targetHostName; + + Result result_result; + QByteArray result_to_net; + int result_encoded; + QByteArray result_plain; + + SSL *ssl; +#if OPENSSL_VERSION_NUMBER >= 0x00909000L + const SSL_METHOD *method; +#else + SSL_METHOD *method; +#endif + SSL_CTX *context; + BIO *rbio, *wbio; + Validity vr; + bool v_eof; + + MyTLSContext(Provider *p) : TLSContext(p, "tls") + { + if(!ssl_init) + { + SSL_library_init(); + SSL_load_error_strings(); + ssl_init = true; + } + + ssl = 0; + context = 0; + reset(); + } + + ~MyTLSContext() + { + reset(); + } + + virtual Provider::Context *clone() const + { + return 0; + } + + virtual void reset() + { + if(ssl) + { + SSL_free(ssl); + ssl = 0; + } + if(context) + { + SSL_CTX_free(context); + context = 0; + } + + cert = Certificate(); + key = PrivateKey(); + + sendQueue.resize(0); + recvQueue.resize(0); + mode = Idle; + peercert = Certificate(); + vr = ErrorValidityUnknown; + v_eof = false; + } + + // dummy verification function for SSL_set_verify() + static int ssl_verify_callback(int preverify_ok, X509_STORE_CTX *x509_ctx) + { + Q_UNUSED(preverify_ok); + Q_UNUSED(x509_ctx); + + // don't terminate handshake in case of verification failure + return 1; + } + + virtual QStringList supportedCipherSuites(const TLS::Version &version) const + { + OpenSSL_add_ssl_algorithms(); + SSL_CTX *ctx = 0; + switch (version) { +#ifndef OPENSSL_NO_SSL2 + case TLS::SSL_v2: + ctx = SSL_CTX_new(SSLv2_client_method()); + break; +#endif + case TLS::SSL_v3: + ctx = SSL_CTX_new(SSLv3_client_method()); + break; + case TLS::TLS_v1: + ctx = SSL_CTX_new(TLSv1_client_method()); + break; + case TLS::DTLS_v1: + default: + /* should not happen - should be in a "dtls" provider*/ + qWarning("Unexpected enum in cipherSuites"); + ctx = 0; + } + if (NULL == ctx) + return QStringList(); + + SSL *ssl = SSL_new(ctx); + if (NULL == ssl) { + SSL_CTX_free(ctx); + return QStringList(); + } + + STACK_OF(SSL_CIPHER) *sk = SSL_get_ciphers(ssl); + QStringList cipherList; + for(int i = 0; i < sk_SSL_CIPHER_num(sk); ++i) { + SSL_CIPHER *thisCipher = sk_SSL_CIPHER_value(sk, i); + cipherList += cipherIDtoString(version, thisCipher->id); + } + + SSL_free(ssl); + SSL_CTX_free(ctx); + + return cipherList; + } + + virtual bool canCompress() const + { + // TODO + return false; + } + + virtual bool canSetHostName() const + { + // TODO + return false; + } + + virtual int maxSSF() const + { + // TODO + return 256; + } + + virtual void setConstraints(int minSSF, int maxSSF) + { + // TODO + Q_UNUSED(minSSF); + Q_UNUSED(maxSSF); + } + + virtual void setConstraints(const QStringList &cipherSuiteList) + { + // TODO + Q_UNUSED(cipherSuiteList); + } + + virtual void setup(bool serverMode, const QString &hostName, bool compress) + { + serv = serverMode; + if ( false == serverMode ) { + // client + targetHostName = hostName; + } + Q_UNUSED(compress); // TODO + } + + virtual void setTrustedCertificates(const CertificateCollection &_trusted) + { + trusted = _trusted; + } + + virtual void setIssuerList(const QList &issuerList) + { + Q_UNUSED(issuerList); // TODO + } + + virtual void setCertificate(const CertificateChain &_cert, const PrivateKey &_key) + { + if(!_cert.isEmpty()) + cert = _cert.primary(); // TODO: take the whole chain + key = _key; + } + + virtual void setSessionId(const TLSSessionContext &id) + { + // TODO + Q_UNUSED(id); + } + + virtual void shutdown() + { + mode = Closing; + } + + virtual void start() + { + bool ok; + if(serv) + ok = priv_startServer(); + else + ok = priv_startClient(); + result_result = ok ? Success : Error; + + doResultsReady(); + } + + virtual void update(const QByteArray &from_net, const QByteArray &from_app) + { + if(mode == Active) + { + bool ok = true; + if(!from_app.isEmpty()) + ok = priv_encode(from_app, &result_to_net, &result_encoded); + if(ok) + ok = priv_decode(from_net, &result_plain, &result_to_net); + result_result = ok ? Success : Error; + } + else if(mode == Closing) + result_result = priv_shutdown(from_net, &result_to_net); + else + result_result = priv_handshake(from_net, &result_to_net); + + //printf("update (from_net=%d, to_net=%d, from_app=%d, to_app=%d)\n", from_net.size(), result_to_net.size(), from_app.size(), result_plain.size()); + + doResultsReady(); + } + + bool priv_startClient() + { + //serv = false; + method = SSLv23_client_method(); + if(!init()) + return false; + mode = Connect; + return true; + } + + bool priv_startServer() + { + //serv = true; + method = SSLv23_server_method(); + if(!init()) + return false; + mode = Accept; + return true; + } + + Result priv_handshake(const QByteArray &from_net, QByteArray *to_net) + { + if(!from_net.isEmpty()) + BIO_write(rbio, from_net.data(), from_net.size()); + + if(mode == Connect) + { + int ret = doConnect(); + if(ret == Good) + { + mode = Handshake; + } + else if(ret == Bad) + { + reset(); + return Error; + } + } + + if(mode == Accept) + { + int ret = doAccept(); + if(ret == Good) + { + getCert(); + mode = Active; + } + else if(ret == Bad) + { + reset(); + return Error; + } + } + + if(mode == Handshake) + { + int ret = doHandshake(); + if(ret == Good) + { + getCert(); + mode = Active; + } + else if(ret == Bad) + { + reset(); + return Error; + } + } + + // process outgoing + *to_net = readOutgoing(); + + if(mode == Active) + return Success; + else + return Continue; + } + + Result priv_shutdown(const QByteArray &from_net, QByteArray *to_net) + { + if(!from_net.isEmpty()) + BIO_write(rbio, from_net.data(), from_net.size()); + + int ret = doShutdown(); + if(ret == Bad) + { + reset(); + return Error; + } + + *to_net = readOutgoing(); + + if(ret == Good) + { + mode = Idle; + return Success; + } + else + { + //mode = Closing; + return Continue; + } + } + + bool priv_encode(const QByteArray &plain, QByteArray *to_net, int *enc) + { + if(mode != Active) + return false; + sendQueue.append(plain); + + int encoded = 0; + if(sendQueue.size() > 0) + { + int ret = SSL_write(ssl, sendQueue.data(), sendQueue.size()); + + enum { Good, Continue, Done, Error }; + int m; + if(ret <= 0) + { + int x = SSL_get_error(ssl, ret); + if(x == SSL_ERROR_WANT_READ || x == SSL_ERROR_WANT_WRITE) + m = Continue; + else if(x == SSL_ERROR_ZERO_RETURN) + m = Done; + else + m = Error; + } + else + { + m = Good; + encoded = ret; + int newsize = sendQueue.size() - encoded; + char *r = sendQueue.data(); + memmove(r, r + encoded, newsize); + sendQueue.resize(newsize); + } + + if(m == Done) + { + sendQueue.resize(0); + v_eof = true; + return false; + } + if(m == Error) + { + sendQueue.resize(0); + return false; + } + } + + *to_net += readOutgoing(); + *enc = encoded; + return true; + } + + bool priv_decode(const QByteArray &from_net, QByteArray *plain, QByteArray *to_net) + { + if(mode != Active) + return false; + if(!from_net.isEmpty()) + BIO_write(rbio, from_net.data(), from_net.size()); + + QByteArray a; + while(!v_eof) { + a.resize(8192); + int ret = SSL_read(ssl, a.data(), a.size()); + //printf("SSL_read = %d\n", ret); + if(ret > 0) + { + if(ret != (int)a.size()) + a.resize(ret); + //printf("SSL_read chunk: [%s]\n", qPrintable(arrayToHex(a))); + recvQueue.append(a); + } + else if(ret <= 0) + { + ERR_print_errors_fp(stdout); + int x = SSL_get_error(ssl, ret); + //printf("SSL_read error = %d\n", x); + if(x == SSL_ERROR_WANT_READ || x == SSL_ERROR_WANT_WRITE) + break; + else if(x == SSL_ERROR_ZERO_RETURN) + v_eof = true; + else + return false; + } + } + + *plain = recvQueue; + recvQueue.resize(0); + + // could be outgoing data also + *to_net += readOutgoing(); + return true; + } + + virtual bool waitForResultsReady(int msecs) + { + // TODO: for now, all operations block anyway + Q_UNUSED(msecs); + return true; + } + + virtual Result result() const + { + return result_result; + } + + virtual QByteArray to_net() + { + QByteArray a = result_to_net; + result_to_net.clear(); + return a; + } + + virtual int encoded() const + { + return result_encoded; + } + + virtual QByteArray to_app() + { + QByteArray a = result_plain; + result_plain.clear(); + return a; + } + + virtual bool eof() const + { + return v_eof; + } + + virtual bool clientHelloReceived() const + { + // TODO + return false; + } + + virtual bool serverHelloReceived() const + { + // TODO + return false; + } + + virtual QString hostName() const + { + // TODO + return QString(); + } + + virtual bool certificateRequested() const + { + // TODO + return false; + } + + virtual QList issuerList() const + { + // TODO + return QList(); + } + + virtual SessionInfo sessionInfo() const + { + SessionInfo sessInfo; + + sessInfo.isCompressed = (0 != ssl->session->compress_meth); + + if (ssl->version == TLS1_VERSION) + sessInfo.version = TLS::TLS_v1; + else if (ssl->version == SSL3_VERSION) + sessInfo.version = TLS::SSL_v3; + else if (ssl->version == SSL2_VERSION) + sessInfo.version = TLS::SSL_v2; + else { + qDebug("unexpected version response"); + sessInfo.version = TLS::TLS_v1; + } + + sessInfo.cipherSuite = cipherIDtoString( sessInfo.version, + SSL_get_current_cipher(ssl)->id); + + sessInfo.cipherMaxBits = SSL_get_cipher_bits(ssl, &(sessInfo.cipherBits)); + + sessInfo.id = 0; // TODO: session resuming + + return sessInfo; + } + + virtual QByteArray unprocessed() + { + QByteArray a; + int size = BIO_pending(rbio); + if(size <= 0) + return a; + a.resize(size); + + int r = BIO_read(rbio, a.data(), size); + if(r <= 0) + { + a.resize(0); + return a; + } + if(r != size) + a.resize(r); + return a; + } + + virtual Validity peerCertificateValidity() const + { + return vr; + } + + virtual CertificateChain peerCertificateChain() const + { + // TODO: support whole chain + CertificateChain chain; + chain.append(peercert); + return chain; + } + + void doResultsReady() + { + QMetaObject::invokeMethod(this, "resultsReady", Qt::QueuedConnection); + } + + bool init() + { + context = SSL_CTX_new(method); + if(!context) + return false; + + // setup the cert store + { + X509_STORE *store = SSL_CTX_get_cert_store(context); + QList cert_list = trusted.certificates(); + QList crl_list = trusted.crls(); + int n; + for(n = 0; n < cert_list.count(); ++n) + { + const MyCertContext *cc = static_cast(cert_list[n].context()); + X509 *x = cc->item.cert; + //CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509); + X509_STORE_add_cert(store, x); + } + for(n = 0; n < crl_list.count(); ++n) + { + const MyCRLContext *cc = static_cast(crl_list[n].context()); + X509_CRL *x = cc->item.crl; + //CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509_CRL); + X509_STORE_add_crl(store, x); + } + } + + ssl = SSL_new(context); + if(!ssl) + { + SSL_CTX_free(context); + context = 0; + return false; + } + SSL_set_ssl_method(ssl, method); // can this return error? + +#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME + if ( targetHostName.isEmpty() == false ) { + // we have a target + // this might fail, but we ignore that for now + char *hostname = targetHostName.toLatin1().data(); + SSL_set_tlsext_host_name( ssl, hostname ); + } +#endif + + // setup the memory bio + rbio = BIO_new(BIO_s_mem()); + wbio = BIO_new(BIO_s_mem()); + + // this passes control of the bios to ssl. we don't need to free them. + SSL_set_bio(ssl, rbio, wbio); + + // FIXME: move this to after server hello + // setup the cert to send + if(!cert.isNull() && !key.isNull()) + { + PrivateKey nkey = key; + + const PKeyContext *tmp_kc = static_cast(nkey.context()); + + if(!tmp_kc->sameProvider(this)) + { + //fprintf(stderr, "experimental: private key supplied by a different provider\n"); + + // make a pkey pointing to the existing private key + EVP_PKEY *pkey; + pkey = EVP_PKEY_new(); + EVP_PKEY_assign_RSA(pkey, createFromExisting(nkey.toRSA())); + + // make a new private key object to hold it + MyPKeyContext *pk = new MyPKeyContext(provider()); + PKeyBase *k = pk->pkeyToBase(pkey, true); // does an EVP_PKEY_free() + pk->k = k; + nkey.change(pk); + } + + const MyCertContext *cc = static_cast(cert.context()); + const MyPKeyContext *kc = static_cast(nkey.context()); + + if(SSL_use_certificate(ssl, cc->item.cert) != 1) + { + SSL_free(ssl); + SSL_CTX_free(context); + return false; + } + if(SSL_use_PrivateKey(ssl, kc->get_pkey()) != 1) + { + SSL_free(ssl); + SSL_CTX_free(context); + return false; + } + } + + // request a certificate from the client, if in server mode + if(serv) + { + SSL_set_verify(ssl, + SSL_VERIFY_PEER|SSL_VERIFY_CLIENT_ONCE, + ssl_verify_callback); + } + + return true; + } + + void getCert() + { + // verify the certificate + Validity code = ErrorValidityUnknown; + STACK_OF(X509) *x_chain = SSL_get_peer_cert_chain(ssl); + //X509 *x = SSL_get_peer_certificate(ssl); + if(x_chain) + { + CertificateChain chain; + + if(serv) + { + X509 *x = SSL_get_peer_certificate(ssl); + MyCertContext *cc = new MyCertContext(provider()); + cc->fromX509(x); + Certificate cert; + cert.change(cc); + chain += cert; + } + + for(int n = 0; n < sk_X509_num(x_chain); ++n) + { + X509 *x = sk_X509_value(x_chain, n); + MyCertContext *cc = new MyCertContext(provider()); + cc->fromX509(x); + Certificate cert; + cert.change(cc); + chain += cert; + } + + peercert = chain.primary(); + +#ifdef Q_OS_MAC + code = chain.validate(trusted); +#else + int ret = SSL_get_verify_result(ssl); + if(ret == X509_V_OK) + code = ValidityGood; + else + code = convert_verify_error(ret); +#endif + } + else + { + peercert = Certificate(); + } + vr = code; + } + + int doConnect() + { + int ret = SSL_connect(ssl); + if(ret < 0) + { + int x = SSL_get_error(ssl, ret); + if(x == SSL_ERROR_WANT_CONNECT || x == SSL_ERROR_WANT_READ || x == SSL_ERROR_WANT_WRITE) + return TryAgain; + else + return Bad; + } + else if(ret == 0) + return Bad; + return Good; + } + + int doAccept() + { + int ret = SSL_accept(ssl); + if(ret < 0) + { + int x = SSL_get_error(ssl, ret); + if(x == SSL_ERROR_WANT_CONNECT || x == SSL_ERROR_WANT_READ || x == SSL_ERROR_WANT_WRITE) + return TryAgain; + else + return Bad; + } + else if(ret == 0) + return Bad; + return Good; + } + + int doHandshake() + { + int ret = SSL_do_handshake(ssl); + if(ret < 0) + { + int x = SSL_get_error(ssl, ret); + if(x == SSL_ERROR_WANT_READ || x == SSL_ERROR_WANT_WRITE) + return TryAgain; + else + return Bad; + } + else if(ret == 0) + return Bad; + return Good; + } + + int doShutdown() + { + int ret = SSL_shutdown(ssl); + if(ret >= 1) + return Good; + else + { + if(ret == 0) + return TryAgain; + int x = SSL_get_error(ssl, ret); + if(x == SSL_ERROR_WANT_READ || x == SSL_ERROR_WANT_WRITE) + return TryAgain; + return Bad; + } + } + + QByteArray readOutgoing() + { + QByteArray a; + int size = BIO_pending(wbio); + if(size <= 0) + return a; + a.resize(size); + + int r = BIO_read(wbio, a.data(), size); + if(r <= 0) + { + a.resize(0); + return a; + } + if(r != size) + a.resize(r); + return a; + } +}; + +class CMSContext : public SMSContext +{ +public: + CertificateCollection trustedCerts; + CertificateCollection untrustedCerts; + QList privateKeys; + + CMSContext(Provider *p) : SMSContext(p, "cms") + { + } + + ~CMSContext() + { + } + + virtual Provider::Context *clone() const + { + return 0; + } + + virtual void setTrustedCertificates(const CertificateCollection &trusted) + { + trustedCerts = trusted; + } + + virtual void setUntrustedCertificates(const CertificateCollection &untrusted) + { + untrustedCerts = untrusted; + } + + virtual void setPrivateKeys(const QList &keys) + { + privateKeys = keys; + } + + virtual MessageContext *createMessage(); +}; + +STACK_OF(X509) *get_pk7_certs(PKCS7 *p7) +{ + int i = OBJ_obj2nid(p7->type); + if(i == NID_pkcs7_signed) + return p7->d.sign->cert; + else if(i == NID_pkcs7_signedAndEnveloped) + return p7->d.signed_and_enveloped->cert; + else + return 0; +} + +class MyMessageContextThread : public QThread +{ + Q_OBJECT +public: + SecureMessage::Format format; + SecureMessage::SignMode signMode; + Certificate cert; + PrivateKey key; + STACK_OF(X509) *other_certs; + BIO *bi; + int flags; + PKCS7 *p7; + bool ok; + QByteArray out, sig; + + MyMessageContextThread(QObject *parent = 0) : QThread(parent), ok(false) + { + } + +protected: + virtual void run() + { + MyCertContext *cc = static_cast(cert.context()); + MyPKeyContext *kc = static_cast(key.context()); + X509 *cx = cc->item.cert; + EVP_PKEY *kx = kc->get_pkey(); + + p7 = PKCS7_sign(cx, kx, other_certs, bi, flags); + + BIO_free(bi); + sk_X509_pop_free(other_certs, X509_free); + + if(p7) + { + //printf("good\n"); + BIO *bo; + + //BIO *bo = BIO_new(BIO_s_mem()); + //i2d_PKCS7_bio(bo, p7); + //PEM_write_bio_PKCS7(bo, p7); + //SecureArray buf = bio2buf(bo); + //printf("[%s]\n", buf.data()); + + bo = BIO_new(BIO_s_mem()); + if(format == SecureMessage::Binary) + i2d_PKCS7_bio(bo, p7); + else // Ascii + PEM_write_bio_PKCS7(bo, p7); + + if (SecureMessage::Detached == signMode) + sig = bio2ba(bo); + else + out = bio2ba(bo); + + ok = true; + } + else + { + printf("bad here\n"); + ERR_print_errors_fp(stdout); + } + } +}; + +class MyMessageContext : public MessageContext +{ + Q_OBJECT +public: + CMSContext *cms; + SecureMessageKey signer; + SecureMessageKeyList to; + SecureMessage::SignMode signMode; + bool bundleSigner; + bool smime; + SecureMessage::Format format; + + Operation op; + bool _finished; + + QByteArray in, out; + QByteArray sig; + int total; + + CertificateChain signerChain; + int ver_ret; + + MyMessageContextThread *thread; + + MyMessageContext(CMSContext *_cms, Provider *p) : MessageContext(p, "cmsmsg") + { + cms = _cms; + + total = 0; + + ver_ret = 0; + + thread = 0; + } + + ~MyMessageContext() + { + } + + virtual Provider::Context *clone() const + { + return 0; + } + + virtual bool canSignMultiple() const + { + return false; + } + + virtual SecureMessage::Type type() const + { + return SecureMessage::CMS; + } + + virtual void reset() + { + } + + virtual void setupEncrypt(const SecureMessageKeyList &keys) + { + to = keys; + } + + virtual void setupSign(const SecureMessageKeyList &keys, SecureMessage::SignMode m, bool bundleSigner, bool smime) + { + signer = keys.first(); + signMode = m; + this->bundleSigner = bundleSigner; + this->smime = smime; + } + + virtual void setupVerify(const QByteArray &detachedSig) + { + // TODO + sig = detachedSig; + } + + virtual void start(SecureMessage::Format f, Operation op) + { + format = f; + _finished = false; + + // TODO: other operations + //if(op == Sign) + //{ + this->op = op; + //} + //else if(op == Encrypt) + //{ + // this->op = op; + //} + } + + virtual void update(const QByteArray &in) + { + this->in.append(in); + total += in.size(); + QMetaObject::invokeMethod(this, "updated", Qt::QueuedConnection); + } + + virtual QByteArray read() + { + return out; + } + + virtual int written() + { + int x = total; + total = 0; + return x; + } + + virtual void end() + { + _finished = true; + + // sign + if(op == Sign) + { + CertificateChain chain = signer.x509CertificateChain(); + Certificate cert = chain.primary(); + QList nonroots; + if(chain.count() > 1) + { + for(int n = 1; n < chain.count(); ++n) + nonroots.append(chain[n]); + } + PrivateKey key = signer.x509PrivateKey(); + + const PKeyContext *tmp_kc = static_cast(key.context()); + + if(!tmp_kc->sameProvider(this)) + { + //fprintf(stderr, "experimental: private key supplied by a different provider\n"); + + // make a pkey pointing to the existing private key + EVP_PKEY *pkey; + pkey = EVP_PKEY_new(); + EVP_PKEY_assign_RSA(pkey, createFromExisting(key.toRSA())); + + // make a new private key object to hold it + MyPKeyContext *pk = new MyPKeyContext(provider()); + PKeyBase *k = pk->pkeyToBase(pkey, true); // does an EVP_PKEY_free() + pk->k = k; + key.change(pk); + } + + // allow different cert provider. this is just a + // quick hack, enough to please qca-test + if(!cert.context()->sameProvider(this)) + { + //fprintf(stderr, "experimental: cert supplied by a different provider\n"); + cert = Certificate::fromDER(cert.toDER()); + if(cert.isNull() || !cert.context()->sameProvider(this)) + { + //fprintf(stderr, "error converting cert\n"); + } + } + + //MyCertContext *cc = static_cast(cert.context()); + //MyPKeyContext *kc = static_cast(key.context()); + + //X509 *cx = cc->item.cert; + //EVP_PKEY *kx = kc->get_pkey(); + + STACK_OF(X509) *other_certs; + BIO *bi; + int flags; + //PKCS7 *p7; + + // nonroots + other_certs = sk_X509_new_null(); + for(int n = 0; n < nonroots.count(); ++n) + { + X509 *x = static_cast(nonroots[n].context())->item.cert; + CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509); + sk_X509_push(other_certs, x); + } + + //printf("bundling %d other_certs\n", sk_X509_num(other_certs)); + + bi = BIO_new(BIO_s_mem()); + BIO_write(bi, in.data(), in.size()); + + flags = 0; + flags |= PKCS7_BINARY; + if (SecureMessage::Detached == signMode) { + flags |= PKCS7_DETACHED; + } + if (false == bundleSigner) + flags |= PKCS7_NOCERTS; + + if(thread) + delete thread; + thread = new MyMessageContextThread(this); + thread->format = format; + thread->signMode = signMode; + thread->cert = cert; + thread->key = key; + thread->other_certs = other_certs; + thread->bi = bi; + thread->flags = flags; + connect(thread, SIGNAL(finished()), SLOT(thread_finished())); + thread->start(); + } + else if(op == Encrypt) + { + // TODO: support multiple recipients + Certificate target = to.first().x509CertificateChain().primary(); + + STACK_OF(X509) *other_certs; + BIO *bi; + int flags; + PKCS7 *p7; + + other_certs = sk_X509_new_null(); + X509 *x = static_cast(target.context())->item.cert; + CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509); + sk_X509_push(other_certs, x); + + bi = BIO_new(BIO_s_mem()); + BIO_write(bi, in.data(), in.size()); + + flags = 0; + flags |= PKCS7_BINARY; + p7 = PKCS7_encrypt(other_certs, bi, EVP_des_ede3_cbc(), flags); // TODO: cipher? + + BIO_free(bi); + sk_X509_pop_free(other_certs, X509_free); + + QString env; + if(p7) + { + // FIXME: format + BIO *bo = BIO_new(BIO_s_mem()); + i2d_PKCS7_bio(bo, p7); + //PEM_write_bio_PKCS7(bo, p7); + out = bio2ba(bo); + PKCS7_free(p7); + } + else + { + printf("bad\n"); + return; + } + } + else if(op == Verify) + { + // TODO: support non-detached sigs + + BIO *out = BIO_new(BIO_s_mem()); + BIO *bi = BIO_new(BIO_s_mem()); + if (false == sig.isEmpty()) { + // We have detached signature + BIO_write(bi, sig.data(), sig.size()); + } else { + BIO_write(bi, in.data(), in.size()); + } + PKCS7 *p7; + if(format == SecureMessage::Binary) + p7 = d2i_PKCS7_bio(bi, NULL); + else // Ascii + p7 = PEM_read_bio_PKCS7(bi, NULL, passphrase_cb, NULL); + BIO_free(bi); + + if(!p7) + { + // TODO + printf("bad1\n"); + QMetaObject::invokeMethod(this, "updated", Qt::QueuedConnection); + return; + } + + // intermediates/signers that may not be in the blob + STACK_OF(X509) *other_certs = sk_X509_new_null(); + QList untrusted_list = cms->untrustedCerts.certificates(); + QList untrusted_crls = cms->untrustedCerts.crls(); // we'll use the crls later + for(int n = 0; n < untrusted_list.count(); ++n) + { + X509 *x = static_cast(untrusted_list[n].context())->item.cert; + CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509); + sk_X509_push(other_certs, x); + } + + // get the possible message signers + QList signers; + STACK_OF(X509) *xs = PKCS7_get0_signers(p7, other_certs, 0); + if(xs) + { + for(int n = 0; n < sk_X509_num(xs); ++n) + { + MyCertContext *cc = new MyCertContext(provider()); + cc->fromX509(sk_X509_value(xs, n)); + Certificate cert; + cert.change(cc); + //printf("signer: [%s]\n", qPrintable(cert.commonName())); + signers.append(cert); + } + sk_X509_free(xs); + } + + // get the rest of the certificates lying around + QList others; + xs = get_pk7_certs(p7); // don't free + if(xs) + { + for(int n = 0; n < sk_X509_num(xs); ++n) + { + MyCertContext *cc = new MyCertContext(provider()); + cc->fromX509(sk_X509_value(xs, n)); + Certificate cert; + cert.change(cc); + others.append(cert); + //printf("other: [%s]\n", qPrintable(cert.commonName())); + } + } + + // signer needs to be supplied in the message itself + // or via cms->untrustedCerts + if(signers.isEmpty()) + { + QMetaObject::invokeMethod(this, "updated", Qt::QueuedConnection); + return; + } + + // FIXME: handle more than one signer + CertificateChain chain; + chain += signers[0]; + + // build chain + chain = chain.complete(others); + + signerChain = chain; + + X509_STORE *store = X509_STORE_new(); + QList cert_list = cms->trustedCerts.certificates(); + QList crl_list = cms->trustedCerts.crls(); + for(int n = 0; n < cert_list.count(); ++n) + { + //printf("trusted: [%s]\n", qPrintable(cert_list[n].commonName())); + const MyCertContext *cc = static_cast(cert_list[n].context()); + X509 *x = cc->item.cert; + //CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509); + X509_STORE_add_cert(store, x); + } + for(int n = 0; n < crl_list.count(); ++n) + { + const MyCRLContext *cc = static_cast(crl_list[n].context()); + X509_CRL *x = cc->item.crl; + //CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509_CRL); + X509_STORE_add_crl(store, x); + } + // add these crls also + crl_list = untrusted_crls; + for(int n = 0; n < crl_list.count(); ++n) + { + const MyCRLContext *cc = static_cast(crl_list[n].context()); + X509_CRL *x = cc->item.crl; + //CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509_CRL); + X509_STORE_add_crl(store, x); + } + + int ret; + if(!sig.isEmpty()) { + // Detached signMode + bi = BIO_new(BIO_s_mem()); + BIO_write(bi, in.data(), in.size()); + ret = PKCS7_verify(p7, other_certs, store, bi, NULL, 0); + BIO_free(bi); + } else { + ret = PKCS7_verify(p7, other_certs, store, NULL, out, 0); + // qDebug() << "Verify: " << ret; + } + //if(!ret) + // ERR_print_errors_fp(stdout); + sk_X509_pop_free(other_certs, X509_free); + X509_STORE_free(store); + PKCS7_free(p7); + + ver_ret = ret; + // TODO + + QMetaObject::invokeMethod(this, "updated", Qt::QueuedConnection); + } + else if(op == Decrypt) + { + bool ok = false; + for(int n = 0; n < cms->privateKeys.count(); ++n) + { + CertificateChain chain = cms->privateKeys[n].x509CertificateChain(); + Certificate cert = chain.primary(); + PrivateKey key = cms->privateKeys[n].x509PrivateKey(); + + MyCertContext *cc = static_cast(cert.context()); + MyPKeyContext *kc = static_cast(key.context()); + + X509 *cx = cc->item.cert; + EVP_PKEY *kx = kc->get_pkey(); + + BIO *bi = BIO_new(BIO_s_mem()); + BIO_write(bi, in.data(), in.size()); + PKCS7 *p7 = d2i_PKCS7_bio(bi, NULL); + BIO_free(bi); + + if(!p7) + { + // TODO + printf("bad1\n"); + return; + } + + BIO *bo = BIO_new(BIO_s_mem()); + int ret = PKCS7_decrypt(p7, kx, cx, bo, 0); + PKCS7_free(p7); + if(!ret) + continue; + + ok = true; + out = bio2ba(bo); + break; + } + + if(!ok) + { + // TODO + printf("bad2\n"); + return; + } + } + } + + virtual bool finished() const + { + return _finished; + } + + virtual bool waitForFinished(int msecs) + { + // TODO + Q_UNUSED(msecs); + + if(thread) + { + thread->wait(); + getresults(); + } + return true; + } + + virtual bool success() const + { + // TODO + return true; + } + + virtual SecureMessage::Error errorCode() const + { + // TODO + return SecureMessage::ErrorUnknown; + } + + virtual QByteArray signature() const + { + return sig; + } + + virtual QString hashName() const + { + // TODO + return "sha1"; + } + + virtual SecureMessageSignatureList signers() const + { + // only report signers for verify + if(op != Verify) + return SecureMessageSignatureList(); + + SecureMessageKey key; + if(!signerChain.isEmpty()) + key.setX509CertificateChain(signerChain); + + // TODO/FIXME !!! InvalidSignature might be used here even + // if the signature is just fine, and the key is invalid + // (we need to use InvalidKey instead). + + Validity vr = ErrorValidityUnknown; + if(!signerChain.isEmpty()) + vr = signerChain.validate(cms->trustedCerts, cms->untrustedCerts.crls()); + + SecureMessageSignature::IdentityResult ir; + if(vr == ValidityGood) + ir = SecureMessageSignature::Valid; + else + ir = SecureMessageSignature::InvalidKey; + + if(!ver_ret) + ir = SecureMessageSignature::InvalidSignature; + + SecureMessageSignature s(ir, vr, key, QDateTime::currentDateTime()); + + // TODO + return SecureMessageSignatureList() << s; + } + + void getresults() + { + sig = thread->sig; + out = thread->out; + } + +private slots: + void thread_finished() + { + getresults(); + emit updated(); + } +}; + +MessageContext *CMSContext::createMessage() +{ + return new MyMessageContext(this, provider()); +} + + +class opensslCipherContext : public CipherContext +{ +public: + opensslCipherContext(const EVP_CIPHER *algorithm, const int pad, Provider *p, const QString &type) : CipherContext(p, type) + { + m_cryptoAlgorithm = algorithm; + EVP_CIPHER_CTX_init(&m_context); + m_pad = pad; + m_type = type; + } + + ~opensslCipherContext() + { + EVP_CIPHER_CTX_cleanup(&m_context); + } + + void setup(Direction dir, + const SymmetricKey &key, + const InitializationVector &iv) + { + m_direction = dir; + if ( ( m_cryptoAlgorithm == EVP_des_ede3() ) && (key.size() == 16) ) { + // this is really a two key version of triple DES. + m_cryptoAlgorithm = EVP_des_ede(); + } + if (Encode == m_direction) { + EVP_EncryptInit_ex(&m_context, m_cryptoAlgorithm, 0, 0, 0); + EVP_CIPHER_CTX_set_key_length(&m_context, key.size()); + EVP_EncryptInit_ex(&m_context, 0, 0, + (const unsigned char*)(key.data()), + (const unsigned char*)(iv.data())); + } else { + EVP_DecryptInit_ex(&m_context, m_cryptoAlgorithm, 0, 0, 0); + EVP_CIPHER_CTX_set_key_length(&m_context, key.size()); + EVP_DecryptInit_ex(&m_context, 0, 0, + (const unsigned char*)(key.data()), + (const unsigned char*)(iv.data())); + } + + EVP_CIPHER_CTX_set_padding(&m_context, m_pad); + } + + Provider::Context *clone() const + { + return new opensslCipherContext( *this ); + } + + int blockSize() const + { + return EVP_CIPHER_CTX_block_size(&m_context); + } + + bool update(const SecureArray &in, SecureArray *out) + { + // This works around a problem in OpenSSL, where it asserts if + // there is nothing to encrypt. + if ( 0 == in.size() ) + return true; + + out->resize(in.size()+blockSize()); + int resultLength; + if (Encode == m_direction) { + if (0 == EVP_EncryptUpdate(&m_context, + (unsigned char*)out->data(), + &resultLength, + (unsigned char*)in.data(), + in.size())) { + return false; + } + } else { + if (0 == EVP_DecryptUpdate(&m_context, + (unsigned char*)out->data(), + &resultLength, + (unsigned char*)in.data(), + in.size())) { + return false; + } + } + out->resize(resultLength); + return true; + } + + bool final(SecureArray *out) + { + out->resize(blockSize()); + int resultLength; + if (Encode == m_direction) { + if (0 == EVP_EncryptFinal_ex(&m_context, + (unsigned char*)out->data(), + &resultLength)) { + return false; + } + } else { + if (0 == EVP_DecryptFinal_ex(&m_context, + (unsigned char*)out->data(), + &resultLength)) { + return false; + } + } + out->resize(resultLength); + return true; + } + + // Change cipher names + KeyLength keyLength() const + { + if (m_type.left(4) == "des-") { + return KeyLength( 8, 8, 1); + } else if (m_type.left(6) == "aes128") { + return KeyLength( 16, 16, 1); + } else if (m_type.left(6) == "aes192") { + return KeyLength( 24, 24, 1); + } else if (m_type.left(6) == "aes256") { + return KeyLength( 32, 32, 1); + } else if (m_type.left(5) == "cast5") { + return KeyLength( 5, 16, 1); + } else if (m_type.left(8) == "blowfish") { + // Don't know - TODO + return KeyLength( 1, 32, 1); + } else if (m_type.left(9) == "tripledes") { + return KeyLength( 16, 24, 1); + } else { + return KeyLength( 0, 1, 1); + } + } + + +protected: + EVP_CIPHER_CTX m_context; + const EVP_CIPHER *m_cryptoAlgorithm; + Direction m_direction; + int m_pad; + QString m_type; +}; + +static QStringList all_hash_types() +{ + QStringList list; + list += "sha1"; + list += "sha0"; + list += "ripemd160"; +#ifdef HAVE_OPENSSL_MD2 + list += "md2"; +#endif + list += "md4"; + list += "md5"; +#ifdef SHA224_DIGEST_LENGTH + list += "sha224"; +#endif +#ifdef SHA256_DIGEST_LENGTH + list += "sha256"; +#endif +#ifdef SHA384_DIGEST_LENGTH + list += "sha384"; +#endif +#ifdef SHA512_DIGEST_LENGTH + list += "sha512"; +#endif +/* +#ifdef OBJ_whirlpool + list += "whirlpool"; +#endif +*/ + return list; +} + +static QStringList all_cipher_types() +{ + QStringList list; + list += "aes128-ecb"; + list += "aes128-cfb"; + list += "aes128-cbc"; + list += "aes128-cbc-pkcs7"; + list += "aes128-ofb"; +#ifdef HAVE_OPENSSL_AES_CTR + list += "aes128-ctr"; +#endif + list += "aes192-ecb"; + list += "aes192-cfb"; + list += "aes192-cbc"; + list += "aes192-cbc-pkcs7"; + list += "aes192-ofb"; +#ifdef HAVE_OPENSSL_AES_CTR + list += "aes192-ctr"; +#endif + list += "aes256-ecb"; + list += "aes256-cbc"; + list += "aes256-cbc-pkcs7"; + list += "aes256-cfb"; + list += "aes256-ofb"; +#ifdef HAVE_OPENSSL_AES_CTR + list += "aes256-ctr"; +#endif + list += "blowfish-ecb"; + list += "blowfish-cbc-pkcs7"; + list += "blowfish-cbc"; + list += "blowfish-cfb"; + list += "blowfish-ofb"; + list += "tripledes-ecb"; + list += "tripledes-cbc"; + list += "des-ecb"; + list += "des-ecb-pkcs7"; + list += "des-cbc"; + list += "des-cbc-pkcs7"; + list += "des-cfb"; + list += "des-ofb"; + list += "cast5-ecb"; + list += "cast5-cbc"; + list += "cast5-cbc-pkcs7"; + list += "cast5-cfb"; + list += "cast5-ofb"; + return list; +} + +static QStringList all_mac_types() +{ + QStringList list; + list += "hmac(md5)"; + list += "hmac(sha1)"; +#ifdef SHA224_DIGEST_LENGTH + list += "hmac(sha224)"; +#endif +#ifdef SHA256_DIGEST_LENGTH + list += "hmac(sha256)"; +#endif +#ifdef SHA384_DIGEST_LENGTH + list += "hmac(sha384)"; +#endif +#ifdef SHA512_DIGEST_LENGTH + list += "hmac(sha512)"; +#endif + list += "hmac(ripemd160)"; + return list; +} + +class opensslInfoContext : public InfoContext +{ + Q_OBJECT +public: + opensslInfoContext(Provider *p) : InfoContext(p) + { + } + + Provider::Context *clone() const + { + return new opensslInfoContext(*this); + } + + QStringList supportedHashTypes() const + { + return all_hash_types(); + } + + QStringList supportedCipherTypes() const + { + return all_cipher_types(); + } + + QStringList supportedMACTypes() const + { + return all_mac_types(); + } +}; + +class opensslRandomContext : public RandomContext +{ +public: + opensslRandomContext(QCA::Provider *p) : RandomContext(p) + { + } + + Context *clone() const + { + return new opensslRandomContext(*this); + } + + QCA::SecureArray nextBytes(int size) + { + QCA::SecureArray buf(size); + int r; + // FIXME: loop while we don't have enough random bytes. + while (true) { + r = RAND_bytes((unsigned char*)(buf.data()), size); + if (r == 1) break; // success + r = RAND_pseudo_bytes((unsigned char*)(buf.data()), + size); + if (r >= 0) break; // accept insecure random numbers + } + return buf; + } +}; + +} + +using namespace opensslQCAPlugin; + +class opensslProvider : public Provider +{ +public: + bool openssl_initted; + + opensslProvider() + { + openssl_initted = false; + } + + void init() + { + OpenSSL_add_all_algorithms(); + ERR_load_crypto_strings(); + + // seed the RNG if it's not seeded yet + if (RAND_status() == 0) { + qsrand(time(NULL)); + char buf[128]; + for(int n = 0; n < 128; ++n) + buf[n] = qrand(); + RAND_seed(buf, 128); + } + + openssl_initted = true; + } + + ~opensslProvider() + { + // FIXME: ? for now we never deinit, in case other libs/code + // are using openssl + /*if(!openssl_initted) + return; + // todo: any other shutdown? + EVP_cleanup(); + //ENGINE_cleanup(); + CRYPTO_cleanup_all_ex_data(); + ERR_remove_state(0); + ERR_free_strings();*/ + } + + int qcaVersion() const + { + return QCA_VERSION; + } + + QString name() const + { + return "qca-ossl"; + } + + QString credit() const + { + return QString( + "This product includes cryptographic software " + "written by Eric Young (eay@cryptsoft.com)"); + } + + QStringList features() const + { + QStringList list; + list += "random"; + list += all_hash_types(); + list += all_mac_types(); + list += all_cipher_types(); +#ifdef HAVE_OPENSSL_MD2 + list += "pbkdf1(md2)"; +#endif + list += "pbkdf1(sha1)"; + list += "pbkdf2(sha1)"; + list += "pkey"; + list += "dlgroup"; + list += "rsa"; + list += "dsa"; + list += "dh"; + list += "cert"; + list += "csr"; + list += "crl"; + list += "certcollection"; + list += "pkcs12"; + list += "tls"; + list += "cms"; + list += "ca"; + + return list; + } + + Context *createContext(const QString &type) + { + //OpenSSL_add_all_digests(); + if ( type == "random" ) + return new opensslRandomContext(this); + else if ( type == "info" ) + return new opensslInfoContext(this); + else if ( type == "sha1" ) + return new opensslHashContext( EVP_sha1(), this, type); + else if ( type == "sha0" ) + return new opensslHashContext( EVP_sha(), this, type); + else if ( type == "ripemd160" ) + return new opensslHashContext( EVP_ripemd160(), this, type); +#ifdef HAVE_OPENSSL_MD2 + else if ( type == "md2" ) + return new opensslHashContext( EVP_md2(), this, type); +#endif + else if ( type == "md4" ) + return new opensslHashContext( EVP_md4(), this, type); + else if ( type == "md5" ) + return new opensslHashContext( EVP_md5(), this, type); +#ifdef SHA224_DIGEST_LENGTH + else if ( type == "sha224" ) + return new opensslHashContext( EVP_sha224(), this, type); +#endif +#ifdef SHA256_DIGEST_LENGTH + else if ( type == "sha256" ) + return new opensslHashContext( EVP_sha256(), this, type); +#endif +#ifdef SHA384_DIGEST_LENGTH + else if ( type == "sha384" ) + return new opensslHashContext( EVP_sha384(), this, type); +#endif +#ifdef SHA512_DIGEST_LENGTH + else if ( type == "sha512" ) + return new opensslHashContext( EVP_sha512(), this, type); +#endif +/* +#ifdef OBJ_whirlpool + else if ( type == "whirlpool" ) + return new opensslHashContext( EVP_whirlpool(), this, type); +#endif +*/ + else if ( type == "pbkdf1(sha1)" ) + return new opensslPbkdf1Context( EVP_sha1(), this, type ); +#ifdef HAVE_OPENSSL_MD2 + else if ( type == "pbkdf1(md2)" ) + return new opensslPbkdf1Context( EVP_md2(), this, type ); +#endif + else if ( type == "pbkdf2(sha1)" ) + return new opensslPbkdf2Context( this, type ); + else if ( type == "hmac(md5)" ) + return new opensslHMACContext( EVP_md5(), this, type ); + else if ( type == "hmac(sha1)" ) + return new opensslHMACContext( EVP_sha1(),this, type ); +#ifdef SHA224_DIGEST_LENGTH + else if ( type == "hmac(sha224)" ) + return new opensslHMACContext( EVP_sha224(), this, type); +#endif +#ifdef SHA256_DIGEST_LENGTH + else if ( type == "hmac(sha256)" ) + return new opensslHMACContext( EVP_sha256(), this, type); +#endif +#ifdef SHA384_DIGEST_LENGTH + else if ( type == "hmac(sha384)" ) + return new opensslHMACContext( EVP_sha384(), this, type); +#endif +#ifdef SHA512_DIGEST_LENGTH + else if ( type == "hmac(sha512)" ) + return new opensslHMACContext( EVP_sha512(), this, type); +#endif + else if ( type == "hmac(ripemd160)" ) + return new opensslHMACContext( EVP_ripemd160(), this, type ); + else if ( type == "aes128-ecb" ) + return new opensslCipherContext( EVP_aes_128_ecb(), 0, this, type); + else if ( type == "aes128-cfb" ) + return new opensslCipherContext( EVP_aes_128_cfb(), 0, this, type); + else if ( type == "aes128-cbc" ) + return new opensslCipherContext( EVP_aes_128_cbc(), 0, this, type); + else if ( type == "aes128-cbc-pkcs7" ) + return new opensslCipherContext( EVP_aes_128_cbc(), 1, this, type); + else if ( type == "aes128-ofb" ) + return new opensslCipherContext( EVP_aes_128_ofb(), 0, this, type); +#ifdef HAVE_OPENSSL_AES_CTR + else if ( type == "aes128-ctr" ) + return new opensslCipherContext( EVP_aes_128_ctr(), 0, this, type); +#endif + else if ( type == "aes192-ecb" ) + return new opensslCipherContext( EVP_aes_192_ecb(), 0, this, type); + else if ( type == "aes192-cfb" ) + return new opensslCipherContext( EVP_aes_192_cfb(), 0, this, type); + else if ( type == "aes192-cbc" ) + return new opensslCipherContext( EVP_aes_192_cbc(), 0, this, type); + else if ( type == "aes192-cbc-pkcs7" ) + return new opensslCipherContext( EVP_aes_192_cbc(), 1, this, type); + else if ( type == "aes192-ofb" ) + return new opensslCipherContext( EVP_aes_192_ofb(), 0, this, type); +#ifdef HAVE_OPENSSL_AES_CTR + else if ( type == "aes192-ctr" ) + return new opensslCipherContext( EVP_aes_192_ctr(), 0, this, type); +#endif + else if ( type == "aes256-ecb" ) + return new opensslCipherContext( EVP_aes_256_ecb(), 0, this, type); + else if ( type == "aes256-cfb" ) + return new opensslCipherContext( EVP_aes_256_cfb(), 0, this, type); + else if ( type == "aes256-cbc" ) + return new opensslCipherContext( EVP_aes_256_cbc(), 0, this, type); + else if ( type == "aes256-cbc-pkcs7" ) + return new opensslCipherContext( EVP_aes_256_cbc(), 1, this, type); + else if ( type == "aes256-ofb" ) + return new opensslCipherContext( EVP_aes_256_ofb(), 0, this, type); +#ifdef HAVE_OPENSSL_AES_CTR + else if ( type == "aes256-ctr" ) + return new opensslCipherContext( EVP_aes_256_ctr(), 0, this, type); +#endif + else if ( type == "blowfish-ecb" ) + return new opensslCipherContext( EVP_bf_ecb(), 0, this, type); + else if ( type == "blowfish-cfb" ) + return new opensslCipherContext( EVP_bf_cfb(), 0, this, type); + else if ( type == "blowfish-ofb" ) + return new opensslCipherContext( EVP_bf_ofb(), 0, this, type); + else if ( type == "blowfish-cbc" ) + return new opensslCipherContext( EVP_bf_cbc(), 0, this, type); + else if ( type == "blowfish-cbc-pkcs7" ) + return new opensslCipherContext( EVP_bf_cbc(), 1, this, type); + else if ( type == "tripledes-ecb" ) + return new opensslCipherContext( EVP_des_ede3(), 0, this, type); + else if ( type == "tripledes-cbc" ) + return new opensslCipherContext( EVP_des_ede3_cbc(), 0, this, type); + else if ( type == "des-ecb" ) + return new opensslCipherContext( EVP_des_ecb(), 0, this, type); + else if ( type == "des-ecb-pkcs7" ) + return new opensslCipherContext( EVP_des_ecb(), 1, this, type); + else if ( type == "des-cbc" ) + return new opensslCipherContext( EVP_des_cbc(), 0, this, type); + else if ( type == "des-cbc-pkcs7" ) + return new opensslCipherContext( EVP_des_cbc(), 1, this, type); + else if ( type == "des-cfb" ) + return new opensslCipherContext( EVP_des_cfb(), 0, this, type); + else if ( type == "des-ofb" ) + return new opensslCipherContext( EVP_des_ofb(), 0, this, type); + else if ( type == "cast5-ecb" ) + return new opensslCipherContext( EVP_cast5_ecb(), 0, this, type); + else if ( type == "cast5-cbc" ) + return new opensslCipherContext( EVP_cast5_cbc(), 0, this, type); + else if ( type == "cast5-cbc-pkcs7" ) + return new opensslCipherContext( EVP_cast5_cbc(), 1, this, type); + else if ( type == "cast5-cfb" ) + return new opensslCipherContext( EVP_cast5_cfb(), 0, this, type); + else if ( type == "cast5-ofb" ) + return new opensslCipherContext( EVP_cast5_ofb(), 0, this, type); + else if ( type == "pkey" ) + return new MyPKeyContext( this ); + else if ( type == "dlgroup" ) + return new MyDLGroup( this ); + else if ( type == "rsa" ) + return new RSAKey( this ); + else if ( type == "dsa" ) + return new DSAKey( this ); + else if ( type == "dh" ) + return new DHKey( this ); + else if ( type == "cert" ) + return new MyCertContext( this ); + else if ( type == "csr" ) + return new MyCSRContext( this ); + else if ( type == "crl" ) + return new MyCRLContext( this ); + else if ( type == "certcollection" ) + return new MyCertCollectionContext( this ); + else if ( type == "pkcs12" ) + return new MyPKCS12Context( this ); + else if ( type == "tls" ) + return new MyTLSContext( this ); + else if ( type == "cms" ) + return new CMSContext( this ); + else if ( type == "ca" ) + return new MyCAContext( this ); + return 0; + } +}; + +class opensslPlugin : public QObject, public QCAPlugin +{ + Q_OBJECT +#if QT_VERSION >= 0x050000 + Q_PLUGIN_METADATA(IID "com.affinix.qca.Plugin/1.0") +#endif + Q_INTERFACES(QCAPlugin) +public: + virtual Provider *createProvider() { return new opensslProvider; } +}; + +#include "qca-ossl.moc" + +#if QT_VERSION < 0x050000 +Q_EXPORT_PLUGIN2(qca_ossl, opensslPlugin) +#endif diff -Nru qca2-2.0.3/plugins/qca-ossl/README qca2-2.1.0/plugins/qca-ossl/README --- qca2-2.0.3/plugins/qca-ossl/README 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-ossl/README 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,39 @@ +QCA OSSL plugin version 2.0.0 +----------------------------- +Date: October 11th, 2007 +Website: http://delta.affinix.com/qca/ +Mailing List: Delta Project + +Authors: + Justin Karneges + Brad Hards + +This plugin provides features based on OpenSSL. It implements: +* Hashing - SHA1, SHA0, RIPEMD160, MD2, MD4, MD5 +* Hashing - SHA224, SHA256, SHA384 and SHA512 (for openssl 0.9.8) +* Block Ciphers +* Keyed Hash Message Authentication Code (HMAC), using SHA1, MD5, RIPEMD160 +* Public keys - RSA, DSA, Diffie-Hellman +* PKCS#12 +* SSL/TLS +* CMS (for S/MIME) + +Requirements: + OpenSSL Library (http://www.openssl.org/) + +Installing +---------- + +For Unix/Linux/Mac: + + ./configure + make + make install + +For Windows: + + configwin rd + qmake + nmake (or make) + copy lib\*.dll qtdir\plugins\crypto + diff -Nru qca2-2.0.3/plugins/qca-ossl/TODO qca2-2.1.0/plugins/qca-ossl/TODO --- qca2-2.0.3/plugins/qca-ossl/TODO 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-ossl/TODO 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,10 @@ +need to implement locking callbacks. +need to integrate secure memory plugin and test +figure out why Valgrind reports so many memory leaks +implement bitSize() for PKey. +fix keyLength() for Blowfish cipher +implement all ietf dl groups + +ca signing +async TLS +when inserting trusted items into X509_STORE, sort by latest expiration first diff -Nru qca2-2.0.3/plugins/qca-pkcs11/CMakeLists.txt qca2-2.1.0/plugins/qca-pkcs11/CMakeLists.txt --- qca2-2.0.3/plugins/qca-pkcs11/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-pkcs11/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,41 @@ +# qca-pkcs11 + +if(WITH_pkcs11_PLUGIN STREQUAL "yes") + find_package(OpenSSL REQUIRED) + find_package(Pkcs11Helper REQUIRED) +else(WITH_pkcs11_PLUGIN STREQUAL "yes") + find_package(OpenSSL) + find_package(Pkcs11Helper) +endif(WITH_pkcs11_PLUGIN STREQUAL "yes") + +if(OPENSSL_FOUND AND PKCS11H_FOUND) + enable_plugin("pkcs11") + set(QCA_PKCS11_SOURCES qca-pkcs11.cpp) + my_automoc( QCA_PKCS11_SOURCES ) + + add_library(qca-pkcs11 ${PLUGIN_TYPE} ${QCA_PKCS11_SOURCES}) + + if(APPLE AND ${PLUGIN_TYPE} STREQUAL "MODULE") + set_property(TARGET qca-pkcs11 PROPERTY SUFFIX ".dylib") + endif() + + add_definitions(${PKCS11H_CFLAGS_OTHER}) + include_directories(${PKCS11H_INCLUDE_DIRS}) + target_link_libraries(qca-pkcs11 ${QT_QTCORE_LIBRARY}) + target_link_libraries(qca-pkcs11 ${QCA_LIB_NAME}) + target_link_libraries(qca-pkcs11 ${PKCS11H_LDFLAGS}) + if (WIN32) + target_link_libraries(qca-pkcs11 pkcs11-helper.dll) + endif(WIN32) + + if(NOT DEVELOPER_MODE) + install(TARGETS qca-pkcs11 + LIBRARY DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + ARCHIVE DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + RUNTIME DESTINATION "${QCA_CRYPTO_INSTALL_DIR}") + + install_pdb(qca-pkcs11 ${QCA_CRYPTO_INSTALL_DIR}) + endif() +else(OPENSSL_FOUND AND PKCS11H_FOUND) + disable_plugin("pkcs11") +endif(OPENSSL_FOUND AND PKCS11H_FOUND) diff -Nru qca2-2.0.3/plugins/qca-pkcs11/COPYING qca2-2.1.0/plugins/qca-pkcs11/COPYING --- qca2-2.0.3/plugins/qca-pkcs11/COPYING 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-pkcs11/COPYING 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff -Nru qca2-2.0.3/plugins/qca-pkcs11/qca-pkcs11.cpp qca2-2.1.0/plugins/qca-pkcs11/qca-pkcs11.cpp --- qca2-2.0.3/plugins/qca-pkcs11/qca-pkcs11.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-pkcs11/qca-pkcs11.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,3113 @@ +/* + * Copyright (C) 2004 Justin Karneges + * Copyright (C) 2006-2007 Alon Bar-Lev + * + * 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 WITHANY 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include +#include +#include + +#include +#include +#include + +#include +#include + +using namespace QCA; + +// qPrintable is ASCII only!!! +#define myPrintable(s) (s).toUtf8 ().constData () + +static +inline +QString +certificateHash ( + const Certificate &cert +) { + if (cert.isNull ()) { + return QString(); + } + else { + return Hash ("sha1").hashToString (cert.toDER ()); + } +} + +//---------------------------------------------------------------------------- +// pkcs11Provider +//---------------------------------------------------------------------------- +class pkcs11Provider : public Provider +{ +private: + static const int _CONFIG_MAX_PROVIDERS; + + bool _lowLevelInitialized; + bool _slotEventsActive; + bool _slotEventsLowLevelActive; + QStringList _providers; + +public: + bool _allowLoadRootCA; + +public: + pkcs11Provider (); + ~pkcs11Provider (); + +public: + virtual + int + qcaVersion() const; + + virtual + void + init (); + + virtual + void + deinit (); + + virtual + QString + name () const; + + virtual + QStringList + features () const; + + virtual + Context * + createContext ( + const QString &type + ); + + void + startSlotEvents (); + + void + stopSlotEvents (); + + virtual + QVariantMap + defaultConfig () const; + + virtual + void + configChanged (const QVariantMap &config); + +protected: + static + void + __logHook ( + void * const global_data, + const unsigned flags, + const char * const format, + va_list args + ); + + static + void + __slotEventHook ( + void * const global_data + ); + + static + PKCS11H_BOOL + __tokenPromptHook ( + void * const global_data, + void * const user_data, + const pkcs11h_token_id_t token, + const unsigned retry + ); + + static + PKCS11H_BOOL + __pinPromptHook ( + void * const global_data, + void * const user_data, + const pkcs11h_token_id_t token, + const unsigned retry, + char * const pin, + const size_t pin_max + ); + + void + _logHook ( + const unsigned flags, + const char * const format, + va_list args + ); + + void + _slotEventHook (); + + PKCS11H_BOOL + _tokenPromptHook ( + void * const user_data, + const pkcs11h_token_id_t token + ); + + PKCS11H_BOOL + _pinPromptHook ( + void * const user_data, + const pkcs11h_token_id_t token, + char * const pin, + const size_t pin_max + ); +}; + +namespace pkcs11QCAPlugin { + +class pkcs11KeyStoreEntryContext; + +//---------------------------------------------------------------------------- +// pkcs11KeyStoreListContext +//---------------------------------------------------------------------------- +class pkcs11KeyStoreListContext : public KeyStoreListContext +{ + Q_OBJECT + +private: + struct pkcs11KeyStoreItem { + + protected: + int _id; + pkcs11h_token_id_t _token_id; + QList _certs; + + public: + pkcs11KeyStoreItem ( + const int id, + const pkcs11h_token_id_t token_id + ) { + _id = id;; + pkcs11h_token_duplicateTokenId (&_token_id, token_id); + } + + ~pkcs11KeyStoreItem () { + if (_token_id != NULL) { + pkcs11h_token_freeTokenId (_token_id); + } + } + + inline int id () const { + return _id; + } + + inline pkcs11h_token_id_t tokenId () const { + return _token_id; + } + + void + registerCertificates ( + const QList &certs + ) { + foreach (Certificate i, certs) { + if (qFind (_certs.begin (), _certs.end (), i) == _certs.end ()) { + _certs += i; + } + } + } + + QMap + friendlyNames () { + QStringList names = makeFriendlyNames (_certs); + QMap friendlyNames; + + for (int i=0;i _stores_t; + _stores_t _stores; + QHash _storesById; + QMutex _mutexStores; + bool _initialized; + +public: + pkcs11KeyStoreListContext (Provider *p); + + ~pkcs11KeyStoreListContext (); + + virtual + Provider::Context * + clone () const; + +public: + virtual + void + start (); + + virtual + void + setUpdatesEnabled (bool enabled); + + virtual + KeyStoreEntryContext * + entry ( + int id, + const QString &entryId + ); + + virtual + KeyStoreEntryContext * + entryPassive ( + const QString &serialized + ); + + virtual + KeyStore::Type + type (int id) const; + + virtual + QString + storeId (int id) const; + + virtual + QString + name (int id) const; + + virtual + QList + entryTypes (int id) const; + + virtual + QList + keyStores (); + + virtual + QList + entryList (int id); + + bool + _tokenPrompt ( + void * const user_data, + const pkcs11h_token_id_t token_id + ); + + bool + _pinPrompt ( + void * const user_data, + const pkcs11h_token_id_t token_id, + SecureArray &pin + ); + + void + _emit_diagnosticText ( + const QString &t + ); + +private slots: + void + doReady (); + + void + doUpdated (); + +private: + pkcs11KeyStoreItem * + _registerTokenId ( + const pkcs11h_token_id_t token_id + ); + + void + _clearStores (); + + pkcs11KeyStoreEntryContext * + _keyStoreEntryByCertificateId ( + const pkcs11h_certificate_id_t certificate_id, + const bool has_private, + const CertificateChain &chain, + const QString &description + ) const; + + QString + _tokenId2storeId ( + const pkcs11h_token_id_t token_id + ) const; + + QString + _serializeCertificate ( + const pkcs11h_certificate_id_t certificate_id, + const CertificateChain &chain, + const bool has_private + ) const; + + void + _deserializeCertificate ( + const QString &from, + pkcs11h_certificate_id_t * const p_certificate_id, + bool * const p_has_private, + CertificateChain &chain + ) const; + + QString + _escapeString ( + const QString &from + ) const; + + QString + _unescapeString ( + const QString &from + ) const; +}; + +static pkcs11KeyStoreListContext *s_keyStoreList = NULL; + +//---------------------------------------------------------------------------- +// pkcs11Exception +//---------------------------------------------------------------------------- +class pkcs11Exception { + +private: + CK_RV _rv; + QString _msg; + +private: + pkcs11Exception () {} + +public: + pkcs11Exception (const CK_RV rv, const QString &msg) { + _rv = rv; + _msg = msg; + } + + pkcs11Exception (const pkcs11Exception &other) { + *this = other; + } + + pkcs11Exception & + operator = (const pkcs11Exception &other) { + _rv = other._rv; + _msg = other._msg; + return *this; + } + + CK_RV + rv () const { + return _rv; + } + + QString + message () const { + return _msg + QString (" ") + pkcs11h_getMessage (_rv); + } +}; + +//---------------------------------------------------------------------------- +// pkcs11RSAContext +//---------------------------------------------------------------------------- +class pkcs11RSAContext : public RSAContext +{ + Q_OBJECT + +private: + bool _has_privateKeyRole; + pkcs11h_certificate_id_t _pkcs11h_certificate_id; + pkcs11h_certificate_t _pkcs11h_certificate; + RSAPublicKey _pubkey; + QString _serialized; + + struct _sign_data_s { + SignatureAlgorithm alg; + Hash *hash; + QByteArray raw; + + _sign_data_s() { + hash = NULL; + } + } _sign_data; + +public: + pkcs11RSAContext ( + Provider *p, + const pkcs11h_certificate_id_t pkcs11h_certificate_id, + const QString &serialized, + const RSAPublicKey &pubkey + ) : RSAContext (p) { + CK_RV rv; + + QCA_logTextMessage ( + "pkcs11RSAContext::pkcs11RSAContext1 - entry", + Logger::Debug + ); + + _has_privateKeyRole = true; + _pkcs11h_certificate_id = NULL; + _pkcs11h_certificate = NULL; + _pubkey = pubkey; + _serialized = serialized; + _clearSign (); + + if ( + (rv = pkcs11h_certificate_duplicateCertificateId ( + &_pkcs11h_certificate_id, + pkcs11h_certificate_id + )) != CKR_OK + ) { + throw pkcs11Exception (rv, "Memory error"); + } + + QCA_logTextMessage ( + "pkcs11RSAContext::pkcs11RSAContext1 - return", + Logger::Debug + ); + } + + pkcs11RSAContext (const pkcs11RSAContext &from) : RSAContext (from.provider ()) { + CK_RV rv; + + QCA_logTextMessage ( + "pkcs11RSAContext::pkcs11RSAContextC - entry", + Logger::Debug + ); + + _has_privateKeyRole = from._has_privateKeyRole; + _pkcs11h_certificate_id = NULL; + _pkcs11h_certificate = NULL; + _pubkey = from._pubkey; + _serialized = from._serialized; + _sign_data.hash = NULL; + _clearSign (); + + if ( + (rv = pkcs11h_certificate_duplicateCertificateId ( + &_pkcs11h_certificate_id, + from._pkcs11h_certificate_id + )) != CKR_OK + ) { + throw pkcs11Exception (rv, "Memory error"); + } + + QCA_logTextMessage ( + "pkcs11RSAContext::pkcs11RSAContextC - return", + Logger::Debug + ); + } + + ~pkcs11RSAContext () { + QCA_logTextMessage ( + "pkcs11RSAContext::~pkcs11RSAContext - entry", + Logger::Debug + ); + + _clearSign (); + + if (_pkcs11h_certificate != NULL) { + pkcs11h_certificate_freeCertificate (_pkcs11h_certificate); + _pkcs11h_certificate = NULL; + } + + if (_pkcs11h_certificate_id != NULL) { + pkcs11h_certificate_freeCertificateId (_pkcs11h_certificate_id); + _pkcs11h_certificate_id = NULL; + } + + QCA_logTextMessage ( + "pkcs11RSAContext::~pkcs11RSAContext - return", + Logger::Debug + ); + } + + virtual + Provider::Context * + clone () const { + return new pkcs11RSAContext (*this); + } + +public: + virtual + bool + isNull () const { + return _pubkey.isNull (); + } + + virtual + PKey::Type + type () const { + return _pubkey.type (); + } + + virtual + bool + isPrivate () const { + return _has_privateKeyRole; + } + + virtual + bool + canExport () const { + return !_has_privateKeyRole; + } + + virtual + void + convertToPublic () { + QCA_logTextMessage ( + "pkcs11RSAContext::convertToPublic - entry", + Logger::Debug + ); + + if (_has_privateKeyRole) { + if (_pkcs11h_certificate != NULL) { + pkcs11h_certificate_freeCertificate (_pkcs11h_certificate); + _pkcs11h_certificate = NULL; + } + _has_privateKeyRole = false; + } + + QCA_logTextMessage ( + "pkcs11RSAContext::convertToPublic - return", + Logger::Debug + ); + } + + virtual + int + bits () const { + return _pubkey.bitSize (); + } + + virtual + int + maximumEncryptSize ( + EncryptionAlgorithm alg + ) const { + return _pubkey.maximumEncryptSize (alg); + } + + virtual + SecureArray + encrypt ( + const SecureArray &in, + EncryptionAlgorithm alg + ) { + return _pubkey.encrypt (in, alg); + } + + virtual + bool + decrypt ( + const SecureArray &in, + SecureArray *out, + EncryptionAlgorithm alg + ) { + bool session_locked = false; + bool ret = false; + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11RSAContext::decrypt - decrypt in.size()=%d, alg=%d", + in.size (), + (int)alg + ), + Logger::Debug + ); + + try { + CK_MECHANISM_TYPE mech; + CK_RV rv; + size_t my_size; + + switch (alg) { + case EME_PKCS1v15: + mech = CKM_RSA_PKCS; + break; + case EME_PKCS1_OAEP: + mech = CKM_RSA_PKCS_OAEP; + break; + default: + throw pkcs11Exception (CKR_FUNCTION_NOT_SUPPORTED, "Invalid algorithm"); + break; + } + + _ensureCertificate (); + + if ( + (rv = pkcs11h_certificate_lockSession ( + _pkcs11h_certificate + )) != CKR_OK + ) { + throw pkcs11Exception (rv, "Cannot lock session"); + } + session_locked = true; + + if ( + (rv = pkcs11h_certificate_decryptAny ( + _pkcs11h_certificate, + mech, + (const unsigned char *)in.constData (), + in.size (), + NULL, + &my_size + )) != CKR_OK + ) { + throw pkcs11Exception (rv, "Decryption error"); + } + + out->resize (my_size); + + if ( + (rv = pkcs11h_certificate_decryptAny ( + _pkcs11h_certificate, + mech, + (const unsigned char *)in.constData (), + in.size (), + (unsigned char *)out->data (), + &my_size + )) != CKR_OK + ) { + throw pkcs11Exception (rv, "Decryption error"); + } + + rv = out->resize (my_size); + + if ( + (rv = pkcs11h_certificate_releaseSession ( + _pkcs11h_certificate + )) != CKR_OK + ) { + throw pkcs11Exception (rv, "Cannot release session"); + } + session_locked = false; + + ret = true; + } + catch (const pkcs11Exception &e) { + if (session_locked) { + pkcs11h_certificate_releaseSession ( + _pkcs11h_certificate + ); + session_locked = false; + } + + if (s_keyStoreList != NULL) { + s_keyStoreList->_emit_diagnosticText ( + QString ().sprintf ( + "PKCS#11: Cannot decrypt: %lu-'%s'.\n", + e.rv (), + myPrintable (e.message ()) + ) + ); + } + } + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11RSAContext::decrypt - decrypt out->size()=%d", + out->size () + ), + Logger::Debug + ); + + return ret; + } + + virtual + void + startSign ( + SignatureAlgorithm alg, + SignatureFormat + ) { + _clearSign (); + + _sign_data.alg = alg; + + switch (_sign_data.alg) { + case EMSA3_SHA1: + _sign_data.hash = new Hash ("sha1"); + break; + case EMSA3_MD5: + _sign_data.hash = new Hash ("md5"); + break; + case EMSA3_MD2: + _sign_data.hash = new Hash ("md2"); + break; + case EMSA3_Raw: + break; + case SignatureUnknown: + case EMSA1_SHA1: + case EMSA3_RIPEMD160: + default: + QCA_logTextMessage ( + QString().sprintf ( + "PKCS#11: Invalid hash algorithm %d", + _sign_data.alg + ), + Logger::Warning + ); + break; + } + } + + virtual + void + startVerify ( + SignatureAlgorithm alg, + SignatureFormat sf + ) { + _pubkey.startVerify (alg, sf); + } + + virtual + void + update ( + const MemoryRegion &in + ) { + if (_has_privateKeyRole) { + if (_sign_data.hash != NULL) { + _sign_data.hash->update (in); + } + else { + _sign_data.raw.append (in.toByteArray ()); + } + } + else { + _pubkey.update (in); + } + } + + virtual + QByteArray + endSign () { + QByteArray result; + bool session_locked = false; + + QCA_logTextMessage ( + "pkcs11RSAContext::endSign - entry", + Logger::Debug + ); + + try { + QByteArray final; + CK_RV rv; + + // from some strange reason I got 2047... (for some) <---- BUG?!?!?! + int myrsa_size=(_pubkey.bitSize () + 7) / 8; + + if (_sign_data.hash != NULL) { + final = emsa3Encode ( + _sign_data.hash->type (), + _sign_data.hash->final ().toByteArray (), + myrsa_size + ); + } + else { + final = _sign_data.raw; + } + + if (final.size () == 0) { + throw pkcs11Exception (CKR_FUNCTION_FAILED, "Cannot encode signature"); + } + + _ensureCertificate (); + + size_t my_size; + + if ( + (rv = pkcs11h_certificate_lockSession ( + _pkcs11h_certificate + )) != CKR_OK + ) { + throw pkcs11Exception (rv, "Cannot lock session"); + } + session_locked = true; + + if ( + (rv = pkcs11h_certificate_signAny ( + _pkcs11h_certificate, + CKM_RSA_PKCS, + (const unsigned char *)final.constData (), + (size_t)final.size (), + NULL, + &my_size + )) != CKR_OK + ) { + throw pkcs11Exception (rv, "Signature failed"); + } + + result.resize (my_size); + + if ( + (rv = pkcs11h_certificate_signAny ( + _pkcs11h_certificate, + CKM_RSA_PKCS, + (const unsigned char *)final.constData (), + (size_t)final.size (), + (unsigned char *)result.data (), + &my_size + )) != CKR_OK + ) { + throw pkcs11Exception (rv, "Signature failed"); + } + + result.resize (my_size); + + if ( + (rv = pkcs11h_certificate_releaseSession ( + _pkcs11h_certificate + )) != CKR_OK + ) { + throw pkcs11Exception (rv, "Cannot release session"); + } + session_locked = false; + + } + catch (const pkcs11Exception &e) { + result.clear (); + + if (session_locked) { + pkcs11h_certificate_releaseSession ( + _pkcs11h_certificate + ); + session_locked = false; + } + + if (s_keyStoreList != NULL) { + s_keyStoreList->_emit_diagnosticText ( + QString ().sprintf ( + "PKCS#11: Cannot sign: %lu-'%s'.\n", + e.rv (), + myPrintable (e.message ()) + ) + ); + } + } + + _clearSign (); + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11RSAContext::endSign - return result.size ()=%d", + result.size () + ), + Logger::Debug + ); + + return result; + } + + virtual + bool + validSignature ( + const QByteArray &sig + ) { + return _pubkey.validSignature (sig); + } + + virtual + void + createPrivate ( + int bits, + int exp, + bool block + ) { + Q_UNUSED(bits); + Q_UNUSED(exp); + Q_UNUSED(block); + } + + virtual + void + createPrivate ( + const BigInteger &n, + const BigInteger &e, + const BigInteger &p, + const BigInteger &q, + const BigInteger &d + ) { + Q_UNUSED(n); + Q_UNUSED(e); + Q_UNUSED(p); + Q_UNUSED(q); + Q_UNUSED(d); + } + + virtual + void + createPublic ( + const BigInteger &n, + const BigInteger &e + ) { + Q_UNUSED(n); + Q_UNUSED(e); + } + + virtual + BigInteger + n () const { + return _pubkey.n (); + } + + virtual + BigInteger + e () const { + return _pubkey.e (); + } + + virtual + BigInteger + p () const { + return BigInteger(); + } + + virtual + BigInteger + q () const { + return BigInteger(); + } + + virtual + BigInteger + d () const { + return BigInteger(); + } + +public: + PublicKey + _publicKey () const { + return _pubkey; + } + + bool + _isTokenAvailable() const { + bool ret; + + QCA_logTextMessage ( + "pkcs11RSAContext::_ensureTokenAvailable - entry", + Logger::Debug + ); + + ret = pkcs11h_token_ensureAccess ( + _pkcs11h_certificate_id->token_id, + NULL, + 0 + ) == CKR_OK; + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11RSAContext::_ensureTokenAvailable - return ret=%d", + ret ? 1 : 0 + ), + Logger::Debug + ); + + return ret; + } + + bool + _ensureTokenAccess () { + bool ret; + + QCA_logTextMessage ( + "pkcs11RSAContext::_ensureTokenAccess - entry", + Logger::Debug + ); + + ret = pkcs11h_token_ensureAccess ( + _pkcs11h_certificate_id->token_id, + NULL, + PKCS11H_PROMPT_MASK_ALLOW_ALL + ) == CKR_OK; + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11RSAContext::_ensureTokenAccess - return ret=%d", + ret ? 1 : 0 + ), + Logger::Debug + ); + + return ret; + } + +private: + void + _clearSign () { + _sign_data.raw.clear (); + _sign_data.alg = SignatureUnknown; + delete _sign_data.hash; + _sign_data.hash = NULL; + } + + void + _ensureCertificate () { + CK_RV rv; + + QCA_logTextMessage ( + "pkcs11RSAContext::_ensureCertificate - entry", + Logger::Debug + ); + + if (_pkcs11h_certificate == NULL) { + if ( + (rv = pkcs11h_certificate_create ( + _pkcs11h_certificate_id, + &_serialized, + PKCS11H_PROMPT_MASK_ALLOW_ALL, + PKCS11H_PIN_CACHE_INFINITE, + &_pkcs11h_certificate + )) != CKR_OK + ) { + throw pkcs11Exception (rv, "Cannot create low-level certificate"); + } + } + + QCA_logTextMessage ( + "pkcs11RSAContext::_ensureCertificate - return", + Logger::Debug + ); + } +}; + +//---------------------------------------------------------------------------- +// pkcs11PKeyContext +//---------------------------------------------------------------------------- +class pkcs11PKeyContext : public PKeyContext +{ + +private: + PKeyBase *_k; + +public: + pkcs11PKeyContext (Provider *p) : PKeyContext (p) { + _k = NULL; + } + + ~pkcs11PKeyContext () { + delete _k; + _k = NULL; + } + + virtual + Provider::Context * + clone () const { + pkcs11PKeyContext *c = new pkcs11PKeyContext (*this); + c->_k = (PKeyBase *)_k->clone(); + return c; + } + +public: + virtual + QList + supportedTypes () const { + QList list; + list += PKey::RSA; + return list; + } + + virtual + QList + supportedIOTypes () const { + QList list; + list += PKey::RSA; + return list; + } + + virtual + QList + supportedPBEAlgorithms () const { + QList list; + return list; + } + + virtual + PKeyBase * + key () { + return _k; + } + + virtual + const PKeyBase * + key () const { + return _k; + } + + virtual + void + setKey (PKeyBase *key) { + delete _k; + _k = key; + } + + virtual + bool + importKey ( + const PKeyBase *key + ) { + Q_UNUSED(key); + return false; + } + + static + int + passphrase_cb ( + char *buf, + int size, + int rwflag, + void *u + ) { + Q_UNUSED(buf); + Q_UNUSED(size); + Q_UNUSED(rwflag); + Q_UNUSED(u); + return 0; + } + + virtual + QByteArray + publicToDER () const { + return static_cast(_k)->_publicKey ().toDER (); + } + + virtual + QString + publicToPEM () const { + return static_cast(_k)->_publicKey ().toPEM (); + } + + virtual + ConvertResult + publicFromDER ( + const QByteArray &in + ) { + Q_UNUSED(in); + return ErrorDecode; + } + + virtual + ConvertResult + publicFromPEM ( + const QString &s + ) { + Q_UNUSED(s); + return ErrorDecode; + } + + virtual + SecureArray + privateToDER( + const SecureArray &passphrase, + PBEAlgorithm pbe + ) const { + Q_UNUSED(passphrase); + Q_UNUSED(pbe); + return SecureArray (); + } + + virtual + QString + privateToPEM ( + const SecureArray &passphrase, + PBEAlgorithm pbe + ) const { + Q_UNUSED(passphrase); + Q_UNUSED(pbe); + return QString (); + } + + virtual + ConvertResult + privateFromDER ( + const SecureArray &in, + const SecureArray &passphrase + ) { + Q_UNUSED(in); + Q_UNUSED(passphrase); + return ErrorDecode; + } + + virtual + ConvertResult + privateFromPEM ( + const QString &s, + const SecureArray &passphrase + ) { + Q_UNUSED(s); + Q_UNUSED(passphrase); + return ErrorDecode; + } +}; + +//---------------------------------------------------------------------------- +// pkcs11KeyStoreEntryContext +//---------------------------------------------------------------------------- +class pkcs11KeyStoreEntryContext : public KeyStoreEntryContext +{ +private: + KeyStoreEntry::Type _item_type; + KeyBundle _key; + Certificate _cert; + QString _storeId; + QString _id; + QString _serialized; + QString _storeName; + QString _name; + +public: + pkcs11KeyStoreEntryContext ( + const Certificate &cert, + const QString &storeId, + const QString &serialized, + const QString &storeName, + const QString &name, + Provider *p + ) : KeyStoreEntryContext(p) { + _item_type = KeyStoreEntry::TypeCertificate; + _cert = cert; + _storeId = storeId; + _id = certificateHash (_cert); + _serialized = serialized; + _storeName = storeName; + _name = name; + } + + pkcs11KeyStoreEntryContext ( + const KeyBundle &key, + const QString &storeId, + const QString &serialized, + const QString &storeName, + const QString &name, + Provider *p + ) : KeyStoreEntryContext(p) { + _item_type = KeyStoreEntry::TypeKeyBundle; + _key = key; + _storeId = storeId, + _id = certificateHash (key.certificateChain ().primary ()); + _serialized = serialized; + _storeName = storeName; + _name = name; + } + + pkcs11KeyStoreEntryContext ( + const pkcs11KeyStoreEntryContext &from + ) : KeyStoreEntryContext(from) { + _item_type = from._item_type; + _key = from._key; + _storeId = from._storeId; + _id = from._id; + _serialized = from._serialized; + _storeName = from._storeName; + _name = from._name; + } + + virtual + Provider::Context * + clone () const { + return new pkcs11KeyStoreEntryContext (*this); + } + +public: + virtual + KeyStoreEntry::Type + type () const { + return _item_type; + } + + virtual + QString + name () const { + return _name; + } + + virtual + QString + id () const { + return _id; + } + + virtual + KeyBundle + keyBundle () const { + return _key; + } + + virtual + Certificate + certificate () const { + return _cert; + } + + virtual + QString + storeId () const { + return _storeId; + } + + virtual + QString + storeName () const { + return _storeName; + } + + virtual + bool + isAvailable() const { + return static_cast(static_cast(_key.privateKey ().context ())->key ())->_isTokenAvailable (); + } + + virtual + bool + ensureAccess () { + return static_cast(static_cast(_key.privateKey ().context ())->key ())->_ensureTokenAccess (); + } + + virtual + QString + serialize () const { + return _serialized; + } +}; + +//---------------------------------------------------------------------------- +// pkcs11QCACrypto +//---------------------------------------------------------------------------- +class pkcs11QCACrypto { + +private: + static + int + _pkcs11h_crypto_qca_initialize ( + void * const global_data + ) { + Q_UNUSED(global_data); + + return TRUE; //krazy:exclude=captruefalse + } + + static + int + _pkcs11h_crypto_qca_uninitialize ( + void * const global_data + ) { + Q_UNUSED(global_data); + + return TRUE; //krazy:exclude=captruefalse + } + + static + int + _pkcs11h_crypto_qca_certificate_get_expiration ( + void * const global_data, + const unsigned char * const blob, + const size_t blob_size, + time_t * const expiration + ) { + Q_UNUSED(global_data); + + Certificate cert = Certificate::fromDER ( + QByteArray ( + (char *)blob, + blob_size + ) + ); + + *expiration = cert.notValidAfter ().toTime_t (); + + return TRUE; //krazy:exclude=captruefalse + } + + static + int + _pkcs11h_crypto_qca_certificate_get_dn ( + void * const global_data, + const unsigned char * const blob, + const size_t blob_size, + char * const dn, + const size_t dn_max + ) { + Q_UNUSED(global_data); + + Certificate cert = Certificate::fromDER ( + QByteArray ( + (char *)blob, + blob_size + ) + ); + QString qdn = cert.subjectInfoOrdered ().toString (); + + if ((size_t)qdn.length () > dn_max-1) { + return FALSE; //krazy:exclude=captruefalse + } + else { + qstrcpy (dn, myPrintable (qdn)); + return TRUE; //krazy:exclude=captruefalse + } + } + + static + int + _pkcs11h_crypto_qca_certificate_is_issuer ( + void * const global_data, + const unsigned char * const signer_blob, + const size_t signer_blob_size, + const unsigned char * const cert_blob, + const size_t cert_blob_size + ) { + Q_UNUSED(global_data); + + Certificate signer = Certificate::fromDER ( + QByteArray ( + (char *)signer_blob, + signer_blob_size + ) + ); + + Certificate cert = Certificate::fromDER ( + QByteArray ( + (char *)cert_blob, + cert_blob_size + ) + ); + + return signer.isIssuerOf (cert); + } + +public: + static pkcs11h_engine_crypto_t crypto; +}; + +pkcs11h_engine_crypto_t pkcs11QCACrypto::crypto = { + NULL, + _pkcs11h_crypto_qca_initialize, + _pkcs11h_crypto_qca_uninitialize, + _pkcs11h_crypto_qca_certificate_get_expiration, + _pkcs11h_crypto_qca_certificate_get_dn, + _pkcs11h_crypto_qca_certificate_is_issuer +}; + +//---------------------------------------------------------------------------- +// pkcs11KeyStoreListContext +//---------------------------------------------------------------------------- +pkcs11KeyStoreListContext::pkcs11KeyStoreListContext (Provider *p) : KeyStoreListContext(p) { + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::pkcs11KeyStoreListContext - entry Provider=%p", + (void *)p + ), + Logger::Debug + ); + + _last_id = 0; + _initialized = false; + + QCA_logTextMessage ( + "pkcs11KeyStoreListContext::pkcs11KeyStoreListContext - return", + Logger::Debug + ); +} + +pkcs11KeyStoreListContext::~pkcs11KeyStoreListContext () { + QCA_logTextMessage ( + "pkcs11KeyStoreListContext::~pkcs11KeyStoreListContext - entry", + Logger::Debug + ); + + s_keyStoreList = NULL; + _clearStores (); + + QCA_logTextMessage ( + "pkcs11KeyStoreListContext::~pkcs11KeyStoreListContext - return", + Logger::Debug + ); +} + +Provider::Context * +pkcs11KeyStoreListContext::clone () const { + QCA_logTextMessage ( + "pkcs11KeyStoreListContext::clone - entry/return", + Logger::Debug + ); + return NULL; +} + +void +pkcs11KeyStoreListContext::start () { + QCA_logTextMessage ( + "pkcs11KeyStoreListContext::start - entry", + Logger::Debug + ); + + QMetaObject::invokeMethod(this, "doReady", Qt::QueuedConnection); + + QCA_logTextMessage ( + "pkcs11KeyStoreListContext::start - return", + Logger::Debug + ); +} + +void +pkcs11KeyStoreListContext::setUpdatesEnabled (bool enabled) { + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::setUpdatesEnabled - entry enabled=%d", + enabled ? 1 : 0 + ), + Logger::Debug + ); + + try { + pkcs11Provider *p = static_cast(provider ()); + if (enabled) { + p->startSlotEvents (); + } + else { + p->stopSlotEvents (); + } + } + catch (const pkcs11Exception &e) { + s_keyStoreList->_emit_diagnosticText ( + QString ().sprintf ( + "PKCS#11: Start event failed %lu-'%s'.\n", + e.rv (), + myPrintable (e.message ()) + ) + ); + } + + QCA_logTextMessage ( + "pkcs11KeyStoreListContext::setUpdatesEnabled - return", + Logger::Debug + ); +} + +KeyStoreEntryContext * +pkcs11KeyStoreListContext::entry ( + int id, + const QString &entryId +) { + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::entry - entry/return id=%d entryId='%s'", + id, + myPrintable (entryId) + ), + Logger::Debug + ); + + Q_UNUSED(id); + Q_UNUSED(entryId); + return NULL; +} + +KeyStoreEntryContext * +pkcs11KeyStoreListContext::entryPassive ( + const QString &serialized +) { + KeyStoreEntryContext *entry = NULL; + pkcs11h_certificate_id_t certificate_id = NULL; + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::entryPassive - entry serialized='%s'", + myPrintable (serialized) + ), + Logger::Debug + ); + + try { + if (serialized.startsWith ("qca-pkcs11/")) { + CertificateChain chain; + bool has_private; + + _deserializeCertificate (serialized, &certificate_id, &has_private, chain); + pkcs11KeyStoreItem *sentry = _registerTokenId (certificate_id->token_id); + sentry->registerCertificates (chain); + QMap friendlyNames = sentry->friendlyNames (); + + entry = _keyStoreEntryByCertificateId ( + certificate_id, + has_private, + chain, + friendlyNames[certificateHash (chain.primary ())] + ); + } + } + catch (const pkcs11Exception &e) { + s_keyStoreList->_emit_diagnosticText ( + QString ().sprintf ( + "PKCS#11: Add key store entry %lu-'%s'.\n", + e.rv (), + myPrintable (e.message ()) + ) + ); + } + + if (certificate_id != NULL) { + pkcs11h_certificate_freeCertificateId (certificate_id); + certificate_id = NULL; + } + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::entryPassive - return entry=%p", + (void *)entry + ), + Logger::Debug + ); + + return entry; +} + +KeyStore::Type +pkcs11KeyStoreListContext::type (int id) const { + + Q_UNUSED(id); + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::type - entry/return id=%d", + id + ), + Logger::Debug + ); + + return KeyStore::SmartCard; +} + +QString +pkcs11KeyStoreListContext::storeId (int id) const { + QString ret; + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::storeId - entry id=%d", + id + ), + Logger::Debug + ); + + if (_storesById.contains (id)) { + ret = _tokenId2storeId (_storesById[id]->tokenId ()); + } + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::storeId - return ret=%s", + myPrintable (ret) + ), + Logger::Debug + ); + + return ret; +} + +QString +pkcs11KeyStoreListContext::name (int id) const { + QString ret; + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::name - entry id=%d", + id + ), + Logger::Debug + ); + + if (_storesById.contains (id)) { + ret = _storesById[id]->tokenId ()->label; + } + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::name - return ret=%s", + myPrintable (ret) + ), + Logger::Debug + ); + + return ret; +} + +QList +pkcs11KeyStoreListContext::entryTypes (int id) const { + + Q_UNUSED(id); + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::entryTypes - entry/return id=%d", + id + ), + Logger::Debug + ); + + QList list; + list += KeyStoreEntry::TypeKeyBundle; + list += KeyStoreEntry::TypeCertificate; + return list; +} + +QList +pkcs11KeyStoreListContext::keyStores () { + pkcs11h_token_id_list_t tokens = NULL; + QList out; + + QCA_logTextMessage ( + "pkcs11KeyStoreListContext::keyStores - entry", + Logger::Debug + ); + + try { + CK_RV rv; + + /* + * Get available tokens + */ + if ( + (rv = pkcs11h_token_enumTokenIds ( + PKCS11H_ENUM_METHOD_CACHE_EXIST, + &tokens + )) != CKR_OK + ) { + throw pkcs11Exception (rv, "Enumerating tokens"); + } + + /* + * Register all tokens, unmark + * them from remove list + */ + QList to_remove = _storesById.keys (); + for ( + pkcs11h_token_id_list_t entry = tokens; + entry != NULL; + entry = entry->next + ) { + pkcs11KeyStoreItem *item = _registerTokenId (entry->token_id); + out += item->id (); + to_remove.removeAll (item->id ()); + } + + /* + * Remove all items + * that were not discovered + */ + { + QMutexLocker l(&_mutexStores); + + foreach (int i, to_remove) { + pkcs11KeyStoreItem *item = _storesById[i]; + + _storesById.remove (item->id ()); + _stores.removeAll (item); + + delete item; + item = NULL; + } + } + } + catch (const pkcs11Exception &e) { + s_keyStoreList->_emit_diagnosticText ( + QString ().sprintf ( + "PKCS#11: Cannot get key stores: %lu-'%s'.\n", + e.rv (), + myPrintable (e.message ()) + ) + ); + } + + if (tokens != NULL) { + pkcs11h_token_freeTokenIdList (tokens); + } + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::keyStores - return out.size()=%d", + out.size () + ), + Logger::Debug + ); + + return out; +} + +QList +pkcs11KeyStoreListContext::entryList (int id) { + pkcs11h_certificate_id_list_t certs = NULL; + QList out; + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::entryList - entry id=%d", + id + ), + Logger::Debug + ); + + try { + CK_RV rv; + + if (_storesById.contains (id)) { + pkcs11KeyStoreItem *entry = _storesById[id]; + + pkcs11h_certificate_id_list_t issuers = NULL; + pkcs11h_certificate_id_list_t current = NULL; + QList listCerts; + QList listIssuers; + QList listIds; + int i = 0; + + if ( + (rv = pkcs11h_certificate_enumTokenCertificateIds ( + entry->tokenId (), + PKCS11H_ENUM_METHOD_CACHE, + NULL, + PKCS11H_PROMPT_MASK_ALLOW_ALL, + &issuers, + &certs + )) != CKR_OK + ) { + throw pkcs11Exception (rv, "Enumerate certificates"); + } + + for ( + current=certs; + current!=NULL; + current=current->next + ) { + if (current->certificate_id->certificate_blob_size > 0) { + listCerts += Certificate::fromDER ( + QByteArray ( + (char *)current->certificate_id->certificate_blob, + current->certificate_id->certificate_blob_size + ) + ); + } + } + + for ( + current=issuers; + current!=NULL; + current=current->next + ) { + if (current->certificate_id->certificate_blob_size > 0) { + listIssuers += Certificate::fromDER ( + QByteArray ( + (char *)current->certificate_id->certificate_blob, + current->certificate_id->certificate_blob_size + ) + ); + } + } + + entry->registerCertificates (listIssuers + listCerts); + QMap friendlyNames = entry->friendlyNames (); + + QList listIssuersForComplete; + if (dynamic_cast (provider ())->_allowLoadRootCA) { + listIssuersForComplete = listIssuers; + } + else { + foreach (Certificate c, listIssuers) { + if (!c.isSelfSigned ()) { + listIssuersForComplete += c; + } + } + } + + for ( + i=0, current=issuers; + current!=NULL; + i++, current=current->next + ) { + try { + if (listIssuers[i].isNull ()) { + throw pkcs11Exception (CKR_ARGUMENTS_BAD, "Invalid certificate"); + } + + if ( + listIssuers[i].isSelfSigned () && + dynamic_cast (provider ())->_allowLoadRootCA + ) { + CertificateChain chain = CertificateChain (listIssuers[i]).complete (listIssuersForComplete); + out += _keyStoreEntryByCertificateId ( + current->certificate_id, + false, + chain, + friendlyNames[certificateHash (chain.primary ())] + ); + } + } + catch (const pkcs11Exception &e) { + s_keyStoreList->_emit_diagnosticText ( + QString ().sprintf ( + "PKCS#11: Add key store entry %lu-'%s'.\n", + e.rv (), + myPrintable (e.message ()) + ) + ); + } + } + + for ( + i=0, current=certs; + current!=NULL; + i++, current=current->next + ) { + try { + if (listCerts[i].isNull ()) { + throw pkcs11Exception (CKR_ARGUMENTS_BAD, "Invalid certificate"); + } + + CertificateChain chain = CertificateChain (listCerts[i]).complete (listIssuersForComplete); + out += _keyStoreEntryByCertificateId ( + current->certificate_id, + true, + chain, + friendlyNames[certificateHash (chain.primary ())] + ); + } + catch (const pkcs11Exception &e) { + s_keyStoreList->_emit_diagnosticText ( + QString ().sprintf ( + "PKCS#11: Add key store entry %lu-'%s'.\n", + e.rv (), + myPrintable (e.message ()) + ) + ); + } + } + } + } + catch (const pkcs11Exception &e) { + s_keyStoreList->_emit_diagnosticText ( + QString ().sprintf ( + "PKCS#11: Enumerating store failed %lu-'%s'.\n", + e.rv (), + myPrintable (e.message ()) + ) + ); + } + + if (certs != NULL) { + pkcs11h_certificate_freeCertificateIdList (certs); + } + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::entryList - return out.size()=%d", + out.size () + ), + Logger::Debug + ); + + return out; +} + +bool +pkcs11KeyStoreListContext::_tokenPrompt ( + void * const user_data, + const pkcs11h_token_id_t token_id +) { + KeyStoreEntry entry; + KeyStoreEntryContext *context = NULL; + QString storeId, storeName; + bool ret = false; + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::_tokenPrompt - entry user_data=%p, token_id=%p", + user_data, + (void *)token_id + ), + Logger::Debug + ); + + if (user_data != NULL) { + QString *serialized = (QString *)user_data; + context = entryPassive (*serialized); + storeId = context->storeId (); + storeName = context->storeName (); + entry.change (context); + } + else { + _registerTokenId (token_id); + storeId = _tokenId2storeId (token_id); + storeName = token_id->label; + } + + TokenAsker asker; + asker.ask ( + KeyStoreInfo (KeyStore::SmartCard, storeId, storeName), + entry, + context + ); + asker.waitForResponse (); + if (asker.accepted ()) { + ret = true; + } + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::_tokenPrompt - return ret=%d", + ret ? 1 : 0 + ), + Logger::Debug + ); + + return ret; +} + +bool +pkcs11KeyStoreListContext::_pinPrompt ( + void * const user_data, + const pkcs11h_token_id_t token_id, + SecureArray &pin +) { + KeyStoreEntry entry; + KeyStoreEntryContext *context = NULL; + QString storeId, storeName; + bool ret = false; + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::_pinPrompt - entry user_data=%p, token_id=%p", + user_data, + (void *)token_id + ), + Logger::Debug + ); + + pin = SecureArray(); + + if (user_data != NULL) { + QString *serialized = (QString *)user_data; + context = entryPassive (*serialized); + storeId = context->storeId (); + storeName = context->storeName (); + entry.change (context); + } + else { + _registerTokenId (token_id); + storeId = _tokenId2storeId (token_id); + storeName = token_id->label; + } + + PasswordAsker asker; + asker.ask ( + Event::StylePIN, + KeyStoreInfo (KeyStore::SmartCard, storeId, storeName), + entry, + context + ); + asker.waitForResponse (); + if (asker.accepted ()) { + ret = true; + pin = asker.password (); + } + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::_pinPrompt - return ret=%d", + ret ? 1 : 0 + ), + Logger::Debug + ); + + return ret; +} + +void +pkcs11KeyStoreListContext::_emit_diagnosticText ( + const QString &t +) { + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::_emit_diagnosticText - entry t='%s'", + myPrintable (t) + ), + Logger::Debug + ); + + QCA_logTextMessage (t, Logger::Warning); + + emit diagnosticText (t); + + QCA_logTextMessage ( + "pkcs11KeyStoreListContext::_emit_diagnosticText - return", + Logger::Debug + ); +} + +void +pkcs11KeyStoreListContext::doReady () { + QCA_logTextMessage ( + "pkcs11KeyStoreListContext::doReady - entry", + Logger::Debug + ); + + emit busyEnd (); + + QCA_logTextMessage ( + "pkcs11KeyStoreListContext::doReady - return", + Logger::Debug + ); +} + +void +pkcs11KeyStoreListContext::doUpdated () { + QCA_logTextMessage ( + "pkcs11KeyStoreListContext::doUpdated - entry", + Logger::Debug + ); + + emit updated (); + + QCA_logTextMessage ( + "pkcs11KeyStoreListContext::doUpdated - return", + Logger::Debug + ); +} + +pkcs11KeyStoreListContext::pkcs11KeyStoreItem * +pkcs11KeyStoreListContext::_registerTokenId ( + const pkcs11h_token_id_t token_id +) { + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::_registerTokenId - entry token_id=%p", + (void *)token_id + ), + Logger::Debug + ); + + QMutexLocker l(&_mutexStores); + + _stores_t::iterator i=_stores.begin (); + + while ( + i != _stores.end () && + !pkcs11h_token_sameTokenId ( + token_id, + (*i)->tokenId () + ) + ) { + i++; + } + + pkcs11KeyStoreItem *entry = NULL; + + if (i == _stores.end ()) { + /* + * Deal with last_id overlap + */ + while (_storesById.find (++_last_id) != _storesById.end ()); + + entry = new pkcs11KeyStoreItem (_last_id, token_id); + + _stores += entry; + _storesById.insert (entry->id (), entry); + } + else { + entry = (*i); + } + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::_registerTokenId - return entry=%p", + (void *)token_id + ), + Logger::Debug + ); + + return entry; +} + +void +pkcs11KeyStoreListContext::_clearStores () { + QCA_logTextMessage ( + "pkcs11KeyStoreListContext::_clearStores - entry", + Logger::Debug + ); + + QMutexLocker l(&_mutexStores); + + _storesById.clear (); + foreach (pkcs11KeyStoreItem *i, _stores) { + delete i; + } + + _stores.clear (); + + QCA_logTextMessage ( + "pkcs11KeyStoreListContext::_clearStores - return", + Logger::Debug + ); +} + +pkcs11KeyStoreEntryContext * +pkcs11KeyStoreListContext::_keyStoreEntryByCertificateId ( + const pkcs11h_certificate_id_t certificate_id, + const bool has_private, + const CertificateChain &chain, + const QString &_description +) const { + pkcs11KeyStoreEntryContext *entry = NULL; + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::_keyStoreEntryByCertificateId - entry certificate_id=%p, has_private=%d, chain.size()=%d", + (void *)certificate_id, + has_private ? 1 : 0, + chain.size () + ), + Logger::Debug + ); + + if (certificate_id == NULL) { + throw pkcs11Exception (CKR_ARGUMENTS_BAD, "Missing certificate object"); + } + + QString serialized = _serializeCertificate ( + certificate_id, + chain, + has_private + ); + + QString description = _description; + Certificate cert = chain.primary (); + if (description.isEmpty ()) { + description = cert.subjectInfoOrdered ().toString () + " by " + cert.issuerInfo ().value (CommonName, "Unknown"); + } + + if (has_private) { + pkcs11RSAContext *rsakey = new pkcs11RSAContext ( + provider(), + certificate_id, + serialized, + cert.subjectPublicKey ().toRSA () + ); + + pkcs11PKeyContext *pkc = new pkcs11PKeyContext (provider ()); + pkc->setKey (rsakey); + PrivateKey privkey; + privkey.change (pkc); + KeyBundle key; + key.setCertificateChainAndKey ( + chain, + privkey + ); + + entry = new pkcs11KeyStoreEntryContext ( + key, + _tokenId2storeId (certificate_id->token_id), + serialized, + certificate_id->token_id->label, + description, + provider () + ); + } + else { + entry = new pkcs11KeyStoreEntryContext ( + cert, + _tokenId2storeId (certificate_id->token_id), + serialized, + certificate_id->token_id->label, + description, + provider() + ); + } + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::_keyStoreEntryByCertificateId - return entry=%p", + (void *)entry + ), + Logger::Debug + ); + + return entry; +} + +QString +pkcs11KeyStoreListContext::_tokenId2storeId ( + const pkcs11h_token_id_t token_id +) const { + QString storeId; + size_t len; + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::_tokenId2storeId - entry token_id=%p", + (void *)token_id + ), + Logger::Debug + ); + + if ( + pkcs11h_token_serializeTokenId ( + NULL, + &len, + token_id + ) != CKR_OK + ) { + throw pkcs11Exception (CKR_FUNCTION_FAILED, "Cannot serialize token id"); + } + + QByteArray buf; + buf.resize ((int)len); + + if ( + pkcs11h_token_serializeTokenId ( + buf.data (), + &len, + token_id + ) != CKR_OK + ) { + throw pkcs11Exception (CKR_FUNCTION_FAILED, "Cannot serialize token id"); + } + + buf.resize ((int)len); + + storeId = "qca-pkcs11/" + _escapeString (QString::fromUtf8 (buf)); + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::_tokenId2storeId - return storeId='%s'", + myPrintable (storeId) + ), + Logger::Debug + ); + + return storeId; +} + +QString +pkcs11KeyStoreListContext::_serializeCertificate ( + const pkcs11h_certificate_id_t certificate_id, + const CertificateChain &chain, + const bool has_private +) const { + QString serialized; + size_t len; + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::_serializeCertificate - entry certificate_id=%p, xx, has_private=%d", + (void *)certificate_id, + has_private ? 1 : 0 + ), + Logger::Debug + ); + + if ( + pkcs11h_certificate_serializeCertificateId ( + NULL, + &len, + certificate_id + ) != CKR_OK + ) { + throw pkcs11Exception (CKR_FUNCTION_FAILED, "Cannot serialize certificate id"); + } + + QByteArray buf; + buf.resize ((int)len); + + if ( + pkcs11h_certificate_serializeCertificateId ( + buf.data (), + &len, + certificate_id + ) != CKR_OK + ) { + throw pkcs11Exception (CKR_FUNCTION_FAILED, "Cannot serialize certificate id"); + } + + buf.resize ((int)len); + + serialized = QString ().sprintf ( + "qca-pkcs11/0/%s/%d/", + myPrintable(_escapeString (QString::fromUtf8 (buf))), + has_private ? 1 : 0 + ); + + QStringList list; + foreach (Certificate i, chain) { + list += _escapeString (Base64 ().arrayToString (i.toDER ())); + } + + serialized.append (list.join ("/")); + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::_serializeCertificate - return serialized='%s'", + myPrintable (serialized) + ), + Logger::Debug + ); + + return serialized; +} + +void +pkcs11KeyStoreListContext::_deserializeCertificate ( + const QString &from, + pkcs11h_certificate_id_t * const p_certificate_id, + bool * const p_has_private, + CertificateChain &chain +) const { + pkcs11h_certificate_id_t certificate_id = NULL; + chain.clear (); + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::_deserializeCertificate - entry from='%s', p_certificate_id=%p, p_has_private=%p", + myPrintable (from), + (void *)p_certificate_id, + (void *)p_has_private + ), + Logger::Debug + ); + + try { + int n = 0; + CK_RV rv; + + *p_certificate_id = NULL; + *p_has_private = false; + + QStringList list = from.split ("/"); + + if (list.size () < 5) { + throw pkcs11Exception (CKR_FUNCTION_FAILED, "Invalid serialization"); + } + + if (list[n++] != "qca-pkcs11") { + throw pkcs11Exception (CKR_FUNCTION_FAILED, "Invalid serialization"); + } + + if (list[n++].toInt () != 0) { + throw pkcs11Exception (CKR_FUNCTION_FAILED, "Invalid serialization version"); + } + + if ( + (rv = pkcs11h_certificate_deserializeCertificateId ( + &certificate_id, + myPrintable (_unescapeString (list[n++])) + )) != CKR_OK + ) { + throw pkcs11Exception (rv, "Invalid serialization"); + } + + *p_has_private = list[n++].toInt () != 0; + + QByteArray endCertificateBytes = Base64 ().stringToArray (_unescapeString (list[n++])).toByteArray (); + Certificate endCertificate = Certificate::fromDER (endCertificateBytes); + + if (endCertificate.isNull ()) { + throw pkcs11Exception (rv, "Invalid certificate"); + } + + if ( + (rv = pkcs11h_certificate_setCertificateIdCertificateBlob ( + certificate_id, + (unsigned char *)endCertificateBytes.data (), + (size_t)endCertificateBytes.size () + )) != CKR_OK + ) { + throw pkcs11Exception (rv, "Invalid serialization"); + } + + chain = endCertificate; + while (n < list.size ()) { + Certificate cert = Certificate::fromDER ( + Base64 ().stringToArray (_unescapeString (list[n++])).toByteArray () + ); + if (cert.isNull ()) { + throw pkcs11Exception (rv, "Invalid certificate"); + } + chain += cert; + } + + *p_certificate_id = certificate_id; + certificate_id = NULL; + } + catch (...) { + if (certificate_id != NULL) { + pkcs11h_certificate_freeCertificateId (certificate_id); + certificate_id = NULL; + } + throw; + } + + QCA_logTextMessage ( + QString ().sprintf ( + "pkcs11KeyStoreListContext::_deserializeCertificate - return *p_certificate_id=%p, chain.size()=%d", + (void *)*p_certificate_id, + chain.size () + ), + Logger::Debug + ); +} + +QString +pkcs11KeyStoreListContext::_escapeString ( + const QString &from +) const { + QString to; + + foreach (QChar c, from) { + if (c == '/' || c == '\\') { + to += QString ().sprintf ("\\x%04x", c.unicode ()); + } + else { + to += c; + } + } + + return to; +} + +QString +pkcs11KeyStoreListContext::_unescapeString ( + const QString &from +) const { + QString to; + + for (int i=0;i_logHook (flags, format, args); +} + +void +pkcs11Provider::__slotEventHook ( + void * const global_data +) { + pkcs11Provider *me = (pkcs11Provider *)global_data; + me->_slotEventHook (); +} + +PKCS11H_BOOL +pkcs11Provider::__tokenPromptHook ( + void * const global_data, + void * const user_data, + const pkcs11h_token_id_t token, + const unsigned retry +) { + Q_UNUSED(retry); + + pkcs11Provider *me = (pkcs11Provider *)global_data; + return me->_tokenPromptHook (user_data, token); +} + +PKCS11H_BOOL +pkcs11Provider::__pinPromptHook ( + void * const global_data, + void * const user_data, + const pkcs11h_token_id_t token, + const unsigned retry, + char * const pin, + const size_t pin_max +) { + Q_UNUSED(retry); + + pkcs11Provider *me = (pkcs11Provider *)global_data; + return me->_pinPromptHook (user_data, token, pin, pin_max); +} + +void +pkcs11Provider::_logHook ( + const unsigned flags, + const char * const format, + va_list args +) { + Logger::Severity severity; + + switch (flags) { + case PKCS11H_LOG_DEBUG2: + case PKCS11H_LOG_DEBUG1: + severity = Logger::Debug; + break; + case PKCS11H_LOG_INFO: + severity = Logger::Information; + break; + case PKCS11H_LOG_WARN: + severity = Logger::Warning; + break; + case PKCS11H_LOG_ERROR: + severity = Logger::Error; + break; + default: + severity = Logger::Debug; + break; + } + + +//@BEGIN-WORKAROUND +// Qt vsprintf cannot can NULL for %s as vsprintf does. +// QCA_logTextMessage (QString ().vsprintf (format, args), severity); + char buffer[2048]; + qvsnprintf (buffer, sizeof (buffer)-1, format, args); + buffer[sizeof (buffer)-1] = '\x0'; + QCA_logTextMessage (buffer, severity); +//@END-WORKAROUND +} + +void +pkcs11Provider::_slotEventHook () { + /* + * This is called from a separate + * thread. + */ + if (s_keyStoreList != NULL && _slotEventsActive) { + QMetaObject::invokeMethod(s_keyStoreList, "doUpdated", Qt::QueuedConnection); + } +} + +PKCS11H_BOOL +pkcs11Provider::_tokenPromptHook ( + void * const user_data, + const pkcs11h_token_id_t token +) { + if (s_keyStoreList != NULL) { + return s_keyStoreList->_tokenPrompt (user_data, token) ? TRUE : FALSE; //krazy:exclude=captruefalse + } + + return FALSE; //krazy:exclude=captruefalse +} + +PKCS11H_BOOL +pkcs11Provider::_pinPromptHook ( + void * const user_data, + const pkcs11h_token_id_t token, + char * const pin, + const size_t pin_max +) { + PKCS11H_BOOL ret = FALSE; //krazy:exclude=captruefalse + + if (s_keyStoreList != NULL) { + SecureArray qpin; + + if (s_keyStoreList->_pinPrompt (user_data, token, qpin)) { + if ((size_t)qpin.size () < pin_max-1) { + memmove (pin, qpin.constData (), qpin.size ()); + pin[qpin.size ()] = '\0'; + ret = TRUE; //krazy:exclude=captruefalse + } + } + } + + return ret; //krazy:exclude=captruefalse +} + +class pkcs11Plugin : public QObject, public QCAPlugin +{ + Q_OBJECT +#if QT_VERSION >= 0x050000 + Q_PLUGIN_METADATA(IID "com.affinix.qca.Plugin/1.0") +#endif + Q_INTERFACES(QCAPlugin) + +public: + virtual Provider *createProvider() { return new pkcs11Provider; } +}; + +#include "qca-pkcs11.moc" + +#if QT_VERSION < 0x050000 +Q_EXPORT_PLUGIN2(qca_pkcs11, pkcs11Plugin) +#endif diff -Nru qca2-2.0.3/plugins/qca-pkcs11/README qca2-2.1.0/plugins/qca-pkcs11/README --- qca2-2.0.3/plugins/qca-pkcs11/README 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-pkcs11/README 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,89 @@ +qca-pkcs11 2.0.0 -- PKCS#11 Plug-in to QCA + +ABOUT + qca-pkcs11 enables QCA smartcard integration. + + qca-pkcs11 supports the following features: + - Multiple providers. + - Multiple tokens. + - Private key signature and decryption. + - Keystore objects serialization. + - Keystore update notifications. + - Asker integration for token and PIN. + +DEPENDENCIES + pkcs11-helper>=1.02 + http://www.opensc-project.org/ + +INSTALL + For Unix/Linux/Mac: + ./configure + make + make install + + For Windows: + configwin rd + qmake + nmake (or make) + copy lib\*.dll qtdir\plugins\crypto + +CONFIGURATION + Configuration is stored at ~/.config/Affinix/QCA.conf, in order to + generate default configuration use: + + $ qcatool config save qca-pkcs11 + + Attributes: + allow_load_rootca (Boolean) + Allow loading root certificate authorities' certificate + from token. Loading root certificates from PKCS#11 enabled + tokens is highly insecure, as public objects can be added + without user notice. + + allow_protected_authentication (Boolean) + Enable/disable global protected authentication support. + If disabled, no protected authentication will be allowed, + even if provider supports this feature. + + pin_cache (Integer) + Maximum PIN/session cache period in seconds. + -1 is infinite, until provider invalidates session. + + log_level (Integer) + Log level of pkcs11-helper, can be from 0-5. + + provider_##_enabled (Boolean) + Provider at this index is enabled. + + provider_##_name (String) + Provider unique friendly name. + + provider_##_library (String) + Provider library to load. + + provider_##_allow_protected_authentication (Boolean) + Enable protected authentication if provider supports the feature. + + provider_##_cert_private (Boolean) + Provider stores the certificates as private objects. + + provider_##_private_mask (Integer) + Provider private key mask: + 0 Determine automatically. + 1 Use sign. + 2 Use sign recover. + 4 Use decrypt. + 8 Use unwrap. + + provider_##_slotevent_method (String) + auto Determine automatically. + trigger Use trigger. + poll Use poll. + + provider_##_slotevent_timeout (Integer) + Timeout for slotevent in poll mode. + Specify 0 for default. + +AUTHORS + Alon Bar-Lev + diff -Nru qca2-2.0.3/plugins/qca-softstore/CMakeLists.txt qca2-2.1.0/plugins/qca-softstore/CMakeLists.txt --- qca2-2.0.3/plugins/qca-softstore/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-softstore/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,25 @@ +# qca-softstore + +enable_plugin("softstore") +set(QCA_SOFTSTORE_SOURCES qca-softstore.cpp) +my_automoc( QCA_SOFTSTORE_SOURCES ) + +add_library(qca-softstore ${PLUGIN_TYPE} ${QCA_SOFTSTORE_SOURCES}) + +if(APPLE AND ${PLUGIN_TYPE} STREQUAL "MODULE") + set_property(TARGET qca-softstore PROPERTY SUFFIX ".dylib") +endif() + +add_definitions(${SOFTSTOREH_DEFINITIONS}) +include_directories(${SOFTSTOREH_INCLUDE_DIR}) +target_link_libraries(qca-softstore ${QT_QTCORE_LIBRARY}) +target_link_libraries(qca-softstore ${QCA_LIB_NAME}) + +if(NOT DEVELOPER_MODE) + install(TARGETS qca-softstore + LIBRARY DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + ARCHIVE DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + RUNTIME DESTINATION "${QCA_CRYPTO_INSTALL_DIR}") + + install_pdb(qca-softstore ${QCA_CRYPTO_INSTALL_DIR}) +endif() diff -Nru qca2-2.0.3/plugins/qca-softstore/COPYING qca2-2.1.0/plugins/qca-softstore/COPYING --- qca2-2.0.3/plugins/qca-softstore/COPYING 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-softstore/COPYING 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff -Nru qca2-2.0.3/plugins/qca-softstore/qca-softstore.cpp qca2-2.1.0/plugins/qca-softstore/qca-softstore.cpp --- qca2-2.0.3/plugins/qca-softstore/qca-softstore.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-softstore/qca-softstore.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,1519 @@ +/* + * Copyright (C) 2007 Alon Bar-Lev + * + * 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 WITHANY 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include +#include +#include +#include + +using namespace QCA; + +// qPrintable is ASCII only!!! +#define myPrintable(s) (s).toUtf8 ().constData () + +namespace softstoreQCAPlugin { + +class softstoreKeyStoreListContext; +static softstoreKeyStoreListContext *s_keyStoreList = NULL; + +enum KeyType { + keyTypeInvalid, + keyTypePKCS12, + keyTypePKCS8Inline, + keyTypePKCS8FilePEM, + keyTypePKCS8FileDER +}; + +enum PublicType { + publicTypeInvalid, + publicTypeX509Chain +}; + +struct SoftStoreEntry { + QString name; + CertificateChain chain; + KeyType keyReferenceType; + QString keyReference; + bool noPassphrase; + int unlockTimeout; +}; + +class softstorePKeyBase : public PKeyBase +{ + Q_OBJECT + +private: + bool _has_privateKeyRole; + SoftStoreEntry _entry; + QString _serialized; + PrivateKey _privkey; + PrivateKey _privkeySign; + PublicKey _pubkey; + QDateTime dueTime; + +public: + static inline QString typeToString (PKey::Type t) { + switch (t) { + case PKey::RSA: + return "rsa"; + case PKey::DSA: + return "dsa"; + case PKey::DH: + return "dh"; + default: + return ""; + } + } + + softstorePKeyBase ( + const SoftStoreEntry &entry, + const QString &serialized, + Provider *p + ) : PKeyBase (p, "rsa"/*typeToString (entry.chain.primary ().subjectPublicKey ().type ())*/) { + QCA_logTextMessage ( + "softstorePKeyBase::softstorePKeyBase1 - entry", + Logger::Debug + ); + + _has_privateKeyRole = true; + _entry = entry; + _serialized = serialized; + _pubkey = _entry.chain.primary ().subjectPublicKey (); + + QCA_logTextMessage ( + "softstorePKeyBase::softstorePKeyBase1 - return", + Logger::Debug + ); + } + + softstorePKeyBase (const softstorePKeyBase &from) : PKeyBase (from.provider (), "rsa"/*typeToString (from._pubkey.type ())*/) { + QCA_logTextMessage ( + "softstorePKeyBase::softstorePKeyBaseC - entry", + Logger::Debug + ); + + _has_privateKeyRole = from._has_privateKeyRole; + _entry = from._entry; + _serialized = from._serialized; + _pubkey = from._pubkey; + _privkey = from._privkey; + + QCA_logTextMessage ( + "softstorePKeyBase::softstorePKeyBaseC - return", + Logger::Debug + ); + } + + ~softstorePKeyBase () { + QCA_logTextMessage ( + "softstorePKeyBase::~softstorePKeyBase - entry", + Logger::Debug + ); + + QCA_logTextMessage ( + "softstorePKeyBase::~softstorePKeyBase - return", + Logger::Debug + ); + } + + virtual + Provider::Context * + clone () const { + return new softstorePKeyBase (*this); + } + +public: + virtual + bool + isNull () const { + return _pubkey.isNull (); + } + + virtual + PKey::Type + type () const { + return _pubkey.type (); + } + + virtual + bool + isPrivate () const { + return _has_privateKeyRole; + } + + virtual + bool + canExport () const { + return !_has_privateKeyRole; + } + + virtual + void + convertToPublic () { + QCA_logTextMessage ( + "softstorePKeyBase::convertToPublic - entry", + Logger::Debug + ); + + if (_has_privateKeyRole) { + _has_privateKeyRole = false; + } + + QCA_logTextMessage ( + "softstorePKeyBase::convertToPublic - return", + Logger::Debug + ); + } + + virtual + int + bits () const { + return _pubkey.bitSize (); + } + + virtual + int + maximumEncryptSize ( + EncryptionAlgorithm alg + ) const { + return _pubkey.maximumEncryptSize (alg); + } + + virtual + SecureArray + encrypt ( + const SecureArray &in, + EncryptionAlgorithm alg + ) { + return _pubkey.encrypt (in, alg); + } + + virtual + bool + decrypt ( + const SecureArray &in, + SecureArray *out, + EncryptionAlgorithm alg + ) { + if (_ensureAccess ()) { + return _privkey.decrypt (in, out, alg); + } + else { + return false; + } + } + + virtual + void + startSign ( + SignatureAlgorithm alg, + SignatureFormat format + ) { + if (_ensureAccess ()) { + /* + * We must use one object thought + * signing, so it won't expire by + * it-self or during passphrase. + */ + _privkeySign = _privkey; + _privkeySign.startSign (alg, format); + } + } + + virtual + void + startVerify ( + SignatureAlgorithm alg, + SignatureFormat sf + ) { + _pubkey.startVerify (alg, sf); + } + + virtual + void + update ( + const MemoryRegion &in + ) { + if (_has_privateKeyRole) { + _privkeySign.update (in); + } + else { + _pubkey.update (in); + } + } + + virtual + QByteArray + endSign () { + QByteArray r = _privkeySign.signature (); + _privkeySign = PrivateKey (); + return r; + } + + virtual + bool + validSignature ( + const QByteArray &sig + ) { + return _pubkey.validSignature (sig); + } + + virtual + void + createPrivate ( + int bits, + int exp, + bool block + ) { + Q_UNUSED(bits); + Q_UNUSED(exp); + Q_UNUSED(block); + } + + virtual + void + createPrivate ( + const BigInteger &n, + const BigInteger &e, + const BigInteger &p, + const BigInteger &q, + const BigInteger &d + ) { + Q_UNUSED(n); + Q_UNUSED(e); + Q_UNUSED(p); + Q_UNUSED(q); + Q_UNUSED(d); + } + + virtual + void + createPublic ( + const BigInteger &n, + const BigInteger &e + ) { + Q_UNUSED(n); + Q_UNUSED(e); + } + +public: + PublicKey + _publicKey () const { + return _pubkey; + } + + bool + _ensureAccess () { + bool ret = false; + + QCA_logTextMessage ( + "softstorePKeyBase::_ensureAccess - entry", + Logger::Debug + ); + + if (_entry.unlockTimeout != -1) { + if (dueTime >= QDateTime::currentDateTime ()) { + QCA_logTextMessage ( + "softstorePKeyBase::_ensureAccess - dueTime reached, clearing", + Logger::Debug + ); + _privkey = PrivateKey (); + } + } + + if (!_privkey.isNull ()) { + ret = true; + } + else { + KeyStoreEntry entry; + KeyStoreEntryContext *context = NULL; + QString storeId, storeName; + ConvertResult cresult; + + QCA_logTextMessage ( + "softstorePKeyBase::_ensureAccess - no current key, creating", + Logger::Debug + ); + + // too lazy to create scope + context = reinterpret_cast (s_keyStoreList)->entryPassive (_serialized); + if (context != NULL) { + storeId = context->storeId (); + storeName = context->storeName (); + entry.change (context); + } + + while (!ret) { + + SecureArray passphrase; + + switch (_entry.keyReferenceType) { + case keyTypeInvalid: + case keyTypePKCS8Inline: + break; + case keyTypePKCS12: + case keyTypePKCS8FilePEM: + case keyTypePKCS8FileDER: + { + QFile file (_entry.keyReference); + while (!file.open (QIODevice::ReadOnly)) { + TokenAsker asker; + asker.ask ( + KeyStoreInfo (KeyStore::SmartCard, storeId, storeName), + entry, + context + ); + asker.waitForResponse (); + if (!asker.accepted ()) { + goto cleanup1; + } + } + } + break; + } + + if (!_entry.noPassphrase) { + PasswordAsker asker; + asker.ask ( + Event::StylePassphrase, + KeyStoreInfo (KeyStore::User, storeId, storeName), + entry, + context + ); + asker.waitForResponse (); + passphrase = asker.password (); + if (!asker.accepted ()) { + goto cleanup1; + } + } + + switch (_entry.keyReferenceType) { + case keyTypeInvalid: + break; + case keyTypePKCS12: + { + KeyBundle bundle = KeyBundle::fromFile ( + _entry.keyReference, + passphrase, + &cresult + ); + if (cresult == ConvertGood) { + _privkey = bundle.privateKey (); + ret = true; + } + } + break; + case keyTypePKCS8Inline: + { + PrivateKey k = PrivateKey::fromDER ( + Base64 ().stringToArray (_entry.keyReference), + passphrase, + &cresult + ); + if (cresult == ConvertGood) { + _privkey = k; + ret = true; + } + } + break; + case keyTypePKCS8FilePEM: + { + PrivateKey k = PrivateKey::fromPEMFile ( + _entry.keyReference, + passphrase, + &cresult + ); + if (cresult == ConvertGood) { + _privkey = k; + ret = true; + } + } + break; + case keyTypePKCS8FileDER: + { + QFile file (_entry.keyReference); + if (file.open (QIODevice::ReadOnly)) { + QByteArray contents = file.readAll (); + + PrivateKey k = PrivateKey::fromDER ( + contents, + passphrase, + &cresult + ); + if (cresult == ConvertGood) { + _privkey = k; + ret = true; + } + } + } + break; + } + } + + if (_entry.unlockTimeout != -1) { + dueTime = QDateTime::currentDateTime ().addSecs (_entry.unlockTimeout); + } + + cleanup1: + ; + + } + + QCA_logTextMessage ( + QString ().sprintf ( + "softstorePKeyBase::_ensureAccess - return ret=%d", + ret ? 1 : 0 + ), + Logger::Debug + ); + + return ret; + } +}; + +class softstorePKeyContext : public PKeyContext +{ + +private: + PKeyBase *_k; + +public: + softstorePKeyContext (Provider *p) : PKeyContext (p) { + _k = NULL; + } + + ~softstorePKeyContext () { + delete _k; + _k = NULL; + } + + virtual + Provider::Context * + clone () const { + softstorePKeyContext *c = new softstorePKeyContext (*this); + c->_k = (PKeyBase *)_k->clone(); + return c; + } + +public: + virtual + QList + supportedTypes () const { + QList list; + list += static_cast(_k)->_publicKey ().type (); + return list; + } + + virtual + QList + supportedIOTypes () const { + QList list; + list += static_cast(_k)->_publicKey ().type (); + return list; + } + + virtual + QList + supportedPBEAlgorithms () const { + QList list; + return list; + } + + virtual + PKeyBase * + key () { + return _k; + } + + virtual + const PKeyBase * + key () const { + return _k; + } + + virtual + void + setKey (PKeyBase *key) { + delete _k; + _k = key; + } + + virtual + bool + importKey ( + const PKeyBase *key + ) { + Q_UNUSED(key); + return false; + } + + static + int + passphrase_cb ( + char *buf, + int size, + int rwflag, + void *u + ) { + Q_UNUSED(buf); + Q_UNUSED(size); + Q_UNUSED(rwflag); + Q_UNUSED(u); + return 0; + } + + virtual + QByteArray + publicToDER () const { + return static_cast(_k)->_publicKey ().toDER (); + } + + virtual + QString + publicToPEM () const { + return static_cast(_k)->_publicKey ().toPEM (); + } + + virtual + ConvertResult + publicFromDER ( + const QByteArray &in + ) { + Q_UNUSED(in); + return ErrorDecode; + } + + virtual + ConvertResult + publicFromPEM ( + const QString &s + ) { + Q_UNUSED(s); + return ErrorDecode; + } + + virtual + SecureArray + privateToDER( + const SecureArray &passphrase, + PBEAlgorithm pbe + ) const { + Q_UNUSED(passphrase); + Q_UNUSED(pbe); + return SecureArray (); + } + + virtual + QString + privateToPEM ( + const SecureArray &passphrase, + PBEAlgorithm pbe + ) const { + Q_UNUSED(passphrase); + Q_UNUSED(pbe); + return QString (); + } + + virtual + ConvertResult + privateFromDER ( + const SecureArray &in, + const SecureArray &passphrase + ) { + Q_UNUSED(in); + Q_UNUSED(passphrase); + return ErrorDecode; + } + + virtual + ConvertResult + privateFromPEM ( + const QString &s, + const SecureArray &passphrase + ) { + Q_UNUSED(s); + Q_UNUSED(passphrase); + return ErrorDecode; + } +}; + +class softstoreKeyStoreEntryContext : public KeyStoreEntryContext +{ +private: + KeyStoreEntry::Type _item_type; + KeyBundle _key; + SoftStoreEntry _entry; + QString _serialized; + +public: + softstoreKeyStoreEntryContext ( + const KeyBundle &key, + const SoftStoreEntry &entry, + const QString &serialized, + Provider *p + ) : KeyStoreEntryContext(p) { + _item_type = KeyStoreEntry::TypeKeyBundle; + _key = key; + _entry = entry; + _serialized = serialized; + } + + softstoreKeyStoreEntryContext ( + const softstoreKeyStoreEntryContext &from + ) : KeyStoreEntryContext(from) { + _item_type = from._item_type; + _key = from._key; + _entry = from._entry; + _serialized = from._serialized; + } + + virtual + Provider::Context * + clone () const { + return new softstoreKeyStoreEntryContext (*this); + } + +public: + virtual + KeyStoreEntry::Type + type () const { + return KeyStoreEntry::TypeKeyBundle; + } + + virtual + QString + name () const { + return _entry.name; + } + + virtual + QString + id () const { + return _entry.name; + } + + virtual + KeyBundle + keyBundle () const { + return _key; + } + + virtual + Certificate + certificate () const { + return _entry.chain.primary (); + } + + virtual + QString + storeId () const { + return QString ().sprintf ("%s/%s", "qca-softstore", myPrintable (_entry.name)); + } + + virtual + QString + storeName () const { + return _entry.name; + } + + virtual + bool + ensureAccess () { + return static_cast(static_cast(_key.privateKey ().context ())->key ())->_ensureAccess (); + } + + virtual + QString + serialize () const { + return _serialized; + } +}; + +class softstoreKeyStoreListContext : public KeyStoreListContext +{ + Q_OBJECT + +private: + int _last_id; + QList _entries; + +public: + softstoreKeyStoreListContext (Provider *p) : KeyStoreListContext (p) { + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::softstoreKeyStoreListContext - entry Provider=%p", + (void *)p + ), + Logger::Debug + ); + + _last_id = 0; + + QCA_logTextMessage ( + "softstoreKeyStoreListContext::softstoreKeyStoreListContext - return", + Logger::Debug + ); + } + + ~softstoreKeyStoreListContext () { + QCA_logTextMessage ( + "softstoreKeyStoreListContext::~softstoreKeyStoreListContext - entry", + Logger::Debug + ); + + s_keyStoreList = NULL; + + QCA_logTextMessage ( + "softstoreKeyStoreListContext::~softstoreKeyStoreListContext - return", + Logger::Debug + ); + } + + virtual + Provider::Context * + clone () const { + QCA_logTextMessage ( + "softstoreKeyStoreListContext::clone - entry/return", + Logger::Debug + ); + return NULL; + } + +public: + virtual + void + start () { + QCA_logTextMessage ( + "softstoreKeyStoreListContext::start - entry", + Logger::Debug + ); + + QMetaObject::invokeMethod(this, "doReady", Qt::QueuedConnection); + + QCA_logTextMessage ( + "softstoreKeyStoreListContext::start - return", + Logger::Debug + ); + } + + virtual + void + setUpdatesEnabled (bool enabled) { + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::setUpdatesEnabled - entry/return enabled=%d", + enabled ? 1 : 0 + ), + Logger::Debug + ); + } + + virtual + KeyStoreEntryContext * + entry ( + int id, + const QString &entryId + ) { + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::entry - entry/return id=%d entryId='%s'", + id, + myPrintable (entryId) + ), + Logger::Debug + ); + + Q_UNUSED(id); + Q_UNUSED(entryId); + return NULL; + } + + virtual + KeyStoreEntryContext * + entryPassive ( + const QString &serialized + ) { + KeyStoreEntryContext *entry = NULL; + + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::entryPassive - entry serialized='%s'", + myPrintable (serialized) + ), + Logger::Debug + ); + + if (serialized.startsWith ("qca-softstore/")) { + SoftStoreEntry sentry; + + if (_deserializeSoftStoreEntry (serialized, sentry)) { + entry = _keyStoreEntryBySoftStoreEntry (sentry); + } + } + + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::entryPassive - return entry=%p", + (void *)entry + ), + Logger::Debug + ); + + return entry; + } + + virtual + KeyStore::Type + type (int id) const { + Q_UNUSED(id); + + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::type - entry/return id=%d", + id + ), + Logger::Debug + ); + + return KeyStore::User; + } + + virtual + QString + storeId (int id) const { + QString ret; + + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::storeId - entry id=%d", + id + ), + Logger::Debug + ); + + ret = "qca-softstore"; + + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::storeId - return ret=%s", + myPrintable (ret) + ), + Logger::Debug + ); + + return ret; + } + + virtual + QString + name (int id) const { + QString ret; + + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::name - entry id=%d", + id + ), + Logger::Debug + ); + + ret = "User Software Store"; + + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::name - return ret=%s", + myPrintable (ret) + ), + Logger::Debug + ); + + return ret; + } + + virtual + QList + entryTypes (int id) const { + Q_UNUSED(id); + + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::entryTypes - entry/return id=%d", + id + ), + Logger::Debug + ); + + QList list; + list += KeyStoreEntry::TypeKeyBundle; + list += KeyStoreEntry::TypeCertificate; + return list; + } + + virtual + QList + keyStores () { + QList list; + + QCA_logTextMessage ( + "softstoreKeyStoreListContext::keyStores - entry", + Logger::Debug + ); + + list += _last_id; + + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::keyStores - return out.size()=%d", + list.size () + ), + Logger::Debug + ); + + return list; + } + + virtual + QList + entryList (int id) { + QList list; + + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::entryList - entry id=%d", + id + ), + Logger::Debug + ); + + foreach (const SoftStoreEntry &e, _entries) { + list += _keyStoreEntryBySoftStoreEntry (e); + } + + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::entryList - return out.size()=%d", + list.size () + ), + Logger::Debug + ); + + return list; + } + + void + _emit_diagnosticText ( + const QString &t + ) { + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::_emit_diagnosticText - entry t='%s'", + myPrintable (t) + ), + Logger::Debug + ); + + QCA_logTextMessage (t, Logger::Warning); + + emit diagnosticText (t); + + QCA_logTextMessage ( + "softstoreKeyStoreListContext::_emit_diagnosticText - return", + Logger::Debug + ); + } + +private slots: + void + doReady () { + QCA_logTextMessage ( + "softstoreKeyStoreListContext::doReady - entry", + Logger::Debug + ); + + emit busyEnd (); + + QCA_logTextMessage ( + "softstoreKeyStoreListContext::doReady - return", + Logger::Debug + ); + } + + void + doUpdated () { + QCA_logTextMessage ( + "softstoreKeyStoreListContext::doUpdated - entry", + Logger::Debug + ); + + emit updated (); + + QCA_logTextMessage ( + "softstoreKeyStoreListContext::doUpdated - return", + Logger::Debug + ); + } + +public: + void + _updateConfig (const QVariantMap &config, const int maxEntries) { + QCA_logTextMessage ( + "softstoreKeyStoreListContext::_updateConfig - entry", + Logger::Debug + ); + + QMap keyTypeMap; + keyTypeMap["pkcs12"] = keyTypePKCS12; + keyTypeMap["pkcs8"] = keyTypePKCS8Inline; + keyTypeMap["pkcs8-file-pem"] = keyTypePKCS8FilePEM; + keyTypeMap["pkcs8-file-der"] = keyTypePKCS8FileDER; + + QMap publicTypeMap; + publicTypeMap["x509chain"] = publicTypeX509Chain; + + _last_id++; + _entries.clear (); + + for (int i=0;isetKey (pkey); + PrivateKey privkey; + privkey.change (pkc); + KeyBundle key; + key.setCertificateChainAndKey ( + sentry.chain, + privkey + ); + + entry = new softstoreKeyStoreEntryContext ( + key, + sentry, + serialized, + provider () + ); + + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreKeyStoreListContext::_keyStoreEntryBySoftStoreEntry - return entry=%p", + (void *)entry + ), + Logger::Debug + ); + + return entry; + } + + QString + _escapeString ( + const QString &from + ) const { + QString to; + + foreach (const QChar &c, from) { + if (c == '/' || c == '\\') { + to += QString ().sprintf ("\\x%04x", c.unicode ()); + } + else { + to += c; + } + } + + return to; + } + + QString + _unescapeString ( + const QString &from + ) const { + QString to; + + for (int i=0;i_updateConfig (_config, _CONFIG_MAX_ENTRIES); + } + context = s_keyStoreList; + } + + QCA_logTextMessage ( + QString ().sprintf ( + "softstoreProvider::createContext - return context=%p", + (void *)context + ), + Logger::Debug + ); + + return context; + } + + virtual + QVariantMap + defaultConfig () const { + QVariantMap mytemplate; + + QCA_logTextMessage ( + "softstoreProvider::defaultConfig - entry/return", + Logger::Debug + ); + + mytemplate["formtype"] = "http://affinix.com/qca/forms/qca-softstore#1.0"; + for (int i=0;i<_CONFIG_MAX_ENTRIES;i++) { + mytemplate[QString ().sprintf ("entry_%02d_enabled", i)] = false; + mytemplate[QString ().sprintf ("entry_%02d_name", i)] = ""; + mytemplate[QString ().sprintf ("entry_%02d_public_type", i)] = ""; + mytemplate[QString ().sprintf ("entry_%02d_private_type", i)] = ""; + mytemplate[QString ().sprintf ("entry_%02d_public", i)] = ""; + mytemplate[QString ().sprintf ("entry_%02d_private", i)] = ""; + mytemplate[QString ().sprintf ("entry_%02d_unlock_timeout", i)] = -1; + mytemplate[QString ().sprintf ("entry_%02d_no_passphrase", i)] = false; + } + + return mytemplate; + } + + virtual + void + configChanged (const QVariantMap &config) { + + QCA_logTextMessage ( + "softstoreProvider::configChanged - entry", + Logger::Debug + ); + + _config = config; + + if (s_keyStoreList != NULL) { + s_keyStoreList->_updateConfig (_config, _CONFIG_MAX_ENTRIES); + } + + QCA_logTextMessage ( + "softstoreProvider::configChanged - return", + Logger::Debug + ); + } +}; + +const int softstoreProvider::_CONFIG_MAX_ENTRIES = 50; + +class softstorePlugin : public QObject, public QCAPlugin +{ + Q_OBJECT +#if QT_VERSION >= 0x050000 + Q_PLUGIN_METADATA(IID "com.affinix.qca.Plugin/1.0") +#endif + Q_INTERFACES(QCAPlugin) + +public: + virtual Provider *createProvider() { return new softstoreProvider; } +}; + +#include "qca-softstore.moc" + +#if QT_VERSION < 0x050000 +Q_EXPORT_PLUGIN2(qca_softstore, softstorePlugin) +#endif diff -Nru qca2-2.0.3/plugins/qca-softstore/README qca2-2.1.0/plugins/qca-softstore/README --- qca2-2.0.3/plugins/qca-softstore/README 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-softstore/README 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,80 @@ +qca-softstore -- Software certificate store Plug-in to QCA + +ABOUT + qca-softstore provides simple persistent certificate store for QCA framework. + + The plug-in defers the private key access and passphrase prompt to the point + it is actually required, thus enabling the use of files stored on removable media. + + The plug-in also handles the private key objects as not exportable for applications. + + In order to defer the passphrase prompt, the certificate object must be extracted + during configuration, this also apply to PKCS#12 files, since the certificate + is encrypted within the format. + +DEPENDENCIES + None. + +CONFIGURATION + Configuration is stored at ~/.config/Affinix/QCA.conf, in order to + generate default configuration use: + + $ qcatool --config save qca-softstore + + Attributes: + entry_##_enabled (Boolean) + Provider at this index is enabled. + + entry_##_name (String) + Name of entry. + + entry_##_public_type (String) + Type of public component: + + x509chain + entry_##_public is X.509 certificate chain. + Each certificate is encoded in base64. + List separator is '!'. + First entry is end certificate. + + entry_##_public (String) + By entry_##_public_type. + + entry_##_private_type (String) + Type of private component: + + pkcs12 + entry_##_private is PKCS#12 format file name. + + pkcs8 + entry_##_private is base64 encoded PKCS#8 format. + + pkcs8-file-pem + entry_##_private is PEM RSA key file name or PKCS#8 PEM encoded. + + pkcs8-file-der + entry_##_private is PKCS#8 DER format. + + entry_##_private (String) + By entry_##_private_type. + + entry_##_no_passphrase (Boolean) + true if entry_##_private is not protected by passphrase. + + entry_##_unlock_timeout (Integer) + Time in seconds to until passphrase should be prompted again. + Specify -1 for infinite. + +USEFUL COMMANDS + pkcs12->RSA PEM + openssl pkcs12 -in -nocerts -out + + pkcs12->Certificate PEM + openssl pkcs12 -in -nokeys -out + + RSA PEM->PKCS#8 + openssl pkcs8 -in -topk8 -out -outform DER + +AUTHORS + Alon Bar-Lev + diff -Nru qca2-2.0.3/plugins/qca-test/qca-test.cpp qca2-2.1.0/plugins/qca-test/qca-test.cpp --- qca2-2.0.3/plugins/qca-test/qca-test.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-test/qca-test.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,822 @@ +/* + * Copyright (C) 2007 Justin Karneges + * + * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include +#include + +using namespace QCA; + +static char cert_pem[] = + "-----BEGIN CERTIFICATE-----\n" + "MIIBsTCCAVugAwIBAgIBADANBgkqhkiG9w0BAQUFADA4MRQwEgYDVQQDEwtUZXN0\n" + "IENlcnQgMTELMAkGA1UEBhMCVVMxEzARBgNVBAoTClRlc3QgT3JnIDEwHhcNMDcw\n" + "NjE5MjAzOTI4WhcNMTIwNjE5MjAzOTI4WjA4MRQwEgYDVQQDEwtUZXN0IENlcnQg\n" + "MTELMAkGA1UEBhMCVVMxEzARBgNVBAoTClRlc3QgT3JnIDEwXDANBgkqhkiG9w0B\n" + "AQEFAANLADBIAkEA3645RS/xBlWnjju6moaRYQuIDo7fwM+GxhE91HECLAg3Hnkr\n" + "I+qx96VXd006olOn8MrkbjSqcTJ4LcDaCGI1YwIDAQABo1AwTjAdBgNVHQ4EFgQU\n" + "nm5lNkkblHdoB0gLeh8mB6Ed+TMwDwYDVR0TAQH/BAUwAwIBADAcBgNVHREEFTAT\n" + "gRF0ZXN0MUBleGFtcGxlLmNvbTANBgkqhkiG9w0BAQUFAANBAFTtXtwfYcJZBsXJ\n" + "+Ckm9qbg7qR/XRERDzeR0yhHZE7F/jU5YQv7+iJL4l95iH9PkZNOk15Tu/Kzzekx\n" + "6CTXzKA=\n" + "-----END CERTIFICATE-----"; + +static char key_n_dec[] = + "1171510158037441543813157379806833168225785177834459013412026750" + "9262193808059395366696241600386200064326196137137376912654785051" + "560621331316573341676090723"; + +static char key_e_dec[] = + "65537"; + +//---------------------------------------------------------------------------- +// TestProvider +//---------------------------------------------------------------------------- +class TestProvider : public Provider +{ +public: + TestProvider() + { + appendPluginDiagnosticText("TestProvider constructed\n"); + } + + void init() + { + appendPluginDiagnosticText("TestProvider initialized\n"); + } + + void deinit() + { + appendPluginDiagnosticText("TestProvider deinitialized\n"); + } + + ~TestProvider() + { + appendPluginDiagnosticText("TestProvider destructed\n"); + } + + int version() const + { + return 0x010203; // 1.2.3 + } + + int qcaVersion() const + { + return QCA_VERSION; + } + + QString name() const + { + return "qca-test"; + } + + QStringList features() const + { + QStringList list; + list += "keystorelist"; + return list; + } + + Context *createContext(const QString &type); +}; + +//---------------------------------------------------------------------------- +// TestData +//---------------------------------------------------------------------------- +class TestKeyStore +{ +public: + int contextId; + KeyStore::Type type; + QString storeId; + QString name; + bool readOnly; + bool avail; // for simplicity, all items share this global toggle + + QList certs; + + TestKeyStore() : + contextId(-1), + type(KeyStore::SmartCard), + readOnly(true), + avail(true) + { + } +}; + +class TestData +{ +public: + int context_at; + QList stores; + + TestData() : + context_at(0) + { + } +}; + +//---------------------------------------------------------------------------- +// TestRSAContext +//---------------------------------------------------------------------------- +static KeyStoreEntry make_entry(Provider *p, TestKeyStore *store); + +class TestRSAContext : public RSAContext +{ + Q_OBJECT +public: + bool priv; + TestKeyStore *store; + + TestRSAContext(Provider *p) : + RSAContext(p), + priv(true), + store(0) + { + } + + TestRSAContext(const TestRSAContext &from) : + RSAContext(from), + priv(from.priv), + store(from.store) + { + } + + Context *clone() const + { + return new TestRSAContext(*this); + } + + virtual bool isNull() const + { + return false; + } + + virtual PKey::Type type() const + { + return PKey::RSA; + } + + virtual bool isPrivate() const + { + return priv; + } + + virtual bool canExport() const + { + return false; + } + + virtual void convertToPublic() + { + priv = false; + } + + virtual int bits() const + { + return 2048; + } + + virtual void startSign(SignatureAlgorithm alg, SignatureFormat format) + { + Q_UNUSED(alg); + Q_UNUSED(format); + } + + virtual void update(const MemoryRegion &in) + { + Q_UNUSED(in); + } + + virtual QByteArray endSign() + { + if(!store) + return QByteArray(); + + while(store->contextId == -1 || !store->avail) + { + KeyStoreInfo info(store->type, store->storeId, store->name); + KeyStoreEntry entry = make_entry(provider(), store); + + TokenAsker asker; + asker.ask(info, entry, 0); + asker.waitForResponse(); + if(!asker.accepted()) + return QByteArray(); + } + + return "foobar"; + } + + virtual void createPrivate(int bits, int exp, bool block) + { + Q_UNUSED(bits); + Q_UNUSED(exp); + Q_UNUSED(block); + } + + virtual void createPrivate(const BigInteger &n, const BigInteger &e, const BigInteger &p, const BigInteger &q, const BigInteger &d) + { + Q_UNUSED(n); + Q_UNUSED(e); + Q_UNUSED(p); + Q_UNUSED(q); + Q_UNUSED(d); + } + + virtual void createPublic(const BigInteger &n, const BigInteger &e) + { + Q_UNUSED(n); + Q_UNUSED(e); + } + + virtual BigInteger n() const + { + return BigInteger(QString(key_n_dec)); + } + + virtual BigInteger e() const + { + return BigInteger(QString(key_e_dec)); + } + + virtual BigInteger p() const + { + return BigInteger(); + } + + virtual BigInteger q() const + { + return BigInteger(); + } + + virtual BigInteger d() const + { + return BigInteger(); + } +}; + +//---------------------------------------------------------------------------- +// TestPKeyContext +//---------------------------------------------------------------------------- +class TestPKeyContext : public PKeyContext +{ + Q_OBJECT +public: + TestRSAContext *_key; + + TestPKeyContext(Provider *p) : + PKeyContext(p), + _key(0) + { + } + + TestPKeyContext(const TestPKeyContext &from) : + PKeyContext(from), + _key(0) + { + if(from._key) + _key = (TestRSAContext *)from._key->clone(); + } + + ~TestPKeyContext() + { + delete _key; + } + + Context *clone() const + { + return new TestPKeyContext(*this); + } + + virtual QList supportedTypes() const + { + QList list; + list += PKey::RSA; + return list; + } + + virtual QList supportedIOTypes() const + { + return QList(); + } + + virtual QList supportedPBEAlgorithms() const + { + return QList(); + } + + virtual PKeyBase *key() + { + return _key; + } + + virtual const PKeyBase *key() const + { + return _key; + } + + virtual void setKey(PKeyBase *key) + { + delete _key; + _key = (TestRSAContext *)key; + } + + virtual bool importKey(const PKeyBase *key) + { + Q_UNUSED(key); + return false; + } +}; + +//---------------------------------------------------------------------------- +// TestCertContext +//---------------------------------------------------------------------------- +class TestCertContext : public CertContext +{ + Q_OBJECT +public: + CertContextProps _props; + + TestCertContext(Provider *p) : + CertContext(p) + { + } + + Context *clone() const + { + return new TestCertContext(*this); + } + + virtual QByteArray toDER() const + { + QStringList lines = toPEM().split('\n'); + lines.removeFirst(); + lines.removeLast(); + QString enc = lines.join(""); + return Base64().stringToArray(enc).toByteArray(); + } + + virtual QString toPEM() const + { + return QString(cert_pem); + } + + virtual ConvertResult fromDER(const QByteArray &a) + { + Q_UNUSED(a); + return ErrorDecode; + } + + virtual ConvertResult fromPEM(const QString &s) + { + Q_UNUSED(s); + return ErrorDecode; + } + + virtual bool createSelfSigned(const CertificateOptions &opts, const PKeyContext &priv) + { + Q_UNUSED(opts); + Q_UNUSED(priv); + return false; + } + + virtual const CertContextProps *props() const + { + return &_props; + } + + virtual bool compare(const CertContext *other) const + { + Q_UNUSED(other); + return false; + } + + virtual PKeyContext *subjectPublicKey() const + { + TestRSAContext *rsa1 = new TestRSAContext(provider()); + rsa1->priv = false; + TestPKeyContext *kc1 = new TestPKeyContext(provider()); + kc1->setKey(rsa1); + return kc1; + } + + virtual bool isIssuerOf(const CertContext *other) const + { + Q_UNUSED(other); + return false; + } + + virtual Validity validate(const QList &trusted, const QList &untrusted, const QList &crls, UsageMode u, ValidateFlags vf) const + { + Q_UNUSED(trusted); + Q_UNUSED(untrusted); + Q_UNUSED(crls); + Q_UNUSED(u); + Q_UNUSED(vf); + return ErrorValidityUnknown; + } + + virtual Validity validate_chain(const QList &chain, const QList &trusted, const QList &crls, UsageMode u, ValidateFlags vf) const + { + Q_UNUSED(chain); + Q_UNUSED(trusted); + Q_UNUSED(crls); + Q_UNUSED(u); + Q_UNUSED(vf); + return ErrorValidityUnknown; + } +}; + +//---------------------------------------------------------------------------- +// TestKeyStoreEntryContext +//---------------------------------------------------------------------------- +class TestKeyStoreEntryContext : public KeyStoreEntryContext +{ + Q_OBJECT +public: + QString _id, _name, _storeId, _storeName; + KeyBundle kb; + TestKeyStore *store; + + TestKeyStoreEntryContext(Provider *p) : + KeyStoreEntryContext(p) + { + } + + virtual Context *clone() const + { + return new TestKeyStoreEntryContext(*this); + } + + virtual KeyStoreEntry::Type type() const + { + return KeyStoreEntry::TypeKeyBundle; + } + + virtual QString id() const + { + return _id; + } + + virtual QString name() const + { + return _name; + } + + virtual QString storeId() const + { + return _storeId; + } + + virtual QString storeName() const + { + return _storeName; + } + + virtual bool isAvailable() const + { + return store->avail; + } + + virtual QString serialize() const + { + return QString("qca-test-1/fake_serialized"); + } + + virtual KeyBundle keyBundle() const + { + return kb; + } + + virtual bool ensureAccess() + { + return true; + } +}; + +KeyStoreEntry make_entry(Provider *p, TestKeyStore *store) +{ + KeyStoreEntry entry; + TestKeyStoreEntryContext *kse = new TestKeyStoreEntryContext(p); + kse->_id = QString::number(0); + kse->_name = store->certs[0].certificateChain().primary().commonName(); + kse->_storeId = store->storeId; + kse->_storeName = store->name; + kse->kb = store->certs[0]; + kse->store = store; + entry.change(kse); + return entry; +} + +//---------------------------------------------------------------------------- +// TestKeyStoreListContext +//---------------------------------------------------------------------------- +class TestKeyStoreListContext : public KeyStoreListContext +{ + Q_OBJECT +public: + TestData data; + int step; + QTimer t; + bool first; + int next_id; + + TestKeyStoreListContext(Provider *p) : + KeyStoreListContext(p), + t(this) + { + step = 0; + next_id = 1; + + KeyBundle cert1; + Certificate pub1; + TestCertContext *cc1 = new TestCertContext(provider()); + cc1->_props.subject += CertificateInfoPair(CertificateInfoType(CommonName), "Test Cert 1"); + pub1.change(cc1); + PrivateKey sec1; + TestRSAContext *rsa1 = new TestRSAContext(provider()); + TestPKeyContext *kc1 = new TestPKeyContext(provider()); + kc1->setKey(rsa1); + sec1.change(kc1); + cert1.setCertificateChainAndKey(pub1, sec1); + + TestKeyStore ks1; + ks1.storeId = "store1"; + ks1.name = "Test Store 1"; + ks1.certs += cert1; + ks1.avail = false; + data.stores += ks1; + + TestKeyStore ks2; + ks2.storeId = "store2"; + ks2.name = "Test Store 2"; + ks2.readOnly = false; + data.stores += ks2; + + rsa1->store = &data.stores[0]; + + connect(&t, SIGNAL(timeout()), SLOT(do_step())); + } + + int findStore(int contextId) const + { + for(int n = 0; n < data.stores.count(); ++n) + { + if(data.stores[n].contextId == contextId) + return n; + } + return -1; + } + + virtual Context *clone() const + { + return 0; + } + + virtual void start() + { + first = true; + emit diagnosticText("qca-test: TestKeyStoreListContext started\n"); + t.start(2000); + } + + virtual void setUpdatesEnabled(bool enabled) + { + Q_UNUSED(enabled); + } + + virtual QList keyStores() + { + QList list; + for(int n = 0; n < data.stores.count(); ++n) + { + int id = data.stores[n].contextId; + if(id != -1) + list += id; + } + return list; + } + + virtual KeyStore::Type type(int id) const + { + int at = findStore(id); + if(at == -1) + return KeyStore::SmartCard; + return data.stores[at].type; + } + + virtual QString storeId(int id) const + { + int at = findStore(id); + if(at == -1) + return QString(); + return data.stores[at].storeId; + } + + virtual QString name(int id) const + { + int at = findStore(id); + if(at == -1) + return QString(); + return data.stores[at].name; + } + + virtual bool isReadOnly(int id) const + { + int at = findStore(id); + if(at == -1) + return true; + return data.stores[at].readOnly; + } + + virtual QList entryTypes(int id) const + { + Q_UNUSED(id); + QList list; + list += KeyStoreEntry::TypeKeyBundle; + return list; + } + + virtual QList entryList(int id) + { + QList out; + int at = findStore(id); + if(at == -1) + return out; + TestKeyStore &store = data.stores[at]; + for(int n = 0; n < store.certs.count(); ++n) + { + TestKeyStoreEntryContext *kse = new TestKeyStoreEntryContext(provider()); + kse->_id = QString::number(n); + kse->_name = store.certs[n].certificateChain().primary().commonName(); + kse->_storeId = store.storeId; + kse->_storeName = store.name; + kse->kb = store.certs[n]; + kse->store = &store; + out += kse; + } + return out; + } + + virtual KeyStoreEntryContext *entryPassive(const QString &serialized) + { + if(serialized == "qca-test-1/fake_serialized") + { + TestKeyStore &store = data.stores[0]; + TestKeyStoreEntryContext *kse = new TestKeyStoreEntryContext(provider()); + kse->_id = QString::number(0); + kse->_name = store.certs[0].certificateChain().primary().commonName(); + kse->_storeId = store.storeId; + kse->_storeName = store.name; + kse->kb = store.certs[0]; + kse->store = &store; + return kse; + } + else + return 0; + } + + virtual QString writeEntry(int id, const KeyBundle &kb) + { + int at = findStore(id); + if(at == -1) + return QString(); + if(data.stores[at].readOnly) + return QString(); + data.stores[at].certs += kb; + return QString::number(data.stores[at].certs.count() - 1); + } + + virtual bool removeEntry(int id, const QString &entryId) + { + int at = findStore(id); + if(at == -1) + return false; + if(data.stores[at].readOnly) + return false; + int index = entryId.toInt(); + if(index < 0 || index >= data.stores[at].certs.count()) + return false; + data.stores[at].certs.removeAt(index); + return true; + } + +private slots: + void do_step() + { + emit diagnosticText(QString("qca-test: TestKeyStoreListContext do_step %1\n").arg(step)); + + if(step == 0) + { + // make first store available + data.stores[0].contextId = next_id++; + if(first) + { + first = false; + emit busyEnd(); + } + else + emit updated(); + } + else if(step == 1) + { + // make second store available + data.stores[1].contextId = next_id++; + emit updated(); + } + else if(step == 2) + { + // make items in the first store available + data.stores[0].avail = true; + emit storeUpdated(data.stores[0].contextId); + } + else if(step == 3) + { + // make the first store unavailable + data.stores[0].contextId = -1; + emit updated(); + } + else if(step == 4) + { + // make the first store available + data.stores[0].contextId = next_id++; + emit updated(); + } + else if(step == 5) + { + // make the second store unavailable + data.stores[1].contextId = -1; + emit updated(); + } + else if(step == 6) + { + // make the first store unavailable + data.stores[0].contextId = -1; + emit updated(); + } + else if(step == 7) + { + // do it all over again in 10 seconds + // (2 seconds before, 6 seconds here, 2 seconds after) + t.start(6000); + } + else + { + step = 0; + data.stores[0].avail = false; + + // set interval to 2 seconds + t.start(2000); + return; + } + + ++step; + } +}; + +//---------------------------------------------------------------------------- +// TestProvider +//---------------------------------------------------------------------------- +Provider::Context *TestProvider::createContext(const QString &type) +{ + if(type == "keystorelist") + return new TestKeyStoreListContext(this); + else + return 0; +} + +//---------------------------------------------------------------------------- +// TestPlugin +//---------------------------------------------------------------------------- +class TestPlugin : public QObject, public QCAPlugin +{ + Q_OBJECT +#if QT_VERSION >= 0x050000 + Q_PLUGIN_METADATA(IID "com.affinix.qca.Plugin/1.0") +#endif + Q_INTERFACES(QCAPlugin) +public: + virtual Provider *createProvider() { return new TestProvider; } +}; + +#include "qca-test.moc" + +#if QT_VERSION < 0x050000 +Q_EXPORT_PLUGIN2(qca_test, TestPlugin); +#endif diff -Nru qca2-2.0.3/plugins/qca-wincrypto/CMakeLists.txt qca2-2.1.0/plugins/qca-wincrypto/CMakeLists.txt --- qca2-2.0.3/plugins/qca-wincrypto/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-wincrypto/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,19 @@ +# QCA WinCrypto + +IF (WIN32) + SET (QCA_WINCRYPTO_SOURCES qca-wincrypto.cpp) + + MY_AUTOMOC (QCA_WINCRYPTO_SOURCES) + + ADD_LIBRARY (qca-wincrypto MODULE ${QCA_WINCRYPTO_SOURCES}) + # use win32 includes + TARGET_LINK_LIBRARIES (qca-wincrypto ${QT_QTCORE_LIBRARY}) + TARGET_LINK_LIBRARIES (qca-wincrypto ${QCA_LIB_NAME}) + TARGET_LINK_LIBRARIES (qca-wincrypto advapi32) + + INSTALL (TARGETS qca-wincrypto + LIBRARY DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + ARCHIVE DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + RUNTIME DESTINATION "${QCA_CRYPTO_INSTALL_DIR}" + ) +ENDIF (WIN32) diff -Nru qca2-2.0.3/plugins/qca-wincrypto/COPYING qca2-2.1.0/plugins/qca-wincrypto/COPYING --- qca2-2.0.3/plugins/qca-wincrypto/COPYING 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-wincrypto/COPYING 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff -Nru qca2-2.0.3/plugins/qca-wincrypto/qca-wincrypto.cpp qca2-2.1.0/plugins/qca-wincrypto/qca-wincrypto.cpp --- qca2-2.0.3/plugins/qca-wincrypto/qca-wincrypto.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-wincrypto/qca-wincrypto.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2008 Michael Leupold + * + * 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. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include +#include + +#include + +#ifdef Q_OS_WIN32 + +#include + +//----------------------------------------------------------- +class WinCryptoRandomContext : public QCA::RandomContext +{ +public: + WinCryptoRandomContext(QCA::Provider *p) : RandomContext(p) + { + } + + Context *clone() const + { + return new WinCryptoRandomContext(*this); + } + + QCA::SecureArray nextBytes(int size) + { + QCA::SecureArray buf(size); + HCRYPTPROV hProv; + + /* FIXME: currently loop while there's an error. */ + while (true) + { + // acquire the crypto context + if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, + CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) continue; + + if (CryptGenRandom(hProv, static_cast(size), (BYTE*)buf.data())) { + break; + } + } + + // release the crypto context + CryptReleaseContext(hProv, 0); + + return buf; + } +}; + +//----------------------------------------------------------- +class WinCryptoProvider : public QCA::Provider +{ +public: + void init() + { + } + + ~WinCryptoProvider() + { + } + + int qcaVersion() const + { + return QCA_VERSION; + } + + QString name() const + { + return "qca-wincrypto"; + } + + QStringList features() const + { + QStringList list; + list += "random"; + return list; + } + + Context *createContext(const QString &type) + { + if ( type == "random" ) + return new WinCryptoRandomContext(this); + else + return 0; + } +}; + +//----------------------------------------------------------- +class WinCryptoPlugin : public QObject, public QCAPlugin +{ + Q_OBJECT +#if QT_VERSION >= 0x050000 + Q_PLUGIN_METADATA(IID "com.affinix.qca.Plugin/1.0") +#endif + Q_INTERFACES(QCAPlugin) + +public: + virtual QCA::Provider *createProvider() { return new WinCryptoProvider; } +}; + +#if QT_VERSION < 0x050000 +#include "qca-wincrypto.moc" +#endif + +Q_EXPORT_PLUGIN2(qca_wincrypto, WinCryptoPlugin); + +#endif // Q_OS_WIN32 diff -Nru qca2-2.0.3/plugins/qca-wincrypto/README qca2-2.1.0/plugins/qca-wincrypto/README --- qca2-2.0.3/plugins/qca-wincrypto/README 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-wincrypto/README 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,25 @@ +QCA Windows Cryptography plugin +------------------------------- +Date: June 11th, 2008 +Website: http://delta.affinix.com/qca/ +Mailing List: Delta Project + +Author: Michael Leupold + +This plugin might at some point provide the means to support the +Windows Cryptographic API. Currently it only supports generating +random numbers using the CryptGenRandom call. + +This plugin should load on any version of Windows, but it will +only generate random numbers on Windows 2000 or later. + +Installing +---------- + +For Windows: + + configwin rd + qmake + nmake (or make) + copy lib\*.dll qtdir\plugins\crypto + diff -Nru qca2-2.0.3/plugins/qca-wingss/COPYING qca2-2.1.0/plugins/qca-wingss/COPYING --- qca2-2.0.3/plugins/qca-wingss/COPYING 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-wingss/COPYING 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff -Nru qca2-2.0.3/plugins/qca-wingss/qca-wingss.cpp qca2-2.1.0/plugins/qca-wingss/qca-wingss.cpp --- qca2-2.0.3/plugins/qca-wingss/qca-wingss.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-wingss/qca-wingss.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,2305 @@ +/* + * Copyright (C) 2008 Barracuda Networks, Inc. + * + * 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 WITHANY 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + * + */ + +#include +#include +#include +#include +#include +#include + +#ifndef FORWARD_ONLY +#include +#define SECURITY_WIN32 +#include +#endif + +using namespace QCA; + +#define PROVIDER_NAME "qca-wingss" + +#if !defined(FORWARD_ONLY) + +// some defs possibly missing from MinGW + +#ifndef SEC_E_MESSAGE_ALTERED +#define SEC_E_MESSAGE_ALTERED 0x8009030F +#endif + +#ifndef SEC_E_CONTEXT_EXPIRED +#define SEC_E_CONTEXT_EXPIRED 0x80090317 +#endif + +#ifndef SEC_E_CRYPTO_SYSTEM_INVALID +#define SEC_E_CRYPTO_SYSTEM_INVALID 0x80090337 +#endif + +#ifndef SEC_E_OUT_OF_SEQUENCE +#define SEC_E_OUT_OF_SEQUENCE 0x80090310 +#endif + +#ifndef SEC_E_BUFFER_TOO_SMALL +#define SEC_E_BUFFER_TOO_SMALL 0x80090321 +#endif + +#ifndef SECURITY_ENTRYPOINTW +#define SECURITY_ENTRYPOINTW TEXT("InitSecurityInterfaceW") +#endif + +#ifndef SECURITY_ENTRYPOINT_ANSIA +#define SECURITY_ENTRYPOINT_ANSIA "InitSecurityInterfaceA" +#endif + +#ifndef SECPKG_FLAG_GSS_COMPATIBLE +#define SECPKG_FLAG_GSS_COMPATIBLE 0x00001000 +#endif + +#ifndef SECQOP_WRAP_NO_ENCRYPT +#define SECQOP_WRAP_NO_ENCRYPT 0x80000001 +#endif + +#ifndef ISC_RET_MUTUAL_AUTH +#define ISC_RET_MUTUAL_AUTH 0x00000002 +#endif + +#ifndef ISC_RET_SEQUENCE_DETECT +#define ISC_RET_SEQUENCE_DETECT 0x00000008 +#endif + +#ifndef ISC_RET_CONFIDENTIALITY +#define ISC_RET_CONFIDENTIALITY 0x00000010 +#endif + +#ifndef ISC_RET_INTEGRITY +#define ISC_RET_INTEGRITY 0x00010000 +#endif + +#ifdef Q_CC_MINGW + +// for some reason, the MinGW definition of the W table has A functions in +// it, so we define a fixed version to use instead... + +typedef struct _FIXED_SECURITY_FUNCTION_TABLEW { + unsigned long dwVersion; + ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW; + QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW; + ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW; + FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; + void SEC_FAR* Reserved2; + INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW; + ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; + COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; + DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; + APPLY_CONTROL_TOKEN_FN_W ApplyControlTokenW; + QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW; + IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; + REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; + MAKE_SIGNATURE_FN MakeSignature; + VERIFY_SIGNATURE_FN VerifySignature; + FREE_CONTEXT_BUFFER_FN FreeContextBuffer; + QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW; + void SEC_FAR* Reserved3; + void SEC_FAR* Reserved4; + void SEC_FAR* Unknown1; + void SEC_FAR* Unknown2; + void SEC_FAR* Unknown3; + void SEC_FAR* Unknown4; + void SEC_FAR* Unknown5; + ENCRYPT_MESSAGE_FN EncryptMessage; + DECRYPT_MESSAGE_FN DecryptMessage; +} FixedSecurityFunctionTableW, *PFixedSecurityFunctionTableW; + +typedef FixedSecurityFunctionTableW MySecurityFunctionTableW; +typedef PFixedSecurityFunctionTableW PMySecurityFunctionTableW; + +#else + +typedef SecurityFunctionTableW MySecurityFunctionTableW; +typedef PSecurityFunctionTableW PMySecurityFunctionTableW; + +#endif + +#ifdef UNICODE +# define MySecurityFunctionTable MySecurityFunctionTableW +# define PMySecurityFunctionTable PMySecurityFunctionTableW +#else +# define MySecurityFunctionTable MySecurityFunctionTableA +# define PMySecurityFunctionTable PMySecurityFunctionTableA +#endif + +#endif // !defined(FORWARD_ONLY) + +namespace wingssQCAPlugin { + +//---------------------------------------------------------------------------- +// SSPI helper API +//---------------------------------------------------------------------------- + +typedef void (*sspi_logger_func)(const QString &str); + +class SspiPackage +{ +public: + QString name; + quint32 caps; + quint32 maxtok; + quint16 version; + quint16 rpcid; + QString comment; +}; + +// logger can be set even when sspi is not loaded (this is needed so logging +// during sspi_load/unload can be captured). pass 0 to disable. +void sspi_set_logger(sspi_logger_func p); + +void sspi_log(const QString &str); + +bool sspi_load(); +void sspi_unload(); + +// returns the available security packages. only the first call actually +// queries the sspi subsystem. subsequent calls return a cached result. +QList sspi_get_packagelist(); + +// refresh the package list cache. call sspi_get_packagelist afterwards to +// get the new list. +void sspi_refresh_packagelist(); + +// helper functions for logging +QString SECURITY_STATUS_toString(SECURITY_STATUS i); +QString ptr_toString(const void *p); + +//---------------------------------------------------------------------------- +// SSPI helper implementation +//---------------------------------------------------------------------------- + +Q_GLOBAL_STATIC(QMutex, sspi_mutex) +Q_GLOBAL_STATIC(QMutex, sspi_logger_mutex) + +union SecurityFunctionTableUnion +{ + PMySecurityFunctionTableW W; + PSecurityFunctionTableA A; + void *ptr; +}; + +static QLibrary *sspi_lib = 0; +static SecurityFunctionTableUnion sspi; +static sspi_logger_func sspi_logger; +static QList *sspi_packagelist = 0; + +void sspi_log(const QString &str) +{ + QMutexLocker locker(sspi_logger_mutex()); + + if(sspi_logger) + sspi_logger(str); +} + +void sspi_set_logger(sspi_logger_func p) +{ + QMutexLocker locker(sspi_logger_mutex()); + + sspi_logger = p; +} + +#define CASE_SS_STRING(s) case s: return #s; + +static const char *SECURITY_STATUS_lookup(SECURITY_STATUS i) +{ + switch(i) + { + CASE_SS_STRING(SEC_E_OK); + CASE_SS_STRING(SEC_I_COMPLETE_AND_CONTINUE); + CASE_SS_STRING(SEC_I_COMPLETE_NEEDED); + CASE_SS_STRING(SEC_I_CONTINUE_NEEDED); + CASE_SS_STRING(SEC_I_INCOMPLETE_CREDENTIALS); + CASE_SS_STRING(SEC_E_UNSUPPORTED_FUNCTION); + CASE_SS_STRING(SEC_E_INVALID_TOKEN); + CASE_SS_STRING(SEC_E_MESSAGE_ALTERED); + CASE_SS_STRING(SEC_E_INSUFFICIENT_MEMORY); + CASE_SS_STRING(SEC_E_INTERNAL_ERROR); + CASE_SS_STRING(SEC_E_INVALID_HANDLE); + CASE_SS_STRING(SEC_E_LOGON_DENIED); + CASE_SS_STRING(SEC_E_NO_AUTHENTICATING_AUTHORITY); + CASE_SS_STRING(SEC_E_NO_CREDENTIALS); + CASE_SS_STRING(SEC_E_TARGET_UNKNOWN); + CASE_SS_STRING(SEC_E_WRONG_PRINCIPAL); + CASE_SS_STRING(SEC_E_BUFFER_TOO_SMALL); + CASE_SS_STRING(SEC_E_CONTEXT_EXPIRED); + CASE_SS_STRING(SEC_E_CRYPTO_SYSTEM_INVALID); + CASE_SS_STRING(SEC_E_QOP_NOT_SUPPORTED); + CASE_SS_STRING(SEC_E_INCOMPLETE_MESSAGE); + CASE_SS_STRING(SEC_E_OUT_OF_SEQUENCE); + default: break; + } + return 0; +} + +QString SECURITY_STATUS_toString(SECURITY_STATUS i) +{ + const char *str = SECURITY_STATUS_lookup(i); + if(str) + return QString(str); + else + return QString::number(i); +} + +QString ptr_toString(const void *p) +{ + return QString().sprintf("%p", p); +} + +bool sspi_load() +{ + QMutexLocker locker(sspi_mutex()); + if(sspi_lib) + return true; + + sspi_lib = new QLibrary("secur32"); + if(!sspi_lib->load()) + { + delete sspi_lib; + sspi_lib = 0; + return false; + } + + union + { + INIT_SECURITY_INTERFACE_W W; + INIT_SECURITY_INTERFACE_A A; + void *ptr; + } pInitSecurityInterface; + pInitSecurityInterface.ptr = 0; + + QString securityEntrypoint; +#if QT_VERSION >= 0x050000 + securityEntrypoint = QString::fromUtf16((const ushort *)SECURITY_ENTRYPOINTW); + pInitSecurityInterface.W = (INIT_SECURITY_INTERFACE_W)(sspi_lib->resolve(securityEntrypoint.toLatin1().data())); +#else + QT_WA( + securityEntrypoint = QString::fromUtf16((const ushort *)SECURITY_ENTRYPOINTW); + pInitSecurityInterface.W = (INIT_SECURITY_INTERFACE_W)(sspi_lib->resolve(securityEntrypoint.toLatin1().data())); + , + securityEntrypoint = QString::fromLatin1(SECURITY_ENTRYPOINT_ANSIA); + pInitSecurityInterface.A = (INIT_SECURITY_INTERFACE_A)(sspi_lib->resolve(securityEntrypoint.toLatin1().data())); + ) +#endif + if(!pInitSecurityInterface.ptr) + { + sspi_lib->unload(); + delete sspi_lib; + sspi_lib = 0; + return false; + } + + union + { + PMySecurityFunctionTableW W; + PSecurityFunctionTableA A; + void *ptr; + } funcs; + funcs.ptr = 0; + +#if QT_VERSION >= 0x050000 + funcs.W = (PMySecurityFunctionTableW)pInitSecurityInterface.W(); +#else + QT_WA( + funcs.W = (PMySecurityFunctionTableW)pInitSecurityInterface.W(); + , + funcs.A = pInitSecurityInterface.A(); + ) +#endif + + sspi_log(QString("%1() = %2\n").arg(securityEntrypoint, ptr_toString(funcs.ptr))); + if(!funcs.ptr) + { + sspi_lib->unload(); + delete sspi_lib; + sspi_lib = 0; + return false; + } + +#if QT_VERSION >= 0x050000 + sspi.W = funcs.W; +#else + QT_WA( + sspi.W = funcs.W; + , + sspi.A = funcs.A; + ) +#endif + + return true; +} + +void sspi_unload() +{ + QMutexLocker locker(sspi_mutex()); + + sspi_lib->unload(); + delete sspi_lib; + sspi_lib = 0; + sspi.ptr = 0; +} + +static QList sspi_get_packagelist_direct() +{ + QList out; + +#if QT_VERSION >= 0x050000 + ULONG cPackages; + SecPkgInfoW *pPackageInfo; + SECURITY_STATUS ret = sspi.W->EnumerateSecurityPackagesW(&cPackages, &pPackageInfo); + sspi_log(QString("EnumerateSecurityPackages() = %1\n").arg(SECURITY_STATUS_toString(ret))); + if(ret != SEC_E_OK) + return out; + + for(int n = 0; n < (int)cPackages; ++n) + { + SecPkgInfoW *p = &pPackageInfo[n]; + SspiPackage i; + i.name = QString::fromUtf16((const ushort *)p->Name); + i.caps = p->fCapabilities; + i.version = p->wVersion; + i.rpcid = p->wRPCID; + i.maxtok = p->cbMaxToken; + i.comment = QString::fromUtf16((const ushort *)p->Comment); + out += i; + } + + ret = sspi.W->FreeContextBuffer(&pPackageInfo); + sspi_log(QString("FreeContextBuffer() = %1\n").arg(SECURITY_STATUS_toString(ret))); +#else + QT_WA( + ULONG cPackages; + SecPkgInfoW *pPackageInfo; + SECURITY_STATUS ret = sspi.W->EnumerateSecurityPackagesW(&cPackages, &pPackageInfo); + sspi_log(QString("EnumerateSecurityPackages() = %1\n").arg(SECURITY_STATUS_toString(ret))); + if(ret != SEC_E_OK) + return out; + + for(int n = 0; n < (int)cPackages; ++n) + { + SecPkgInfoW *p = &pPackageInfo[n]; + SspiPackage i; + i.name = QString::fromUtf16((const ushort *)p->Name); + i.caps = p->fCapabilities; + i.version = p->wVersion; + i.rpcid = p->wRPCID; + i.maxtok = p->cbMaxToken; + i.comment = QString::fromUtf16((const ushort *)p->Comment); + out += i; + } + + ret = sspi.W->FreeContextBuffer(&pPackageInfo); + sspi_log(QString("FreeContextBuffer() = %1\n").arg(SECURITY_STATUS_toString(ret))); + , + ULONG cPackages; + SecPkgInfoA *pPackageInfo; + SECURITY_STATUS ret = sspi.A->EnumerateSecurityPackagesA(&cPackages, &pPackageInfo); + sspi_log(QString("EnumerateSecurityPackages() = %1\n").arg(SECURITY_STATUS_toString(ret))); + if(ret != SEC_E_OK) + return out; + + for(int n = 0; n < (int)cPackages; ++n) + { + SecPkgInfoA *p = &pPackageInfo[n]; + SspiPackage i; + i.name = QString::fromLocal8Bit(p->Name); + i.caps = p->fCapabilities; + i.version = p->wVersion; + i.rpcid = p->wRPCID; + i.maxtok = p->cbMaxToken; + i.comment = QString::fromLocal8Bit(p->Comment); + out += i; + } + + ret = sspi.A->FreeContextBuffer(&pPackageInfo); + sspi_log(QString("FreeContextBuffer() = %1\n").arg(SECURITY_STATUS_toString(ret))); + ) +#endif + + return out; +} + +static void sspi_refresh_packagelist_internal() +{ + if(sspi_packagelist) + *sspi_packagelist = sspi_get_packagelist_direct(); + else + sspi_packagelist = new QList(sspi_get_packagelist_direct()); +} + +QList sspi_get_packagelist() +{ + QMutexLocker locker(sspi_mutex()); + + if(!sspi_packagelist) + sspi_refresh_packagelist_internal(); + return *sspi_packagelist; +} + +void sspi_refresh_packagelist() +{ + QMutexLocker locker(sspi_mutex()); + + sspi_refresh_packagelist_internal(); +} + +template +inline T cap_to_int(const T &t) +{ + if(sizeof(int) <= sizeof(T)) + return (int)((t > INT_MAX) ? INT_MAX : t); + else + return (int)t; +} + +//---------------------------------------------------------------------------- +// KerberosSession +//---------------------------------------------------------------------------- +// this class thinly wraps SSPI to perform kerberos. +class KerberosSession +{ +public: + enum ReturnCode + { + Success, + NeedMoreData, // for decrypt + ErrorInvalidSystem, + ErrorKerberosNotFound, + ErrorAcquireCredentials, + ErrorInitialize, + ErrorQueryContext, + ErrorEncrypt, + ErrorDecrypt + }; + + SECURITY_STATUS lastErrorCode; + + quint32 maxtok; + + bool initialized; + bool first_step; + QByteArray first_out_token; + bool authed; + + QString spn; + + CredHandle user_cred; + TimeStamp user_cred_expiry; + + CtxtHandle ctx; + ULONG ctx_attr_req; + ULONG ctx_attr; + bool have_sizes; + SecPkgContext_Sizes ctx_sizes; + SecPkgContext_StreamSizes ctx_streamSizes; + + KerberosSession() : + initialized(false), + have_sizes(false) + { + } + + ~KerberosSession() + { + if(initialized) + { + SECURITY_STATUS ret = sspi.W->DeleteSecurityContext(&ctx); + sspi_log(QString("DeleteSecurityContext() = %1\n").arg(SECURITY_STATUS_toString(ret))); + + ret = sspi.W->FreeCredentialsHandle(&user_cred); + sspi_log(QString("FreeCredentialsHandle() = %1\n").arg(SECURITY_STATUS_toString(ret))); + } + } + + ReturnCode init(const QString &_spn) + { + // kerberos only works on unicode-based systems. we do this + // check so we can lazily use the W api from here on out. +#if QT_VERSION < 0x050000 + bool validSystem; + QT_WA( + validSystem = true; + , + validSystem = false; + ) + if(!validSystem) + return ErrorInvalidSystem; +#endif + + // ensure kerberos is available + bool found = false; + quint32 _maxtok = 0; + QList packages = sspi_get_packagelist(); + sspi_log("SSPI packages:\n"); + foreach(const SspiPackage &p, packages) + { + bool gss = false; + if(p.caps & SECPKG_FLAG_GSS_COMPATIBLE) + gss = true; + + if(p.name == "Kerberos" && gss) + { + found = true; + _maxtok = p.maxtok; + } + + QString gssstr = gss ? "yes" : "no"; + sspi_log(QString(" %1 (gss=%2, maxtok=%3)\n").arg(p.name, gssstr, QString::number(p.maxtok))); + } + + if(!found) + return ErrorKerberosNotFound; + + // get the logged-in user's credentials + SECURITY_STATUS ret = sspi.W->AcquireCredentialsHandleW( + (SEC_WCHAR *)0, // we want creds of logged-in user + (SEC_WCHAR *)QString("Kerberos").utf16(), + SECPKG_CRED_OUTBOUND, + 0, // don't need a LUID + 0, // default credentials for kerberos + 0, // not used + 0, // not used + &user_cred, + &user_cred_expiry); + sspi_log(QString("AcquireCredentialsHandle() = %1\n").arg(SECURITY_STATUS_toString(ret))); + if(ret != SEC_E_OK) + { + lastErrorCode = ret; + return ErrorAcquireCredentials; + } + + maxtok = _maxtok; + authed = false; + spn = _spn; + + SecBuffer outbuf; + outbuf.BufferType = SECBUFFER_TOKEN; + outbuf.cbBuffer = 0; + outbuf.pvBuffer = NULL; + + SecBufferDesc outbufdesc; + outbufdesc.ulVersion = SECBUFFER_VERSION; + outbufdesc.cBuffers = 1; + outbufdesc.pBuffers = &outbuf; + + ctx_attr_req = 0; + + // not strictly required, but some SSPI calls seem to always + // allocate memory, so for consistency we'll explicity + // request to have it that way all the time + ctx_attr_req |= ISC_REQ_ALLOCATE_MEMORY; + + // required by SASL GSSAPI RFC + ctx_attr_req |= ISC_REQ_INTEGRITY; + + // required for security layer + ctx_attr_req |= ISC_REQ_MUTUAL_AUTH; + ctx_attr_req |= ISC_REQ_SEQUENCE_DETECT; + + // required for encryption + ctx_attr_req |= ISC_REQ_CONFIDENTIALITY; + + // other options that may be of use, but we currently aren't + // using: + // ISC_REQ_DELEGATE + // ISC_REQ_REPLAY_DETECT + + ret = sspi.W->InitializeSecurityContextW( + &user_cred, + 0, // NULL for the first call + (SEC_WCHAR *)spn.utf16(), + ctx_attr_req, + 0, + SECURITY_NETWORK_DREP, + 0, // NULL for first call + 0, + &ctx, + &outbufdesc, + &ctx_attr, + 0); // don't care about expiration + sspi_log(QString("InitializeSecurityContext(*, 0, ...) = %1\n").arg(SECURITY_STATUS_toString(ret))); + if(ret == SEC_E_OK || ret == SEC_I_CONTINUE_NEEDED) + { + if(outbuf.pvBuffer) + { + first_out_token.resize(outbuf.cbBuffer); + memcpy(first_out_token.data(), outbuf.pvBuffer, outbuf.cbBuffer); + + SECURITY_STATUS fret = sspi.W->FreeContextBuffer(outbuf.pvBuffer); + sspi_log(QString("FreeContextBuffer() = %1\n").arg(SECURITY_STATUS_toString(fret))); + } + + if(ret == SEC_E_OK) + authed = true; + } + else + { + // ret was an error, or some unexpected value like + // SEC_I_COMPLETE_NEEDED or + // SEC_I_COMPLETE_AND_CONTINUE, which i believe are + // not used for kerberos + + lastErrorCode = ret; + + ret = sspi.W->FreeCredentialsHandle(&user_cred); + sspi_log(QString("FreeCredentialsHandle() = %1\n").arg(SECURITY_STATUS_toString(ret))); + + return ErrorInitialize; + } + + initialized = true; + first_step = true; + + return Success; + } + + ReturnCode step(const QByteArray &in, QByteArray *out, bool *authenticated) + { + if(authed) + { + out->clear(); + *authenticated = true; + return Success; + } + + if(first_step) + { + // ignore 'in' + + *out = first_out_token; + first_out_token.clear(); + + first_step = false; + } + else + { + SecBuffer outbuf; + outbuf.BufferType = SECBUFFER_TOKEN; + outbuf.cbBuffer = 0; + outbuf.pvBuffer = NULL; + + SecBufferDesc outbufdesc; + outbufdesc.ulVersion = SECBUFFER_VERSION; + outbufdesc.cBuffers = 1; + outbufdesc.pBuffers = &outbuf; + + SecBuffer inbuf; + inbuf.BufferType = SECBUFFER_TOKEN; + inbuf.cbBuffer = in.size(); + inbuf.pvBuffer = (void *)in.data(); + + SecBufferDesc inbufdesc; + inbufdesc.ulVersion = SECBUFFER_VERSION; + inbufdesc.cBuffers = 1; + inbufdesc.pBuffers = &inbuf; + + SECURITY_STATUS ret = sspi.W->InitializeSecurityContextW( + &user_cred, + &ctx, + (SEC_WCHAR *)spn.utf16(), + ctx_attr_req, + 0, + SECURITY_NETWORK_DREP, + &inbufdesc, + 0, + &ctx, + &outbufdesc, + &ctx_attr, + 0); // don't care about expiration + sspi_log(QString("InitializeSecurityContext(*, ctx, ...) = %1\n").arg(SECURITY_STATUS_toString(ret))); + if(ret == SEC_E_OK || ret == SEC_I_CONTINUE_NEEDED) + { + if(outbuf.pvBuffer) + { + out->resize(outbuf.cbBuffer); + memcpy(out->data(), outbuf.pvBuffer, outbuf.cbBuffer); + + SECURITY_STATUS fret = sspi.W->FreeContextBuffer(outbuf.pvBuffer); + sspi_log(QString("FreeContextBuffer() = %1\n").arg(SECURITY_STATUS_toString(fret))); + } + else + out->clear(); + + if(ret == SEC_E_OK) + authed = true; + } + else + { + // ret was an error, or some unexpected value like + // SEC_I_COMPLETE_NEEDED or + // SEC_I_COMPLETE_AND_CONTINUE, which i believe are + // not used for kerberos + + lastErrorCode = ret; + + ret = sspi.W->DeleteSecurityContext(&ctx); + sspi_log(QString("DeleteSecurityContext() = %1\n").arg(SECURITY_STATUS_toString(ret))); + + ret = sspi.W->FreeCredentialsHandle(&user_cred); + sspi_log(QString("FreeCredentialsHandle() = %1\n").arg(SECURITY_STATUS_toString(ret))); + + initialized = false; + return ErrorInitialize; + } + } + + *authenticated = authed; + return Success; + } + + // private + bool ensure_sizes_cached() + { + if(!have_sizes) + { + SECURITY_STATUS ret = sspi.W->QueryContextAttributesW(&ctx, SECPKG_ATTR_SIZES, &ctx_sizes); + sspi_log(QString("QueryContextAttributes(ctx, SECPKG_ATTR_SIZES, ...) = %1\n").arg(SECURITY_STATUS_toString(ret))); + if(ret != SEC_E_OK) + { + lastErrorCode = ret; + return false; + } + + // for some reason, querying the stream sizes returns + // SEC_E_UNSUPPORTED_FUNCTION on my system, even + // though the docs say it should work and putty + // wingss also calls it. + + // all we really need is cbMaximumMessage, and since + // we can't query for it, we'll hard code some + // value. according to putty wingss, the max size + // is essentially unbounded anyway, so this should + // be safe to do. + ctx_streamSizes.cbMaximumMessage = 8192; + + //ret = sspi.W->QueryContextAttributesW(&ctx, SECPKG_ATTR_STREAM_SIZES, &ctx_streamSizes); + //sspi_log(QString("QueryContextAttributes(ctx, SECPKG_ATTR_STREAM_SIZES, ...) = %1\n").arg(SECURITY_STATUS_toString(ret))); + //if(ret != SEC_E_OK) + //{ + // lastErrorCode = ret; + // return ErrorQueryContext; + //} + + have_sizes = true; + } + + return true; + } + + ReturnCode get_max_encrypt_size(int *max) + { + if(!ensure_sizes_cached()) + return ErrorQueryContext; + + *max = cap_to_int(ctx_streamSizes.cbMaximumMessage); + + return Success; + } + + ReturnCode encode(const QByteArray &in, QByteArray *out, bool encrypt) + { + if(!ensure_sizes_cached()) + return ErrorQueryContext; + + QByteArray tokenbuf(ctx_sizes.cbSecurityTrailer, 0); + QByteArray padbuf(ctx_sizes.cbBlockSize, 0); + + // we assume here, like putty wingss, that the output size is + // less than or equal to the input size. honestly I don't + // see how this is clear from the SSPI documentation, but + // the code seems to work so we'll go with it... + QByteArray databuf = in; + + SecBuffer buf[3]; + buf[0].BufferType = SECBUFFER_TOKEN; + buf[0].cbBuffer = tokenbuf.size(); + buf[0].pvBuffer = tokenbuf.data(); + buf[1].BufferType = SECBUFFER_DATA; + buf[1].cbBuffer = databuf.size(); + buf[1].pvBuffer = databuf.data(); + buf[2].BufferType = SECBUFFER_PADDING; + buf[2].cbBuffer = padbuf.size(); + buf[2].pvBuffer = padbuf.data(); + + SecBufferDesc bufdesc; + bufdesc.ulVersion = SECBUFFER_VERSION; + bufdesc.cBuffers = 3; + bufdesc.pBuffers = buf; + + SECURITY_STATUS ret = sspi.W->EncryptMessage(&ctx, encrypt ? 0 : SECQOP_WRAP_NO_ENCRYPT, &bufdesc, 0); + sspi_log(QString("EncryptMessage() = %1\n").arg(SECURITY_STATUS_toString(ret))); + if(ret != SEC_E_OK) + { + lastErrorCode = ret; + return ErrorEncrypt; + } + + QByteArray fullbuf; + for(int i = 0; i < (int)bufdesc.cBuffers; ++i) + fullbuf += QByteArray((const char *)bufdesc.pBuffers[i].pvBuffer, bufdesc.pBuffers[i].cbBuffer); + + *out = fullbuf; + return Success; + } + + ReturnCode decode(const QByteArray &in, QByteArray *out, bool *encrypted) + { + SecBuffer buf[2]; + buf[0].BufferType = SECBUFFER_DATA; + buf[0].cbBuffer = 0; + buf[0].pvBuffer = NULL; + buf[1].BufferType = SECBUFFER_STREAM; + buf[1].cbBuffer = in.size(); + buf[1].pvBuffer = (void *)in.data(); + + SecBufferDesc bufdesc; + bufdesc.ulVersion = SECBUFFER_VERSION; + bufdesc.cBuffers = 2; + bufdesc.pBuffers = buf; + + ULONG fQOP; + SECURITY_STATUS ret = sspi.W->DecryptMessage(&ctx, &bufdesc, 0, &fQOP); + sspi_log(QString("DecryptMessage() = %1\n").arg(SECURITY_STATUS_toString(ret))); + if(ret == SEC_E_INCOMPLETE_MESSAGE) + { + return NeedMoreData; + } + else if(ret != SEC_E_OK) + { + lastErrorCode = ret; + return ErrorDecrypt; + } + + if(buf[0].pvBuffer) + { + out->resize(buf[0].cbBuffer); + memcpy(out->data(), buf[0].pvBuffer, buf[0].cbBuffer); + + SECURITY_STATUS ret = sspi.W->FreeContextBuffer(buf[0].pvBuffer); + sspi_log(QString("FreeContextBuffer() = %1\n").arg(SECURITY_STATUS_toString(ret))); + } + else + out->clear(); + + if(fQOP & SECQOP_WRAP_NO_ENCRYPT) + *encrypted = false; + else + *encrypted = true; + + return Success; + } +}; + +//---------------------------------------------------------------------------- +// SaslGssapiSession +//---------------------------------------------------------------------------- +// this class wraps KerberosSession to perform SASL GSSAPI. it hides away +// any SSPI details, and is thus very simple to use. +class SaslGssapiSession +{ +private: + int secflags; + KerberosSession sess; + int mode; // 0 = kerberos tokens, 1 = app packets + bool authed; + QByteArray inbuf; + + int max_enc_size; // most we can encrypt to them + int max_dec_size; // most we are expected to decrypt from them + +public: + enum SecurityFlags + { + // only one of these should be set + RequireAtLeastInt = 0x0001, + RequireConf = 0x0002 + }; + + enum ReturnCode + { + Success, + ErrorInit, + ErrorKerberosStep, + ErrorAppTokenDecode, + ErrorAppTokenIsEncrypted, + ErrorAppTokenWrongSize, + ErrorAppTokenInvalid, + ErrorAppTokenEncode, + ErrorLayerTooWeak, + ErrorEncode, + ErrorDecode, + ErrorDecodeTooLarge, + ErrorDecodeNotEncrypted + }; + + // set this before auth, if you want + QString authzid; + + // read-only + bool do_layer, do_conf; + + SaslGssapiSession() + { + } + + ReturnCode init(const QString &proto, const QString &fqdn, int _secflags) + { + secflags = _secflags; + mode = 0; // kerberos tokens + authed = false; + + do_layer = false; + do_conf = false; + + if(sess.init(proto + '/' + fqdn) != KerberosSession::Success) + return ErrorInit; + + return Success; + } + + ReturnCode step(const QByteArray &in, QByteArray *out, bool *authenticated) + { + if(authed) + { + out->clear(); + *authenticated = true; + return Success; + } + + if(mode == 0) // kerberos tokens + { + bool kerb_authed; + if(sess.step(in, out, &kerb_authed) != KerberosSession::Success) + return ErrorKerberosStep; + + if(kerb_authed) + mode = 1; // switch to app packets + + *authenticated = false; + } + else if(mode == 1) + { + bool layerPossible = false; + bool encryptionPossible = false; + if(sess.ctx_attr & ISC_RET_INTEGRITY && + sess.ctx_attr & ISC_RET_MUTUAL_AUTH && + sess.ctx_attr & ISC_RET_SEQUENCE_DETECT) + { + layerPossible = true; + + if(sess.ctx_attr & ISC_RET_CONFIDENTIALITY) + encryptionPossible = true; + } + + if(layerPossible) + { + if(encryptionPossible) + sspi_log("Kerberos application data protection supported (with encryption)\n"); + else + sspi_log("Kerberos application data protection supported (without encryption)\n"); + } + else + sspi_log("No Kerberos application data protection supported\n"); + + QByteArray decbuf; + bool encrypted; + if(sess.decode(in, &decbuf, &encrypted) != KerberosSession::Success) + { + sspi_log("Error decoding application token\n"); + return ErrorAppTokenDecode; + } + + // this packet is supposed to be not encrypted + if(encrypted) + { + sspi_log("Error, application token is encrypted\n"); + return ErrorAppTokenIsEncrypted; + } + + // packet must be exactly 4 bytes + if(decbuf.size() != 4) + { + sspi_log("Error, application token is the wrong size\n"); + return ErrorAppTokenWrongSize; + } + + QString str; + str.sprintf("%02x%02x%02x%02x", + (unsigned int)decbuf[0], + (unsigned int)decbuf[1], + (unsigned int)decbuf[2], + (unsigned int)decbuf[3]); + sspi_log(QString("Received application token: [%1]\n").arg(str)); + + unsigned char layermask = decbuf[0]; + quint32 maxsize = 0; + maxsize += (unsigned char)decbuf[1]; + maxsize <<= 8; + maxsize += (unsigned char)decbuf[2]; + maxsize <<= 8; + maxsize += (unsigned char)decbuf[3]; + + // if 'None' is all that is supported, then maxsize + // must be zero + if(layermask == 1 && maxsize > 0) + { + sspi_log("Error, supports no security layer but the max buffer size is not zero\n"); + return ErrorAppTokenInvalid; + } + + // convert maxsize to a signed int, by capping it + int _max_enc_size = cap_to_int(maxsize); + + // parse out layermask + bool saslLayerNone = false; + bool saslLayerInt = false; + bool saslLayerConf = false; + QStringList saslLayerModes; + if(layermask & 1) + { + saslLayerNone = true; + saslLayerModes += "None"; + } + if(layermask & 2) + { + saslLayerInt = true; + saslLayerModes += "Int"; + } + if(layermask & 4) + { + saslLayerConf = true; + saslLayerModes += "Conf"; + } + + sspi_log(QString("Security layer modes supported: %1\n").arg(saslLayerModes.join(", "))); + sspi_log(QString("Security layer max packet size: %1\n").arg(maxsize)); + + // create outbound application token + QByteArray obuf(4, 0); // initially 4 bytes + + // set one of use_conf or use_int, but not both + bool use_conf = false; + bool use_int = false; + if(encryptionPossible && saslLayerConf) + use_conf = true; + else if(layerPossible && saslLayerInt) + use_int = true; + else if(!saslLayerNone) + { + sspi_log("Error, no compatible layer mode supported, not even 'None'\n"); + return ErrorLayerTooWeak; + } + + if((secflags & RequireConf) && !use_conf) + { + sspi_log("Error, 'Conf' required but not supported\n"); + return ErrorLayerTooWeak; + } + + if((secflags & RequireAtLeastInt) && !use_conf && !use_int) + { + sspi_log("Error, 'Conf' or 'Int' required but not supported\n"); + return ErrorLayerTooWeak; + } + + if(use_conf) + { + sspi_log("Using 'Conf' layer\n"); + obuf[0] = 4; + } + else if(use_int) + { + sspi_log("Using 'Int' layer\n"); + obuf[0] = 2; + } + else + { + sspi_log("Using 'None' layer\n"); + obuf[0] = 1; + } + + // as far as i can tell, there is no max decrypt size + // with sspi. so we'll just pick some number. + // a small one is good, to prevent excessive input + // buffering. + // in other parts of the code, it is assumed this + // value is less than INT_MAX + int _max_dec_size = 8192; // same as cyrus + + // max size must be zero if no security layer is used + if(!use_conf && !use_int) + _max_dec_size = 0; + + obuf[1] = (unsigned char)((_max_dec_size >> 16) & 0xff); + obuf[2] = (unsigned char)((_max_dec_size >> 8) & 0xff); + obuf[3] = (unsigned char)((_max_dec_size) & 0xff); + + if(!authzid.isEmpty()) + obuf += authzid.toUtf8(); + + str.clear(); + for(int n = 0; n < obuf.size(); ++n) + str += QString().sprintf("%02x", (unsigned int)obuf[n]); + sspi_log(QString("Sending application token: [%1]\n").arg(str)); + + if(sess.encode(obuf, out, false) != KerberosSession::Success) + { + sspi_log("Error encoding application token\n"); + return ErrorAppTokenEncode; + } + + if(use_conf || use_int) + do_layer = true; + if(use_conf) + do_conf = true; + + max_enc_size = _max_enc_size; + max_dec_size = _max_dec_size; + + *authenticated = true; + } + + return Success; + } + + ReturnCode encode(const QByteArray &in, QByteArray *out) + { + if(!do_layer) + { + *out = in; + return Success; + } + + int local_encrypt_max; + if(sess.get_max_encrypt_size(&local_encrypt_max) != KerberosSession::Success) + return ErrorEncode; + + // send no more per-packet than what our local system will + // encrypt AND no more than what the peer will accept. + int chunk_max = qMin(local_encrypt_max, max_enc_size); + if(chunk_max < 8) + { + sspi_log("Error, chunk_max is ridiculously small\n"); + return ErrorEncode; + } + + QByteArray total_out; + + // break up into packets, if input exceeds max size + int encoded = 0; + while(encoded < in.size()) + { + int left = in.size() - encoded; + int chunk_size = qMin(left, chunk_max); + QByteArray kerb_in = QByteArray::fromRawData(in.data() + encoded, chunk_size); + QByteArray kerb_out; + if(sess.encode(kerb_in, &kerb_out, do_conf) != KerberosSession::Success) + return ErrorEncode; + + QByteArray sasl_out(kerb_out.size() + 4, 0); + + // SASL (not GSS!) uses a 4 byte length prefix + quint32 len = kerb_out.size(); + sasl_out[0] = (unsigned char)((len >> 24) & 0xff); + sasl_out[1] = (unsigned char)((len >> 16) & 0xff); + sasl_out[2] = (unsigned char)((len >> 8) & 0xff); + sasl_out[3] = (unsigned char)((len) & 0xff); + + memcpy(sasl_out.data() + 4, kerb_out.data(), kerb_out.size()); + + encoded += kerb_in.size(); + total_out += sasl_out; + } + + *out = total_out; + return Success; + } + + ReturnCode decode(const QByteArray &in, QByteArray *out) + { + if(!do_layer) + { + *out = in; + return Success; + } + + // buffer the input + inbuf += in; + + QByteArray total_out; + + // the buffer might contain many packets. decode as many + // as possible + while(1) + { + if(inbuf.size() < 4) + { + // need more data + break; + } + + // SASL (not GSS!) uses a 4 byte length prefix + quint32 ulen = 0; + ulen += (unsigned char)inbuf[0]; + ulen <<= 8; + ulen += (unsigned char)inbuf[1]; + ulen <<= 8; + ulen += (unsigned char)inbuf[2]; + ulen <<= 8; + ulen += (unsigned char)inbuf[3]; + + // this capping is safe, because we throw error if the value + // is too large, and an acceptable value will always be + // lower than the maximum integer size. + int len = cap_to_int(ulen); + if(len > max_dec_size) + { + // this means the peer ignored our max buffer size. + // very evil, or we're under attack. + sspi_log("Error, decode size too large\n"); + return ErrorDecodeTooLarge; + } + + if(inbuf.size() - 4 < len) + { + // need more data + break; + } + + // take the packet from the inbuf + QByteArray kerb_in = inbuf.mid(4, len); + memmove(inbuf.data(), inbuf.data() + len + 4, inbuf.size() - len - 4); + inbuf.resize(inbuf.size() - len - 4); + + // count incomplete packets as errors, since they are sasl framed + QByteArray kerb_out; + bool encrypted; + if(sess.decode(kerb_in, &kerb_out, &encrypted) != KerberosSession::Success) + return ErrorDecode; + + if(do_conf && !encrypted) + { + sspi_log("Error, received unencrypted packet in 'Conf' mode\n"); + return ErrorDecodeNotEncrypted; + } + + total_out += kerb_out; + } + + *out = total_out; + return Success; + } +}; + +//---------------------------------------------------------------------------- +// SaslWinGss +//---------------------------------------------------------------------------- +class SaslWinGss : public SASLContext +{ + Q_OBJECT + +public: + SaslGssapiSession *sess; + bool authed; + Result _result; + SASL::AuthCondition _authCondition; + QByteArray _step_to_net; + QByteArray _to_net, _to_app; + int enc; + SafeTimer resultsReadyTrigger; + + QString opt_service, opt_host, opt_ext_id; + int opt_ext_ssf; + int opt_flags; + int opt_minssf, opt_maxssf; + + QString opt_authzid; + + SaslWinGss(Provider *p) : + SASLContext(p), + sess(0), + resultsReadyTrigger(this) + { + connect(&resultsReadyTrigger, SIGNAL(timeout()), SIGNAL(resultsReady())); + resultsReadyTrigger.setSingleShot(true); + } + + Provider::Context *clone() const + { + return 0; + } + + virtual void reset() + { + delete sess; + sess = 0; + authed = false; + _step_to_net.clear(); + _to_net.clear(); + _to_app.clear(); + resultsReadyTrigger.stop(); + + opt_service.clear(); + opt_host.clear(); + opt_ext_id.clear(); + opt_authzid.clear(); + } + + virtual void setup(const QString &service, const QString &host, const HostPort *local, const HostPort *remote, const QString &ext_id, int ext_ssf) + { + // unused by this provider + Q_UNUSED(local); + Q_UNUSED(remote); + + opt_service = service; + opt_host = host; + opt_ext_id = ext_id; + opt_ext_ssf = ext_ssf; + } + + virtual void setConstraints(SASL::AuthFlags f, int minSSF, int maxSSF) + { + opt_flags = (int)f; + opt_minssf = minSSF; + opt_maxssf = maxSSF; + } + + virtual void startClient(const QStringList &mechlist, bool allowClientSendFirst) + { + // we only support GSSAPI + if(!mechlist.contains("GSSAPI")) + { + _result = Error; + _authCondition = SASL::NoMechanism; + resultsReadyTrigger.start(); + return; + } + + // GSSAPI (or this provider) doesn't meet these requirements + if(opt_flags & SASL::RequireForwardSecrecy + || opt_flags & SASL::RequirePassCredentials + || !allowClientSendFirst) + { + _result = Error; + _authCondition = SASL::NoMechanism; + resultsReadyTrigger.start(); + return; + } + + sess = new SaslGssapiSession; + sess->authzid = opt_authzid; + + int secflags = 0; + if(opt_minssf > 1) + secflags |= SaslGssapiSession::RequireConf; + else if(opt_minssf == 1) + secflags |= SaslGssapiSession::RequireAtLeastInt; + + SaslGssapiSession::ReturnCode ret = sess->init(opt_service, opt_host, secflags); + if(ret != SaslGssapiSession::Success) + { + _result = Error; + _authCondition = SASL::AuthFail; + resultsReadyTrigger.start(); + return; + } + + ret = sess->step(QByteArray(), &_step_to_net, &authed); + if(ret != SaslGssapiSession::Success) + { + _result = Error; + _authCondition = SASL::AuthFail; + resultsReadyTrigger.start(); + return; + } + + if(authed) + _result = Success; + else + _result = Continue; + + resultsReadyTrigger.start(); + } + + virtual void startServer(const QString &realm, bool disableServerSendLast) + { + // server mode unsupported at this time + Q_UNUSED(realm); + Q_UNUSED(disableServerSendLast); + + _result = Error; + _authCondition = SASL::AuthFail; + resultsReadyTrigger.start(); + } + + virtual void serverFirstStep(const QString &mech, const QByteArray *clientInit) + { + // server mode unsupported at this time + Q_UNUSED(mech); + Q_UNUSED(clientInit); + } + + virtual void nextStep(const QByteArray &from_net) + { + SaslGssapiSession::ReturnCode ret = sess->step(from_net, &_step_to_net, &authed); + if(ret != SaslGssapiSession::Success) + { + _result = Error; + _authCondition = SASL::AuthFail; + resultsReadyTrigger.start(); + return; + } + + if(authed) + _result = Success; + else + _result = Continue; + + resultsReadyTrigger.start(); + } + + virtual void tryAgain() + { + // we never ask for params, so this function should never be + // called + } + + virtual void update(const QByteArray &from_net, const QByteArray &from_app) + { + SaslGssapiSession::ReturnCode ret; + QByteArray a; + + if(!from_net.isEmpty()) + { + ret = sess->decode(from_net, &a); + if(ret != SaslGssapiSession::Success) + { + _result = Error; + resultsReadyTrigger.start(); + return; + } + + _to_app += a; + } + + if(!from_app.isEmpty()) + { + ret = sess->encode(from_app, &a); + if(ret != SaslGssapiSession::Success) + { + _result = Error; + resultsReadyTrigger.start(); + return; + } + + _to_net += a; + enc += from_app.size(); + } + + _result = Success; + resultsReadyTrigger.start(); + } + + virtual bool waitForResultsReady(int msecs) + { + // all results are ready instantly + Q_UNUSED(msecs); + resultsReadyTrigger.stop(); + return true; + } + + virtual Result result() const + { + return _result; + } + + virtual QStringList mechlist() const + { + // server mode unsupported at this time + return QStringList(); + } + + virtual QString mech() const + { + // only mech we support :) + return "GSSAPI"; + } + + virtual bool haveClientInit() const + { + // GSSAPI always has a client init response + return true; + } + + virtual QByteArray stepData() const + { + return _step_to_net; + } + + virtual QByteArray to_net() + { + QByteArray a = _to_net; + _to_net.clear(); + enc = 0; + return a; + } + + virtual int encoded() const + { + return enc; + } + + virtual QByteArray to_app() + { + QByteArray a = _to_app; + _to_app.clear(); + return a; + } + + virtual int ssf() const + { + if(!sess->do_layer) + return 0; + + if(sess->do_conf) + { + // TODO: calculate this value somehow? for now we'll + // just hard code it to 56, which is basically what + // cyrus does. + return 56; + } + else + return 1; + } + + virtual SASL::AuthCondition authCondition() const + { + return _authCondition; + } + + virtual SASL::Params clientParams() const + { + // we never ask for params + return SASL::Params(); + } + + virtual void setClientParams(const QString *user, const QString *authzid, const SecureArray *pass, const QString *realm) + { + // unused by this provider + Q_UNUSED(user); + Q_UNUSED(pass); + Q_UNUSED(realm); + + if(authzid) + { + opt_authzid = *authzid; + if(sess) + sess->authzid = opt_authzid; + } + else + { + opt_authzid.clear(); + if(sess) + sess->authzid.clear(); + } + } + + virtual QStringList realmlist() const + { + // unused by this provider + return QStringList(); + } + + virtual QString username() const + { + // server mode unsupported at this time + return QString(); + } + + virtual QString authzid() const + { + // server mode unsupported at this time + return QString(); + } +}; + +#endif // !defined(FORWARD_ONLY) + +//---------------------------------------------------------------------------- +// MetaSasl +//---------------------------------------------------------------------------- +#ifndef FORWARD_ONLY +class wingssProvider; +static bool wingssProvider_have_sspi(wingssProvider *provider); +#endif + +class MetaSasl : public SASLContext +{ + Q_OBJECT + +public: + SASLContext *s; + + Result _result; + SASL::AuthCondition _authCondition; + SafeTimer resultsReadyTrigger; + Synchronizer sync; + bool waiting; + + QString opt_service, opt_host; + bool have_opt_local, have_opt_remote; + HostPort opt_local, opt_remote; + QString opt_ext_id; + int opt_ext_ssf; + SASL::AuthFlags opt_flags; + int opt_minssf, opt_maxssf; + + bool have_opt_user, have_opt_authzid, have_opt_pass, have_opt_realm; + QString opt_user, opt_authzid, opt_realm; + SecureArray opt_pass; + + class SaslProvider + { + public: + SASLContext *sasl; + bool ready; + QStringList mechlist; + + SaslProvider() : + sasl(0), + ready(false) + { + } + }; + + QList saslProviders; + bool serverInit_active; + Result serverInit_result; + QStringList serverInit_mechlist; + + MetaSasl(Provider *p) : + SASLContext(p), + resultsReadyTrigger(this), + sync(this), + waiting(false), + serverInit_active(false) + { + s = 0; + + have_opt_user = false; + have_opt_authzid = false; + have_opt_pass = false; + have_opt_realm = false; + + connect(&resultsReadyTrigger, SIGNAL(timeout()), SIGNAL(resultsReady())); + resultsReadyTrigger.setSingleShot(true); + } + + ~MetaSasl() + { + delete s; + } + + virtual Provider::Context *clone() const + { + return 0; + } + + void clearSaslProviders() + { + foreach(const SaslProvider &sp, saslProviders) + delete sp.sasl; + + saslProviders.clear(); + } + + virtual void reset() + { + delete s; + s = 0; + + resultsReadyTrigger.stop(); + + opt_service.clear(); + opt_host.clear(); + opt_ext_id.clear(); + opt_user.clear(); + opt_authzid.clear(); + opt_realm.clear(); + opt_pass.clear(); + + have_opt_user = false; + have_opt_authzid = false; + have_opt_pass = false; + have_opt_realm = false; + + clearSaslProviders(); + serverInit_active = false; + serverInit_mechlist.clear(); + } + + virtual void setup(const QString &service, const QString &host, const HostPort *local, const HostPort *remote, const QString &ext_id, int ext_ssf) + { + opt_service = service; + opt_host = host; + have_opt_local = false; + have_opt_remote = false; + if(local) + { + have_opt_local = true; + opt_local = *local; + } + if(remote) + { + have_opt_remote = true; + opt_remote = *remote; + } + opt_ext_id = ext_id; + opt_ext_ssf = ext_ssf; + } + + virtual void setConstraints(SASL::AuthFlags f, int minSSF, int maxSSF) + { + opt_flags = f; + opt_minssf = minSSF; + opt_maxssf = maxSSF; + } + + virtual void startClient(const QStringList &mechlist, bool allowClientSendFirst) + { +#ifndef FORWARD_ONLY + if(mechlist.contains("GSSAPI") && wingssProvider_have_sspi((wingssProvider *)provider())) + { + s = new SaslWinGss(provider()); + } + else + { +#endif + // collect providers supporting sasl, in priority order. + // (note: providers() is in priority order already) + ProviderList list; + foreach(Provider *p, providers()) + { + QString name = p->name(); + + // skip ourself + if(name == PROVIDER_NAME) + continue; + + if(p->features().contains("sasl")) + { + // FIXME: improve qca so this isn't needed + SASL tmp_object_to_cause_plugin_init(0, name); + + // add to the list + list += p; + } + } + + if(!list.isEmpty()) + { + // use the first + s = static_cast(list.first()->createContext("sasl")); + } +#ifndef FORWARD_ONLY + } +#endif + + if(!s) + { + // no usable provider? throw error + _result = Error; + _authCondition = SASL::NoMechanism; + resultsReadyTrigger.start(); + return; + } + + // proper parenting + s->setParent(this); + + const HostPort *pLocal = 0; + const HostPort *pRemote = 0; + if(have_opt_local) + pLocal = &opt_local; + if(have_opt_remote) + pRemote = &opt_remote; + s->setup(opt_service, opt_host, pLocal, pRemote, opt_ext_id, opt_ext_ssf); + s->setConstraints(opt_flags, opt_minssf, opt_maxssf); + + const QString *pUser = 0; + const QString *pAuthzid = 0; + const SecureArray *pPass = 0; + const QString *pRealm = 0; + if(have_opt_user) + pUser = &opt_user; + if(have_opt_authzid) + pAuthzid = &opt_authzid; + if(have_opt_pass) + pPass = &opt_pass; + if(have_opt_realm) + pRealm = &opt_realm; + s->setClientParams(pUser, pAuthzid, pPass, pRealm); + connect(s, SIGNAL(resultsReady()), SLOT(s_resultsReady())); + + QString str = QString("MetaSasl: client using %1 with %2 mechs").arg(s->provider()->name(), QString::number(mechlist.count())); + QCA_logTextMessage(str, Logger::Debug); + s->startClient(mechlist, allowClientSendFirst); + } + + virtual void startServer(const QString &realm, bool disableServerSendLast) + { + // collect mechs of all providers, by starting all of them + serverInit_active = true; + + ProviderList list; + foreach(Provider *p, providers()) + { + QString name = p->name(); + + // skip ourself + if(name == PROVIDER_NAME) + continue; + + if(p->features().contains("sasl")) + { + // FIXME: improve qca so this isn't needed + SASL tmp_object_to_cause_plugin_init(0, name); + + // add to the list + list += p; + } + } + + foreach(Provider *p, list) + { + SaslProvider sp; + + sp.sasl = static_cast(p->createContext("sasl")); + + // proper parenting + sp.sasl->setParent(this); + + const HostPort *pLocal = 0; + const HostPort *pRemote = 0; + if(have_opt_local) + pLocal = &opt_local; + if(have_opt_remote) + pRemote = &opt_remote; + sp.sasl->setup(opt_service, opt_host, pLocal, pRemote, opt_ext_id, opt_ext_ssf); + sp.sasl->setConstraints(opt_flags, opt_minssf, opt_maxssf); + connect(sp.sasl, SIGNAL(resultsReady()), SLOT(serverInit_resultsReady())); + + saslProviders += sp; + + sp.sasl->startServer(realm, disableServerSendLast); + } + } + + virtual void serverFirstStep(const QString &mech, const QByteArray *clientInit) + { + // choose a provider based on the mech + int at = choose_provider(mech); + + // extract it and clean up the rest + SASLContext *sasl = saslProviders[at].sasl; + sasl->disconnect(this); + saslProviders.removeAt(at); + clearSaslProviders(); + serverInit_active = false; + + // use the chosen provider + s = sasl; + connect(s, SIGNAL(resultsReady()), SLOT(s_resultsReady())); + s->serverFirstStep(mech, clientInit); + } + + virtual void nextStep(const QByteArray &from_net) + { + s->nextStep(from_net); + } + + virtual void tryAgain() + { + s->tryAgain(); + } + + virtual void update(const QByteArray &from_net, const QByteArray &from_app) + { + s->update(from_net, from_app); + } + + virtual bool waitForResultsReady(int msecs) + { + if(serverInit_active) + { + waiting = true; + bool ret = sync.waitForCondition(msecs); + waiting = false; + return ret; + } + else if(s) + return s->waitForResultsReady(msecs); + else + return true; + } + + virtual Result result() const + { + if(serverInit_active) + return serverInit_result; + else if(s) + return s->result(); + else + return _result; + } + + virtual QStringList mechlist() const + { + return serverInit_mechlist; + } + + virtual QString mech() const + { + if(s) + return s->mech(); + else + return QString(); + } + + virtual bool haveClientInit() const + { + return s->haveClientInit(); + } + + virtual QByteArray stepData() const + { + return s->stepData(); + } + + virtual QByteArray to_net() + { + return s->to_net(); + } + + virtual int encoded() const + { + return s->encoded(); + } + + virtual QByteArray to_app() + { + return s->to_app(); + } + + virtual int ssf() const + { + return s->ssf(); + } + + virtual SASL::AuthCondition authCondition() const + { + if(s) + return s->authCondition(); + else + return _authCondition; + } + + virtual SASL::Params clientParams() const + { + return s->clientParams(); + } + + virtual void setClientParams(const QString *user, const QString *authzid, const SecureArray *pass, const QString *realm) + { + if(!s) + { + if(user) + { + have_opt_user = true; + opt_user = *user; + } + if(authzid) + { + have_opt_authzid = true; + opt_authzid = *authzid; + } + if(pass) + { + have_opt_pass = true; + opt_pass = *pass; + } + if(realm) + { + have_opt_realm = true; + opt_realm = *realm; + } + } + else + { + s->setClientParams(user, authzid, pass, realm); + } + } + + virtual QStringList realmlist() const + { + return s->realmlist(); + } + + virtual QString username() const + { + return s->username(); + } + + virtual QString authzid() const + { + return s->authzid(); + } + +private slots: + void s_resultsReady() + { + emit resultsReady(); + } + + void serverInit_resultsReady() + { + SASLContext *sasl = (SASLContext *)sender(); + + int at = -1; + for(int n = 0; n < saslProviders.count(); ++n) + { + if(saslProviders[n].sasl == sasl) + { + at = n; + break; + } + } + if(at == -1) + return; + + if(sasl->result() == Success) + { + saslProviders[at].ready = true; + saslProviders[at].mechlist = sasl->mechlist(); + + bool allReady = true; + for(int n = 0; n < saslProviders.count(); ++n) + { + if(!saslProviders[n].ready) + { + allReady = false; + break; + } + } + + if(allReady) + { + // indicate success + serverInit_result = Success; + serverInit_mechlist = combine_mechlists(); + + if(waiting) + sync.conditionMet(); + else + emit resultsReady(); + } + } + else + { + delete sasl; + saslProviders.removeAt(at); + + if(saslProviders.isEmpty()) + { + // indicate error + serverInit_result = Error; + _authCondition = SASL::NoMechanism; + + if(waiting) + sync.conditionMet(); + else + emit resultsReady(); + } + } + } + +private: + QStringList combine_mechlists() + { + QStringList out; + + // FIXME: consider prioritizing certain mechs? + foreach(const SaslProvider &sp, saslProviders) + { + foreach(const QString &mech, sp.mechlist) + { + if(!out.contains(mech)) + out += mech; + } + } + + return out; + } + + int choose_provider(const QString &mech) + { + int at = -1; + + // find a provider for this mech + for(int n = 0; n < saslProviders.count(); ++n) + { + const SaslProvider &sp = saslProviders[n]; + if(sp.mechlist.contains(mech)) + { + at = n; + break; + } + } + + // no provider offered this mech? then just go with the + // first provider + if(at == -1) + at = 0; + + return at; + } +}; + +class wingssProvider : public Provider +{ +public: + mutable QMutex m; + mutable bool forced_priority; + bool have_sspi; + + wingssProvider() : + forced_priority(false), + have_sspi(false) + { + } + + virtual void init() + { +#ifndef FORWARD_ONLY + sspi_set_logger(do_log); + have_sspi = sspi_load(); +#endif + } + + ~wingssProvider() + { +#ifndef FORWARD_ONLY + if(have_sspi) + sspi_unload(); +#endif + } + + virtual int qcaVersion() const + { + return QCA_VERSION; + } + + virtual QString name() const + { + return PROVIDER_NAME; + } + + virtual QStringList features() const + { + // due to context manipulation, this plugin is only designed + // for qca 2.0 at this time, and not a possible 2.1, etc. + if((qcaVersion() & 0xffff00) > 0x020000) + return QStringList(); + + m.lock(); + // FIXME: we need to prioritize this plugin to be higher + // than other plugins by default. unfortunately there's + // no clean way to do this. we can't change our priority + // until we are slotted into the qca provider system. the + // constructor, qcaVersion, and name functions are all + // guaranteed to be called, but unfortunately they are + // only guaranteed to be called before the slotting. the + // features function is essentially guaranteed to be called + // after the slotting though, since QCA::isSupported() + // trips it, and any proper QCA app will call isSupported. + if(!forced_priority) + { + forced_priority = true; + setProviderPriority(PROVIDER_NAME, 0); + } + m.unlock(); + + QStringList list; + list += "sasl"; + return list; + } + + virtual Context *createContext(const QString &type) + { + if(type == "sasl") + return new MetaSasl(this); + else + return 0; + } + +#ifndef FORWARD_ONLY + static void do_log(const QString &str) + { + QCA_logTextMessage(str, Logger::Debug); + } +#endif +}; + +#ifndef FORWARD_ONLY +bool wingssProvider_have_sspi(wingssProvider *provider) +{ + return provider->have_sspi; +} +#endif + +} + +using namespace wingssQCAPlugin; + +//---------------------------------------------------------------------------- +// wingssPlugin +//---------------------------------------------------------------------------- + +class wingssPlugin : public QObject, public QCAPlugin +{ + Q_OBJECT +#if QT_VERSION >= 0x050000 + Q_PLUGIN_METADATA(IID "com.affinix.qca.Plugin/1.0") +#endif + Q_INTERFACES(QCAPlugin) + +public: + virtual Provider *createProvider() { return new wingssProvider; } +}; + +#include "qca-wingss.moc" + +#if QT_VERSION < 0x050000 +Q_EXPORT_PLUGIN2(qca_wingss, wingssPlugin) +#endif diff -Nru qca2-2.0.3/plugins/qca-wingss/README qca2-2.1.0/plugins/qca-wingss/README --- qca2-2.0.3/plugins/qca-wingss/README 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/plugins/qca-wingss/README 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,27 @@ +QCA Windows GSS plugin version 2.0.0 +------------------------------------ +Date: May 29th, 2008 +Website: http://delta.affinix.com/qca/ +Mailing List: Delta Project + +Author: Justin Karneges + +This plugin provides SASL (GSSAPI mechanism only) using the native Windows +Security Support Provider Interface (SSPI) for Kerberos. Basically what this +means is that if your Windows computer authenticates against a domain, then +you can access capable SASL servers on that domain without a password. + +This plugin will safely load on any version of Windows, but it will only +perform its function if the Kerberos SSPI feature is present (available in +Windows 2000 or later). + +Installing +---------- + +For Windows: + + configwin rd + qmake + nmake (or make) + copy lib\*.dll qtdir\plugins\crypto + diff -Nru qca2-2.0.3/prepare qca2-2.1.0/prepare --- qca2-2.0.3/prepare 2008-06-05 01:39:26.000000000 +0000 +++ qca2-2.1.0/prepare 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -#!/bin/sh - -if [ ! -f qca.pro ] || [ -d .svn ]; then - echo This script should only be run within an exported qca tree. - exit 1 -fi - -# remove cmake files -rm -rf cmake -rm crypto.prf.cmake -rm qca2.pc.cmake -find . -name CMakeLists.txt -exec rm {} \; diff -Nru qca2-2.0.3/qca2.pc.cmake qca2-2.1.0/qca2.pc.cmake --- qca2-2.0.3/qca2.pc.cmake 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/qca2.pc.cmake 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +prefix=@QCA_PREFIX_INSTALL_DIR@ +exec_prefix=@QCA_PREFIX_INSTALL_DIR@ +libdir=@QCA_LIBRARY_INSTALL_DIR@ +includedir=@QCA_INCLUDE_INSTALL_DIR@/QtCrypto + +Name: QCA +Description: Qt Cryptographic Architecture library +Version: @QCA_LIB_VERSION_STRING@ +Requires: @QCA_QT_PC_VERSION@ +Libs: @PKGCONFIG_LIBS@ +Cflags: @PKGCONFIG_CFLAGS@ diff -Nru qca2-2.0.3/QcaConfig.cmake.in qca2-2.1.0/QcaConfig.cmake.in --- qca2-2.0.3/QcaConfig.cmake.in 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/QcaConfig.cmake.in 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,7 @@ +@PACKAGE_INIT@ + +if(NOT TARGET qca) + include("${CMAKE_CURRENT_LIST_DIR}/QcaTargets.cmake") +endif() + +set(Qca_LIBRARY qca) diff -Nru qca2-2.0.3/qca.pro qca2-2.1.0/qca.pro --- qca2-2.0.3/qca.pro 2009-04-25 02:16:40.000000000 +0000 +++ qca2-2.1.0/qca.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -TEMPLATE = subdirs -SUBDIRS = sub_src sub_tools sub_unittest sub_examples - -sub_src.subdir = src -sub_tools.subdir = tools -sub_tools.depends = sub_src -sub_unittest.subdir = unittest -sub_unittest.depends = sub_src -sub_examples.subdir = examples -sub_examples.depends = sub_src - -include(conf.pri) - -!isEmpty(QCA_NO_TESTS) { - SUBDIRS -= sub_unittest sub_examples -} - -unix: { - # API documentation - #apidox.commands += doxygen && cd apidocs/html && ./installdox -lqt.tag@/home/bradh/build/qt-x11-opensource-4.0.0-rc1-snapshot/doc/html/ && cd ../.. - apidox.commands += doxygen && cd apidocs/html && ./installdox -lqt.tag@http://doc.trolltech.com/4.1 && cd ../.. - QMAKE_EXTRA_TARGETS += apidox - - # unittest - test.commands += cd unittest && make test && cd .. - QMAKE_EXTRA_TARGETS += test -} diff -Nru qca2-2.0.3/qca.qc qca2-2.1.0/qca.qc --- qca2-2.0.3/qca.qc 2009-04-24 22:16:54.000000000 +0000 +++ qca2-2.1.0/qca.qc 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ - - Qt Cryptographic Architecture (QCA) - qca.pro - - - - - qcm - - - - - - - - - - - - - - - - - - - diff -Nru qca2-2.0.3/qcm/buildmode_framework.qcm qca2-2.1.0/qcm/buildmode_framework.qcm --- qca2-2.0.3/qcm/buildmode_framework.qcm 2009-04-24 22:42:43.000000000 +0000 +++ qca2-2.1.0/qcm/buildmode_framework.qcm 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ -/* ------BEGIN QCMOD----- -name: buildmode_framework -section: project -arg: no-framework,Do not build as a Mac framework. -arg: framework,Build as a Mac framework (default). ------END QCMOD----- -*/ - -#define QC_BUILDMODE_FRAMEWORK -bool qc_buildmode_framework_enabled = false; - -class qc_buildmode_framework : public ConfObj -{ -public: - qc_buildmode_framework(Conf *c) : ConfObj(c) {} - QString name() const { return "buildmode_framework"; } - QString shortname() const { return "buildmode_framework"; } - - // no output - QString checkString() const { return QString(); } - - bool exec() - { - // first, parse out the options - bool opt_no_framework = false; - bool opt_framework = false; - - if(conf->getenv("QC_NO_FRAMEWORK") == "Y") - opt_no_framework = true; - if(conf->getenv("QC_FRAMEWORK") == "Y") - opt_framework = true; - - bool staticmode = false; - if(conf->getenv("QC_STATIC") == "Y") - staticmode = true; - -#ifndef Q_OS_MAC - if(opt_framework) - { - printf("\nError: The --framework option is for mac only.\n"); - exit(1); - } -#endif - - if(opt_framework && qc_buildmode_debug) - { - printf("\nError: Cannot use both --framework and --debug.\n"); - exit(1); - } - - // sanity check exclusive options - int x; - - // framework - if(opt_framework && staticmode) - { - printf("\nError: Cannot use both --framework and --static.\n"); - exit(1); - } - - x = 0; - if(opt_no_framework) - ++x; - if(opt_framework) - ++x; - if(x > 1) - { - printf("\nError: Use only one of --framework or --no-framework.\n"); - exit(1); - } - -#ifdef Q_OS_MAC - // now process the options - - if(opt_framework) - qc_buildmode_framework_enabled = true; - else if(opt_no_framework) - { - // nothing to do - } - else // default - { - if(!staticmode && !qc_buildmode_debug) - qc_buildmode_framework_enabled = true; - } - - if(qc_buildmode_framework_enabled) - conf->addExtra("CONFIG += lib_bundle"); -#endif - - return true; - } -}; diff -Nru qca2-2.0.3/qcm/buildmode.qcm qca2-2.1.0/qcm/buildmode.qcm --- qca2-2.0.3/qcm/buildmode.qcm 2009-04-24 22:16:54.000000000 +0000 +++ qca2-2.1.0/qcm/buildmode.qcm 1970-01-01 00:00:00.000000000 +0000 @@ -1,155 +0,0 @@ -/* ------BEGIN QCMOD----- -name: buildmode -section: project -arg: release,Build with debugging turned off (default). -arg: debug,Build with debugging turned on. -arg: debug-and-release,Build two versions, with and without debugging turned on (windows/mac only). -arg: no-separate-debug-info,Do not store debug information in a separate file (unix only, default for mac). -arg: separate-debug-info,Strip debug information into a separate .debug file (unix only, default for non-mac). ------END QCMOD----- -*/ - -#define QC_BUILDMODE -bool qc_buildmode_release = false; -bool qc_buildmode_debug = false; -bool qc_buildmode_separate_debug_info = false; - -class qc_buildmode : public ConfObj -{ -public: - qc_buildmode(Conf *c) : ConfObj(c) {} - QString name() const { return "buildmode"; } - QString shortname() const { return "buildmode"; } - - // no output - QString checkString() const { return QString(); } - - bool exec() - { - // first, parse out the options - bool opt_release = false; - bool opt_debug = false; - bool opt_debug_and_release = false; - bool opt_no_separate_debug_info = false; - bool opt_separate_debug_info = false; - - if(conf->getenv("QC_RELEASE") == "Y") - opt_release = true; - if(conf->getenv("QC_DEBUG") == "Y") - opt_debug = true; - if(conf->getenv("QC_DEBUG_AND_RELEASE") == "Y") - opt_debug_and_release = true; - if(conf->getenv("QC_NO_SEPARATE_DEBUG_INFO") == "Y") - opt_no_separate_debug_info = true; - if(conf->getenv("QC_SEPARATE_DEBUG_INFO") == "Y") - opt_separate_debug_info = true; - -#if !defined(Q_OS_WIN) && !defined(Q_OS_MAC) - if(opt_debug_and_release) - { - printf("\nError: The --debug-and-release option is for windows/mac only.\n"); - exit(1); - } -#endif - -#ifdef Q_OS_WIN - if(opt_no_separate_debug_info) - { - printf("\nError: The --no-separate-debug-info option is for unix only.\n"); - exit(1); - } - - if(opt_separate_debug_info) - { - printf("\nError: The --separate-debug-info option is for unix only.\n"); - exit(1); - } -#endif - - // sanity check exclusive options - int x; - - // build mode - x = 0; - if(opt_release) - ++x; - if(opt_debug) - ++x; - if(opt_debug_and_release) - ++x; - if(x > 1) - { - printf("\nError: Use only one of --release, --debug, or --debug-and-release.\n"); - exit(1); - } - - // debug info - x = 0; - if(opt_no_separate_debug_info) - ++x; - if(opt_separate_debug_info) - ++x; - if(x > 1) - { - printf("\nError: Use only one of --separate-debug-info or --no-separate-debug-info\n"); - exit(1); - } - - // now process the options - - if(opt_release) - qc_buildmode_release = true; - else if(opt_debug) - qc_buildmode_debug = true; - else if(opt_debug_and_release) - { - qc_buildmode_release = true; - qc_buildmode_debug = true; - } - else // default - qc_buildmode_release = true; - - if(opt_separate_debug_info) - qc_buildmode_separate_debug_info = true; - else if(opt_no_separate_debug_info) - { - // nothing to do - } - else // default - { -#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC) - qc_buildmode_separate_debug_info = true; -#endif - } - - // make the string - QStringList opts; - QString other; - - if(qc_buildmode_release && qc_buildmode_debug) - { - opts += "debug_and_release"; - opts += "build_all"; - } - else if(qc_buildmode_release) - opts += "release"; - else // qc_buildmode_debug - opts += "debug"; - - if(qc_buildmode_separate_debug_info) - { - opts += "separate_debug_info"; - other += "QMAKE_CFLAGS += -g\n"; - other += "QMAKE_CXXFLAGS += -g\n"; - } - - QString str = QString("CONFIG += ") + opts.join(" ") + '\n'; - conf->addExtra(str); - - if(!other.isEmpty()) - conf->addExtra(other); - - return true; - } -}; diff -Nru qca2-2.0.3/qcm/certstore.qcm qca2-2.1.0/qcm/certstore.qcm --- qca2-2.0.3/qcm/certstore.qcm 2008-06-18 17:52:12.000000000 +0000 +++ qca2-2.1.0/qcm/certstore.qcm 1970-01-01 00:00:00.000000000 +0000 @@ -1,109 +0,0 @@ -/* ------BEGIN QCMOD----- -name: certstore -section: project -arg: certstore-path=[path],Path to the SSL/X509 Certificate store file. -arg: certstore-internal,Force the use of the bundled store. ------END QCMOD----- -*/ - -class qc_certstore : public ConfObj -{ -public: - qc_certstore(Conf *c) : ConfObj(c) {} - QString name() const { return "certstore"; } - QString shortname() const { return "certstore"; } - - bool exec() - { - bundled = false; - -#if defined(Q_OS_WIN) || defined(Q_OS_MAC) - // use built-in - return true; -#else - if(conf->getenv("QC_CERTSTORE_INTERNAL") != "Y") - { - QStringList pathsToTry; - - path = conf->getenv("QC_CERTSTORE_PATH"); - if(!path.isEmpty()) - { - conf->addExtra(makeEscapedDefine("QCA_SYSTEMSTORE_PATH", path)); - return true; - } - - // This is from Debian - pathsToTry.append( QString("/etc/ssl/certs/ca-certificates.crt") ); - - // Fedora Core 2 uses these - pathsToTry.append( QString("/usr/share/ssl/cert.pem") ); - pathsToTry.append( QString("/usr/share/ssl/certs/ca-bundle.crt") ); - - // Fedora Core 5 changes to this - pathsToTry.append( QString("/etc/pki/tls/cert.pem") ); - - for(int n = 0; n < pathsToTry.count(); ++n) - { - if(QFile::exists(pathsToTry[n])) - { - path = pathsToTry[n]; - break; - } - } - } - - // fall back to bundled - if(path.isEmpty()) - { - // --prefix=$pwd ? - if(QFile::exists(conf->getenv("PREFIX") + "/certs/rootcerts.pem")) - path = "$$PREFIX/certs/rootcerts.pem"; - else - path = "$$DATADIR/qca/certs/rootcerts.pem"; - - QString extra = - "sharedfiles.path = $$DATADIR/qca\n" - "sharedfiles.files = certs\n" - "INSTALLS += sharedfiles\n"; - conf->addExtra(extra); - bundled = true; - } - - conf->addExtra(makeEscapedDefine("QCA_SYSTEMSTORE_PATH", path)); - - return true; -#endif - } - - QString makeEscapedDefine(const QString &var, const QString &val) - { - QString str = QString( - "DEFINES += %1=\\\\\\\\\\\\\\"%2\\\\\\\\\\\\\\"\n" - ).arg(var).arg(val); - return str; - } - - QString resultString() const - { -#if defined(Q_OS_WIN) - return "using Windows built-in"; -#elif defined(Q_OS_MAC) - return "using Mac built-in"; -#else - if(success) - { - if(bundled) - return "using bundled"; - else - return path; - } - else - return ConfObj::resultString(); -#endif - } - -private: - QString path; - bool bundled; -}; diff -Nru qca2-2.0.3/qcm/extra.qcm qca2-2.1.0/qcm/extra.qcm --- qca2-2.0.3/qcm/extra.qcm 2010-11-27 21:14:12.000000000 +0000 +++ qca2-2.1.0/qcm/extra.qcm 1970-01-01 00:00:00.000000000 +0000 @@ -1,238 +0,0 @@ -/* ------BEGIN QCMOD----- -name: extra -section: project -arg: disable-tests,Don't build examples and unittests. ------END QCMOD----- -*/ - -class qc_extra : public ConfObj -{ -public: - qc_extra(Conf *c) : ConfObj(c) {} - QString name() const { return "extra"; } - QString shortname() const { return "extra"; } - - // no output - QString checkString() const { return QString(); } - - bool exec() - { -#ifndef Q_OS_WIN - // --prefix=$pwd ? - QString datadir; - if(QFile::exists(conf->getenv("PREFIX") + "/qca.pro")) - datadir = "$$PREFIX"; - else - datadir = "$$DATADIR/qca"; - - conf->addExtra(makeEscapedDefine("DATADIR", datadir)); -#endif - - QString str; - QFile f; - -#ifndef Q_OS_WIN - // HAVE_SYS_FILIO_H - if(conf->findHeader("sys/filio.h", QStringList(), &str)) - { - if(!str.isEmpty()) - conf->addIncludePath(str); - conf->addDefine("HAVE_SYS_FILIO_H"); - } - - // MLOCK_NOT_VOID_PTR - str = - "# include \n" - "# include \n" - "int main() { void *f = 0; return mlock(f,8); }\n"; - if(!conf->doCompileAndLink(str, QStringList(), QString(), QString())) - { - conf->debug("mlock(2) does not take a void *"); - conf->addDefine("MLOCK_NOT_VOID_PTR"); - } - - str = QString(); -#endif - - if(conf->getenv("QC_DISABLE_TESTS") == "Y") - str += "QCA_NO_TESTS = 1\n"; - - conf->addExtra(str); - - bool release = true; - bool debug = false; - bool debug_info = false; - bool universal = false; - QString sdk; - -#ifdef QC_BUILDMODE - release = qc_buildmode_release; - debug = qc_buildmode_debug; - debug_info = qc_buildmode_separate_debug_info; -#endif - -#ifdef QC_UNIVERSAL - universal = qc_universal_enabled; - sdk = qc_universal_sdk; -#endif - - // write confapp.pri - str = QString(); -#ifndef Q_OS_WIN - QString var = conf->getenv("BINDIR"); - if(!var.isEmpty()) - str += QString("BINDIR = %1\n").arg(var); -#endif - if(debug) // debug or debug-and-release - str += QString("CONFIG += debug\n"); - else // release - str += QString("CONFIG += release\n"); - if(debug_info) - { - str += QString("CONFIG += separate_debug_info\n"); - str += "QMAKE_CFLAGS += -g\n"; - str += "QMAKE_CXXFLAGS += -g\n"; - } - if(universal) - { - str += - "contains(QT_CONFIG,x86):contains(QT_CONFIG,ppc) {\n" - " CONFIG += x86 ppc\n" - "}\n"; - - if(!sdk.isEmpty()) - str += QString("QMAKE_MAC_SDK = %1\n").arg(sdk); - } - f.setFileName("confapp.pri"); - if(f.open(QFile::WriteOnly | QFile::Truncate)) - f.write(str.toLatin1()); - f.close(); - -#ifdef Q_OS_WIN - QString prefix = QDir::currentPath(); - QString incdir = prefix + "/include"; - QString libdir = prefix + "/lib"; -#else - QString prefix = conf->getenv("PREFIX"); - QString incdir = conf->getenv("INCDIR"); - QString libdir = conf->getenv("LIBDIR"); -#endif - - // write qmake-feature file - QString crypto_in; - f.setFileName("crypto.prf.in"); - if(f.open(QFile::ReadOnly)) - { - crypto_in = QString::fromUtf8(f.readAll()); - f.close(); - } - - str = QString("QCA_INCDIR = %1\n").arg(incdir); - str += QString("QCA_LIBDIR = %1\n").arg(libdir); - str += crypto_in; - - f.setFileName("crypto.prf"); - if(f.open(QFile::WriteOnly | QFile::Truncate)) - { - f.write(str.toLatin1()); - f.close(); - } - -#ifndef Q_OS_WIN - str = QString( - "prffiles.path = %1/mkspecs/features\n" - "prffiles.files = crypto.prf\n" - "INSTALLS += prffiles\n" - ).arg(QLibraryInfo::location(QLibraryInfo::DataPath)); - conf->addExtra(str); - - // write pkg-config files - - QString pkg_template1 = QString( - "prefix=%1\n" - "exec_prefix=${prefix}\n" - "libdir=%2\n" - "includedir=%3/QtCrypto\n" - "\n"); - - QString pkg_template2 = QString( - "Name: %1\n" - "Description: Qt Cryptographic Architecture library\n" - "Version: 2.0.3\n"); - - QString pkg_template3 = QString( - "Requires: %1\n"); - - QString pkg_template4 = QString( - "Libs: -L${libdir} -l%1\n" - "Cflags: -I${includedir}\n" - "\n"); - - QStringList pcfiles; - - QDir dir = QDir::current(); - dir.mkdir("lib"); - dir.cd("lib"); - dir.mkdir("pkgconfig"); - - bool do_pc_normal = false; - bool do_pc_debug = false; - -#ifdef Q_OS_MAC - if(release) - do_pc_normal = true; - if(debug) - do_pc_debug = true; -#else - do_pc_normal = true; -#endif - - if(do_pc_normal) - { - str = pkg_template1.arg(prefix, libdir, incdir); - str += pkg_template2.arg("QCA"); - str += pkg_template3.arg("QtCore"); - str += pkg_template4.arg("qca"); - f.setFileName("lib/pkgconfig/qca2.pc"); - if(f.open(QFile::WriteOnly | QFile::Truncate)) - f.write(str.toLatin1()); - f.close(); - pcfiles += "lib/pkgconfig/qca2.pc"; - } - - if(do_pc_debug) - { - str = pkg_template1.arg(prefix, libdir, incdir); - str += pkg_template2.arg("QCA_debug"); - str += pkg_template3.arg("QtCore_debug"); - str += pkg_template4.arg("qca_debug"); - f.setFileName("lib/pkgconfig/qca2_debug.pc"); - if(f.open(QFile::WriteOnly | QFile::Truncate)) - f.write(str.toLatin1()); - f.close(); - pcfiles += "lib/pkgconfig/qca2_debug.pc"; - } - - if(!pcfiles.isEmpty()) - { - str = QString( - "pcfiles.path = $$LIBDIR/pkgconfig\n" - "pcfiles.files = %1\n" - "INSTALLS += pcfiles\n" - ).arg(pcfiles.join(" ")); - conf->addExtra(str); - } -#endif - - return true; - } - - QString makeEscapedDefine(const QString &var, const QString &val) - { - QString str = QString( - "DEFINES += %1=\\\\\\\\\\\\\\"%2\\\\\\\\\\\\\\"\n" - ).arg(var).arg(val); - return str; - } -}; diff -Nru qca2-2.0.3/qcm/qcapluginpath.qcm qca2-2.1.0/qcm/qcapluginpath.qcm --- qca2-2.0.3/qcm/qcapluginpath.qcm 2009-04-24 20:41:33.000000000 +0000 +++ qca2-2.1.0/qcm/qcapluginpath.qcm 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -/* ------BEGIN QCMOD----- -name: qcapluginpath -section: project -arg: plugins-path=[path],Path to install to (unix only). Default: qtdir/plugins ------END QCMOD----- -*/ - -class qc_qcapluginpath : public ConfObj -{ -public: - qc_qcapluginpath(Conf *c) : ConfObj(c) {} - QString name() const { return "qcapluginpath"; } - QString shortname() const { return "qcapluginpath"; } - - // no output - QString checkString() const { return QString(); } - - bool exec() - { -#ifndef Q_OS_WIN - QString plugins_path = conf->getenv("QC_PLUGINS_PATH"); - - // default to qtdir - if(plugins_path.isEmpty()) - plugins_path = QLibraryInfo::location(QLibraryInfo::PluginsPath); - - // install into plugins path - QString str; - str += QString( - "target.path=%1/crypto\n" - "INSTALLS += target\n" - ).arg(plugins_path); - conf->addExtra(str); -#endif - - return true; - } -}; diff -Nru qca2-2.0.3/qcm/qca.qcm qca2-2.1.0/qcm/qca.qcm --- qca2-2.0.3/qcm/qca.qcm 2008-06-04 00:48:48.000000000 +0000 +++ qca2-2.1.0/qcm/qca.qcm 1970-01-01 00:00:00.000000000 +0000 @@ -1,120 +0,0 @@ -/* ------BEGIN QCMOD----- -name: QCA >= 2.0 -arg: with-qca=[path],Specify path to QCA tree, mainly for building against an uninstalled QCA. ------END QCMOD----- -*/ - -// based on crypto.prf. any changes made to that file need to be tracked here. -static QString internal_crypto_prf(const QString &incdir, const QString &libdir) -{ - QString out = QString( -"QCA_INCDIR = %1\n" -"QCA_LIBDIR = %2\n" -"\n" -"CONFIG *= qt\n" -"\n" -"LINKAGE =\n" -"\n" -"# on mac, if qca was built as a framework, link against it\n" -"mac: {\n" -" framework_dir = $$QCA_LIBDIR\n" -" exists($$framework_dir/qca.framework) {\n" -" #QMAKE_FRAMEWORKPATH *= $$framework_dir\n" -" LIBS += -F$$framework_dir\n" -" INCLUDEPATH += $$framework_dir/qca.framework/Headers\n" -" LINKAGE = -framework qca\n" -" }\n" -"}\n" -"\n" -"# else, link normally\n" -"isEmpty(LINKAGE) {\n" -" INCLUDEPATH += $$QCA_INCDIR/QtCrypto\n" -" LIBS += -L$$QCA_LIBDIR\n" -" LINKAGE = -lqca\n" -" CONFIG(debug, debug|release) {\n" -" windows:LINKAGE = -lqcad\n" -" mac:LINKAGE = -lqca_debug\n" -" }\n" -"}\n" -"\n" -"LIBS += $$LINKAGE\n" - ).arg(incdir, libdir); - return out; -} - -//---------------------------------------------------------------------------- -// qc_qca -//---------------------------------------------------------------------------- -class qc_qca : public ConfObj -{ -public: - qc_qca(Conf *c) : ConfObj(c) {} - QString name() const { return "QCA >= 2.0"; } - QString shortname() const { return "qca"; } - bool exec() - { - // get the build mode -#ifdef QC_BUILDMODE - bool release = qc_buildmode_release; - bool debug = qc_buildmode_debug; -#else - // else, default to just release mode - bool release = true; - bool debug = false; -#endif - - // test for "crypto" feature and check qca version number - QString qca_prefix, qca_incdir, qca_libdir, qca_crypto_prf; - qca_prefix = conf->getenv("QC_WITH_QCA"); - - QString proextra; - if(!qca_prefix.isEmpty()) { - qca_incdir = qca_prefix + "/include"; - qca_libdir = qca_prefix + "/lib"; - qca_crypto_prf = internal_crypto_prf(qca_incdir, qca_libdir); - proextra = - "CONFIG += qt\n" - "QT -= gui\n"; - proextra += qca_crypto_prf; - } else { - proextra = - "CONFIG += qt crypto\n" - "QT -= gui\n"; - } - - QString str = - "#include \n" - "\n" - "int main()\n" - "{\n" - " unsigned long x = QCA_VERSION;\n" - " if(x >= 0x020000 && x < 0x030000) return 0; else return 1;\n" - "}\n"; - - if(release) - { - int ret; - if(!conf->doCompileAndLink(str, QStringList(), QString(), proextra + "CONFIG += release\n", &ret)) - return false; - if(ret != 0) - return false; - } - - if(debug) - { - int ret; - if(!conf->doCompileAndLink(str, QStringList(), QString(), proextra + "CONFIG += debug\n", &ret)) - return false; - if(ret != 0) - return false; - } - - if(!qca_prefix.isEmpty()) - conf->addExtra(qca_crypto_prf); - else - conf->addExtra("CONFIG += crypto\n"); - - return true; - } -}; diff -Nru qca2-2.0.3/qcm/qt42.qcm qca2-2.1.0/qcm/qt42.qcm --- qca2-2.0.3/qcm/qt42.qcm 2007-05-01 20:47:57.000000000 +0000 +++ qca2-2.1.0/qcm/qt42.qcm 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -/* ------BEGIN QCMOD----- -name: Qt >= 4.2 ------END QCMOD----- -*/ -class qc_qt42 : public ConfObj -{ -public: - qc_qt42(Conf *c) : ConfObj(c) {} - QString name() const { return "Qt >= 4.2"; } - QString shortname() const { return "qt42"; } - bool exec() - { - conf->debug(QString("QT_VERSION = 0x%1").arg(QString::number(QT_VERSION, 16))); - if(QT_VERSION >= 0x040200) - return true; - else - return false; - } -}; diff -Nru qca2-2.0.3/qcm/universal.qcm qca2-2.1.0/qcm/universal.qcm --- qca2-2.0.3/qcm/universal.qcm 2007-05-13 22:05:31.000000000 +0000 +++ qca2-2.1.0/qcm/universal.qcm 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -/* ------BEGIN QCMOD----- -name: Mac universal binary support -section: project -arg: universal,Build with Mac universal binary support. -arg: mac-sdk=[path],Path to Mac universal SDK (PPC host only). ------END QCMOD----- -*/ - -#define QC_UNIVERSAL -bool qc_universal_enabled = false; -QString qc_universal_sdk; - -//---------------------------------------------------------------------------- -// qc_universal -//---------------------------------------------------------------------------- -class qc_universal : public ConfObj -{ -public: - qc_universal(Conf *c) : ConfObj(c) {} - QString name() const { return "Mac universal binary support"; } - QString shortname() const { return "universal"; } - QString checkString() const { return QString(); } - - bool exec() - { -#ifdef Q_OS_MAC - if(qc_getenv("QC_UNIVERSAL") == "Y") - { - qc_universal_enabled = true; - - QString str = - "contains(QT_CONFIG,x86):contains(QT_CONFIG,ppc) {\n" - " CONFIG += x86 ppc\n" - "}\n"; - - QString sdk = qc_getenv("QC_MAC_SDK"); - if(!sdk.isEmpty()) - { - str += QString("QMAKE_MAC_SDK = %1\n").arg(sdk); - qc_universal_sdk = sdk; - } - - conf->addExtra(str); - } -#endif - return true; - } -}; diff -Nru qca2-2.0.3/README qca2-2.1.0/README --- qca2-2.0.3/README 2010-11-27 21:14:12.000000000 +0000 +++ qca2-2.1.0/README 2014-11-06 08:15:45.000000000 +0000 @@ -1,6 +1,6 @@ -Qt Cryptographic Architecture (QCA) version 2.0.3 +Qt Cryptographic Architecture (QCA) version 2.1.0 ------------------------------------------------- -Date: November 27th, 2010 +Date: November 6th, 2014 Website: http://delta.affinix.com/qca/ Mailing List: Delta Project @@ -8,9 +8,12 @@ Justin Karneges (March 2007 - August 2007 under Barracuda Networks employment) -Development, Documentation, Unittests (2004-current): +Development, Documentation, Unittests (2004-2009): Brad Hards +Development (2013-current) + Ivan Romanov + Special Thanks: Portugal Telecom (SAPO division), for sponsorship Alon Bar-Lev, for smart card and design assistance @@ -33,6 +36,38 @@ Changes ------- + New in 2.1.0 + - Ported to Qt5 (Qt4 alsa supported) + - New building system. CMake instead of qmake + - Added CTR symetric cipher support to qca core + - Added no padding encryption algorithm to qca core + - qcatool2 renamed to qcatool + - fixed crash in qcatool when only options provided on command line without any commands + - Use plugins installation path as hard-coded runtime plugins search path + - Added new functiion pluginPaths + - Added functions to get runtime QCA version + - Fixed 'no watch file' warnings in FileWatch + - Added EME_PKCS1v15_SSL Encryption Algorithm + - New implementation of SafeTimer to prevent crashes + - Updated certificates for unittests + - RSA Keys are permutable, can encrypt with private and decrypt with public + - Add unloadProvider() function for symmetry with insertProvider() + - Overloaded "makeKey" to derive a password depending on a time factor + - Remove pointer to deinit() routine from QCoreApplication at deinitialization + - Fix a couple of crashes where all plugins might not be available + - Fix operating on keys with unrelated expired subkeys + - Fixed timers in Synchronizer class + - Dropped randomunittest + - Fixed many unittests + - qca-gnupg: internal refactoring + - qca-gnupg: try both gpg and gpg2 to find gnupg executable + - qca-gnupg: fixed some encodings problem + - qca-ossl: no DSA_* dl groups in FIPS specification + - qca-ossl: added missed signatures to CRLContext + - qca-ossl: fixed certs time zone + - qca-nss: fixed KeyLenght for Cipher + - qca-botan: fixed getting result size for ciphers + New in 2.0.3 - Bugfix release, forward and backward compatible with 2.0.x - Fix compilation when using Qt/Windows SDK diff -Nru qca2-2.0.3/src/botantools/botan/botan/secmem.h qca2-2.1.0/src/botantools/botan/botan/secmem.h --- qca2-2.0.3/src/botantools/botan/botan/secmem.h 2007-04-19 21:26:13.000000000 +0000 +++ qca2-2.1.0/src/botantools/botan/botan/secmem.h 2014-11-06 08:15:45.000000000 +0000 @@ -191,15 +191,15 @@ { public: MemoryVector& operator=(const MemoryRegion& in) - { if(this != &in) set(in); return (*this); } + { if(this != &in) this->set(in); return (*this); } MemoryVector(u32bit n = 0) { MemoryRegion::init(false, n); } MemoryVector(const T in[], u32bit n) - { MemoryRegion::init(false); set(in, n); } + { MemoryRegion::init(false); this->set(in, n); } MemoryVector(const MemoryRegion& in) - { MemoryRegion::init(false); set(in); } + { MemoryRegion::init(false); this->set(in); } MemoryVector(const MemoryRegion& in1, const MemoryRegion& in2) - { MemoryRegion::init(false); set(in1); append(in2); } + { MemoryRegion::init(false); this->set(in1); append(in2); } }; /************************************************* @@ -210,15 +210,15 @@ { public: SecureVector& operator=(const MemoryRegion& in) - { if(this != &in) set(in); return (*this); } + { if(this != &in) this->set(in); return (*this); } SecureVector(u32bit n = 0) { MemoryRegion::init(true, n); } SecureVector(const T in[], u32bit n) - { MemoryRegion::init(true); set(in, n); } + { MemoryRegion::init(true); this->set(in, n); } SecureVector(const MemoryRegion& in) - { MemoryRegion::init(true); set(in); } + { MemoryRegion::init(true); this->set(in); } SecureVector(const MemoryRegion& in1, const MemoryRegion& in2) - { MemoryRegion::init(true); set(in1); append(in2); } + { MemoryRegion::init(true); this->set(in1); append(in2); } }; /************************************************* @@ -229,14 +229,14 @@ { public: SecureBuffer& operator=(const SecureBuffer& in) - { if(this != &in) set(in); return (*this); } + { if(this != &in) this->set(in); return (*this); } SecureBuffer() { MemoryRegion::init(true, L); } SecureBuffer(const T in[], u32bit n) { MemoryRegion::init(true, L); copy(in, n); } private: SecureBuffer& operator=(const MemoryRegion& in) - { if(this != &in) set(in); return (*this); } + { if(this != &in) this->set(in); return (*this); } }; } diff -Nru qca2-2.0.3/src/botantools/botantools.pri qca2-2.1.0/src/botantools/botantools.pri --- qca2-2.0.3/src/botantools/botantools.pri 2007-04-19 21:26:13.000000000 +0000 +++ qca2-2.1.0/src/botantools/botantools.pri 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -BOTAN_BASE = $$PWD/botan - -DEFINES += \ - BOTAN_TYPES_QT \ - BOTAN_TOOLS_ONLY \ - BOTAN_FIX_GDB \ - BOTAN_MINIMAL_BIGINT - -DEFINES += BOTAN_MP_WORD_BITS=32 -DEFINES += BOTAN_KARAT_MUL_THRESHOLD=12 -DEFINES += BOTAN_KARAT_SQR_THRESHOLD=12 - -DEFINES += BOTAN_EXT_MUTEX_QT -unix:DEFINES += BOTAN_EXT_ALLOC_MMAP - -INCLUDEPATH += $$BOTAN_BASE -SOURCES += \ - $$BOTAN_BASE/util.cpp \ - $$BOTAN_BASE/charset.cpp \ - $$BOTAN_BASE/parsing.cpp \ - $$BOTAN_BASE/exceptn.cpp \ - $$BOTAN_BASE/mutex.cpp \ - $$BOTAN_BASE/mux_qt/mux_qt.cpp \ - $$BOTAN_BASE/defalloc.cpp \ - $$BOTAN_BASE/mem_pool.cpp \ - $$BOTAN_BASE/libstate.cpp \ - $$BOTAN_BASE/modules.cpp \ - $$BOTAN_BASE/mp_comba.cpp \ - $$BOTAN_BASE/mp_mul.cpp \ - $$BOTAN_BASE/mp_mulop.cpp \ - $$BOTAN_BASE/mp_shift.cpp \ - $$BOTAN_BASE/mp_asm.cpp \ - $$BOTAN_BASE/mp_misc.cpp \ - $$BOTAN_BASE/divide.cpp \ - $$BOTAN_BASE/bit_ops.cpp \ - $$BOTAN_BASE/big_base.cpp \ - $$BOTAN_BASE/big_code.cpp \ - $$BOTAN_BASE/big_io.cpp \ - $$BOTAN_BASE/big_ops2.cpp \ - $$BOTAN_BASE/big_ops3.cpp - -unix:{ - SOURCES += \ - $$BOTAN_BASE/ml_unix/mlock.cpp \ - $$BOTAN_BASE/alloc_mmap/mmap_mem.cpp -} - -windows:{ - SOURCES += \ - $$BOTAN_BASE/ml_win32/mlock.cpp -} - diff -Nru qca2-2.0.3/src/botantools/btest.pro qca2-2.1.0/src/botantools/btest.pro --- qca2-2.0.3/src/botantools/btest.pro 2007-04-19 21:26:13.000000000 +0000 +++ qca2-2.1.0/src/botantools/btest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -CONFIG += console -CONFIG -= app_bundle -QT -= gui - -include(botantools.pri) - -SOURCES += btest.cpp diff -Nru qca2-2.0.3/src/CMakeLists.txt qca2-2.1.0/src/CMakeLists.txt --- qca2-2.0.3/src/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/src/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,176 @@ +include(CheckIncludeFiles) +CHECK_INCLUDE_FILES(sys/filio.h HAVE_SYS_FILIO_H) +IF(HAVE_SYS_FILIO_H) + ADD_DEFINITIONS(-DHAVE_SYS_FILIO_H) +ENDIF(HAVE_SYS_FILIO_H) + +INCLUDE(CheckCXXSourceCompiles) +CHECK_CXX_SOURCE_COMPILES(" +# include +# include +int main() { void *f = 0; return mlock(f,8); } +" MLOCK_TAKES_VOID) +if(NOT MLOCK_TAKES_VOID) + MESSAGE(STATUS "mlock(2) does not take a void *") + ADD_DEFINITIONS(-DMLOCK_NOT_VOID_PTR) +endif(NOT MLOCK_TAKES_VOID) + +if(DEVELOPER_MODE) + add_definitions(-DQCA_PLUGIN_PATH="${CMAKE_BINARY_DIR}/lib/${QCA_LIB_NAME}") +else() + if(USE_RELATIVE_PATHS) + add_definitions(-DQCA_PLUGIN_PATH="${QCA_PREFIX_INSTALL_DIR}/${QCA_PLUGINS_INSTALL_DIR}") + else() + add_definitions(-DQCA_PLUGIN_PATH="${QCA_PLUGINS_INSTALL_DIR}") + endif() +endif() + +# base source files + + +SET( nonmoc_SOURCES + qca_tools.cpp + qca_plugin.cpp + qca_textfilter.cpp + qca_basic.cpp + support/logger.cpp +) + +SET( moc_SOURCES + qca_cert.cpp + qca_core.cpp + qca_default.cpp + qca_keystore.cpp + qca_publickey.cpp + qca_safetimer.cpp + qca_securelayer.cpp + qca_securemessage.cpp + support/qpipe.cpp + support/console.cpp + support/synchronizer.cpp + support/dirwatch.cpp + support/syncthread.cpp +) + +IF (WIN32) + SET( nonmoc_SOURCES ${nonmoc_SOURCES} qca_systemstore_win.cpp ) +elseif(APPLE) + set( nonmoc_SOURCES ${nonmoc_SOURCES} qca_systemstore_mac.cpp) +else() + SET( nonmoc_SOURCES ${nonmoc_SOURCES} qca_systemstore_flatfile.cpp ) +endif() + +# Support files +#SET( qca_HEADERS ${qca_HEADERS} support/dirwatch/dirwatch_p.h ) + +# Botan tools +SET( botan_BASE botantools/botan ) + + +INCLUDE_DIRECTORIES(${QT_QTCORE_INCLUDE_DIR} support ${botan_BASE} ) + +ADD_DEFINITIONS( + -DBOTAN_TYPES_QT + -DBOTAN_NO_INIT_H + -DBOTAN_NO_CONF_H + -DBOTAN_TOOLS_ONLY + -DBOTAN_MINIMAL_BIGINT +) + +ADD_DEFINITIONS( + -DBOTAN_MP_WORD_BITS=32 + -DBOTAN_KARAT_MUL_THRESHOLD=12 + -DBOTAN_KARAT_SQR_THRESHOLD=12 + -DBOTAN_EXT_MUTEX_QT +) + +if(UNIX) + ADD_DEFINITIONS( -DBOTAN_EXT_ALLOC_MMAP) +endif(UNIX) + +SET( botan_SOURCES + ${botan_BASE}/util.cpp + ${botan_BASE}/exceptn.cpp + ${botan_BASE}/mutex.cpp + ${botan_BASE}/mux_qt/mux_qt.cpp + ${botan_BASE}/charset.cpp + ${botan_BASE}/defalloc.cpp + ${botan_BASE}/mp_comba.cpp + ${botan_BASE}/mp_mul.cpp + ${botan_BASE}/mp_shift.cpp + ${botan_BASE}/mp_misc.cpp + ${botan_BASE}/divide.cpp + ${botan_BASE}/big_base.cpp + ${botan_BASE}/big_code.cpp + ${botan_BASE}/big_io.cpp + ${botan_BASE}/big_ops2.cpp + ${botan_BASE}/big_ops3.cpp + ${botan_BASE}/bit_ops.cpp + ${botan_BASE}/libstate.cpp + ${botan_BASE}/mem_pool.cpp + ${botan_BASE}/modules.cpp + ${botan_BASE}/mp_asm.cpp + ${botan_BASE}/mp_mulop.cpp + ${botan_BASE}/parsing.cpp +) + +IF (UNIX) + SET( botan_SOURCES ${botan_SOURCES} ${botan_BASE}/ml_unix/mlock.cpp) + SET( botan_SOURCES ${botan_SOURCES} ${botan_BASE}/alloc_mmap/mmap_mem.cpp) +ENDIF (UNIX) + +IF(WIN32) + SET( botan_SOURCES ${botan_SOURCES} ${botan_BASE}/ml_win32/mlock.cpp) +ENDIF(WIN32) + +MY_AUTOMOC( moc_SOURCES ) +SET( SOURCES ${SOURCES} ${moc_SOURCES} ${nonmoc_SOURCES} ) + +SET( SOURCES ${SOURCES} ${botan_SOURCES}) + +qt4_wrap_cpp( SOURCES "${qca_INCLUDEDIR}/QtCrypto/qca_core.h") +qt4_wrap_cpp( SOURCES "${qca_INCLUDEDIR}/QtCrypto/qca_cert.h") +qt4_wrap_cpp( SOURCES "${qca_INCLUDEDIR}/QtCrypto/qca_keystore.h") +qt4_wrap_cpp( SOURCES "${qca_INCLUDEDIR}/QtCrypto/qcaprovider.h") +qt4_wrap_cpp( SOURCES "${qca_INCLUDEDIR}/QtCrypto/qca_publickey.h") +qt4_wrap_cpp( SOURCES "${qca_INCLUDEDIR}/QtCrypto/qca_securelayer.h") +qt4_wrap_cpp( SOURCES "${qca_INCLUDEDIR}/QtCrypto/qca_securemessage.h") +qt4_wrap_cpp( SOURCES "${qca_INCLUDEDIR}/QtCrypto/qca_support.h") +qt4_wrap_cpp( SOURCES "${qca_INCLUDEDIR}/QtCrypto/qpipe.h") +qt4_wrap_cpp( SOURCES "qca_safeobj.h") +qt4_wrap_cpp( SOURCES "${qca_INCLUDEDIR}/QtCrypto/qca_safetimer.h") + +ADD_LIBRARY(${QCA_LIB_NAME} ${LIBRARY_TYPE} ${SOURCES} ${public_HEADERS}) +TARGET_LINK_LIBRARIES(${QCA_LIB_NAME} ${QT_QTCORE_LIBRARY}) + +if(WIN32) + TARGET_LINK_LIBRARIES(${QCA_LIB_NAME} crypt32 ws2_32) +endif(WIN32) + +if(APPLE) + set(CARBON_LIBRARY_SECURITY "-framework Security") + TARGET_LINK_LIBRARIES(${QCA_LIB_NAME} ${CARBON_LIBRARY} ${CARBON_LIBRARY_SECURITY}) +endif(APPLE) + +set_target_properties(${QCA_LIB_NAME} PROPERTIES + VERSION ${QCA_LIB_MAJOR_VERSION}.${QCA_LIB_MINOR_VERSION}.${QCA_LIB_PATCH_VERSION} + SOVERSION ${QCA_LIB_MAJOR_VERSION} + DEFINE_SYMBOL QCA_MAKEDLL + PUBLIC_HEADER "${public_HEADERS}" + FRAMEWORK ${OSX_FRAMEWORK} + EXPORT_NAME qca + ) + +if(NOT DEVELOPER_MODE) + install(TARGETS ${QCA_LIB_NAME} + EXPORT QCATargets + LIBRARY DESTINATION "${QCA_LIBRARY_INSTALL_DIR}" + RUNTIME DESTINATION "${QCA_BINARY_INSTALL_DIR}" + ARCHIVE DESTINATION "${QCA_LIBRARY_INSTALL_DIR}" + FRAMEWORK DESTINATION "${QCA_LIBRARY_INSTALL_DIR}" + PUBLIC_HEADER DESTINATION "${QCA_INCLUDE_INSTALL_DIR}/QtCrypto" INCLUDES DESTINATION "${QCA_INCLUDE_INSTALL_DIR}/QtCrypto" + ) + + install_pdb(${QCA_LIB_NAME} ${QCA_BINARY_INSTALL_DIR}) +endif() + diff -Nru qca2-2.0.3/src/qca_basic.cpp qca2-2.1.0/src/qca_basic.cpp --- qca2-2.0.3/src/qca_basic.cpp 2009-04-24 05:54:13.000000000 +0000 +++ qca2-2.1.0/src/qca_basic.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -393,6 +393,9 @@ case ECB: mode = "ecb"; break; + case CTR: + mode = "ctr"; + break; default: Q_ASSERT(0); } @@ -539,6 +542,19 @@ return static_cast(context())->makeKey(secret, salt, keyLength, iterationCount); } +SymmetricKey KeyDerivationFunction::makeKey(const SecureArray &secret, + const InitializationVector &salt, + unsigned int keyLength, + int msecInterval, + unsigned int *iterationCount) +{ + return static_cast(context())->makeKey(secret, + salt, + keyLength, + msecInterval, + iterationCount); +} + QString KeyDerivationFunction::withAlgorithm(const QString &kdfType, const QString &algType) { return (kdfType + '(' + algType + ')'); diff -Nru qca2-2.0.3/src/qca_core.cpp qca2-2.1.0/src/qca_core.cpp --- qca2-2.0.3/src/qca_core.cpp 2009-04-24 15:23:36.000000000 +0000 +++ qca2-2.1.0/src/qca_core.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -34,6 +34,7 @@ #include #include #include +#include #ifdef Q_OS_UNIX # include @@ -44,6 +45,26 @@ return QCA_VERSION; } +const char *qcaVersionStr() +{ + return QCA_VERSION_STR; +} + +int qcaMajorVersion() +{ + return QCA_MAJOR_VERSION; +} + +int qcaMinorVersion() +{ + return QCA_MINOR_VERSION; +} + +int qcaPatchVersion() +{ + return QCA_PATCH_VERSION; +} + namespace QCA { // from qca_tools @@ -241,6 +262,15 @@ --(global->refs); if(global->refs == 0) { + // In order to maintain symmetry with the init() function, remove the + // post routine from QCoreApplication. This is needed in case when the + // QCA library is unloaded before QCoreApplication instance completes: + // QCoreApplication d-tor would try to execute the deinit() function, + // which would no longer be there. + // Note that this function is documented only in Qt 5.3 and later, but + // it has been present since ancient times with the same semantics. + qRemovePostRoutine(deinit); + delete global; global = 0; botan_deinit(); @@ -375,6 +405,16 @@ return global->manager->add(p, priority); } +bool unloadProvider(const QString &name) +{ + if(!global_check_load()) + return false; + + global->ensure_first_scan(); + + return global->manager->unload(name); +} + void setProviderPriority(const QString &name, int priority) { if(!global_check_load()) @@ -413,6 +453,37 @@ return global->manager->find("default"); } +QStringList pluginPaths() +{ + QStringList paths; +#ifndef DEVELOPER_MODE + const QString qcaPluginPath = qgetenv("QCA_PLUGIN_PATH"); + if (!qcaPluginPath.isEmpty()) + { +#ifdef Q_OS_WIN + QLatin1Char pathSep(';'); +#else + QLatin1Char pathSep(':'); +#endif + foreach (const QString &path, qcaPluginPath.split(pathSep)) + { + QString canonicalPath = QDir(path).canonicalPath(); + if (!canonicalPath.isEmpty()) + paths << canonicalPath; + } + + } + paths += QCoreApplication::libraryPaths(); +#endif + // In developer mode load plugins only from buildtree. + // In regular mode QCA_PLUGIN_PATH is path where plugins was installed + paths << QDir(QCA_PLUGIN_PATH).canonicalPath(); +#ifndef DEVELOPER_MODE + paths.removeDuplicates(); +#endif + return paths; +} + void scanForPlugins() { if(!global_check_load()) diff -Nru qca2-2.0.3/src/qca_default.cpp qca2-2.1.0/src/qca_default.cpp --- qca2-2.0.3/src/qca_default.cpp 2008-05-16 20:41:50.000000000 +0000 +++ qca2-2.1.0/src/qca_default.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -134,7 +134,7 @@ ghost@aladdin.com */ -/* $Id: qca_default.cpp 808523 2008-05-16 20:41:50Z infiniti $ */ +/* $Id$ */ /* Independent implementation of MD5 (RFC 1321). diff -Nru qca2-2.0.3/src/qca_keystore.cpp qca2-2.1.0/src/qca_keystore.cpp --- qca2-2.0.3/src/qca_keystore.cpp 2008-06-02 20:20:37.000000000 +0000 +++ qca2-2.1.0/src/qca_keystore.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -106,7 +106,15 @@ KeyStore::Type type; bool isReadOnly; - Item() : trackerId(-1), updateCount(0), owner(0), storeContextId(-1) + Item() + : trackerId(-1) + , updateCount(0) + , owner(0) + , storeContextId(-1) + , storeId("") + , name("") + , type(KeyStore::System) + , isReadOnly(false) { } }; @@ -308,6 +316,16 @@ if(at == -1) return QString(); Item &i = items[at]; +#if QT_VERSION >= 0x050000 + if(v.canConvert()) + return i.owner->writeEntry(i.storeContextId, v.value()); + else if(v.canConvert()) + return i.owner->writeEntry(i.storeContextId, v.value()); + else if(v.canConvert()) + return i.owner->writeEntry(i.storeContextId, v.value()); + else if(v.canConvert()) + return i.owner->writeEntry(i.storeContextId, v.value()); +#else if(qVariantCanConvert(v)) return i.owner->writeEntry(i.storeContextId, qVariantValue(v)); else if(qVariantCanConvert(v)) @@ -316,6 +334,7 @@ return i.owner->writeEntry(i.storeContextId, qVariantValue(v)); else if(qVariantCanConvert(v)) return i.owner->writeEntry(i.storeContextId, qVariantValue(v)); +#endif else return QString(); } @@ -783,7 +802,11 @@ { QString storeId = this->storeId(); QString entryId = id(); +#if QT_VERSION >= 0x050000 + KeyStoreEntryContext *c = (KeyStoreEntryContext *)trackercall("entry", QVariantList() << storeId << entryId).value(); +#else KeyStoreEntryContext *c = (KeyStoreEntryContext *)qVariantValue(trackercall("entry", QVariantList() << storeId << entryId)); +#endif if(c) change(c); return isAvailable(); @@ -977,10 +1000,24 @@ virtual void run() { if(type == EntryList) +#if QT_VERSION >= 0x050000 + entryList = trackercall("entryList", QVariantList() << trackerId).value< QList >(); +#else entryList = qVariantValue< QList >(trackercall("entryList", QVariantList() << trackerId)); +#endif else if(type == WriteEntry) { QVariant arg; +#if QT_VERSION >= 0x050000 + if(wentry.type == KeyStoreWriteEntry::TypeKeyBundle) + arg.setValue(wentry.keyBundle); + else if(wentry.type == KeyStoreWriteEntry::TypeCertificate) + arg.setValue(wentry.cert); + else if(wentry.type == KeyStoreWriteEntry::TypeCRL) + arg.setValue(wentry.crl); + else if(wentry.type == KeyStoreWriteEntry::TypePGPKey) + arg.setValue(wentry.pgpKey); +#else if(wentry.type == KeyStoreWriteEntry::TypeKeyBundle) qVariantSetValue(arg, wentry.keyBundle); else if(wentry.type == KeyStoreWriteEntry::TypeCertificate) @@ -989,6 +1026,7 @@ qVariantSetValue(arg, wentry.crl); else if(wentry.type == KeyStoreWriteEntry::TypePGPKey) qVariantSetValue(arg, wentry.pgpKey); +#endif // note: each variant in the argument list is resolved // to its native type. so even though it looks like @@ -1205,7 +1243,11 @@ if(d->trackerId == -1) return QList(); +#if QT_VERSION >= 0x050000 + return trackercall("entryList", QVariantList() << d->trackerId).value< QList >(); +#else return qVariantValue< QList >(trackercall("entryList", QVariantList() << d->trackerId)); +#endif } bool KeyStore::holdsTrustedCertificates() const @@ -1213,7 +1255,11 @@ QList list; if(d->trackerId == -1) return false; +#if QT_VERSION >= 0x050000 + list = trackercall("entryTypes", QVariantList() << d->trackerId).value< QList >(); +#else list = qVariantValue< QList >(trackercall("entryTypes", QVariantList() << d->trackerId)); +#endif if(list.contains(KeyStoreEntry::TypeCertificate) || list.contains(KeyStoreEntry::TypeCRL)) return true; return false; @@ -1224,7 +1270,11 @@ QList list; if(d->trackerId == -1) return false; +#if QT_VERSION >= 0x050000 + list = trackercall("entryTypes", QVariantList() << d->trackerId).value< QList >(); +#else list = qVariantValue< QList >(trackercall("entryTypes", QVariantList() << d->trackerId)); +#endif if(list.contains(KeyStoreEntry::TypeKeyBundle) || list.contains(KeyStoreEntry::TypePGPSecretKey)) return true; return false; @@ -1235,7 +1285,11 @@ QList list; if(d->trackerId == -1) return false; +#if QT_VERSION >= 0x050000 + list = trackercall("entryTypes", QVariantList() << d->trackerId).value< QList >(); +#else list = qVariantValue< QList >(trackercall("entryTypes", QVariantList() << d->trackerId)); +#endif if(list.contains(KeyStoreEntry::TypePGPPublicKey)) return true; return false; diff -Nru qca2-2.0.3/src/qca_plugin.cpp qca2-2.1.0/src/qca_plugin.cpp --- qca2-2.0.3/src/qca_plugin.cpp 2010-11-27 21:14:12.000000000 +0000 +++ qca2-2.1.0/src/qca_plugin.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -366,13 +366,16 @@ if(qgetenv("QCA_NO_PLUGINS") == "1") return; - // check plugin files - const QStringList dirs = QCoreApplication::libraryPaths(); + const QStringList dirs = pluginPaths(); if(dirs.isEmpty()) logDebug("No Qt Library Paths"); for(QStringList::ConstIterator it = dirs.begin(); it != dirs.end(); ++it) { - logDebug(QString("Checking Qt Library Path: %1").arg(*it)); +#ifdef DEVELOPER_MODE + logDebug(QString("Checking QCA build tree Path: %1").arg(QDir::toNativeSeparators(*it))); +#else + logDebug(QString("Checking Qt Library Path: %1").arg(QDir::toNativeSeparators(*it))); +#endif QDir libpath(*it); QDir dir(libpath.filePath(PLUGIN_SUBDIR)); if(!dir.exists()) @@ -381,10 +384,7 @@ continue; } - QStringList entryList = dir.entryList(); - // filter out "." and ".." to keep debug output cleaner - entryList.removeAll("."); - entryList.removeAll(".."); + QStringList entryList = dir.entryList(QDir::Files); if(entryList.isEmpty()) { logDebug(" (No files in 'crypto' subdirectory)"); @@ -489,21 +489,26 @@ return true; } -void ProviderManager::unload(const QString &name) +bool ProviderManager::unload(const QString &name) { for(int n = 0; n < providerItemList.count(); ++n) { ProviderItem *i = providerItemList[n]; if(i->p && i->p->name() == name) { + if(i->initted()) + i->p->deinit(); + delete i; providerItemList.removeAt(n); providerList.removeAt(n); logDebug(QString("Unloaded: %1").arg(name)); - return; + return true; } } + + return false; } void ProviderManager::unloadAll() diff -Nru qca2-2.0.3/src/qca_plugin.h qca2-2.1.0/src/qca_plugin.h --- qca2-2.0.3/src/qca_plugin.h 2008-05-16 21:33:02.000000000 +0000 +++ qca2-2.1.0/src/qca_plugin.h 2014-11-06 08:15:45.000000000 +0000 @@ -40,7 +40,7 @@ void scan(); bool add(Provider *p, int priority); - void unload(const QString &name); + bool unload(const QString &name); void unloadAll(); void setDefault(Provider *p); Provider *find(Provider *p) const; diff -Nru qca2-2.0.3/src/qca_publickey.cpp qca2-2.1.0/src/qca_publickey.cpp --- qca2-2.0.3/src/qca_publickey.cpp 2008-05-16 20:41:50.000000000 +0000 +++ qca2-2.1.0/src/qca_publickey.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -531,16 +531,19 @@ BigInteger DLGroup::p() const { + Q_ASSERT(d); return d->p; } BigInteger DLGroup::q() const { + Q_ASSERT(d); return d->q; } BigInteger DLGroup::g() const { + Q_ASSERT(d); return d->g; } @@ -804,6 +807,11 @@ return isRSA(); } +bool PublicKey::canDecrypt() const +{ + return isRSA(); +} + bool PublicKey::canVerify() const { return (isRSA() || isDSA()); @@ -811,29 +819,55 @@ int PublicKey::maximumEncryptSize(EncryptionAlgorithm alg) const { - return static_cast(context())->key()->maximumEncryptSize(alg); + const PKeyContext* ctx = qobject_cast(context()); + if (ctx) + return ctx->key()->maximumEncryptSize(alg); + else + return -1; } SecureArray PublicKey::encrypt(const SecureArray &a, EncryptionAlgorithm alg) { - return static_cast(context())->key()->encrypt(a, alg); + PKeyContext* ctx = qobject_cast(context()); + if (ctx) + return ctx->key()->encrypt(a, alg); + else + return SecureArray(); +} + +bool PublicKey::decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg) +{ + PKeyContext* ctx = qobject_cast(context()); + if (ctx) + return ctx->key()->decrypt(in, out, alg); + else + return false; } void PublicKey::startVerify(SignatureAlgorithm alg, SignatureFormat format) { if(isDSA() && format == DefaultFormat) format = IEEE_1363; - static_cast(context())->key()->startVerify(alg, format); + PKeyContext* ctx = qobject_cast(context()); + if(ctx) + ctx->key()->startVerify(alg, format); + } void PublicKey::update(const MemoryRegion &a) { - static_cast(context())->key()->update(a); + PKeyContext* ctx = qobject_cast(context()); + if(ctx) { + ctx->key()->update(a); + } } bool PublicKey::validSignature(const QByteArray &sig) { - return static_cast(context())->key()->endVerify(sig); + PKeyContext* ctx = qobject_cast(context()); + if(ctx) + return ctx->key()->endVerify(sig); + return false; } bool PublicKey::verifyMessage(const MemoryRegion &a, const QByteArray &sig, SignatureAlgorithm alg, SignatureFormat format) @@ -857,7 +891,7 @@ else { PKeyContext *pk = static_cast(getContext("pkey", p)); - if(pk->importKey(cur->key())) + if(pk && pk->importKey(cur->key())) out = pk->publicToDER(); delete pk; } @@ -868,6 +902,8 @@ { QString out; const PKeyContext *cur = static_cast(context()); + if(!cur) + return out; Provider *p = providerForIOType(type(), cur); if(!p) return out; @@ -878,7 +914,7 @@ else { PKeyContext *pk = static_cast(getContext("pkey", p)); - if(pk->importKey(cur->key())) + if(pk && pk->importKey(cur->key())) out = pk->publicToPEM(); delete pk; } @@ -964,16 +1000,31 @@ return isRSA(); } +bool PrivateKey::canEncrypt() const +{ + return isRSA(); +} + bool PrivateKey::canSign() const { return (isRSA() || isDSA()); } +int PrivateKey::maximumEncryptSize(EncryptionAlgorithm alg) const +{ + return static_cast(context())->key()->maximumEncryptSize(alg); +} + bool PrivateKey::decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg) { return static_cast(context())->key()->decrypt(in, out, alg); } +SecureArray PrivateKey::encrypt(const SecureArray &a, EncryptionAlgorithm alg) +{ + return static_cast(context())->key()->encrypt(a, alg); +} + void PrivateKey::startSign(SignatureAlgorithm alg, SignatureFormat format) { if(isDSA() && format == DefaultFormat) @@ -1191,6 +1242,8 @@ d->key = PrivateKey(); d->wasBlocking = d->blocking; d->k = static_cast(getContext("rsa", provider)); + if (!d->k) + return PrivateKey(); d->dest = static_cast(getContext("pkey", d->k->provider())); if(!d->blocking) @@ -1277,19 +1330,22 @@ else p = providerForGroupSet(set); - d->group = DLGroup(); - d->wasBlocking = d->blocking; d->dc = static_cast(getContext("dlgroup", p)); + d->group = DLGroup(); - if(!d->blocking) - { - connect(d->dc, SIGNAL(finished()), d, SLOT(done_group())); - d->dc->fetchGroup(set, false); - } - else + if (d->dc) { - d->dc->fetchGroup(set, true); - d->done_group(); + d->wasBlocking = d->blocking; + if(!d->blocking) + { + connect(d->dc, SIGNAL(finished()), d, SLOT(done_group())); + d->dc->fetchGroup(set, false); + } + else + { + d->dc->fetchGroup(set, true); + d->done_group(); + } } return d->group; diff -Nru qca2-2.0.3/src/qca_safeobj.cpp qca2-2.1.0/src/qca_safeobj.cpp --- qca2-2.0.3/src/qca_safeobj.cpp 2008-05-16 22:14:55.000000000 +0000 +++ qca2-2.1.0/src/qca_safeobj.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -/* - * qca_safeobj.cpp - Qt Cryptographic Architecture - * Copyright (C) 2008 Justin Karneges - * - * 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 - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA - * - */ - -#include "qca_safeobj.h" - -namespace QCA { - -void releaseAndDeleteLater(QObject *owner, QObject *obj) -{ - obj->disconnect(owner); - obj->setParent(0); - obj->deleteLater(); -} - -} diff -Nru qca2-2.0.3/src/qca_safeobj.h qca2-2.1.0/src/qca_safeobj.h --- qca2-2.0.3/src/qca_safeobj.h 2008-05-17 04:12:00.000000000 +0000 +++ qca2-2.1.0/src/qca_safeobj.h 2014-11-06 08:15:45.000000000 +0000 @@ -24,8 +24,8 @@ // NOTE: this API is private to QCA -#include #include +#include namespace QCA { @@ -33,42 +33,14 @@ // obj->disconnect(owner); // to prevent future signals to owner // obj->setParent(0); // to prevent delete if parent is deleted // obj->deleteLater(); // now we can forget about the object -void releaseAndDeleteLater(QObject *owner, QObject *obj); - -class SafeTimer : public QObject +inline void releaseAndDeleteLater(QObject *owner, QObject *obj) { - Q_OBJECT -public: - SafeTimer(QObject *parent = 0) : - QObject(parent) - { - t = new QTimer(this); - connect(t, SIGNAL(timeout()), SIGNAL(timeout())); - } - - ~SafeTimer() - { - releaseAndDeleteLater(this, t); - } - - int interval() const { return t->interval(); } - bool isActive() const { return t->isActive(); } - bool isSingleShot() const { return t->isSingleShot(); } - void setInterval(int msec) { t->setInterval(msec); } - void setSingleShot(bool singleShot) { t->setSingleShot(singleShot); } - int timerId() const { return t->timerId(); } - -public slots: - void start(int msec) { t->start(msec); } - void start() { t->start(); } - void stop() { t->stop(); } - -signals: - void timeout(); - -private: - QTimer *t; -}; + obj->disconnect(owner); + obj->setParent(0); + obj->deleteLater(); +} + + class SafeSocketNotifier : public QObject { diff -Nru qca2-2.0.3/src/qca_safetimer.cpp qca2-2.1.0/src/qca_safetimer.cpp --- qca2-2.0.3/src/qca_safetimer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/src/qca_safetimer.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,246 @@ +/* + * qca_safetimer.cpp - Qt Cryptographic Architecture + * Copyright (C) 2014 Ivan Romanov + * + * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + * + */ + +#include "qca_safetimer.h" +#include +#include +#include + +// #define SAFETIMER_DEBUG + +#ifdef SAFETIMER_DEBUG +#include +#endif + +namespace QCA +{ + +class SafeTimer::Private : public QObject +{ + Q_OBJECT + friend class SafeTimer; + +public: + Private(QObject *parent = 0); + + int timerId; + int fixerTimerId; + bool isSingleShot; + int interval; + bool isActive; + QElapsedTimer elapsedTimer; + +public slots: + void fixTimer(); + +signals: + void needFix(); + +protected: + bool event(QEvent *event); + void timerEvent(QTimerEvent *event); +}; + +SafeTimer::Private::Private(QObject *parent) + : QObject(parent) + , timerId(0) + , fixerTimerId(0) + , isSingleShot(false) + , interval(0) + , isActive(false) + , elapsedTimer(QElapsedTimer()) +{ + connect(this, SIGNAL(needFix()), SLOT(fixTimer()), Qt::QueuedConnection); +} + +void SafeTimer::Private::fixTimer() +{ + // Start special timer to align ressurected old timer + int msec = qMax(0, interval - static_cast(elapsedTimer.elapsed())); + + fixerTimerId = startTimer(msec); +#ifdef SAFETIMER_DEBUG + qDebug() << "START FIXTIMER: id =" << fixerTimerId << ", thread =" << thread() << ", interval =" << msec << parent(); +#endif +} + +bool SafeTimer::Private::event(QEvent *event) +{ + if (event->type() == QEvent::ThreadChange && fixerTimerId /* timer is actived */) + { + // Timer dies when an object changes owner thread. This trick + // used to ressurect old timer in the new thread. + // Signal is emited in the old thread but will be gotten in the new one. +#ifdef SAFETIMER_DEBUG + qDebug() << "STOP FIXTIMER ON CHANGE THREAD: id =" << fixerTimerId << ", thread =" << thread() << parent(); +#endif + killTimer(fixerTimerId); + fixerTimerId = 0; + emit needFix(); + } + + return QObject::event(event); +} + +void SafeTimer::Private::timerEvent(QTimerEvent *event) +{ + if (event->timerId() == fixerTimerId) + { +#ifdef SAFETIMER_DEBUG + qDebug() << "STOP FIXTIMER ON TIMEOUT: id =" << fixerTimerId << ", thread =" << thread() << parent(); +#endif + killTimer(fixerTimerId); + fixerTimerId = 0; + + SafeTimer *safeTimer = qobject_cast(parent()); + // Emulate timeout signal of not yet ressurected timer + emit safeTimer->timeout(); + // Ressurect timer here if not a singleshot + if (!isSingleShot) + safeTimer->start(); + else + isActive = false; + } + else + { +#ifdef SAFETIMER_DEBUG + qDebug() << "BAD PRIVATE TIME EVENT: id =" << timerId << ", thread =" << thread() << this << ", badId =" << event->timerId() << parent(); +#endif + } +} + +SafeTimer::SafeTimer(QObject *parent) + : QObject() + , d(new Private()) +{ + // It must be done here. Initialization list can't be used. + // Need to have proper class name. Look at TimerFixer::hook. + setParent(parent); + d->setParent(this); +} + +SafeTimer::~SafeTimer() +{ +} + +int SafeTimer::interval() const +{ + return d->interval; +} + +bool SafeTimer::isActive() const +{ + return d->isActive; +} + +bool SafeTimer::isSingleShot() const +{ + return d->isSingleShot; +} + +void SafeTimer::setInterval(int msec) +{ + d->interval = msec; +} + +void SafeTimer::setSingleShot(bool singleShot) +{ + d->isSingleShot = singleShot; +} + +void SafeTimer::start(int msec) +{ + d->interval = msec; + start(); +} + +void SafeTimer::start() +{ + stop(); + + d->elapsedTimer.start(); + d->timerId = QObject::startTimer(d->interval); + d->isActive = d->timerId > 0; + +#ifdef SAFETIMER_DEBUG + qDebug() << "START TIMER: id =" << d->timerId << ", thread =" << thread() << ", interval =" << d->interval << this; +#endif +} + +void SafeTimer::stop() +{ + if (d->timerId) + { + QObject::killTimer(d->timerId); +#ifdef SAFETIMER_DEBUG + qDebug() << "STOP TIMER: id =" << d->timerId << ", thread =" << thread() << this; +#endif + d->timerId = 0; + } + + if (d->fixerTimerId) + { +#ifdef SAFETIMER_DEBUG + qDebug() << "STOP FIXER TIMER: id =" << d->fixerTimerId << ", thread =" << thread() << this; +#endif + d->killTimer(d->fixerTimerId); + d->fixerTimerId = 0; + } + d->isActive = false; +} + +bool SafeTimer::event(QEvent *event) +{ + if (event->type() == QEvent::ThreadChange && d->timerId /* timer is actived */) + { + // Timer dies when an object changes owner thread. This trick + // used to ressurect old timer in the new thread. + // Signal is emited in the old thread but will be gotten in the new one. +#ifdef SAFETIMER_DEBUG + qDebug() << "CHANGE THREAD: id =" << d->timerId << ", thread =" << thread() << this; +#endif + killTimer(d->timerId); + d->timerId = 0; + emit d->needFix(); + } + + return QObject::event(event); +} + +void SafeTimer::timerEvent(QTimerEvent *event) +{ + if (event->timerId() == d->timerId) + { + if (d->isSingleShot) + stop(); + emit timeout(); + } + else + { +#ifdef SAFETIMER_DEBUG + qDebug() << "BAD TIME EVENT: id =" << d->timerId << ", thread =" << thread() << this << ", badId =" << event->timerId() << this; +#endif + } +} + +} // end namespace QCA + +#include "qca_safetimer.moc" diff -Nru qca2-2.0.3/src/qca_securelayer.cpp qca2-2.1.0/src/qca_securelayer.cpp --- qca2-2.0.3/src/qca_securelayer.cpp 2008-05-23 18:03:20.000000000 +0000 +++ qca2-2.1.0/src/qca_securelayer.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -23,8 +23,12 @@ #include "qcaprovider.h" #include "qca_safeobj.h" +#include "qca_safetimer.h" #include +#if QT_VERSION >= 0x050000 +#include +#endif namespace QCA { @@ -1173,6 +1177,31 @@ d->c->setMTU(size); } +#if QT_VERSION >= 0x050000 +void TLS::connectNotify(const QMetaMethod &signal) +{ + if(signal == QMetaMethod::fromSignal(&TLS::hostNameReceived)) + d->connect_hostNameReceived = true; + else if(signal == QMetaMethod::fromSignal(&TLS::certificateRequested)) + d->connect_certificateRequested = true; + else if(signal == QMetaMethod::fromSignal(&TLS::peerCertificateAvailable)) + d->connect_peerCertificateAvailable = true; + else if(signal == QMetaMethod::fromSignal(&TLS::handshaken)) + d->connect_handshaken = true; +} + +void TLS::disconnectNotify(const QMetaMethod &signal) +{ + if(signal == QMetaMethod::fromSignal(&TLS::hostNameReceived)) + d->connect_hostNameReceived = false; + else if(signal == QMetaMethod::fromSignal(&TLS::certificateRequested)) + d->connect_certificateRequested = false; + else if(signal == QMetaMethod::fromSignal(&TLS::peerCertificateAvailable)) + d->connect_peerCertificateAvailable = false; + else if(signal == QMetaMethod::fromSignal(&TLS::handshaken)) + d->connect_handshaken = false; +} +#else void TLS::connectNotify(const char *signal) { if(signal == QMetaObject::normalizedSignature(SIGNAL(hostNameReceived()))) @@ -1196,6 +1225,7 @@ else if(signal == QMetaObject::normalizedSignature(SIGNAL(handshaken()))) d->connect_handshaken = false; } +#endif //---------------------------------------------------------------------------- // SASL::Params diff -Nru qca2-2.0.3/src/qca_securemessage.cpp qca2-2.1.0/src/qca_securemessage.cpp --- qca2-2.0.3/src/qca_securemessage.cpp 2008-05-16 22:14:55.000000000 +0000 +++ qca2-2.1.0/src/qca_securemessage.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -23,6 +23,7 @@ #include "qcaprovider.h" #include "qca_safeobj.h" +#include "qca_safetimer.h" namespace QCA { diff -Nru qca2-2.0.3/src/qt.tag qca2-2.1.0/src/qt.tag --- qca2-2.0.3/src/qt.tag 2005-05-10 12:26:55.000000000 +0000 +++ qca2-2.1.0/src/qt.tag 1970-01-01 00:00:00.000000000 +0000 @@ -1,60791 +0,0 @@ - - - Q3Accel - q3accel.html - - Q3Accel - Q3Accel - ( QWidget * parent, const char * name = 0 ) - - - Q3Accel - Q3Accel-2 - ( QWidget * watch, QObject * parent, const char * name = 0 ) - - - activated - activated - ( int id ) - - - activatedAmbiguously - activatedAmbiguously - ( int id ) - - - clear - clear - () - - - connectItem - connectItem - ( int id, const QObject * receiver, const char * member ) - - - count - count - () - - - disconnectItem - disconnectItem - ( int id, const QObject * receiver, const char * member ) - - - findKey - findKey - ( const QKeySequence & key ) - - - insertItem - insertItem - ( const QKeySequence & key, int id = -1 ) - - - isEnabled - isEnabled - () - - - isItemEnabled - isItemEnabled - ( int id ) - - - key - key - ( int id ) - - - removeItem - removeItem - ( int id ) - - - setEnabled - setEnabled - ( bool enable ) - - - setItemEnabled - setItemEnabled - ( int id, bool enable ) - - - setWhatsThis - setWhatsThis - ( int id, const QString & text ) - - - shortcutKey - shortcutKey - ( const QString & str ) - - - whatsThis - whatsThis - ( int id ) - - - - Q3AccessibleTitleBar - q3accessibletitlebar.html - - Q3AccessibleTitleBar - Q3AccessibleTitleBar - ( QWidget * w ) - - - titleBar - titleBar - () - - - - Q3Action - q3action.html - - Q3Action - Q3Action - ( QObject * parent, const char * name = 0 ) - - - Q3Action - Q3Action-2 - ( const QString & menuText, QKeySequence accel, QObject * parent, const char * name = 0 ) - - - Q3Action - Q3Action-3 - ( const QIcon & icon, const QString & menuText, QKeySequence accel, QObject * parent, const char * name = 0 ) - - - Q3Action - Q3Action-4 - ( const QString & text, const QIcon & icon, const QString & menuText, QKeySequence accel, QObject * parent, const char * name = 0, bool toggle = false ) - - - Q3Action - Q3Action-5 - ( const QString & text, const QString & menuText, QKeySequence accel, QObject * parent, const char * name = 0, bool toggle = false ) - - - Q3Action - Q3Action-6 - ( QObject * parent, const char * name, bool toggle ) - - - activate - activate - () - - - activated - activated - () - - - addTo - addTo - ( QWidget * w ) - - - addedTo - addedTo - ( QWidget * actionWidget, QWidget * container ) - - - addedTo - addedTo-2 - ( int index, Q3PopupMenu * menu ) - - - removeFrom - removeFrom - ( QWidget * w ) - - - setDisabled - setDisabled - ( bool disable ) - - - toggle - toggle - () - - - toggled - toggled - ( bool on ) - - - - Q3ActionGroup - q3actiongroup.html - - Q3ActionGroup - Q3ActionGroup - ( QObject * parent, const char * name = 0 ) - - - Q3ActionGroup - Q3ActionGroup-2 - ( QObject * parent, const char * name, bool exclusive ) - - - activated - activated - ( Q3Action * action ) - - - add - add - ( Q3Action * action ) - - - addSeparator - addSeparator - () - - - addTo - addTo - ( QWidget * w ) - - - addedTo - addedTo - ( QWidget * actionWidget, QWidget * container, Q3Action * a ) - - - addedTo - addedTo-2 - ( int index, Q3PopupMenu * menu, Q3Action * a ) - - - insert - insert - ( Q3Action * action ) - - - selected - selected - ( Q3Action * action ) - - - - Q3AsciiCache - q3asciicache.html - - Q3AsciiCache - Q3AsciiCache-2 - ( int maxCost = 100, int size = 17, bool caseSensitive = true, bool copyKeys = true ) - - - clear - clear - () - - - count - count - () - - - find - find - ( const char * k, bool ref = true ) - - - insert - insert - ( const char * k, const type * d, int c = 1, int p = 0 ) - - - isEmpty - isEmpty - () - - - maxCost - maxCost - () - - - remove - remove - ( const char * k ) - - - setMaxCost - setMaxCost - ( int m ) - - - size - size - () - - - statistics - statistics - () - - - take - take - ( const char * k ) - - - totalCost - totalCost - () - - - operator[] - operator-5b-5d - ( const char * k ) - - - - Q3AsciiCacheIterator - q3asciicacheiterator.html - - Q3AsciiCacheIterator - Q3AsciiCacheIterator - ( const Q3AsciiCache<type> & cache ) - - - Q3AsciiCacheIterator - Q3AsciiCacheIterator-2 - ( const Q3AsciiCacheIterator<type> & ci ) - - - atFirst - atFirst - () - - - atLast - atLast - () - - - count - count - () - - - current - current - () - - - currentKey - currentKey - () - - - isEmpty - isEmpty - () - - - toFirst - toFirst - () - - - toLast - toLast - () - - - operator - operator-type--2a - type *() - - - operator() - operator-28-29 - () - - - operator++ - operator-2b-2b - () - - - operator+= - operator-2b-eq - ( uint jump ) - - - operator-- - operator-- - () - - - operator-= - operator--eq - ( uint jump ) - - - operator= - operator-eq - ( const Q3AsciiCacheIterator<type> & ci ) - - - - Q3AsciiDict - q3asciidict.html - - Q3AsciiDict - Q3AsciiDict - ( int size = 17, bool caseSensitive = true, bool copyKeys = true ) - - - Q3AsciiDict - Q3AsciiDict-2 - ( const Q3AsciiDict<type> & dict ) - - - clear - clear - () - - - count - count - () - - - find - find - ( const char * key ) - - - insert - insert - ( const char * key, const type * item ) - - - isEmpty - isEmpty - () - - - read - read - ( QDataStream & s, Q3PtrCollection::Item & item ) - - - remove - remove - ( const char * key ) - - - replace - replace - ( const char * key, const type * item ) - - - resize - resize - ( uint newsize ) - - - size - size - () - - - statistics - statistics - () - - - take - take - ( const char * key ) - - - write - write - ( QDataStream & s, Q3PtrCollection::Item item ) - - - operator= - operator-eq - ( const Q3AsciiDict<type> & dict ) - - - operator[] - operator-5b-5d - ( const char * key ) - - - - Q3AsciiDictIterator - q3asciidictiterator.html - - Q3AsciiDictIterator - Q3AsciiDictIterator - ( const Q3AsciiDict<type> & dict ) - - - count - count - () - - - current - current - () - - - currentKey - currentKey - () - - - isEmpty - isEmpty - () - - - toFirst - toFirst - () - - - operator - operator-type--2a - type *() - - - operator() - operator-28-29 - () - - - operator++ - operator-2b-2b - () - - - operator+= - operator-2b-eq - ( uint jump ) - - - - Q3Button - q3button.html - - Q3Button - Q3Button - ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) - - - drawButton - drawButton - ( QPainter * painter ) - - - drawButtonLabel - drawButtonLabel - ( QPainter * painter ) - - - paintEvent - paintEvent - ( QPaintEvent * event ) - - - - Q3ButtonGroup - q3buttongroup.html - - Q3ButtonGroup - Q3ButtonGroup - ( QWidget * parent = 0, const char * name = 0 ) - - - Q3ButtonGroup - Q3ButtonGroup-2 - ( const QString & title, QWidget * parent = 0, const char * name = 0 ) - - - Q3ButtonGroup - Q3ButtonGroup-3 - ( int strips, Qt::Orientation orientation, QWidget * parent = 0, const char * name = 0 ) - - - Q3ButtonGroup - Q3ButtonGroup-4 - ( int strips, Qt::Orientation orientation, const QString & title, QWidget * parent = 0, const char * name = 0 ) - - - clicked - clicked - ( int id ) - - - count - count - () - - - find - find - ( int id ) - - - id - id - ( QAbstractButton * button ) - - - insert - insert - ( QAbstractButton * button, int id = -1 ) - - - pressed - pressed - ( int id ) - - - released - released - ( int id ) - - - remove - remove - ( QAbstractButton * button ) - - - selected - selected - () - - - - Q3Cache - q3cache.html - - Q3Cache - Q3Cache-2 - ( int maxCost = 100, int size = 17, bool caseSensitive = true ) - - - clear - clear - () - - - count - count - () - - - find - find - ( const QString & k, bool ref = true ) - - - insert - insert - ( const QString & k, const type * d, int c = 1, int p = 0 ) - - - isEmpty - isEmpty - () - - - maxCost - maxCost - () - - - remove - remove - ( const QString & k ) - - - setMaxCost - setMaxCost - ( int m ) - - - size - size - () - - - statistics - statistics - () - - - take - take - ( const QString & k ) - - - totalCost - totalCost - () - - - operator[] - operator-5b-5d - ( const QString & k ) - - - - Q3CacheIterator - q3cacheiterator.html - - Q3CacheIterator - Q3CacheIterator - ( const Q3Cache<type> & cache ) - - - Q3CacheIterator - Q3CacheIterator-2 - ( const Q3CacheIterator<type> & ci ) - - - atFirst - atFirst - () - - - atLast - atLast - () - - - count - count - () - - - current - current - () - - - currentKey - currentKey - () - - - isEmpty - isEmpty - () - - - toFirst - toFirst - () - - - toLast - toLast - () - - - operator - operator-type--2a - type *() - - - operator() - operator-28-29 - () - - - operator++ - operator-2b-2b - () - - - operator+= - operator-2b-eq - ( uint jump ) - - - operator-- - operator-- - () - - - operator-= - operator--eq - ( uint jump ) - - - operator= - operator-eq - ( const Q3CacheIterator<type> & ci ) - - - - Q3Canvas - q3canvas.html - - Q3Canvas - Q3Canvas - ( QObject * parent = 0, const char * name = 0 ) - - - Q3Canvas - Q3Canvas-2 - ( int w, int h ) - - - Q3Canvas - Q3Canvas-3 - ( QPixmap p, int h, int v, int tilewidth, int tileheight ) - - - advance - advance - () - - - allItems - allItems - () - - - backgroundColor - backgroundColor - () - - - backgroundPixmap - backgroundPixmap - () - - - chunkSize - chunkSize - () - - - collisions - collisions - ( const QPoint & p ) - - - collisions - collisions-2 - ( const QRect & r ) - - - collisions - collisions-3 - ( const Q3PointArray & chunklist, const Q3CanvasItem * item, bool exact ) - - - drawArea - drawArea - ( const QRect & clip, QPainter * painter, bool dbuf = false ) - - - drawBackground - drawBackground - ( QPainter & painter, const QRect & clip ) - - - drawForeground - drawForeground - ( QPainter & painter, const QRect & clip ) - - - height - height - () - - - onCanvas - onCanvas - ( int x, int y ) - - - onCanvas - onCanvas-2 - ( const QPoint & p ) - - - rect - rect - () - - - resize - resize - ( int w, int h ) - - - resized - resized - () - - - retune - retune - ( int chunksze, int mxclusters = 100 ) - - - setAdvancePeriod - setAdvancePeriod - ( int ms ) - - - setAllChanged - setAllChanged - () - - - setBackgroundColor - setBackgroundColor - ( const QColor & c ) - - - setBackgroundPixmap - setBackgroundPixmap - ( const QPixmap & p ) - - - setChanged - setChanged - ( const QRect & area ) - - - setDoubleBuffering - setDoubleBuffering - ( bool y ) - - - setTile - setTile - ( int x, int y, int tilenum ) - - - setTiles - setTiles - ( QPixmap p, int h, int v, int tilewidth, int tileheight ) - - - setUnchanged - setUnchanged - ( const QRect & area ) - - - setUpdatePeriod - setUpdatePeriod - ( int ms ) - - - size - size - () - - - tile - tile - ( int x, int y ) - - - tileHeight - tileHeight - () - - - tileWidth - tileWidth - () - - - tilesHorizontally - tilesHorizontally - () - - - tilesVertically - tilesVertically - () - - - update - update - () - - - validChunk - validChunk - ( int x, int y ) - - - validChunk - validChunk-2 - ( const QPoint & p ) - - - width - width - () - - - - Q3CanvasEllipse - q3canvasellipse.html - - Q3CanvasEllipse - Q3CanvasEllipse - ( Q3Canvas * canvas ) - - - Q3CanvasEllipse - Q3CanvasEllipse-2 - ( int width, int height, Q3Canvas * canvas ) - - - Q3CanvasEllipse - Q3CanvasEllipse-3 - ( int width, int height, int startangle, int angle, Q3Canvas * canvas ) - - - angleLength - angleLength - () - - - angleStart - angleStart - () - - - drawShape - drawShape - ( QPainter & p ) - - - height - height - () - - - rtti - rtti - () - - - setAngles - setAngles - ( int start, int length ) - - - setSize - setSize - ( int width, int height ) - - - width - width - () - - - active - active - () - - - enabled - enabled - () - - - selected - selected - () - - - visible - visible - () - - - - Q3CanvasItem - q3canvasitem.html - - RttiValues - RttiValues-enum - - - - Q3CanvasItem - Q3CanvasItem - ( Q3Canvas * canvas ) - - - advance - advance - ( int phase ) - - - animated - animated - () - - - boundingRect - boundingRect - () - - - boundingRectAdvanced - boundingRectAdvanced - () - - - canvas - canvas - () - - - collidesWith - collidesWith - ( const Q3CanvasItem * other ) - - - collisions - collisions - ( bool exact ) - - - draw - draw - ( QPainter & painter ) - - - hide - hide - () - - - isActive - isActive - () - - - isEnabled - isEnabled - () - - - isSelected - isSelected - () - - - isVisible - isVisible - () - - - move - move - ( double x, double y ) - - - moveBy - moveBy - ( double dx, double dy ) - - - rtti - rtti - () - - - setActive - setActive - ( bool yes ) - - - setAnimated - setAnimated - ( bool y ) - - - setCanvas - setCanvas - ( Q3Canvas * c ) - - - setEnabled - setEnabled - ( bool yes ) - - - setSelected - setSelected - ( bool yes ) - - - setVelocity - setVelocity - ( double vx, double vy ) - - - setVisible - setVisible - ( bool yes ) - - - setX - setX - ( double x ) - - - setXVelocity - setXVelocity - ( double vx ) - - - setY - setY - ( double y ) - - - setYVelocity - setYVelocity - ( double vy ) - - - setZ - setZ - ( double z ) - - - show - show - () - - - update - update - () - - - x - x - () - - - xVelocity - xVelocity - () - - - y - y - () - - - yVelocity - yVelocity - () - - - z - z - () - - - - Q3CanvasItemList - q3canvasitemlist.html - - operator+ - operator-2b - ( const Q3CanvasItemList & l ) - - - - Q3CanvasLine - q3canvasline.html - - Q3CanvasLine - Q3CanvasLine - ( Q3Canvas * canvas ) - - - endPoint - endPoint - () - - - rtti - rtti - () - - - setPoints - setPoints - ( int xa, int ya, int xb, int yb ) - - - startPoint - startPoint - () - - - - Q3CanvasPixmap - q3canvaspixmap.html - - Q3CanvasPixmap - Q3CanvasPixmap - ( const QString & datafilename ) - - - Q3CanvasPixmap - Q3CanvasPixmap-2 - ( const QImage & image ) - - - Q3CanvasPixmap - Q3CanvasPixmap-3 - ( const QPixmap & pm, const QPoint & offset ) - - - offsetX - offsetX - () - - - offsetY - offsetY - () - - - setOffset - setOffset - ( int x, int y ) - - - Q3CanvasPixmapArray - Q3CanvasPixmapArray-3 - ( Q3PtrList<QPixmap> list, Q3PtrList<QPoint> hotspots ) - - - operator! - operator-not - () - - - - Q3CanvasPixmapArray - q3canvaspixmaparray.html - - Q3CanvasPixmapArray - Q3CanvasPixmapArray - () - - - Q3CanvasPixmapArray - Q3CanvasPixmapArray-2 - ( const QString & datafilenamepattern, int fc = 0 ) - - - Q3CanvasPixmapArray - Q3CanvasPixmapArray-4 - ( Q3ValueList<QPixmap> list, Q3PointArray hotspots = Q3PointArray() - - - count - count - () - - - image - image - ( int i ) - - - isValid - isValid - () - - - readCollisionMasks - readCollisionMasks - ( const QString & filename ) - - - readPixmaps - readPixmaps - ( const QString & filenamepattern, int fc = 0 ) - - - setImage - setImage - ( int i, Q3CanvasPixmap * p ) - - - - Q3CanvasPolygon - q3canvaspolygon.html - - Q3CanvasPolygon - Q3CanvasPolygon - ( Q3Canvas * canvas ) - - - areaPoints - areaPoints - () - - - drawShape - drawShape - ( QPainter & p ) - - - points - points - () - - - rtti - rtti - () - - - setPoints - setPoints - ( Q3PointArray pa ) - - - - Q3CanvasPolygonalItem - q3canvaspolygonalitem.html - - Q3CanvasPolygonalItem - Q3CanvasPolygonalItem - ( Q3Canvas * canvas ) - - - areaPoints - areaPoints - () - - - areaPointsAdvanced - areaPointsAdvanced - () - - - boundingRect - boundingRect - () - - - brush - brush - () - - - draw - draw - ( QPainter & p ) - - - drawShape - drawShape - ( QPainter & p ) - - - invalidate - invalidate - () - - - isValid - isValid - () - - - pen - pen - () - - - rtti - rtti - () - - - setBrush - setBrush - ( QBrush b ) - - - setPen - setPen - ( QPen p ) - - - setWinding - setWinding - ( bool enable ) - - - winding - winding - () - - - - Q3CanvasRectangle - q3canvasrectangle.html - - Q3CanvasRectangle - Q3CanvasRectangle - ( Q3Canvas * canvas ) - - - Q3CanvasRectangle - Q3CanvasRectangle-2 - ( const QRect & r, Q3Canvas * canvas ) - - - Q3CanvasRectangle - Q3CanvasRectangle-3 - ( int x, int y, int width, int height, Q3Canvas * canvas ) - - - chunks - chunks - () - - - drawShape - drawShape - ( QPainter & p ) - - - height - height - () - - - rect - rect - () - - - rtti - rtti - () - - - setSize - setSize - ( int width, int height ) - - - size - size - () - - - width - width - () - - - - Q3CanvasSpline - q3canvasspline.html - - Q3CanvasSpline - Q3CanvasSpline - ( Q3Canvas * canvas ) - - - closed - closed - () - - - controlPoints - controlPoints - () - - - rtti - rtti - () - - - setControlPoints - setControlPoints - ( Q3PointArray ctrl, bool close = true ) - - - - Q3CanvasSprite - q3canvassprite.html - - FrameAnimationType - FrameAnimationType-enum - - - - Q3CanvasSprite - Q3CanvasSprite - ( Q3CanvasPixmapArray * a, Q3Canvas * canvas ) - - - advance - advance - ( int phase ) - - - bottomEdge - bottomEdge - () - - - bottomEdge - bottomEdge-2 - ( int ny ) - - - boundingRect - boundingRect - () - - - draw - draw - ( QPainter & painter ) - - - frame - frame - () - - - frameCount - frameCount - () - - - height - height - () - - - image - image - () - - - image - image-2 - ( int f ) - - - imageAdvanced - imageAdvanced - () - - - leftEdge - leftEdge - () - - - leftEdge - leftEdge-2 - ( int nx ) - - - move - move-2 - ( double nx, double ny, int nf ) - - - rightEdge - rightEdge - () - - - rightEdge - rightEdge-2 - ( int nx ) - - - rtti - rtti - () - - - setFrame - setFrame - ( int f ) - - - setFrameAnimation - setFrameAnimation - ( FrameAnimationType type = Cycle, int step = 1, int state = 0 ) - - - setSequence - setSequence - ( Q3CanvasPixmapArray * a ) - - - topEdge - topEdge - () - - - topEdge - topEdge-2 - ( int ny ) - - - width - width - () - - - - Q3CanvasText - q3canvastext.html - - Q3CanvasText - Q3CanvasText - ( Q3Canvas * canvas ) - - - Q3CanvasText - Q3CanvasText-2 - ( const QString & t, Q3Canvas * canvas ) - - - Q3CanvasText - Q3CanvasText-3 - ( const QString & t, QFont f, Q3Canvas * canvas ) - - - boundingRect - boundingRect - () - - - color - color - () - - - draw - draw - ( QPainter & painter ) - - - font - font - () - - - rtti - rtti - () - - - setColor - setColor - ( const QColor & c ) - - - setFont - setFont - ( const QFont & f ) - - - setText - setText - ( const QString & t ) - - - setTextFlags - setTextFlags - ( int f ) - - - text - text - () - - - textFlags - textFlags - () - - - - Q3CanvasView - q3canvasview.html - - Q3CanvasView - Q3CanvasView - ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) - - - Q3CanvasView - Q3CanvasView-2 - ( Q3Canvas * canvas, QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) - - - canvas - canvas - () - - - drawContents - drawContents - ( QPainter * p, int cx, int cy, int cw, int ch ) - - - inverseWorldMatrix - inverseWorldMatrix - () - - - setCanvas - setCanvas - ( Q3Canvas * canvas ) - - - setWorldMatrix - setWorldMatrix - ( const QMatrix & wm ) - - - sizeHint - sizeHint - () - - - worldMatrix - worldMatrix - () - - - - Q3CheckListItem - q3checklistitem.html - - ToggleState - ToggleState-enum - - - - Type - Type-enum - - - - Q3CheckListItem - Q3CheckListItem - ( Q3CheckListItem * parent, const QString & text, Type tt = RadioButtonController ) - - - Q3CheckListItem - Q3CheckListItem-2 - ( Q3CheckListItem * parent, Q3ListViewItem * after, const QString & text, Type tt = RadioButtonController ) - - - Q3CheckListItem - Q3CheckListItem-3 - ( Q3ListViewItem * parent, const QString & text, Type tt = RadioButtonController ) - - - Q3CheckListItem - Q3CheckListItem-4 - ( Q3ListViewItem * parent, Q3ListViewItem * after, const QString & text, Type tt = RadioButtonController ) - - - Q3CheckListItem - Q3CheckListItem-5 - ( Q3ListView * parent, const QString & text, Type tt = RadioButtonController ) - - - Q3CheckListItem - Q3CheckListItem-6 - ( Q3ListView * parent, Q3ListViewItem * after, const QString & text, Type tt = RadioButtonController ) - - - Q3CheckListItem - Q3CheckListItem-7 - ( Q3ListViewItem * parent, const QString & text, const QPixmap & p ) - - - Q3CheckListItem - Q3CheckListItem-8 - ( Q3ListView * parent, const QString & text, const QPixmap & p ) - - - activate - activate - () - - - isOn - isOn - () - - - isTristate - isTristate - () - - - paintCell - paintCell - ( QPainter * p, const QPalette & pal, int column, int width, int align ) - - - paintFocus - paintFocus - ( QPainter * p, const QPalette & pal, const QRect & r ) - - - rtti - rtti - () - - - setOn - setOn - ( bool b ) - - - setState - setState - ( ToggleState s ) - - - setTristate - setTristate - ( bool b ) - - - state - state - () - - - stateChange - stateChange - ( bool b ) - - - text - text - () - - - turnOffChild - turnOffChild - () - - - type - type - () - - - - Q3CheckTableItem - q3checktableitem.html - - Q3CheckTableItem - Q3CheckTableItem - ( Q3Table * table, const QString & txt ) - - - isChecked - isChecked - () - - - rtti - rtti - () - - - setChecked - setChecked - ( bool b ) - - - - Q3ColorDrag - q3colordrag.html - - Q3ColorDrag - Q3ColorDrag - ( const QColor & col, QWidget * dragsource = 0, const char * name = 0 ) - - - Q3ColorDrag - Q3ColorDrag-2 - ( QWidget * dragsource = 0, const char * name = 0 ) - - - canDecode - canDecode - ( QMimeSource * source ) - - - decode - decode - ( QMimeSource * source, QColor & color ) - - - setColor - setColor - ( const QColor & color ) - - - - Q3ComboTableItem - q3combotableitem.html - - Q3ComboTableItem - Q3ComboTableItem - ( Q3Table * table, const QStringList & list, bool editable = false ) - - - count - count - () - - - currentItem - currentItem - () - - - currentText - currentText - () - - - isEditable - isEditable - () - - - rtti - rtti - () - - - setCurrentItem - setCurrentItem - ( int i ) - - - setCurrentItem - setCurrentItem-2 - ( const QString & s ) - - - setEditable - setEditable - ( bool b ) - - - setStringList - setStringList - ( const QStringList & l ) - - - text - text - ( int i ) - - - - Q3CString - q3cstring.html - - Q3CString - Q3CString - () - - - Q3CString - Q3CString-2 - ( int size ) - - - Q3CString - Q3CString-3 - ( const Q3CString & s ) - - - Q3CString - Q3CString-4 - ( const QByteArray & ba ) - - - Q3CString - Q3CString-5 - ( const char * str ) - - - Q3CString - Q3CString-6 - ( const char * str, uint maxsize ) - - - append - append - ( const char * str ) - - - copy - copy - () - - - leftJustify - leftJustify - ( uint width, char fill = ' ', bool truncate = false ) - - - lower - lower - () - - - rightJustify - rightJustify - ( uint width, char fill = ' ', bool truncate = false ) - - - setExpand - setExpand - ( uint index, char c ) - - - setNum - setNum - ( double n, char f = 'g', int prec = 6 ) - - - setNum - setNum-2 - ( long n ) - - - setNum - setNum-3 - ( ulong n ) - - - setNum - setNum-4 - ( int n ) - - - setNum - setNum-5 - ( uint n ) - - - setNum - setNum-6 - ( short n ) - - - setNum - setNum-7 - ( ushort n ) - - - setNum - setNum-8 - ( float n, char f = 'g', int prec = 6 ) - - - setStr - setStr - ( const char * str ) - - - simplifyWhiteSpace - simplifyWhiteSpace - () - - - sprintf - sprintf - ( const char * format, ... ) - - - stripWhiteSpace - stripWhiteSpace - () - - - toDouble - toDouble - ( bool * ok = 0 ) - - - toFloat - toFloat - ( bool * ok = 0 ) - - - toInt - toInt - ( bool * ok = 0 ) - - - toLong - toLong - ( bool * ok = 0 ) - - - toShort - toShort - ( bool * ok = 0 ) - - - toUInt - toUInt - ( bool * ok = 0 ) - - - toULong - toULong - ( bool * ok = 0 ) - - - toUShort - toUShort - ( bool * ok = 0 ) - - - upper - upper - () - - - operator= - operator-eq - ( const Q3CString & s ) - - - operator= - operator-eq-2 - ( const QByteArray & ba ) - - - operator= - operator-eq-3 - ( const char * str ) - - - - Q3DataBrowser - q3databrowser.html - - Boundary - Boundary-enum - - - - Q3DataBrowser - Q3DataBrowser - ( QWidget * parent = 0, const char * name = 0, Qt::WFlags fl = 0 ) - - - beforeDelete - beforeDelete - ( QSqlRecord * buf ) - - - beforeInsert - beforeInsert - ( QSqlRecord * buf ) - - - beforeUpdate - beforeUpdate - ( QSqlRecord * buf ) - - - boundary - boundary - () - - - clearValues - clearValues - () - - - Confirm - confirmCancel - Q3DataBrowser::confirmCancel( QSql::Op m ) - - - Confirm - confirmEdit - Q3DataBrowser::confirmEdit( QSql::Op m ) - - - currentChanged - currentChanged - ( const QSqlRecord * record ) - - - currentEdited - currentEdited - () - - - cursorChanged - cursorChanged - ( Q3SqlCursor::Mode mode ) - - - del - del - () - - - deleteCurrent - deleteCurrent - () - - - first - first - () - - - firstRecordAvailable - firstRecordAvailable - ( bool available ) - - - form - form - () - - - handleError - handleError - ( const QSqlError & error ) - - - insert - insert - () - - - insertCurrent - insertCurrent - () - - - last - last - () - - - lastRecordAvailable - lastRecordAvailable - ( bool available ) - - - next - next - () - - - nextRecordAvailable - nextRecordAvailable - ( bool available ) - - - prev - prev - () - - - prevRecordAvailable - prevRecordAvailable - ( bool available ) - - - primeDelete - primeDelete - ( QSqlRecord * buf ) - - - primeInsert - primeInsert - ( QSqlRecord * buf ) - - - primeUpdate - primeUpdate - ( QSqlRecord * buf ) - - - readFields - readFields - () - - - refresh - refresh - () - - - seek - seek - ( int i, bool relative = false ) - - - setForm - setForm - ( Q3SqlForm * form ) - - - setSqlCursor - setSqlCursor - ( Q3SqlCursor * cursor, bool autoDelete = false ) - - - sqlCursor - sqlCursor - () - - - update - update - () - - - updateBoundary - updateBoundary - () - - - updateCurrent - updateCurrent - () - - - writeFields - writeFields - () - - - - Q3DataTable - q3datatable.html - - Refresh - Refresh-enum - - - - DateFormat - dateFormat - - - - Q3DataTable - Q3DataTable - ( QWidget * parent = 0, const char * name = 0 ) - - - Q3DataTable - Q3DataTable-2 - ( Q3SqlCursor * cursor, bool autoPopulate = false, QWidget * parent = 0, const char * name = 0 ) - - - addColumn - addColumn - ( const QString & fieldName, const QString & label = QString() - - - adjustColumn - adjustColumn - ( int col ) - - - autoDelete - autoDelete - () - - - beforeDelete - beforeDelete - ( QSqlRecord * buf ) - - - beforeInsert - beforeInsert - ( QSqlRecord * buf ) - - - beforeUpdate - beforeUpdate - ( QSqlRecord * buf ) - - - beginInsert - beginInsert - () - - - beginUpdate - beginUpdate - ( int row, int col, bool replace ) - - - Confirm - confirmCancel - Q3DataTable::confirmCancel( QSql::Op m ) - - - Confirm - confirmEdit - Q3DataTable::confirmEdit( QSql::Op m ) - - - currentChanged - currentChanged - ( QSqlRecord * record ) - - - currentRecord - currentRecord - () - - - cursorChanged - cursorChanged - ( QSql::Op mode ) - - - deleteCurrent - deleteCurrent - () - - - fieldAlignment - fieldAlignment - ( const QSqlField * field ) - - - find - find - ( const QString & str, bool caseSensitive, bool backwards ) - - - handleError - handleError - ( const QSqlError & e ) - - - indexOf - indexOf - ( uint i ) - - - insertCurrent - insertCurrent - () - - - installEditorFactory - installEditorFactory - ( Q3SqlEditorFactory * f ) - - - installPropertyMap - installPropertyMap - ( Q3SqlPropertyMap * m ) - - - paintField - paintField - ( QPainter * p, const QSqlField * field, const QRect & cr, bool selected ) - - - primeDelete - primeDelete - ( QSqlRecord * buf ) - - - primeInsert - primeInsert - ( QSqlRecord * buf ) - - - primeUpdate - primeUpdate - ( QSqlRecord * buf ) - - - refresh - refresh - ( Refresh mode ) - - - refresh - refresh-2 - () - - - removeColumn - removeColumn - ( int col ) - - - repaintCell - repaintCell - ( int row, int col ) - - - reset - reset - () - - - setAutoDelete - setAutoDelete - ( bool enable ) - - - setColumn - setColumn - ( uint col, const QString & fieldName, const QString & label = QString() - - - setColumnWidth - setColumnWidth - ( int col, int w ) - - - setSize - setSize - ( Q3SqlCursor * sql ) - - - setSqlCursor - setSqlCursor - ( Q3SqlCursor * cursor = 0, bool autoPopulate = false, bool autoDelete = false ) - - - sortAscending - sortAscending - ( int col ) - - - sortColumn - sortColumn - ( int col, bool ascending = true, bool wholeRows = false ) - - - sortDescending - sortDescending - ( int col ) - - - sqlCursor - sqlCursor - () - - - text - text - ( int row, int col ) - - - updateCurrent - updateCurrent - () - - - value - value - ( int row, int col ) - - - - Q3DataView - q3dataview.html - - Q3DataView - Q3DataView - ( QWidget * parent = 0, const char * name = 0, Qt::WFlags fl = 0 ) - - - clearValues - clearValues - () - - - form - form - () - - - readFields - readFields - () - - - record - record - () - - - refresh - refresh - ( QSqlRecord * buf ) - - - setForm - setForm - ( Q3SqlForm * form ) - - - setRecord - setRecord - ( QSqlRecord * record ) - - - writeFields - writeFields - () - - - - Q3DateEdit - q3dateedit.html - - Order - Order-enum - - - - Q3DateEdit - Q3DateEdit - ( QWidget * parent = 0, const char * name = 0 ) - - - Q3DateEdit - Q3DateEdit-2 - ( const QDate & date, QWidget * parent = 0, const char * name = 0 ) - - - fix - fix - () - - - sectionFormattedText - sectionFormattedText - ( int sec ) - - - separator - separator - () - - - setDay - setDay - ( int day ) - - - setMonth - setMonth - ( int month ) - - - setRange - setRange - ( const QDate & min, const QDate & max ) - - - setSeparator - setSeparator - ( const QString & s ) - - - setYear - setYear - ( int year ) - - - updateButtons - updateButtons - () - - - valueChanged - valueChanged - ( const QDate & date ) - - - - Q3DateTimeEdit - q3datetimeedit.html - - Q3DateTimeEdit - Q3DateTimeEdit - ( QWidget * parent = 0, const char * name = 0 ) - - - Q3DateTimeEdit - Q3DateTimeEdit-2 - ( const QDateTime & datetime, QWidget * parent = 0, const char * name = 0 ) - - - autoAdvance - autoAdvance - () - - - dateEdit - dateEdit - () - - - setAutoAdvance - setAutoAdvance - ( bool advance ) - - - timeEdit - timeEdit - () - - - valueChanged - valueChanged - ( const QDateTime & datetime ) - - - - Q3DateTimeEditBase - q3datetimeeditbase.html - - - Q3DeepCopy - q3deepcopy.html - - Q3DeepCopy - Q3DeepCopy - () - - - Q3DeepCopy - Q3DeepCopy-2 - ( const T & t ) - - - operator - operator-T - T() - - - operator= - operator-eq - ( const T & t ) - - - - Q3Dict - q3dict.html - - Q3Dict - Q3Dict - ( int size = 17, bool caseSensitive = true ) - - - Q3Dict - Q3Dict-2 - ( const Q3Dict<type> & dict ) - - - clear - clear - () - - - count - count - () - - - find - find - ( const QString & key ) - - - insert - insert - ( const QString & key, const type * item ) - - - isEmpty - isEmpty - () - - - read - read - ( QDataStream & s, Q3PtrCollection::Item & item ) - - - remove - remove - ( const QString & key ) - - - replace - replace - ( const QString & key, const type * item ) - - - resize - resize - ( uint newsize ) - - - size - size - () - - - statistics - statistics - () - - - take - take - ( const QString & key ) - - - write - write - ( QDataStream & s, Q3PtrCollection::Item item ) - - - operator= - operator-eq - ( const Q3Dict<type> & dict ) - - - operator[] - operator-5b-5d - ( const QString & key ) - - - - Q3DictIterator - q3dictiterator.html - - Q3DictIterator - Q3DictIterator - ( const Q3Dict<type> & dict ) - - - count - count - () - - - current - current - () - - - currentKey - currentKey - () - - - isEmpty - isEmpty - () - - - toFirst - toFirst - () - - - operator - operator-type--2a - type *() - - - operator() - operator-28-29 - () - - - operator++ - operator-2b-2b - () - - - - Q3Dns - q3dns.html - - RecordType - RecordType-enum - - - - Q3Dns - Q3Dns - () - - - Q3Dns - Q3Dns-2 - ( const QString & label, RecordType rr = A ) - - - Q3Dns - Q3Dns-3 - ( const QHostAddress & address, RecordType rr = Ptr ) - - - addresses - addresses - () - - - canonicalName - canonicalName - () - - - hostNames - hostNames - () - - - isWorking - isWorking - () - - - label - label - () - - - mailServers - mailServers - () - - - qualifiedNames - qualifiedNames - () - - - recordType - recordType - () - - - resultsReady - resultsReady - () - - - servers - servers - () - - - setLabel - setLabel - ( const QString & label ) - - - setLabel - setLabel-2 - ( const QHostAddress & address ) - - - setRecordType - setRecordType - ( RecordType rr = A ) - - - texts - texts - () - - - - Q3DockArea - q3dockarea.html - - HandlePosition - HandlePosition-enum - - - - Orientation - orientation - - - - Q3DockArea - Q3DockArea - ( Qt::Orientation o, HandlePosition h = Normal, QWidget * parent = 0, const char * name = 0 ) - - - dockWindowList - dockWindowList - () - - - hasDockWindow - hasDockWindow - ( Q3DockWindow * w, int * index = 0 ) - - - isDockWindowAccepted - isDockWindowAccepted - ( Q3DockWindow * dw ) - - - lineUp - lineUp - ( bool keepNewLines ) - - - moveDockWindow - moveDockWindow - ( Q3DockWindow * w, int index = -1 ) - - - moveDockWindow - moveDockWindow-2 - ( Q3DockWindow * w, const QPoint & p, const QRect & r, bool swap ) - - - removeDockWindow - removeDockWindow - ( Q3DockWindow * w, bool makeFloating, bool swap, bool fixNewLines = true ) - - - setAcceptDockWindow - setAcceptDockWindow - ( Q3DockWindow * dw, bool accept ) - - - - Q3DockWindow - q3dockwindow.html - - CloseMode - CloseMode-enum - - - - Place - Place-enum - - - - Q3DockWindow - Q3DockWindow - ( Place p = InDock, QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) - - - Q3DockWindow - Q3DockWindow-2 - ( QWidget * parent, const char * name = 0, Qt::WFlags f = 0 ) - - - area - area - () - - - boxLayout - boxLayout - () - - - dock - dock - () - - - fixedExtent - fixedExtent - () - - - isCloseEnabled - isCloseEnabled - () - - - isHorizontalStretchable - isHorizontalStretchable - () - - - isVerticalStretchable - isVerticalStretchable - () - - - Orientation - orientation - Q3DockWindow::orientation() - - - orientationChanged - orientationChanged - ( Qt::Orientation o ) - - - placeChanged - placeChanged - ( Q3DockWindow::Place p ) - - - setFixedExtentHeight - setFixedExtentHeight - ( int h ) - - - setFixedExtentWidth - setFixedExtentWidth - ( int w ) - - - setHorizontalStretchable - setHorizontalStretchable - ( bool b ) - - - setOrientation - setOrientation - ( Qt::Orientation o ) - - - setVerticalStretchable - setVerticalStretchable - ( bool b ) - - - setWidget - setWidget - ( QWidget * w ) - - - undock - undock-2 - () - - - visibilityChanged - visibilityChanged - ( bool visible ) - - - widget - widget - () - - - windowTitle - windowTitle - () - - - - Q3DragObject - q3dragobject.html - - DragMode - DragMode-enum - - - - Q3DragObject - Q3DragObject - ( QWidget * dragSource = 0, const char * name = 0 ) - - - drag - drag - () - - - drag - drag-2 - ( DragMode mode ) - - - dragCopy - dragCopy - () - - - dragLink - dragLink - () - - - dragMove - dragMove - () - - - pixmap - pixmap - () - - - pixmapHotSpot - pixmapHotSpot - () - - - setPixmap - setPixmap - ( QPixmap pm, const QPoint & hotspot ) - - - setPixmap - setPixmap-2 - ( QPixmap pm ) - - - source - source - () - - - target - target - () - - - - Q3DropSite - q3dropsite.html - - Q3DropSite - Q3DropSite - ( QWidget * self ) - - - - Q3EditorFactory - q3editorfactory.html - - Q3EditorFactory - Q3EditorFactory - ( QObject * parent = 0 ) - - - createEditor - createEditor - ( QWidget * parent, const QVariant & v ) - - - defaultFactory - defaultFactory - () - - - installDefaultFactory - installDefaultFactory - ( Q3EditorFactory * factory ) - - - - Q3FileDialog - q3filedialog.html - - Mode - Mode-enum - - - - PreviewMode - PreviewMode-enum - - - - ViewMode - ViewMode-enum - - - - Q3FileDialog - Q3FileDialog - ( const QString & dirName, const QString & filter = QString() - - - Q3FileDialog - Q3FileDialog-2 - ( QWidget * parent = 0, const char * name = 0, bool modal = false ) - - - addFilter - addFilter - ( const QString & filter ) - - - addLeftWidget - addLeftWidget - ( QWidget * w ) - - - addRightWidget - addRightWidget - ( QWidget * w ) - - - addToolButton - addToolButton - ( QAbstractButton * b, bool separator = false ) - - - addWidgets - addWidgets - ( QLabel * l, QWidget * w, QPushButton * b ) - - - dir - dir - () - - - dirEntered - dirEntered - ( const QString & directory ) - - - fileHighlighted - fileHighlighted - ( const QString & file ) - - - fileSelected - fileSelected - ( const QString & file ) - - - filesSelected - filesSelected - ( const QStringList & files ) - - - filterSelected - filterSelected - ( const QString & filter ) - - - getExistingDirectory - getExistingDirectory - ( const QString & dir = QString() - - - getOpenFileName - getOpenFileName - ( const QString & startWith = QString() - - - getOpenFileNames - getOpenFileNames - ( const QString & filter = QString() - - - getSaveFileName - getSaveFileName - ( const QString & startWith = QString() - - - iconProvider - iconProvider - () - - - rereadDir - rereadDir - () - - - resortDir - resortDir - () - - - selectAll - selectAll - ( bool b ) - - - setContentsPreview - setContentsPreview - ( QWidget * w, Q3FilePreview * preview ) - - - setDir - setDir - ( const QDir & dir ) - - - setDir - setDir-2 - ( const QString & pathstr ) - - - setFilter - setFilter - ( const QString & newFilter ) - - - setFilters - setFilters - ( const QString & filters ) - - - setFilters - setFilters-2 - ( const char ** types ) - - - setFilters - setFilters-3 - ( const QStringList & types ) - - - setIconProvider - setIconProvider - ( Q3FileIconProvider * provider ) - - - setInfoPreview - setInfoPreview - ( QWidget * w, Q3FilePreview * preview ) - - - setSelectedFilter - setSelectedFilter - ( const QString & mask ) - - - setSelectedFilter - setSelectedFilter-2 - ( int n ) - - - setSelection - setSelection - ( const QString & filename ) - - - setUrl - setUrl - ( const Q3UrlOperator & url ) - - - url - url - () - - - - Q3FileIconProvider - q3fileiconprovider.html - - Q3FileIconProvider - Q3FileIconProvider - ( QObject * parent = 0, const char * name = 0 ) - - - pixmap - pixmap - ( const QFileInfo & info ) - - - - Q3FilePreview - q3filepreview.html - - Q3FilePreview - Q3FilePreview - () - - - previewUrl - previewUrl - ( const Q3Url & url ) - - - - Q3Frame - q3frame.html - - Q3Frame - Q3Frame - ( QWidget * parent, const char * name = 0, Qt::WFlags f = 0 ) - - - drawContents - drawContents - ( QPainter * painter ) - - - drawFrame - drawFrame - ( QPainter * p ) - - - frameChanged - frameChanged - () - - - frameWidth - frameWidth - () - - - paintEvent - paintEvent - ( QPaintEvent * event ) - - - resizeEvent - resizeEvent - ( QResizeEvent * event ) - - - - Q3Ftp - q3ftp.html - - Command - Command-enum - - - - Error - Error-enum - - - - State - State-enum - - - - Q3Ftp - Q3Ftp - () - - - Q3Ftp - Q3Ftp-2 - ( QObject * parent, const char * name = 0 ) - - - abort - abort - () - - - bytesAvailable - bytesAvailable - () - - - cd - cd - ( const QString & dir ) - - - clearPendingCommands - clearPendingCommands - () - - - close - close - () - - - commandFinished - commandFinished - ( int id, bool error ) - - - commandStarted - commandStarted - ( int id ) - - - connectToHost - connectToHost - ( const QString & host, Q_UINT16 port = 21 ) - - - currentCommand - currentCommand - () - - - currentDevice - currentDevice - () - - - currentId - currentId - () - - - dataTransferProgress - dataTransferProgress - ( int done, int total ) - - - done - done - ( bool error ) - - - error - error - () - - - errorString - errorString - () - - - get - get - ( const QString & file, QIODevice * dev = 0 ) - - - hasPendingCommands - hasPendingCommands - () - - - list - list - ( const QString & dir = QString() - - - listInfo - listInfo - ( const QUrlInfo & i ) - - - login - login - ( const QString & user = QString() - - - mkdir - mkdir - ( const QString & dir ) - - - put - put - ( QIODevice * dev, const QString & file ) - - - put - put-2 - ( const QByteArray & data, const QString & file ) - - - rawCommand - rawCommand - ( const QString & command ) - - - rawCommandReply - rawCommandReply - ( int replyCode, const QString & detail ) - - - readAll - readAll - () - - - readBlock - readBlock - ( char * data, Q_ULONG maxlen ) - - - readyRead - readyRead - () - - - remove - remove - ( const QString & file ) - - - rename - rename - ( const QString & oldname, const QString & newname ) - - - rmdir - rmdir - ( const QString & dir ) - - - state - state - () - - - stateChanged - stateChanged - ( int state ) - - - - Q3Grid - q3grid.html - - Q3Grid - Q3Grid - ( int n, QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) - - - Q3Grid - Q3Grid-2 - ( int n, Qt::Orientation orient, QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) - - - setSpacing - setSpacing - ( int space ) - - - - Q3GridView - q3gridview.html - - Q3GridView - Q3GridView - ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) - - - cellGeometry - cellGeometry - ( int row, int column ) - - - cellRect - cellRect - () - - - columnAt - columnAt - ( int x ) - - - dimensionChange - dimensionChange - ( int oldNumRows, int oldNumCols ) - - - ensureCellVisible - ensureCellVisible - ( int row, int column ) - - - gridSize - gridSize - () - - - paintCell - paintCell - ( QPainter * p, int row, int col ) - - - paintEmptyArea - paintEmptyArea - ( QPainter * p, int cx, int cy, int cw, int ch ) - - - repaintCell - repaintCell - ( int row, int column, bool erase = true ) - - - rowAt - rowAt - ( int y ) - - - updateCell - updateCell - ( int row, int column ) - - - - Q3GroupBox - q3groupbox.html - - DummyFrame - DummyFrame-enum - - - - Orientation - orientation - - - - Q3GroupBox - Q3GroupBox - ( QWidget * parent = 0, const char * name = 0 ) - - - Q3GroupBox - Q3GroupBox-2 - ( const QString & title, QWidget * parent = 0, const char * name = 0 ) - - - Q3GroupBox - Q3GroupBox-3 - ( int strips, Qt::Orientation orientation, QWidget * parent = 0, const char * name = 0 ) - - - Q3GroupBox - Q3GroupBox-4 - ( int strips, Qt::Orientation orientation, const QString & title, QWidget * parent = 0, const char * name = 0 ) - - - addSpace - addSpace - ( int size ) - - - insideMargin - insideMargin - () - - - insideSpacing - insideSpacing - () - - - setColumnLayout - setColumnLayout - ( int strips, Qt::Orientation direction ) - - - setFrameShadow - setFrameShadow - ( DummyFrame ) - - - setFrameShape - setFrameShape - ( DummyFrame ) - - - setInsideMargin - setInsideMargin - ( int m ) - - - setInsideSpacing - setInsideSpacing - ( int s ) - - - - Q3HBox - q3hbox.html - - Q3HBox - Q3HBox - ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) - - - Q3HBox - Q3HBox-2 - ( bool horizontal, QWidget * parent, const char * name, Qt::WFlags f = 0 ) - - - setSpacing - setSpacing - ( int space ) - - - setStretchFactor - setStretchFactor - ( QWidget * w, int stretch ) - - - - Q3HButtonGroup - q3hbuttongroup.html - - Q3HButtonGroup - Q3HButtonGroup - ( QWidget * parent = 0, const char * name = 0 ) - - - Q3HButtonGroup - Q3HButtonGroup-2 - ( const QString & title, QWidget * parent = 0, const char * name = 0 ) - - - - Q3Header - q3header.html - - Orientation - orientation - - - - Q3Header - Q3Header - ( QWidget * parent = 0, const char * name = 0 ) - - - Q3Header - Q3Header-2 - ( int n, QWidget * parent = 0, const char * name = 0 ) - - - addLabel - addLabel - ( const QString & s, int size = -1 ) - - - addLabel - addLabel-2 - ( const QIcon & icon, const QString & s, int size = -1 ) - - - adjustHeaderSize - adjustHeaderSize - () - - - cellAt - cellAt - ( int pos ) - - - cellPos - cellPos - ( int i ) - - - cellSize - cellSize - ( int i ) - - - clicked - clicked - ( int section ) - - - headerWidth - headerWidth - () - - - iconSet - iconSet - ( int section ) - - - indexChange - indexChange - ( int section, int fromIndex, int toIndex ) - - - isClickEnabled - isClickEnabled - ( int section = -1 ) - - - isResizeEnabled - isResizeEnabled - ( int section = -1 ) - - - label - label - ( int section ) - - - mapToActual - mapToActual - ( int l ) - - - mapToIndex - mapToIndex - ( int section ) - - - mapToLogical - mapToLogical - ( int a ) - - - mapToSection - mapToSection - ( int index ) - - - moveCell - moveCell - ( int fromIdx, int toIdx ) - - - moveSection - moveSection - ( int section, int toIndex ) - - - moved - moved - ( int fromIndex, int toIndex ) - - - paintSection - paintSection - ( QPainter * p, int index, const QRect & fr ) - - - paintSectionLabel - paintSectionLabel - ( QPainter * p, int index, const QRect & fr ) - - - pressed - pressed - ( int section ) - - - released - released - ( int section ) - - - removeLabel - removeLabel - ( int section ) - - - resizeSection - resizeSection - ( int section, int s ) - - - sRect - sRect - ( int index ) - - - sectionAt - sectionAt - ( int pos ) - - - sectionClicked - sectionClicked - ( int index ) - - - sectionHandleDoubleClicked - sectionHandleDoubleClicked - ( int section ) - - - sectionPos - sectionPos - ( int section ) - - - sectionRect - sectionRect - ( int section ) - - - sectionSize - sectionSize - ( int section ) - - - setCellSize - setCellSize - ( int section, int s ) - - - setClickEnabled - setClickEnabled - ( bool enable, int section = -1 ) - - - setLabel - setLabel - ( int section, const QString & s, int size = -1 ) - - - setLabel - setLabel-2 - ( int section, const QIcon & icon, const QString & s, int size = -1 ) - - - setResizeEnabled - setResizeEnabled - ( bool enable, int section = -1 ) - - - setSortIndicator - setSortIndicator - ( int section, Qt::SortOrder order ) - - - setSortIndicator - setSortIndicator-2 - ( int section, bool ascending = true ) - - - sizeChange - sizeChange - ( int section, int oldSize, int newSize ) - - - SortOrder - sortIndicatorOrder - Q3Header::sortIndicatorOrder() - - - sortIndicatorSection - sortIndicatorSection - () - - - - Q3Http - q3http.html - - Error - Error-enum - - - - State - State-enum - - - - Q3Http - Q3Http - () - - - Q3Http - Q3Http-2 - ( QObject * parent, const char * name = 0 ) - - - Q3Http - Q3Http-3 - ( const QString & hostname, Q_UINT16 port = 80, QObject * parent = 0, const char * name = 0 ) - - - abort - abort - () - - - bytesAvailable - bytesAvailable - () - - - clearPendingRequests - clearPendingRequests - () - - - closeConnection - closeConnection - () - - - currentDestinationDevice - currentDestinationDevice - () - - - currentId - currentId - () - - - currentRequest - currentRequest - () - - - currentSourceDevice - currentSourceDevice - () - - - dataReadProgress - dataReadProgress - ( int done, int total ) - - - dataSendProgress - dataSendProgress - ( int done, int total ) - - - done - done - ( bool error ) - - - error - error - () - - - errorString - errorString - () - - - get - get - ( const QString & path, QIODevice * to = 0 ) - - - hasPendingRequests - hasPendingRequests - () - - - head - head - ( const QString & path ) - - - post - post - ( const QString & path, QIODevice * data, QIODevice * to = 0 ) - - - post - post-2 - ( const QString & path, const QByteArray & data, QIODevice * to = 0 ) - - - readAll - readAll - () - - - readBlock - readBlock - ( char * data, Q_ULONG maxlen ) - - - readyRead - readyRead - ( const Q3HttpResponseHeader & resp ) - - - request - request - ( const Q3HttpRequestHeader & header, QIODevice * data = 0, QIODevice * to = 0 ) - - - request - request-2 - ( const Q3HttpRequestHeader & header, const QByteArray & data, QIODevice * to = 0 ) - - - requestFinished - requestFinished - ( int id, bool error ) - - - requestStarted - requestStarted - ( int id ) - - - responseHeaderReceived - responseHeaderReceived - ( const Q3HttpResponseHeader & resp ) - - - setHost - setHost - ( const QString & hostname, Q_UINT16 port = 80 ) - - - state - state - () - - - stateChanged - stateChanged - ( int state ) - - - - Q3HttpHeader - q3httpheader.html - - Q3HttpHeader - Q3HttpHeader - () - - - Q3HttpHeader - Q3HttpHeader-2 - ( const Q3HttpHeader & header ) - - - Q3HttpHeader - Q3HttpHeader-3 - ( const QString & str ) - - - contentLength - contentLength - () - - - contentType - contentType - () - - - hasContentLength - hasContentLength - () - - - hasContentType - hasContentType - () - - - hasKey - hasKey - ( const QString & key ) - - - isValid - isValid - () - - - keys - keys - () - - - majorVersion - majorVersion - () - - - minorVersion - minorVersion - () - - - removeValue - removeValue - ( const QString & key ) - - - setContentLength - setContentLength - ( int len ) - - - setContentType - setContentType - ( const QString & type ) - - - setValue - setValue - ( const QString & key, const QString & value ) - - - toString - toString - () - - - value - value - ( const QString & key ) - - - operator= - operator-eq - ( const Q3HttpHeader & h ) - - - - Q3HttpRequestHeader - q3httprequestheader.html - - Q3HttpRequestHeader - Q3HttpRequestHeader - () - - - Q3HttpRequestHeader - Q3HttpRequestHeader-2 - ( const QString & method, const QString & path, int majorVer = 1, int minorVer = 1 ) - - - Q3HttpRequestHeader - Q3HttpRequestHeader-3 - ( const Q3HttpRequestHeader & header ) - - - Q3HttpRequestHeader - Q3HttpRequestHeader-4 - ( const QString & str ) - - - majorVersion - majorVersion - () - - - method - method - () - - - minorVersion - minorVersion - () - - - path - path - () - - - setRequest - setRequest - ( const QString & method, const QString & path, int majorVer = 1, int minorVer = 1 ) - - - - Q3HttpResponseHeader - q3httpresponseheader.html - - Q3HttpResponseHeader - Q3HttpResponseHeader-3 - () - - - Q3HttpResponseHeader - Q3HttpResponseHeader-4 - ( const Q3HttpResponseHeader & header ) - - - majorVersion - majorVersion - () - - - minorVersion - minorVersion - () - - - reasonPhrase - reasonPhrase - () - - - statusCode - statusCode - () - - - - Q3IconDrag - q3icondrag.html - - Q3IconDrag - Q3IconDrag - ( QWidget * dragSource, const char * name = 0 ) - - - append - append - ( const Q3IconDragItem & i, const QRect & pr, const QRect & tr ) - - - canDecode - canDecode - ( QMimeSource * e ) - - - encodedData - encodedData - ( const char * mime ) - - - - Q3IconDragItem - q3icondragitem.html - - Q3IconDragItem - Q3IconDragItem - () - - - data - data - () - - - setData - setData - ( const QByteArray & d ) - - - - Q3IconView - q3iconview.html - - Arrangement - Arrangement-enum - - - - ComparisonFlags - ComparisonFlags-typedef - - - - ItemTextPos - ItemTextPos-enum - - - - ResizeMode - ResizeMode-enum - - - - SelectionMode - SelectionMode-enum - - - - StringComparisonMode - StringComparisonMode-enum - - - - Q3IconView - Q3IconView - ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) - - - adjustItems - adjustItems - () - - - arrangeItemsInGrid - arrangeItemsInGrid - ( const QSize & grid, bool update = true ) - - - arrangeItemsInGrid - arrangeItemsInGrid-2 - ( bool update = true ) - - - clear - clear - () - - - clearSelection - clearSelection - () - - - clicked - clicked - ( Q3IconViewItem * item ) - - - clicked - clicked-2 - ( Q3IconViewItem * item, const QPoint & pos ) - - - contextMenuRequested - contextMenuRequested - ( Q3IconViewItem * item, const QPoint & pos ) - - - currentChanged - currentChanged - ( Q3IconViewItem * item ) - - - currentItem - currentItem - () - - - doAutoScroll - doAutoScroll - () - - - doubleClicked - doubleClicked - ( Q3IconViewItem * item ) - - - dragObject - dragObject - () - - - drawBackground - drawBackground - ( QPainter * p, const QRect & r ) - - - drawRubber - drawRubber - ( QPainter * p ) - - - dropped - dropped - ( QDropEvent * e, const Q3ValueList<Q3IconDragItem> & lst ) - - - emitSelectionChanged - emitSelectionChanged - ( Q3IconViewItem * i = 0 ) - - - ensureItemVisible - ensureItemVisible - ( Q3IconViewItem * item ) - - - findFirstVisibleItem - findFirstVisibleItem - ( const QRect & r ) - - - findItem - findItem - ( const QPoint & pos ) - - - findItem - findItem-3 - ( const QString & text, ComparisonFlags compare = BeginsWith | Qt::CaseSensitive ) - - - findLastVisibleItem - findLastVisibleItem - ( const QRect & r ) - - - firstItem - firstItem - () - - - index - index - ( const Q3IconViewItem * item ) - - - insertInGrid - insertInGrid - ( Q3IconViewItem * item ) - - - insertItem - insertItem - ( Q3IconViewItem * item, Q3IconViewItem * after = 0L ) - - - invertSelection - invertSelection - () - - - isRenaming - isRenaming - () - - - itemRenamed - itemRenamed - ( Q3IconViewItem * item, const QString & name ) - - - itemRenamed - itemRenamed-2 - ( Q3IconViewItem * item ) - - - lastItem - lastItem - () - - - makeRowLayout - makeRowLayout - ( Q3IconViewItem * begin, int & y, bool & changed ) - - - mouseButtonClicked - mouseButtonClicked - ( int button, Q3IconViewItem * item, const QPoint & pos ) - - - mouseButtonPressed - mouseButtonPressed - ( int button, Q3IconViewItem * item, const QPoint & pos ) - - - moved - moved - () - - - onItem - onItem - ( Q3IconViewItem * item ) - - - onViewport - onViewport - () - - - pressed - pressed - ( Q3IconViewItem * item ) - - - pressed - pressed-2 - ( Q3IconViewItem * item, const QPoint & pos ) - - - repaintItem - repaintItem - ( Q3IconViewItem * item ) - - - repaintSelectedItems - repaintSelectedItems - () - - - returnPressed - returnPressed - ( Q3IconViewItem * item ) - - - rightButtonClicked - rightButtonClicked - ( Q3IconViewItem * item, const QPoint & pos ) - - - rightButtonPressed - rightButtonPressed - ( Q3IconViewItem * item, const QPoint & pos ) - - - selectAll - selectAll - ( bool select ) - - - selectionChanged - selectionChanged - () - - - selectionChanged - selectionChanged-2 - ( Q3IconViewItem * item ) - - - setCurrentItem - setCurrentItem - ( Q3IconViewItem * item ) - - - setSelected - setSelected - ( Q3IconViewItem * item, bool s, bool cb = false ) - - - setSorting - setSorting - ( bool sort, bool ascending = true ) - - - slotUpdate - slotUpdate - () - - - sort - sort - ( bool ascending = true ) - - - startDrag - startDrag - () - - - takeItem - takeItem - ( Q3IconViewItem * item ) - - - - Q3IconViewItem - q3iconviewitem.html - - Q3IconViewItem - Q3IconViewItem - ( Q3IconView * parent ) - - - Q3IconViewItem - Q3IconViewItem-2 - ( Q3IconView * parent, Q3IconViewItem * after ) - - - Q3IconViewItem - Q3IconViewItem-3 - ( Q3IconView * parent, const QString & text ) - - - Q3IconViewItem - Q3IconViewItem-4 - ( Q3IconView * parent, Q3IconViewItem * after, const QString & text ) - - - Q3IconViewItem - Q3IconViewItem-5 - ( Q3IconView * parent, const QString & text, const QPixmap & icon ) - - - Q3IconViewItem - Q3IconViewItem-6 - ( Q3IconView * parent, Q3IconViewItem * after, const QString & text, const QPixmap & icon ) - - - Q3IconViewItem - Q3IconViewItem-7 - ( Q3IconView * parent, const QString & text, const QPicture & picture ) - - - Q3IconViewItem - Q3IconViewItem-8 - ( Q3IconView * parent, Q3IconViewItem * after, const QString & text, const QPicture & picture ) - - - acceptDrop - acceptDrop - ( const QMimeSource * mime ) - - - calcRect - calcRect - ( const QString & text_ = QString() - - - compare - compare - ( Q3IconViewItem * i ) - - - contains - contains - ( const QPoint & pnt ) - - - dragEnabled - dragEnabled - () - - - dragEntered - dragEntered - () - - - dragLeft - dragLeft - () - - - dropEnabled - dropEnabled - () - - - dropped - dropped - ( QDropEvent * e, const Q3ValueList<Q3IconDragItem> & lst ) - - - height - height - () - - - iconView - iconView - () - - - index - index - () - - - intersects - intersects - ( const QRect & r ) - - - isSelectable - isSelectable - () - - - isSelected - isSelected - () - - - key - key - () - - - move - move - ( int x, int y ) - - - move - move-2 - ( const QPoint & pnt ) - - - moveBy - moveBy - ( int dx, int dy ) - - - moveBy - moveBy-2 - ( const QPoint & pnt ) - - - nextItem - nextItem - () - - - paintFocus - paintFocus - ( QPainter * p, const QPalette & cg ) - - - paintItem - paintItem - ( QPainter * p, const QPalette & cg ) - - - picture - picture - () - - - pixmap - pixmap - () - - - pixmapRect - pixmapRect - ( bool relative = true ) - - - pos - pos - () - - - prevItem - prevItem - () - - - rect - rect - () - - - removeRenameBox - removeRenameBox - () - - - rename - rename - () - - - renameEnabled - renameEnabled - () - - - repaint - repaint - () - - - rtti - rtti - () - - - setDragEnabled - setDragEnabled - ( bool allow ) - - - setDropEnabled - setDropEnabled - ( bool allow ) - - - setItemRect - setItemRect - ( const QRect & r ) - - - setKey - setKey - ( const QString & k ) - - - setPicture - setPicture - ( const QPicture & icon ) - - - setPixmap - setPixmap - ( const QPixmap & icon ) - - - setPixmap - setPixmap-2 - ( const QPixmap & icon, bool recalc, bool redraw = true ) - - - setPixmapRect - setPixmapRect - ( const QRect & r ) - - - setRenameEnabled - setRenameEnabled - ( bool allow ) - - - setSelectable - setSelectable - ( bool enable ) - - - setSelected - setSelected - ( bool s, bool cb ) - - - setSelected - setSelected-2 - ( bool s ) - - - setText - setText - ( const QString & text ) - - - setText - setText-2 - ( const QString & text, bool recalc, bool redraw = true ) - - - setTextRect - setTextRect - ( const QRect & r ) - - - size - size - () - - - text - text - () - - - textRect - textRect - ( bool relative = true ) - - - width - width - () - - - x - x - () - - - y - y - () - - - - Q3ImageDrag - q3imagedrag.html - - Q3ImageDrag - Q3ImageDrag - ( QImage image, QWidget * dragSource = 0, const char * name = 0 ) - - - Q3ImageDrag - Q3ImageDrag-2 - ( QWidget * dragSource = 0, const char * name = 0 ) - - - canDecode - canDecode - ( const QMimeSource * source ) - - - decode - decode - ( const QMimeSource * source, QImage & image ) - - - decode - decode-2 - ( const QMimeSource * source, QPixmap & pixmap ) - - - setImage - setImage - ( QImage image ) - - - - Q3IntCache - q3intcache.html - - Q3IntCache - Q3IntCache-2 - ( int maxCost = 100, int size = 17 ) - - - clear - clear - () - - - count - count - () - - - find - find - ( long k, bool ref = true ) - - - insert - insert - ( long k, const type * d, int c = 1, int p = 0 ) - - - isEmpty - isEmpty - () - - - maxCost - maxCost - () - - - remove - remove - ( long k ) - - - setMaxCost - setMaxCost - ( int m ) - - - size - size - () - - - statistics - statistics - () - - - take - take - ( long k ) - - - totalCost - totalCost - () - - - operator[] - operator-5b-5d - ( long k ) - - - - Q3IntCacheIterator - q3intcacheiterator.html - - Q3IntCacheIterator - Q3IntCacheIterator - ( const Q3IntCache<type> & cache ) - - - Q3IntCacheIterator - Q3IntCacheIterator-2 - ( const Q3IntCacheIterator<type> & ci ) - - - atFirst - atFirst - () - - - atLast - atLast - () - - - count - count - () - - - current - current - () - - - currentKey - currentKey - () - - - isEmpty - isEmpty - () - - - toFirst - toFirst - () - - - toLast - toLast - () - - - operator - operator-type--2a - type *() - - - operator() - operator-28-29 - () - - - operator++ - operator-2b-2b - () - - - operator+= - operator-2b-eq - ( uint jump ) - - - operator-- - operator-- - () - - - operator-= - operator--eq - ( uint jump ) - - - operator= - operator-eq - ( const Q3IntCacheIterator<type> & ci ) - - - - Q3IntDict - q3intdict.html - - Q3IntDict - Q3IntDict - ( int size = 17 ) - - - Q3IntDict - Q3IntDict-2 - ( const Q3IntDict<type> & dict ) - - - clear - clear - () - - - count - count - () - - - find - find - ( long key ) - - - insert - insert - ( long key, const type * item ) - - - isEmpty - isEmpty - () - - - read - read - ( QDataStream & s, Q3PtrCollection::Item & item ) - - - remove - remove - ( long key ) - - - replace - replace - ( long key, const type * item ) - - - resize - resize - ( uint newsize ) - - - size - size - () - - - statistics - statistics - () - - - take - take - ( long key ) - - - write - write - ( QDataStream & s, Q3PtrCollection::Item item ) - - - operator= - operator-eq - ( const Q3IntDict<type> & dict ) - - - operator[] - operator-5b-5d - ( long key ) - - - - Q3IntDictIterator - q3intdictiterator.html - - Q3IntDictIterator - Q3IntDictIterator - ( const Q3IntDict<type> & dict ) - - - count - count - () - - - current - current - () - - - currentKey - currentKey - () - - - isEmpty - isEmpty - () - - - toFirst - toFirst - () - - - operator - operator-type--2a - type *() - - - operator() - operator-28-29 - () - - - operator++ - operator-2b-2b - () - - - operator+= - operator-2b-eq - ( uint jump ) - - - - Q3ListBox - q3listbox.html - - ComparisonFlags - ComparisonFlags-typedef - - - - LayoutMode - LayoutMode-enum - - - - SelectionMode - SelectionMode-enum - - - - StringComparisonMode - StringComparisonMode-enum - - - - Q3ListBox - Q3ListBox - ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) - - - autoBottomScrollBar - autoBottomScrollBar - () - - - autoScroll - autoScroll - () - - - autoScrollBar - autoScrollBar - () - - - autoUpdate - autoUpdate - () - - - bottomScrollBar - bottomScrollBar - () - - - cellHeight - cellHeight - ( int i ) - - - cellHeight - cellHeight-2 - () - - - cellWidth - cellWidth - () - - - cellWidth - cellWidth-2 - ( int i ) - - - centerCurrentItem - centerCurrentItem - () - - - changeItem - changeItem - ( const Q3ListBoxItem * lbi, int index ) - - - changeItem - changeItem-2 - ( const QString & text, int index ) - - - changeItem - changeItem-3 - ( const QPixmap & pixmap, int index ) - - - changeItem - changeItem-4 - ( const QPixmap & pixmap, const QString & text, int index ) - - - clear - clear - () - - - clearSelection - clearSelection - () - - - clicked - clicked - ( Q3ListBoxItem * item ) - - - clicked - clicked-2 - ( Q3ListBoxItem * item, const QPoint & pnt ) - - - contextMenuRequested - contextMenuRequested - ( Q3ListBoxItem * item, const QPoint & pos ) - - - currentChanged - currentChanged - ( Q3ListBoxItem * item ) - - - doLayout - doLayout - () - - - doubleClicked - doubleClicked - ( Q3ListBoxItem * item ) - - - dragSelect - dragSelect - () - - - ensureCurrentVisible - ensureCurrentVisible - () - - - findItem - findItem - ( const QString & text, ComparisonFlags compare = BeginsWith ) - - - findItem - findItem-2 - ( int yPos ) - - - firstItem - firstItem - () - - - highlighted - highlighted - ( int index ) - - - highlighted - highlighted-2 - ( Q3ListBoxItem * item ) - - - highlighted - highlighted-3 - ( const QString & text ) - - - inSort - inSort - ( const Q3ListBoxItem * lbi ) - - - inSort - inSort-2 - ( const QString & text ) - - - index - index - ( const Q3ListBoxItem * lbi ) - - - insertItem - insertItem - ( const Q3ListBoxItem * lbi, int index = -1 ) - - - insertItem - insertItem-2 - ( const Q3ListBoxItem * lbi, const Q3ListBoxItem * after ) - - - insertItem - insertItem-3 - ( const QString & text, int index = -1 ) - - - insertItem - insertItem-4 - ( const QPixmap & pixmap, int index = -1 ) - - - insertItem - insertItem-5 - ( const QPixmap & pixmap, const QString & text, int index = -1 ) - - - insertStrList - insertStrList - ( const char ** strings, int numStrings = -1, int index = -1 ) - - - insertStringList - insertStringList - ( const QStringList & list, int index = -1 ) - - - invertSelection - invertSelection - () - - - isRubberSelecting - isRubberSelecting - () - - - isSelected - isSelected - ( int i ) - - - isSelected - isSelected-2 - ( const Q3ListBoxItem * i ) - - - item - item - ( int index ) - - - itemAt - itemAt - ( const QPoint & p ) - - - itemHeight - itemHeight - ( int index = 0 ) - - - itemRect - itemRect - ( Q3ListBoxItem * item ) - - - itemVisible - itemVisible - ( int index ) - - - itemVisible - itemVisible-2 - ( const Q3ListBoxItem * item ) - - - maxItemWidth - maxItemWidth - () - - - mouseButtonClicked - mouseButtonClicked - ( int button, Q3ListBoxItem * item, const QPoint & pos ) - - - mouseButtonPressed - mouseButtonPressed - ( int button, Q3ListBoxItem * item, const QPoint & pos ) - - - numCols - numCols - () - - - onItem - onItem - ( Q3ListBoxItem * i ) - - - onViewport - onViewport - () - - - paintCell - paintCell - ( QPainter * p, int row, int col ) - - - pixmap - pixmap - ( int index ) - - - pressed - pressed - ( Q3ListBoxItem * item ) - - - pressed - pressed-2 - ( Q3ListBoxItem * item, const QPoint & pnt ) - - - removeItem - removeItem - ( int index ) - - - returnPressed - returnPressed - ( Q3ListBoxItem * item ) - - - rightButtonClicked - rightButtonClicked - ( Q3ListBoxItem * item, const QPoint & point ) - - - rightButtonPressed - rightButtonPressed - ( Q3ListBoxItem * item, const QPoint & point ) - - - scrollBar - scrollBar - () - - - selectAll - selectAll - ( bool select ) - - - selected - selected - ( int index ) - - - selected - selected-2 - ( Q3ListBoxItem * item ) - - - selected - selected-3 - ( const QString & text ) - - - selectedItem - selectedItem - () - - - selectionChanged - selectionChanged - () - - - selectionChanged - selectionChanged-2 - ( Q3ListBoxItem * item ) - - - setAutoBottomScrollBar - setAutoBottomScrollBar - ( bool enable ) - - - setAutoScroll - setAutoScroll - ( bool b ) - - - setAutoScrollBar - setAutoScrollBar - ( bool enable ) - - - setAutoUpdate - setAutoUpdate - ( bool b ) - - - setBottomItem - setBottomItem - ( int index ) - - - setBottomScrollBar - setBottomScrollBar - ( bool enable ) - - - setDragSelect - setDragSelect - ( bool b ) - - - setFixedVisibleLines - setFixedVisibleLines - ( int lines ) - - - setScrollBar - setScrollBar - ( bool enable ) - - - setSelected - setSelected - ( Q3ListBoxItem * item, bool select ) - - - setSelected - setSelected-2 - ( int index, bool select ) - - - setSmoothScrolling - setSmoothScrolling - ( bool b ) - - - smoothScrolling - smoothScrolling - () - - - sort - sort - ( bool ascending = true ) - - - takeItem - takeItem - ( const Q3ListBoxItem * item ) - - - text - text - ( int index ) - - - toggleCurrentItem - toggleCurrentItem - () - - - totalHeight - totalHeight - () - - - totalWidth - totalWidth - () - - - triggerUpdate - triggerUpdate - ( bool doLayout ) - - - updateCellWidth - updateCellWidth - () - - - updateItem - updateItem - ( int index ) - - - updateItem - updateItem-2 - ( Q3ListBoxItem * i ) - - - - Q3ListBoxItem - q3listboxitem.html - - Q3ListBoxItem - Q3ListBoxItem - ( Q3ListBox * listbox = 0 ) - - - Q3ListBoxItem - Q3ListBoxItem-2 - ( Q3ListBox * listbox, Q3ListBoxItem * after ) - - - current - current - () - - - height - height - ( const Q3ListBox * lb ) - - - isCurrent - isCurrent - () - - - isSelectable - isSelectable - () - - - isSelected - isSelected - () - - - listBox - listBox - () - - - next - next - () - - - paint - paint - ( QPainter * p ) - - - pixmap - pixmap - () - - - prev - prev - () - - - rtti - rtti - () - - - selected - selected - () - - - setCustomHighlighting - setCustomHighlighting - ( bool b ) - - - setSelectable - setSelectable - ( bool b ) - - - setText - setText - ( const QString & text ) - - - text - text - () - - - width - width - ( const Q3ListBox * lb ) - - - - Q3ListBoxPixmap - q3listboxpixmap.html - - Q3ListBoxPixmap - Q3ListBoxPixmap - ( Q3ListBox * listbox, const QPixmap & pixmap ) - - - Q3ListBoxPixmap - Q3ListBoxPixmap-2 - ( const QPixmap & pixmap ) - - - Q3ListBoxPixmap - Q3ListBoxPixmap-3 - ( Q3ListBox * listbox, const QPixmap & pixmap, Q3ListBoxItem * after ) - - - Q3ListBoxPixmap - Q3ListBoxPixmap-4 - ( Q3ListBox * listbox, const QPixmap & pix, const QString & text ) - - - Q3ListBoxPixmap - Q3ListBoxPixmap-5 - ( const QPixmap & pix, const QString & text ) - - - Q3ListBoxPixmap - Q3ListBoxPixmap-6 - ( Q3ListBox * listbox, const QPixmap & pix, const QString & text, Q3ListBoxItem * after ) - - - height - height - ( const Q3ListBox * lb ) - - - paint - paint - ( QPainter * painter ) - - - pixmap - pixmap - () - - - width - width - ( const Q3ListBox * lb ) - - - - Q3ListBoxText - q3listboxtext.html - - Q3ListBoxText - Q3ListBoxText - ( Q3ListBox * listbox, const QString & text = QString() - - - Q3ListBoxText - Q3ListBoxText-2 - ( const QString & text = QString() - - - Q3ListBoxText - Q3ListBoxText-3 - ( Q3ListBox * listbox, const QString & text, Q3ListBoxItem * after ) - - - height - height - ( const Q3ListBox * lb ) - - - paint - paint - ( QPainter * painter ) - - - width - width - ( const Q3ListBox * lb ) - - - - Q3ListView - q3listview.html - - ComparisonFlags - ComparisonFlags-typedef - - - - RenameAction - RenameAction-enum - - - - ResizeMode - ResizeMode-enum - - - - SelectionMode - SelectionMode-enum - - - - StringComparisonMode - StringComparisonMode-enum - - - - WidthMode - WidthMode-enum - - - - Q3ListView - Q3ListView - ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) - - - addColumn - addColumn - ( const QString & label, int width = -1 ) - - - addColumn - addColumn-2 - ( const QIcon & icon, const QString & label, int width = -1 ) - - - adjustColumn - adjustColumn - ( int col ) - - - clear - clear - () - - - clearSelection - clearSelection - () - - - clicked - clicked - ( Q3ListViewItem * item ) - - - clicked - clicked-2 - ( Q3ListViewItem * item, const QPoint & pnt, int c ) - - - collapsed - collapsed - ( Q3ListViewItem * item ) - - - columnAlignment - columnAlignment - ( int column ) - - - columnText - columnText - ( int c ) - - - columnWidth - columnWidth - ( int c ) - - - columnWidthMode - columnWidthMode - ( int c ) - - - contentsMouseDoubleClickEvent - contentsMouseDoubleClickEvent - ( QMouseEvent * e ) - - - contentsMouseMoveEvent - contentsMouseMoveEvent - ( QMouseEvent * e ) - - - contentsMousePressEvent - contentsMousePressEvent - ( QMouseEvent * e ) - - - contentsMouseReleaseEvent - contentsMouseReleaseEvent - ( QMouseEvent * e ) - - - contextMenuRequested - contextMenuRequested - ( Q3ListViewItem * item, const QPoint & pos, int col ) - - - currentChanged - currentChanged - ( Q3ListViewItem * item ) - - - currentItem - currentItem - () - - - doAutoScroll - doAutoScroll - () - - - doubleClicked - doubleClicked - ( Q3ListViewItem * item ) - - - doubleClicked - doubleClicked-2 - ( Q3ListViewItem * item, const QPoint & point, int column ) - - - dragObject - dragObject - () - - - drawContentsOffset - drawContentsOffset - ( QPainter * p, int ox, int oy, int cx, int cy, int cw, int ch ) - - - dropped - dropped - ( QDropEvent * e ) - - - ensureItemVisible - ensureItemVisible - ( const Q3ListViewItem * i ) - - - eventFilter - eventFilter - ( QObject * o, QEvent * e ) - - - expanded - expanded - ( Q3ListViewItem * item ) - - - findItem - findItem - ( const QString & text, int column, ComparisonFlags compare = ExactMatch | Qt::CaseSensitive ) - - - firstChild - firstChild - () - - - header - header - () - - - hideColumn - hideColumn - ( int column ) - - - insertItem - insertItem - ( Q3ListViewItem * i ) - - - invertSelection - invertSelection - () - - - isOpen - isOpen - ( const Q3ListViewItem * item ) - - - isRenaming - isRenaming - () - - - isSelected - isSelected - ( const Q3ListViewItem * i ) - - - itemAt - itemAt - ( const QPoint & viewPos ) - - - itemPos - itemPos - ( const Q3ListViewItem * item ) - - - itemRect - itemRect - ( const Q3ListViewItem * item ) - - - itemRenamed - itemRenamed - ( Q3ListViewItem * item, int col, const QString & text ) - - - itemRenamed - itemRenamed-2 - ( Q3ListViewItem * item, int col ) - - - lastItem - lastItem - () - - - mouseButtonClicked - mouseButtonClicked - ( int button, Q3ListViewItem * item, const QPoint & pos, int c ) - - - mouseButtonPressed - mouseButtonPressed - ( int button, Q3ListViewItem * item, const QPoint & pos, int c ) - - - onItem - onItem - ( Q3ListViewItem * i ) - - - onViewport - onViewport - () - - - paintEmptyArea - paintEmptyArea - ( QPainter * p, const QRect & rect ) - - - pressed - pressed - ( Q3ListViewItem * item ) - - - pressed - pressed-2 - ( Q3ListViewItem * item, const QPoint & pnt, int c ) - - - removeColumn - removeColumn - ( int index ) - - - removeItem - removeItem - ( Q3ListViewItem * item ) - - - repaintItem - repaintItem - ( const Q3ListViewItem * item ) - - - resizeEvent - resizeEvent - ( QResizeEvent * e ) - - - returnPressed - returnPressed - ( Q3ListViewItem * item ) - - - rightButtonClicked - rightButtonClicked - ( Q3ListViewItem * item, const QPoint & point, int column ) - - - rightButtonPressed - rightButtonPressed - ( Q3ListViewItem * item, const QPoint & point, int column ) - - - selectAll - selectAll - ( bool select ) - - - selectedItem - selectedItem - () - - - selectionChanged - selectionChanged - () - - - selectionChanged - selectionChanged-2 - ( Q3ListViewItem * item ) - - - setColumnAlignment - setColumnAlignment - ( int column, int align ) - - - setColumnText - setColumnText - ( int column, const QString & label ) - - - setColumnText - setColumnText-2 - ( int column, const QIcon & icon, const QString & label ) - - - setColumnWidth - setColumnWidth - ( int column, int w ) - - - setColumnWidthMode - setColumnWidthMode - ( int c, WidthMode mode ) - - - setCurrentItem - setCurrentItem - ( Q3ListViewItem * i ) - - - setOpen - setOpen - ( Q3ListViewItem * item, bool open ) - - - setSelected - setSelected - ( Q3ListViewItem * item, bool selected ) - - - setSelectionAnchor - setSelectionAnchor - ( Q3ListViewItem * item ) - - - setSortColumn - setSortColumn - ( int column ) - - - setSortOrder - setSortOrder - ( Qt::SortOrder order ) - - - setSorting - setSorting - ( int column, bool ascending = true ) - - - sort - sort - () - - - sortColumn - sortColumn - () - - - SortOrder - sortOrder - Q3ListView::sortOrder() - - - spacePressed - spacePressed - ( Q3ListViewItem * item ) - - - startDrag - startDrag - () - - - takeItem - takeItem - ( Q3ListViewItem * i ) - - - triggerUpdate - triggerUpdate - () - - - updateContents - updateContents - () - - - - Q3ListViewItem - q3listviewitem.html - - Q3ListViewItem - Q3ListViewItem - ( Q3ListView * parent ) - - - Q3ListViewItem - Q3ListViewItem-2 - ( Q3ListViewItem * parent ) - - - Q3ListViewItem - Q3ListViewItem-3 - ( Q3ListView * parent, Q3ListViewItem * after ) - - - Q3ListViewItem - Q3ListViewItem-4 - ( Q3ListViewItem * parent, Q3ListViewItem * after ) - - - Q3ListViewItem - Q3ListViewItem-5 - ( Q3ListView * parent, const QString & label1, const QString & label2 = QString() - - - Q3ListViewItem - Q3ListViewItem-6 - ( Q3ListViewItem * parent, const QString & label1, const QString & label2 = QString() - - - Q3ListViewItem - Q3ListViewItem-7 - ( Q3ListView * parent, Q3ListViewItem * after, const QString & label1, const QString & label2 = QString() - - - Q3ListViewItem - Q3ListViewItem-8 - ( Q3ListViewItem * parent, Q3ListViewItem * after, const QString & label1, const QString & label2 = QString() - - - acceptDrop - acceptDrop - ( const QMimeSource * mime ) - - - activate - activate - () - - - activatedPos - activatedPos - ( QPoint & pos ) - - - cancelRename - cancelRename - ( int col ) - - - childCount - childCount - () - - - compare - compare - ( Q3ListViewItem * i, int col, bool ascending ) - - - depth - depth - () - - - dragEnabled - dragEnabled - () - - - dragEntered - dragEntered - () - - - dragLeft - dragLeft - () - - - dropEnabled - dropEnabled - () - - - dropped - dropped - ( QDropEvent * e ) - - - enforceSortOrder - enforceSortOrder - () - - - firstChild - firstChild - () - - - height - height - () - - - insertItem - insertItem - ( Q3ListViewItem * newChild ) - - - invalidateHeight - invalidateHeight - () - - - isEnabled - isEnabled - () - - - isExpandable - isExpandable - () - - - isOpen - isOpen - () - - - isSelectable - isSelectable - () - - - isSelected - isSelected - () - - - isVisible - isVisible - () - - - itemAbove - itemAbove - () - - - itemBelow - itemBelow - () - - - itemPos - itemPos - () - - - key - key - ( int column, bool ascending ) - - - listView - listView - () - - - moveItem - moveItem - ( Q3ListViewItem * after ) - - - multiLinesEnabled - multiLinesEnabled - () - - - nextSibling - nextSibling - () - - - okRename - okRename - ( int col ) - - - paintBranches - paintBranches - ( QPainter * p, const QPalette & pal, int w, int y, int h ) - - - paintFocus - paintFocus - ( QPainter * p, const QPalette & pal, const QRect & r ) - - - parent - parent - () - - - pixmap - pixmap - ( int column ) - - - removeItem - removeItem - ( Q3ListViewItem * item ) - - - renameEnabled - renameEnabled - ( int col ) - - - repaint - repaint - () - - - rtti - rtti - () - - - setDragEnabled - setDragEnabled - ( bool allow ) - - - setDropEnabled - setDropEnabled - ( bool allow ) - - - setEnabled - setEnabled - ( bool b ) - - - setExpandable - setExpandable - ( bool enable ) - - - setHeight - setHeight - ( int height ) - - - setMultiLinesEnabled - setMultiLinesEnabled - ( bool b ) - - - setOpen - setOpen - ( bool o ) - - - setPixmap - setPixmap - ( int column, const QPixmap & pm ) - - - setRenameEnabled - setRenameEnabled - ( int col, bool b ) - - - setSelectable - setSelectable - ( bool enable ) - - - setSelected - setSelected - ( bool s ) - - - setText - setText - ( int column, const QString & text ) - - - setVisible - setVisible - ( bool b ) - - - setup - setup - () - - - sort - sort - () - - - sortChildItems - sortChildItems - ( int column, bool ascending ) - - - startRename - startRename - ( int col ) - - - takeItem - takeItem - ( Q3ListViewItem * item ) - - - text - text - ( int column ) - - - totalHeight - totalHeight - () - - - width - width - ( const QFontMetrics & fm, const Q3ListView * lv, int c ) - - - widthChanged - widthChanged - ( int c = -1 ) - - - - Q3ListViewItemIterator - q3listviewitemiterator.html - - IteratorFlag - IteratorFlag-enum - - - - Q3ListViewItemIterator - Q3ListViewItemIterator - () - - - Q3ListViewItemIterator - Q3ListViewItemIterator-2 - ( Q3ListViewItem * item ) - - - Q3ListViewItemIterator - Q3ListViewItemIterator-3 - ( Q3ListViewItem * item, int iteratorFlags ) - - - Q3ListViewItemIterator - Q3ListViewItemIterator-4 - ( const Q3ListViewItemIterator & it ) - - - Q3ListViewItemIterator - Q3ListViewItemIterator-5 - ( Q3ListView * lv ) - - - Q3ListViewItemIterator - Q3ListViewItemIterator-6 - ( Q3ListView * lv, int iteratorFlags ) - - - current - current - () - - - operator* - operator-2a - () - - - operator++ - operator-2b-2b - () - - - operator++ - operator-2b-2b-2 - ( int ) - - - operator+= - operator-2b-eq - ( int j ) - - - operator-- - operator-- - () - - - operator-- - operator---2 - ( int ) - - - operator-= - operator--eq - ( int j ) - - - operator= - operator-eq - ( const Q3ListViewItemIterator & it ) - - - - Q3LocalFs - q3localfs.html - - Q3LocalFs - Q3LocalFs - () - - - - Q3MainWindow - q3mainwindow.html - - DockWindows - DockWindows-enum - - - - Q3MainWindow - Q3MainWindow - ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = Qt::WType_TopLevel ) - - - addDockWindow - addDockWindow - ( Q3DockWindow * dockWindow, Qt::Dock edge = Qt::DockTop, bool newLine = false ) - - - addDockWindow - addDockWindow-2 - ( Q3DockWindow * dockWindow, const QString & label, Qt::Dock edge = Qt::DockTop, bool newLine = false ) - - - addToolBar - addToolBar - ( Q3DockWindow * dockWindow, Qt::Dock position = Qt::DockTop, bool newLine = false ) - - - addToolBar - addToolBar-2 - ( Q3DockWindow * dockWindow, const QString & label, Qt::Dock position = Qt::DockTop, bool newLine = false ) - - - appropriate - appropriate - ( Q3DockWindow * dw ) - - - bottomDock - bottomDock - () - - - centralWidget - centralWidget - () - - - childEvent - childEvent - ( QChildEvent * e ) - - - createDockWindowMenu - createDockWindowMenu - ( DockWindows dockWindows = AllDockWindows ) - - - customize - customize - () - - - dockWindowPositionChanged - dockWindowPositionChanged - ( Q3DockWindow * dockWindow ) - - - dockWindows - dockWindows - ( Qt::Dock dock ) - - - dockWindows - dockWindows-2 - () - - - getLocation - getLocation - ( Q3DockWindow * dw, Qt::Dock & dock, int & index, bool & nl, int & extraOffset ) - - - hasDockWindow - hasDockWindow - ( Q3DockWindow * dw ) - - - isCustomizable - isCustomizable - () - - - isDockEnabled - isDockEnabled - ( Qt::Dock dock ) - - - isDockEnabled - isDockEnabled-2 - ( Q3DockArea * area ) - - - isDockEnabled - isDockEnabled-3 - ( Q3DockWindow * dw, Q3DockArea * area ) - - - isDockEnabled - isDockEnabled-4 - ( Q3DockWindow * tb, Qt::Dock dock ) - - - isDockMenuEnabled - isDockMenuEnabled - () - - - leftDock - leftDock - () - - - lineUpDockWindows - lineUpDockWindows - ( bool keepNewLines = false ) - - - lineUpToolBars - lineUpToolBars - ( bool keepNewLines = false ) - - - menuBar - menuBar - () - - - moveDockWindow - moveDockWindow - ( Q3DockWindow * dockWindow, Qt::Dock edge = Qt::DockTop ) - - - moveDockWindow - moveDockWindow-2 - ( Q3DockWindow * dockWindow, Qt::Dock edge, bool nl, int index, int extraOffset = -1 ) - - - moveToolBar - moveToolBar - ( Q3DockWindow * dockWindow, Qt::Dock position = Qt::DockTop ) - - - moveToolBar - moveToolBar-2 - ( Q3DockWindow * dockWindow, Qt::Dock position, bool nl, int index, int extraOffset = -1 ) - - - pixmapSizeChanged - pixmapSizeChanged - ( bool b ) - - - removeDockWindow - removeDockWindow - ( Q3DockWindow * dockWindow ) - - - removeToolBar - removeToolBar - ( Q3DockWindow * dockWindow ) - - - rightDock - rightDock - () - - - setAppropriate - setAppropriate - ( Q3DockWindow * dw, bool a ) - - - setCentralWidget - setCentralWidget - ( QWidget * w ) - - - setDockEnabled - setDockEnabled - ( Qt::Dock dock, bool enable ) - - - setDockEnabled - setDockEnabled-2 - ( Q3DockWindow * dw, Qt::Dock dock, bool enable ) - - - setDockMenuEnabled - setDockMenuEnabled - ( bool b ) - - - setToolBarsMovable - setToolBarsMovable - ( bool b ) - - - setUpLayout - setUpLayout - () - - - showDockMenu - showDockMenu - ( const QPoint & globalPos ) - - - statusBar - statusBar - () - - - toolBarPositionChanged - toolBarPositionChanged - ( Q3ToolBar * toolbar ) - - - toolBars - toolBars - ( Qt::Dock dock ) - - - toolBarsMovable - toolBarsMovable - () - - - topDock - topDock - () - - - usesTextLabelChanged - usesTextLabelChanged - ( bool b ) - - - whatsThis - whatsThis - () - - - - Q3MemArray - q3memarray.html - - ConstIterator - ConstIterator-typedef - - - - Iterator - Iterator-typedef - - - - Q3MemArray - Q3MemArray - ( int arg1, int arg2 ) - - - Q3MemArray - Q3MemArray-2 - () - - - Q3MemArray - Q3MemArray-3 - ( int size ) - - - Q3MemArray - Q3MemArray-4 - ( const Q3MemArray<type> & a ) - - - Q3MemArray - Q3MemArray-5 - ( const QVector<type> & vector ) - - - assign - assign - ( const Q3MemArray<type> & a ) - - - assign - assign-2 - ( const type * data, uint size ) - - - at - at - ( uint index ) - - - begin - begin - () - - - begin - begin-2 - () - - - bsearch - bsearch - ( const type & v ) - - - contains - contains - ( const type & v ) - - - copy - copy - () - - - count - count - () - - - data - data - () - - - detach - detach - () - - - duplicate - duplicate - ( const Q3MemArray<type> & a ) - - - duplicate - duplicate-2 - ( const type * data, uint size ) - - - end - end - () - - - end - end-2 - () - - - fill - fill - ( const type & v, int size = -1 ) - - - find - find - ( const type & v, uint index = 0 ) - - - isEmpty - isEmpty - () - - - isNull - isNull - () - - - nrefs - nrefs - () - - - resetRawData - resetRawData - ( const type * data, uint size ) - - - resize - resize - ( uint size, Optimization optim ) - - - resize - resize-2 - ( uint size ) - - - setRawData - setRawData - ( const type * data, uint size ) - - - size - size - () - - - sort - sort - () - - - truncate - truncate - ( uint pos ) - - - operator - operator-QVector-lttype-gt - QVector<type>() - - - operator - operator-const-type--2a - const type *() - - - operator!= - operator-not-eq - ( const Q3MemArray<type> & a ) - - - operator= - operator-eq - ( const Q3MemArray<type> & a ) - - - operator== - operator-eq-eq - ( const Q3MemArray<type> & a ) - - - operator[] - operator-5b-5d - ( int index ) - - - - Q3MimeSourceFactory - q3mimesourcefactory.html - - Q3MimeSourceFactory - Q3MimeSourceFactory - () - - - addFactory - addFactory - ( Q3MimeSourceFactory * f ) - - - addFilePath - addFilePath - ( const QString & p ) - - - data - data - ( const QString & abs_name ) - - - data - data-2 - ( const QString & abs_or_rel_name, const QString & context ) - - - defaultFactory - defaultFactory - () - - - filePath - filePath - () - - - makeAbsolute - makeAbsolute - ( const QString & abs_or_rel_name, const QString & context ) - - - removeFactory - removeFactory - ( Q3MimeSourceFactory * f ) - - - setData - setData - ( const QString & abs_name, QMimeSource * data ) - - - setDefaultFactory - setDefaultFactory - ( Q3MimeSourceFactory * factory ) - - - setExtensionType - setExtensionType - ( const QString & ext, const char * mimetype ) - - - setFilePath - setFilePath - ( const QStringList & path ) - - - setFilePath - setFilePath-2 - ( const QString & path ) - - - setImage - setImage - ( const QString & abs_name, const QImage & image ) - - - setPixmap - setPixmap - ( const QString & abs_name, const QPixmap & pixmap ) - - - setText - setText - ( const QString & abs_name, const QString & text ) - - - takeDefaultFactory - takeDefaultFactory - () - - - - Q3MultiLineEdit - q3multilineedit.html - - Alignment - alignment - - - - Q3MultiLineEdit - Q3MultiLineEdit - ( QWidget * parent = 0, const char * name = 0 ) - - - autoUpdate - autoUpdate - () - - - backspace - backspace - () - - - cursorDown - cursorDown - ( bool mark = false ) - - - cursorLeft - cursorLeft - ( bool mark = false, bool wrap = true ) - - - cursorPoint - cursorPoint - () - - - cursorRight - cursorRight - ( bool mark = false, bool wrap = true ) - - - cursorUp - cursorUp - ( bool mark = false ) - - - cursorWordBackward - cursorWordBackward - ( bool mark ) - - - cursorWordForward - cursorWordForward - ( bool mark ) - - - deselect - deselect - () - - - end - end - ( bool mark = false ) - - - getMarkedRegion - getMarkedRegion - ( int * line1, int * col1, int * line2, int * col2 ) - - - hasMarkedText - hasMarkedText - () - - - home - home - ( bool mark = false ) - - - insertAndMark - insertAndMark - ( const QString & str, bool mark ) - - - insertAt - insertAt-2 - ( const QString & s, int line, int col, bool mark ) - - - insertLine - insertLine - ( const QString & txt, int line = -1 ) - - - killLine - killLine - () - - - lineLength - lineLength - ( int row ) - - - markedText - markedText - () - - - maxLines - maxLines - () - - - newLine - newLine - () - - - pageDown - pageDown - ( bool mark = false ) - - - pageUp - pageUp - ( bool mark = false ) - - - removeLine - removeLine - ( int paragraph ) - - - setCursorPosition - setCursorPosition-2 - ( int line, int col, bool mark ) - - - setMaxLines - setMaxLines - ( int max ) - - - textLine - textLine - ( int line ) - - - totalHeight - totalHeight - () - - - totalWidth - totalWidth - () - - - - Q3NetworkOperation - q3networkoperation.html - - Q3NetworkOperation - Q3NetworkOperation - ( Q3NetworkProtocol::Operation operation, const QString & arg0, const QString & arg1, const QString & arg2 ) - - - Q3NetworkOperation - Q3NetworkOperation-2 - ( Q3NetworkProtocol::Operation operation, const QByteArray & arg0, const QByteArray & arg1, const QByteArray & arg2 ) - - - arg - arg - ( int num ) - - - errorCode - errorCode - () - - - free - free - () - - - Operation - operation - Q3NetworkOperation::operation() - - - protocolDetail - protocolDetail - () - - - rawArg - rawArg - ( int num ) - - - setArg - setArg - ( int num, const QString & arg ) - - - setErrorCode - setErrorCode - ( int ec ) - - - setProtocolDetail - setProtocolDetail - ( const QString & detail ) - - - setRawArg - setRawArg - ( int num, const QByteArray & arg ) - - - setState - setState - ( Q3NetworkProtocol::State state ) - - - State - state - Q3NetworkOperation::state() - - - - Q3NetworkProtocol - q3networkprotocol.html - - ConnectionState - ConnectionState-enum - - - - Error - Error-enum - - - - Operation - Operation-enum - - - - State - State-enum - - - - Q3NetworkProtocol - Q3NetworkProtocol - () - - - addOperation - addOperation - ( Q3NetworkOperation * op ) - - - autoDelete - autoDelete - () - - - checkConnection - checkConnection - ( Q3NetworkOperation * op ) - - - clearOperationQueue - clearOperationQueue - () - - - connectionStateChanged - connectionStateChanged - ( int state, const QString & data ) - - - createdDirectory - createdDirectory - ( const QUrlInfo & i, Q3NetworkOperation * op ) - - - data - data - ( const QByteArray & data, Q3NetworkOperation * op ) - - - dataTransferProgress - dataTransferProgress - ( int bytesDone, int bytesTotal, Q3NetworkOperation * op ) - - - finished - finished - ( Q3NetworkOperation * op ) - - - getNetworkProtocol - getNetworkProtocol - ( const QString & protocol ) - - - hasOnlyLocalFileSystem - hasOnlyLocalFileSystem - () - - - itemChanged - itemChanged - ( Q3NetworkOperation * op ) - - - newChild - newChild - ( const QUrlInfo & i, Q3NetworkOperation * op ) - - - newChildren - newChildren - ( const Q3ValueList<QUrlInfo> & i, Q3NetworkOperation * op ) - - - operationGet - operationGet - ( Q3NetworkOperation * op ) - - - operationInProgress - operationInProgress - () - - - operationListChildren - operationListChildren - ( Q3NetworkOperation * op ) - - - operationMkDir - operationMkDir - ( Q3NetworkOperation * op ) - - - operationPut - operationPut - ( Q3NetworkOperation * op ) - - - operationRemove - operationRemove - ( Q3NetworkOperation * op ) - - - operationRename - operationRename - ( Q3NetworkOperation * op ) - - - registerNetworkProtocol - registerNetworkProtocol - ( const QString & protocol, Q3NetworkProtocolFactoryBase * protocolFactory ) - - - removed - removed - ( Q3NetworkOperation * op ) - - - setAutoDelete - setAutoDelete - ( bool b, int i = 10000 ) - - - setUrl - setUrl - ( Q3UrlOperator * u ) - - - start - start - ( Q3NetworkOperation * op ) - - - stop - stop - () - - - supportedOperations - supportedOperations - () - - - url - url - () - - - - Q3PaintDeviceMetrics - q3paintdevicemetrics.html - - Q3PaintDeviceMetrics - Q3PaintDeviceMetrics - ( const QPaintDevice * pd ) - - - depth - depth - () - - - height - height - () - - - heightMM - heightMM - () - - - logicalDpiX - logicalDpiX - () - - - logicalDpiY - logicalDpiY - () - - - numColors - numColors - () - - - width - width - () - - - widthMM - widthMM - () - - - - Q3Painter - q3painter.html - - Q3Painter - Q3Painter - () - - - Q3Painter - Q3Painter-2 - ( QPaintDevice * pdev ) - - - drawArc - drawArc - ( const QRect & r, int a, int alen ) - - - drawArc - drawArc-2 - ( int x, int y, int w, int h, int startAngle, int spanAngle ) - - - drawChord - drawChord - ( const QRect & r, int a, int alen ) - - - drawChord - drawChord-2 - ( int x, int y, int w, int h, int startAngle, int spanAngle ) - - - drawEllipse - drawEllipse - ( const QRect & r ) - - - drawEllipse - drawEllipse-2 - ( int x, int y, int width, int height ) - - - drawPie - drawPie - ( const QRect & r, int a, int alen ) - - - drawPie - drawPie-2 - ( int x, int y, int w, int h, int startAngle, int spanAngle ) - - - drawRect - drawRect - ( const QRect & r ) - - - drawRect - drawRect-2 - ( int x, int y, int w, int h ) - - - drawRoundRect - drawRoundRect - ( const QRect & r, int xrnd = 25, int yrnd = 25 ) - - - drawRoundRect - drawRoundRect-2 - ( int x, int y, int w, int h, int xrnd = 25, int yrnd = 25 ) - - - - Q3Picture - q3picture.html - - Q3Picture - Q3Picture - () - - - Q3Picture - Q3Picture-2 - ( const QPicture & other ) - - - load - load - ( QIODevice * device, const char * format = 0 ) - - - load - load-2 - ( const QString & fileName, const char * format = 0 ) - - - save - save - ( QIODevice * device, const char * format = 0 ) - - - save - save-2 - ( const QString & fileName, const char * format = 0 ) - - - - Q3PointArray - q3pointarray.html - - Q3PointArray - Q3PointArray - () - - - Q3PointArray - Q3PointArray-2 - ( const QRect & r, bool closed = false ) - - - Q3PointArray - Q3PointArray-3 - ( const QPolygon & other ) - - - copy - copy - () - - - cubicBezier - cubicBezier - () - - - isNull - isNull - () - - - makeArc - makeArc - ( int x, int y, int w, int h, int a1, int a2 ) - - - makeArc - makeArc-2 - ( int x, int y, int w, int h, int a1, int a2, const QMatrix & xf ) - - - makeEllipse - makeEllipse - ( int x, int y, int w, int h ) - - - - Q3PopupMenu - q3popupmenu.html - - Q3PopupMenu - Q3PopupMenu - ( QWidget * parent = 0, const char * name = 0 ) - - - exec - exec - () - - - exec - exec-2 - ( const QPoint & pos, int indexAtPoint = 0 ) - - - - Q3Process - q3process.html - - Communication - Communication-enum - - - - Q3Process - Q3Process - ( QObject * parent = 0, const char * name = 0 ) - - - Q3Process - Q3Process-2 - ( const QString & arg0, QObject * parent = 0, const char * name = 0 ) - - - Q3Process - Q3Process-3 - ( const QStringList & args, QObject * parent = 0, const char * name = 0 ) - - - addArgument - addArgument - ( const QString & arg ) - - - arguments - arguments - () - - - canReadLineStderr - canReadLineStderr - () - - - canReadLineStdout - canReadLineStdout - () - - - clearArguments - clearArguments - () - - - closeStdin - closeStdin - () - - - communication - communication - () - - - exitStatus - exitStatus - () - - - isRunning - isRunning - () - - - kill - kill - () - - - launch - launch - ( const QByteArray & buf, QStringList * env = 0 ) - - - launch - launch-2 - ( const QString & buf, QStringList * env = 0 ) - - - launchFinished - launchFinished - () - - - normalExit - normalExit - () - - - processExited - processExited - () - - - processIdentifier - processIdentifier - () - - - readLineStderr - readLineStderr - () - - - readLineStdout - readLineStdout - () - - - readStderr - readStderr - () - - - readStdout - readStdout - () - - - readyReadStderr - readyReadStderr - () - - - readyReadStdout - readyReadStdout - () - - - setArguments - setArguments - ( const QStringList & args ) - - - setCommunication - setCommunication - ( int commFlags ) - - - setWorkingDirectory - setWorkingDirectory - ( const QDir & dir ) - - - start - start - ( QStringList * env = 0 ) - - - tryTerminate - tryTerminate - () - - - workingDirectory - workingDirectory - () - - - writeToStdin - writeToStdin - ( const QByteArray & buf ) - - - writeToStdin - writeToStdin-2 - ( const QString & buf ) - - - wroteToStdin - wroteToStdin - () - - - Q3ProgressBar - Q3ProgressBar - ( QWidget * parent, const char * name, Qt::WFlags f = 0 ) - - - Q3ProgressBar - Q3ProgressBar-2 - ( int totalSteps, QWidget * parent, const char * name, Qt::WFlags f = 0 ) - - - - Q3ProgressBar - q3progressbar.html - - Q3ProgressBar - Q3ProgressBar-3 - ( QWidget * parent = 0, Qt::WFlags f = 0 ) - - - Q3ProgressBar - Q3ProgressBar-4 - ( int totalSteps, QWidget * parent = 0, Qt::WFlags f = 0 ) - - - reset - reset - () - - - setIndicator - setIndicator - ( QString & indicator, int progress, int totalSteps ) - - - Q3ProgressDialog - Q3ProgressDialog - ( QWidget * creator, const char * name, bool modal = false, Qt::WFlags f = 0 ) - - - Q3ProgressDialog - Q3ProgressDialog-2 - ( const QString & labelText, const QString & cancelButtonText, int totalSteps, QWidget * creator = 0, const char * name = 0, bool modal = false, Qt::WFlags f = 0 ) - - - - Q3ProgressDialog - q3progressdialog.html - - Q3ProgressDialog - Q3ProgressDialog-3 - ( QWidget * creator = 0, Qt::WFlags f = 0 ) - - - Q3ProgressDialog - Q3ProgressDialog-4 - ( const QString & labelText, const QString & cancelButtonText, int totalSteps, QWidget * creator = 0, Qt::WFlags f = 0 ) - - - cancel - cancel - () - - - canceled - canceled - () - - - forceShow - forceShow - () - - - reset - reset - () - - - setBar - setBar - ( Q3ProgressBar * bar ) - - - setCancelButton - setCancelButton - ( QPushButton * cancelButton ) - - - setCancelButtonText - setCancelButtonText - ( const QString & cancelButtonText ) - - - setLabel - setLabel - ( QLabel * label ) - - - sizeHint - sizeHint - () - - - - Q3PtrCollection - q3ptrcollection.html - - Item - Item-typedef - - - - Q3PtrCollection - Q3PtrCollection - () - - - Q3PtrCollection - Q3PtrCollection-2 - ( const Q3PtrCollection & source ) - - - autoDelete - autoDelete - () - - - clear - clear - () - - - count - count - () - - - deleteItem - deleteItem - ( Item d ) - - - newItem - newItem - ( Item d ) - - - setAutoDelete - setAutoDelete - ( bool enable ) - - - - Q3PtrDict - q3ptrdict.html - - Q3PtrDict - Q3PtrDict - ( int size = 17 ) - - - Q3PtrDict - Q3PtrDict-2 - ( const Q3PtrDict<type> & dict ) - - - clear - clear - () - - - count - count - () - - - find - find - ( void * key ) - - - insert - insert - ( void * key, const type * item ) - - - isEmpty - isEmpty - () - - - read - read - ( QDataStream & s, Q3PtrCollection::Item & item ) - - - remove - remove - ( void * key ) - - - replace - replace - ( void * key, const type * item ) - - - resize - resize - ( uint newsize ) - - - size - size - () - - - statistics - statistics - () - - - take - take - ( void * key ) - - - write - write - ( QDataStream & s, Q3PtrCollection::Item item ) - - - operator= - operator-eq - ( const Q3PtrDict<type> & dict ) - - - operator[] - operator-5b-5d - ( void * key ) - - - - Q3PtrDictIterator - q3ptrdictiterator.html - - Q3PtrDictIterator - Q3PtrDictIterator - ( const Q3PtrDict<type> & dict ) - - - count - count - () - - - current - current - () - - - currentKey - currentKey - () - - - isEmpty - isEmpty - () - - - toFirst - toFirst - () - - - operator - operator-type--2a - type *() - - - operator() - operator-28-29 - () - - - operator++ - operator-2b-2b - () - - - operator+= - operator-2b-eq - ( uint jump ) - - - - Q3PtrList - q3ptrlist.html - - Q3PtrList - Q3PtrList - () - - - Q3PtrList - Q3PtrList-2 - ( const Q3PtrList<type> & list ) - - - append - append - ( const type * item ) - - - at - at - ( uint index ) - - - at - at-2 - () - - - clear - clear - () - - - compareItems - compareItems - ( Q3PtrCollection::Item item1, Q3PtrCollection::Item item2 ) - - - contains - contains - ( const type * item ) - - - containsRef - containsRef - ( const type * item ) - - - count - count - () - - - current - current - () - - - currentNode - currentNode - () - - - find - find - ( const type * item ) - - - findNext - findNext - ( const type * item ) - - - findNextRef - findNextRef - ( const type * item ) - - - findRef - findRef - ( const type * item ) - - - first - first - () - - - getFirst - getFirst - () - - - getLast - getLast - () - - - inSort - inSort - ( const type * item ) - - - insert - insert - ( uint index, const type * item ) - - - isEmpty - isEmpty - () - - - last - last - () - - - next - next - () - - - prepend - prepend - ( const type * item ) - - - prev - prev - () - - - read - read - ( QDataStream & s, Q3PtrCollection::Item & item ) - - - remove - remove - ( uint index ) - - - remove - remove-2 - () - - - remove - remove-3 - ( const type * item ) - - - removeFirst - removeFirst - () - - - removeLast - removeLast - () - - - removeNode - removeNode - ( Q3LNode * node ) - - - removeRef - removeRef - ( const type * item ) - - - replace - replace - ( uint index, const type * item ) - - - sort - sort - () - - - take - take - ( uint index ) - - - take - take-2 - () - - - takeNode - takeNode - ( Q3LNode * node ) - - - toVector - toVector - ( Q3GVector * vec ) - - - write - write - ( QDataStream & s, Q3PtrCollection::Item item ) - - - operator!= - operator-not-eq - ( const Q3PtrList<type> & list ) - - - operator= - operator-eq - ( const Q3PtrList<type> & list ) - - - operator== - operator-eq-eq - ( const Q3PtrList<type> & list ) - - - - Q3PtrListIterator - q3ptrlistiterator.html - - Q3PtrListIterator - Q3PtrListIterator - ( const Q3PtrList<type> & list ) - - - atFirst - atFirst - () - - - atLast - atLast - () - - - count - count - () - - - current - current - () - - - isEmpty - isEmpty - () - - - toFirst - toFirst - () - - - toLast - toLast - () - - - operator - operator-type--2a - type *() - - - operator() - operator-28-29 - () - - - operator* - operator-2a - () - - - operator++ - operator-2b-2b - () - - - operator+= - operator-2b-eq - ( uint jump ) - - - operator-- - operator-- - () - - - operator-= - operator--eq - ( uint jump ) - - - operator= - operator-eq - ( const Q3PtrListIterator<type> & it ) - - - - Q3PtrQueue - q3ptrqueue.html - - Q3PtrQueue - Q3PtrQueue - () - - - Q3PtrQueue - Q3PtrQueue-2 - ( const Q3PtrQueue<type> & queue ) - - - autoDelete - autoDelete - () - - - clear - clear - () - - - count - count - () - - - current - current - () - - - dequeue - dequeue - () - - - enqueue - enqueue - ( const type * d ) - - - head - head - () - - - isEmpty - isEmpty - () - - - read - read - ( QDataStream & s, Q3PtrCollection::Item & item ) - - - remove - remove - () - - - setAutoDelete - setAutoDelete - ( bool enable ) - - - write - write - ( QDataStream & s, Q3PtrCollection::Item item ) - - - operator - operator-type--2a - type *() - - - operator= - operator-eq - ( const Q3PtrQueue<type> & queue ) - - - - Q3PtrStack - q3ptrstack.html - - Q3PtrStack - Q3PtrStack - () - - - Q3PtrStack - Q3PtrStack-2 - ( const Q3PtrStack<type> & s ) - - - autoDelete - autoDelete - () - - - clear - clear - () - - - count - count - () - - - current - current - () - - - isEmpty - isEmpty - () - - - pop - pop - () - - - push - push - ( const type * d ) - - - read - read - ( QDataStream & s, Q3PtrCollection::Item & item ) - - - remove - remove - () - - - setAutoDelete - setAutoDelete - ( bool enable ) - - - top - top - () - - - write - write - ( QDataStream & s, Q3PtrCollection::Item item ) - - - operator - operator-type--2a - type *() - - - operator= - operator-eq - ( const Q3PtrStack<type> & s ) - - - - Q3PtrVector - q3ptrvector.html - - Q3PtrVector - Q3PtrVector - () - - - Q3PtrVector - Q3PtrVector-2 - ( uint size ) - - - Q3PtrVector - Q3PtrVector-3 - ( const Q3PtrVector<type> & v ) - - - at - at - ( uint i ) - - - bsearch - bsearch - ( const type * d ) - - - clear - clear - () - - - compareItems - compareItems - ( Q3PtrCollection::Item d1, Q3PtrCollection::Item d2 ) - - - contains - contains - ( const type * d ) - - - containsRef - containsRef - ( const type * d ) - - - count - count - () - - - data - data - () - - - fill - fill - ( const type * d, int size = -1 ) - - - find - find - ( const type * d, uint i = 0 ) - - - findRef - findRef - ( const type * d, uint i = 0 ) - - - insert - insert - ( uint i, const type * d ) - - - isEmpty - isEmpty - () - - - isNull - isNull - () - - - read - read - ( QDataStream & s, Q3PtrCollection::Item & item ) - - - remove - remove - ( uint i ) - - - resize - resize - ( uint size ) - - - size - size - () - - - sort - sort - () - - - take - take - ( uint i ) - - - write - write - ( QDataStream & s, Q3PtrCollection::Item item ) - - - operator= - operator-eq - ( const Q3PtrVector<type> & v ) - - - operator== - operator-eq-eq - ( const Q3PtrVector<type> & v ) - - - operator[] - operator-5b-5d - ( int i ) - - - - Q3RangeControl - q3rangecontrol.html - - Q3RangeControl - Q3RangeControl - () - - - Q3RangeControl - Q3RangeControl-2 - ( int minValue, int maxValue, int lineStep, int pageStep, int value ) - - - addLine - addLine - () - - - addPage - addPage - () - - - bound - bound - ( int v ) - - - directSetValue - directSetValue - ( int value ) - - - lineStep - lineStep - () - - - maxValue - maxValue - () - - - minValue - minValue - () - - - pageStep - pageStep - () - - - positionFromValue - positionFromValue - ( int logical_val, int span ) - - - prevValue - prevValue - () - - - rangeChange - rangeChange - () - - - setMaxValue - setMaxValue - ( int maxVal ) - - - setMinValue - setMinValue - ( int minVal ) - - - setRange - setRange - ( int minValue, int maxValue ) - - - setSteps - setSteps - ( int lineStep, int pageStep ) - - - setValue - setValue - ( int value ) - - - stepChange - stepChange - () - - - subtractLine - subtractLine - () - - - subtractPage - subtractPage - () - - - value - value - () - - - valueChange - valueChange - () - - - valueFromPosition - valueFromPosition - ( int pos, int span ) - - - childIsVisible - childIsVisible - ( QWidget * child ) - - - showChild - showChild - ( QWidget * child, bool y = true ) - - - - Q3ScrollView - q3scrollview.html - - ResizePolicy - ResizePolicy-enum - - - - ScrollBarMode - ScrollBarMode-enum - - - - Q3ScrollView - Q3ScrollView - ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) - - - addChild - addChild - ( QWidget * child, int x = 0, int y = 0 ) - - - bottomMargin - bottomMargin - () - - - center - center - ( int x, int y ) - - - center - center-2 - ( int x, int y, float xmargin, float ymargin ) - - - childX - childX - ( QWidget * child ) - - - childY - childY - ( QWidget * child ) - - - clipper - clipper - () - - - contentsContextMenuEvent - contentsContextMenuEvent - ( QContextMenuEvent * e ) - - - contentsDragEnterEvent - contentsDragEnterEvent - ( QDragEnterEvent * event ) - - - contentsDragLeaveEvent - contentsDragLeaveEvent - ( QDragLeaveEvent * event ) - - - contentsDragMoveEvent - contentsDragMoveEvent - ( QDragMoveEvent * event ) - - - contentsDropEvent - contentsDropEvent - ( QDropEvent * event ) - - - contentsMouseDoubleClickEvent - contentsMouseDoubleClickEvent - ( QMouseEvent * e ) - - - contentsMouseMoveEvent - contentsMouseMoveEvent - ( QMouseEvent * e ) - - - contentsMousePressEvent - contentsMousePressEvent - ( QMouseEvent * e ) - - - contentsMouseReleaseEvent - contentsMouseReleaseEvent - ( QMouseEvent * e ) - - - contentsMoving - contentsMoving - ( int x, int y ) - - - contentsToViewport - contentsToViewport - ( int x, int y, int & vx, int & vy ) - - - contentsToViewport - contentsToViewport-2 - ( const QPoint & p ) - - - contentsWheelEvent - contentsWheelEvent - ( QWheelEvent * e ) - - - cornerWidget - cornerWidget - () - - - drawContents - drawContents - ( QPainter * p, int clipx, int clipy, int clipw, int cliph ) - - - drawContentsOffset - drawContentsOffset - ( QPainter * p, int offsetx, int offsety, int clipx, int clipy, int clipw, int cliph ) - - - enableClipper - enableClipper - ( bool y ) - - - ensureVisible - ensureVisible - ( int x, int y ) - - - ensureVisible - ensureVisible-2 - ( int x, int y, int xmargin, int ymargin ) - - - eventFilter - eventFilter - ( QObject * obj, QEvent * e ) - - - hasStaticBackground - hasStaticBackground - () - - - horizontalScrollBar - horizontalScrollBar - () - - - horizontalSliderPressed - horizontalSliderPressed - () - - - horizontalSliderReleased - horizontalSliderReleased - () - - - isHorizontalSliderPressed - isHorizontalSliderPressed - () - - - isVerticalSliderPressed - isVerticalSliderPressed - () - - - leftMargin - leftMargin - () - - - moveChild - moveChild - ( QWidget * child, int x, int y ) - - - removeChild - removeChild - ( QWidget * child ) - - - repaintContents - repaintContents - ( int x, int y, int w, int h, bool erase = true ) - - - repaintContents - repaintContents-2 - ( const QRect & r, bool erase = true ) - - - repaintContents - repaintContents-3 - ( bool erase = true ) - - - resizeContents - resizeContents - ( int w, int h ) - - - rightMargin - rightMargin - () - - - scrollBy - scrollBy - ( int dx, int dy ) - - - setContentsPos - setContentsPos - ( int x, int y ) - - - setCornerWidget - setCornerWidget - ( QWidget * corner ) - - - setHBarGeometry - setHBarGeometry - ( QScrollBar & hbar, int x, int y, int w, int h ) - - - setMargins - setMargins - ( int left, int top, int right, int bottom ) - - - setStaticBackground - setStaticBackground - ( bool y ) - - - setVBarGeometry - setVBarGeometry - ( QScrollBar & vbar, int x, int y, int w, int h ) - - - topMargin - topMargin - () - - - updateContents - updateContents - ( int x, int y, int w, int h ) - - - updateContents - updateContents-2 - ( const QRect & r ) - - - updateContents - updateContents-3 - () - - - updateScrollBars - updateScrollBars - () - - - verticalScrollBar - verticalScrollBar - () - - - verticalSliderPressed - verticalSliderPressed - () - - - verticalSliderReleased - verticalSliderReleased - () - - - viewport - viewport - () - - - viewportPaintEvent - viewportPaintEvent - ( QPaintEvent * pe ) - - - viewportResizeEvent - viewportResizeEvent - ( QResizeEvent * event ) - - - viewportSize - viewportSize - ( int x, int y ) - - - viewportToContents - viewportToContents - ( int vx, int vy, int & x, int & y ) - - - viewportToContents - viewportToContents-2 - ( const QPoint & vp ) - - - - Q3Semaphore - q3semaphore.html - - Q3Semaphore - Q3Semaphore - ( int maxcount ) - - - available - available - () - - - total - total - () - - - tryAccess - tryAccess - ( int n ) - - - operator++ - operator-2b-2b - ( int ) - - - operator+= - operator-2b-eq - ( int n ) - - - operator-- - operator-- - ( int ) - - - operator-= - operator--eq - ( int n ) - - - - Q3ServerSocket - q3serversocket.html - - Q3ServerSocket - Q3ServerSocket - ( Q_UINT16 port, int backlog = 1, QObject * parent = 0, const char * name = 0 ) - - - Q3ServerSocket - Q3ServerSocket-2 - ( const QHostAddress & address, Q_UINT16 port, int backlog = 1, QObject * parent = 0, const char * name = 0 ) - - - Q3ServerSocket - Q3ServerSocket-3 - ( QObject * parent = 0, const char * name = 0 ) - - - address - address - () - - - newConnection - newConnection - ( int socket ) - - - ok - ok - () - - - port - port - () - - - setSocket - setSocket - ( int socket ) - - - socket - socket - () - - - socketDevice - socketDevice - () - - - - Q3Shared - q3shared.html - - Q3Shared - Q3Shared - () - - - deref - deref - () - - - ref - ref - () - - - block - block - ( bool b ) - - - isBlocked - isBlocked - () - - - parameter - parameter - () - - - setParameter - setParameter - ( int value ) - - - - Q3Signal - q3signal.html - - Q3Signal - Q3Signal - ( QObject * parent = 0, const char * name = 0 ) - - - activate - activate - () - - - connect - connect - ( const QObject * receiver, const char * member ) - - - disconnect - disconnect - ( const QObject * receiver, const char * member = 0 ) - - - setValue - setValue - ( const QVariant & value ) - - - value - value - () - - - - Q3SimpleRichText - q3simplerichtext.html - - Q3SimpleRichText - Q3SimpleRichText - ( const QString & text, const QFont & fnt, const QString & context = QString() - - - Q3SimpleRichText - Q3SimpleRichText-2 - ( const QString & text, const QFont & fnt, const QString & context, const Q3StyleSheet * sheet, const Q3MimeSourceFactory * factory, int pageBreak = -1, const QColor & linkColor = Qt::blue, bool linkUnderline = true ) - - - adjustSize - adjustSize - () - - - anchorAt - anchorAt - ( const QPoint & pos ) - - - context - context - () - - - draw - draw - ( QPainter * p, int x, int y, const QRect & clipRect, const QPalette & pal, const QBrush * paper = 0 ) - - - draw - draw-2 - ( QPainter * p, int x, int y, const QRegion & clipRegion, const QPalette & pal, const QBrush * paper = 0 ) - - - height - height - () - - - inText - inText - ( const QPoint & pos ) - - - setDefaultFont - setDefaultFont - ( const QFont & f ) - - - setWidth - setWidth - ( QPainter * p, int w ) - - - setWidth - setWidth-2 - ( int w ) - - - width - width - () - - - widthUsed - widthUsed - () - - - - Q3Socket - q3socket.html - - Error - Error-enum - - - - State - State-enum - - - - Q3Socket - Q3Socket - ( QObject * parent = 0, const char * name = 0 ) - - - address - address - () - - - at - at - () - - - at - at-2 - ( Offset index ) - - - atEnd - atEnd - () - - - bytesAvailable - bytesAvailable - () - - - bytesToWrite - bytesToWrite - () - - - bytesWritten - bytesWritten - ( int nbytes ) - - - canReadLine - canReadLine - () - - - clearPendingData - clearPendingData - () - - - close - close - () - - - connectToHost - connectToHost - ( const QString & host, Q_UINT16 port ) - - - connected - connected - () - - - connectionClosed - connectionClosed - () - - - delayedCloseFinished - delayedCloseFinished - () - - - error - error - ( int error ) - - - flush - flush - () - - - getch - getch - () - - - hostFound - hostFound - () - - - open - open - ( int m ) - - - peerAddress - peerAddress - () - - - peerName - peerName - () - - - peerPort - peerPort - () - - - port - port - () - - - putch - putch - ( int ch ) - - - readBufferSize - readBufferSize - () - - - readData - readData - ( char * data, qint64 maxlen ) - - - readyRead - readyRead - () - - - setReadBufferSize - setReadBufferSize - ( Q_ULONG bufSize ) - - - setSocket - setSocket - ( int socket ) - - - setSocketDevice - setSocketDevice - ( Q3SocketDevice * device ) - - - size - size - () - - - socket - socket - () - - - socketDevice - socketDevice - () - - - state - state - () - - - ungetch - ungetch - ( int ch ) - - - waitForMore - waitForMore - ( int msecs, bool * timeout ) - - - waitForMore - waitForMore-2 - ( int msecs ) - - - writeData - writeData - ( const char * data, qint64 len ) - - - - Q3SocketDevice - q3socketdevice.html - - Error - Error-enum - - - - Protocol - Protocol-enum - - - - Type - Type-enum - - - - Q3SocketDevice - Q3SocketDevice - ( Type type = Stream ) - - - Q3SocketDevice - Q3SocketDevice-2 - ( Type type, Protocol protocol, int dummy ) - - - Q3SocketDevice - Q3SocketDevice-3 - ( int socket, Type type ) - - - accept - accept - () - - - address - address - () - - - addressReusable - addressReusable - () - - - at - at - () - - - at - at-2 - ( Offset offset ) - - - bind - bind - ( const QHostAddress & address, Q_UINT16 port ) - - - blocking - blocking - () - - - bytesAvailable - bytesAvailable - () - - - connect - connect - ( const QHostAddress & addr, Q_UINT16 port ) - - - error - error - () - - - isValid - isValid - () - - - listen - listen - ( int backlog ) - - - open - open - ( int mode ) - - - peerAddress - peerAddress - () - - - peerPort - peerPort - () - - - port - port - () - - - protocol - protocol - () - - - readBlock - readBlock - ( char * data, Q_ULONG maxlen ) - - - readData - readData - ( char * data, qint64 maxlen ) - - - receiveBufferSize - receiveBufferSize - () - - - sendBufferSize - sendBufferSize - () - - - setAddressReusable - setAddressReusable - ( bool enable ) - - - setBlocking - setBlocking - ( bool enable ) - - - setError - setError - ( Error err ) - - - setReceiveBufferSize - setReceiveBufferSize - ( uint size ) - - - setSendBufferSize - setSendBufferSize - ( uint size ) - - - setSocket - setSocket - ( int socket, Type type ) - - - socket - socket - () - - - type - type - () - - - waitForMore - waitForMore - ( int msecs, bool * timeout = 0 ) - - - writeBlock - writeBlock - ( const char * data, Q_ULONG len ) - - - writeBlock - writeBlock-2 - ( const char * data, Q_ULONG len, const QHostAddress & host, Q_UINT16 port ) - - - writeData - writeData - ( const char * data, qint64 len ) - - - - Q3SqlCursor - q3sqlcursor.html - - Mode - Mode-enum - - - - Q3SqlCursor - Q3SqlCursor - ( const QString & name = QString() - - - Q3SqlCursor - Q3SqlCursor-2 - ( const Q3SqlCursor & other ) - - - append - append - ( const Q3SqlFieldInfo & fieldInfo ) - - - calculateField - calculateField - ( const QString & name ) - - - canDelete - canDelete - () - - - canInsert - canInsert - () - - - canUpdate - canUpdate - () - - - clear - clear - () - - - del - del - ( bool invalidate = true ) - - - del - del-2 - ( const QString & filter, bool invalidate = true ) - - - editBuffer - editBuffer - ( bool copy = false ) - - - exec - exec - ( const QString & sql ) - - - filter - filter - () - - - index - index - ( const QStringList & fieldNames ) - - - index - index-2 - ( const QString & fieldName ) - - - insert - insert - ( int pos, const Q3SqlFieldInfo & fieldInfo ) - - - insert - insert-2 - ( bool invalidate = true ) - - - isCalculated - isCalculated - ( const QString & name ) - - - isNull - isNull - ( int i ) - - - isNull - isNull-2 - ( const QString & name ) - - - isReadOnly - isReadOnly - () - - - isTrimmed - isTrimmed - ( const QString & name ) - - - mode - mode - () - - - name - name - () - - - previous - previous - () - - - primaryIndex - primaryIndex - ( bool setFromCursor = true ) - - - primeDelete - primeDelete - () - - - primeInsert - primeInsert - () - - - primeUpdate - primeUpdate - () - - - remove - remove - ( int pos ) - - - select - select - ( const QString & filter, const QSqlIndex & sort = QSqlIndex() - - - select - select-2 - () - - - select - select-3 - ( const QSqlIndex & sort ) - - - select - select-4 - ( const QSqlIndex & filter, const QSqlIndex & sort ) - - - setCalculated - setCalculated - ( const QString & name, bool calculated ) - - - setFilter - setFilter - ( const QString & filter ) - - - setGenerated - setGenerated - ( const QString & name, bool generated ) - - - setGenerated - setGenerated-2 - ( int i, bool generated ) - - - setMode - setMode - ( int mode ) - - - setName - setName - ( const QString & name, bool autopopulate = true ) - - - setPrimaryIndex - setPrimaryIndex - ( const QSqlIndex & idx ) - - - setSort - setSort - ( const QSqlIndex & sort ) - - - setTrimmed - setTrimmed - ( const QString & name, bool trim ) - - - setValue - setValue-2 - ( const QString & name, const QVariant & val ) - - - sort - sort - () - - - toString - toString-2 - ( QSqlRecord * rec, const QString & prefix, const QString & fieldSep, const QString & sep ) - - - toString - toString-3 - ( const QString & prefix, QSqlField * field, const QString & fieldSep ) - - - toString - toString-4 - ( const QSqlIndex & i, QSqlRecord * rec, const QString & prefix, const QString & fieldSep, const QString & sep ) - - - update - update - ( bool invalidate = true ) - - - update - update-2 - ( const QString & filter, bool invalidate = true ) - - - value - value - ( int i ) - - - value - value-2 - ( const QString & name ) - - - operator= - operator-eq - ( const Q3SqlCursor & other ) - - - - Q3SqlEditorFactory - q3sqleditorfactory.html - - Q3SqlEditorFactory - Q3SqlEditorFactory - ( QObject * parent = 0 ) - - - createEditor - createEditor - ( QWidget * parent, const QVariant & variant ) - - - createEditor - createEditor-2 - ( QWidget * parent, const QSqlField * field ) - - - defaultFactory - defaultFactory - () - - - installDefaultFactory - installDefaultFactory - ( Q3SqlEditorFactory * factory ) - - - - Q3SqlFieldInfo - q3sqlfieldinfo.html - - Q3SqlFieldInfo - Q3SqlFieldInfo - ( const QString & name = QString() - - - Q3SqlFieldInfo - Q3SqlFieldInfo-2 - ( const QSqlField & other ) - - - defaultValue - defaultValue - () - - - isCalculated - isCalculated - () - - - isGenerated - isGenerated - () - - - isRequired - isRequired - () - - - isTrim - isTrim - () - - - length - length - () - - - name - name - () - - - precision - precision - () - - - setCalculated - setCalculated - ( bool calculated ) - - - setGenerated - setGenerated - ( bool generated ) - - - setTrim - setTrim - ( bool trim ) - - - toField - toField - () - - - Type - type - Q3SqlFieldInfo::type() - - - typeID - typeID - () - - - operator== - operator-eq-eq - ( const Q3SqlFieldInfo & other ) - - - - Q3SqlForm - q3sqlform.html - - Q3SqlForm - Q3SqlForm - ( QObject * parent = 0 ) - - - clear - clear - () - - - clearValues - clearValues - () - - - count - count - () - - - fieldToWidget - fieldToWidget - ( QSqlField * field ) - - - insert - insert - ( QWidget * widget, const QString & field ) - - - insert - insert-2 - ( QWidget * widget, QSqlField * field ) - - - installPropertyMap - installPropertyMap - ( Q3SqlPropertyMap * pmap ) - - - readField - readField - ( QWidget * widget ) - - - readFields - readFields - () - - - remove - remove - ( QWidget * widget ) - - - remove - remove-2 - ( const QString & field ) - - - setRecord - setRecord - ( QSqlRecord * buf ) - - - widget - widget - ( int i ) - - - widgetToField - widgetToField - ( QWidget * widget ) - - - writeField - writeField - ( QWidget * widget ) - - - writeFields - writeFields - () - - - - Q3SqlPropertyMap - q3sqlpropertymap.html - - Q3SqlPropertyMap - Q3SqlPropertyMap - () - - - defaultMap - defaultMap - () - - - insert - insert - ( const QString & classname, const QString & property ) - - - installDefaultMap - installDefaultMap - ( Q3SqlPropertyMap * map ) - - - property - property - ( QWidget * widget ) - - - remove - remove - ( const QString & classname ) - - - setProperty - setProperty - ( QWidget * widget, const QVariant & value ) - - - - Q3SqlRecordInfo - q3sqlrecordinfo.html - - Q3SqlRecordInfo - Q3SqlRecordInfo - () - - - Q3SqlRecordInfo - Q3SqlRecordInfo-2 - ( const Q3SqlFieldInfoList & other ) - - - Q3SqlRecordInfo - Q3SqlRecordInfo-3 - ( const QSqlRecord & other ) - - - contains - contains - ( const QString & fieldName ) - - - find - find - ( const QString & fieldName ) - - - toRecord - toRecord - () - - - - Q3SqlSelectCursor - q3sqlselectcursor.html - - Q3SqlSelectCursor - Q3SqlSelectCursor - ( const QString & query = QString() - - - Q3SqlSelectCursor - Q3SqlSelectCursor-2 - ( const Q3SqlSelectCursor & other ) - - - - Q3StoredDrag - q3storeddrag.html - - Q3StoredDrag - Q3StoredDrag - ( const char * mimeType, QWidget * dragSource = 0, const char * name = 0 ) - - - encodedData - encodedData - ( const char * format ) - - - setEncodedData - setEncodedData - ( const QByteArray & data ) - - - - Q3StrIList - q3strilist.html - - Q3StrIList - Q3StrIList - ( bool deepCopies = true ) - - - - Q3StrList - q3strlist.html - - Q3StrList - Q3StrList - ( bool deepCopies = true ) - - - Q3StrList - Q3StrList-2 - ( const Q3StrList & list ) - - - Q3StrList - Q3StrList-3 - ( const QList<QByteArray> & list ) - - - operator - operator-QList-ltQByteArray-gt - QList<QByteArray>() - - - operator= - operator-eq - ( const Q3StrList & list ) - - - operator= - operator-eq-2 - ( const QList<QByteArray> & list ) - - - - Q3StrListIterator - q3strlistiterator.html - - - Q3StyleSheet - q3stylesheet.html - - Q3StyleSheet - Q3StyleSheet - ( QObject * parent = 0, const char * name = 0 ) - - - convertFromPlainText - convertFromPlainText - ( const QString & plain, Q3StyleSheetItem::WhiteSpaceMode mode = Q3StyleSheetItem::WhiteSpacePre ) - - - defaultSheet - defaultSheet - () - - - error - error - ( const QString & msg ) - - - escape - escape - ( const QString & plain ) - - - item - item - ( const QString & name ) - - - item - item-2 - ( const QString & name ) - - - mightBeRichText - mightBeRichText - ( const QString & text ) - - - scaleFont - scaleFont - ( QFont & font, int logicalSize ) - - - setDefaultSheet - setDefaultSheet - ( Q3StyleSheet * sheet ) - - - - Q3StyleSheetItem - q3stylesheetitem.html - - DisplayMode - DisplayMode-enum - - - - ListStyle - ListStyle-enum - - - - Margin - Margin-enum - - - - VerticalAlignment - VerticalAlignment-enum - - - - WhiteSpaceMode - WhiteSpaceMode-enum - - - - Q3StyleSheetItem - Q3StyleSheetItem - ( Q3StyleSheet * parent, const QString & name ) - - - Q3StyleSheetItem - Q3StyleSheetItem-2 - ( const Q3StyleSheetItem & other ) - - - alignment - alignment - () - - - allowedInContext - allowedInContext - ( const Q3StyleSheetItem * s ) - - - color - color - () - - - contexts - contexts - () - - - definesFontItalic - definesFontItalic - () - - - definesFontStrikeOut - definesFontStrikeOut - () - - - definesFontUnderline - definesFontUnderline - () - - - displayMode - displayMode - () - - - fontFamily - fontFamily - () - - - fontItalic - fontItalic - () - - - fontSize - fontSize - () - - - fontStrikeOut - fontStrikeOut - () - - - fontUnderline - fontUnderline - () - - - fontWeight - fontWeight - () - - - isAnchor - isAnchor - () - - - lineSpacing - lineSpacing - () - - - listStyle - listStyle - () - - - logicalFontSize - logicalFontSize - () - - - logicalFontSizeStep - logicalFontSizeStep - () - - - margin - margin - ( Margin m ) - - - name - name - () - - - numberOfColumns - numberOfColumns - () - - - selfNesting - selfNesting - () - - - setAlignment - setAlignment - ( int f ) - - - setAnchor - setAnchor - ( bool anc ) - - - setColor - setColor - ( const QColor & c ) - - - setContexts - setContexts - ( const QString & c ) - - - setDisplayMode - setDisplayMode - ( DisplayMode m ) - - - setFontFamily - setFontFamily - ( const QString & fam ) - - - setFontItalic - setFontItalic - ( bool italic ) - - - setFontSize - setFontSize - ( int s ) - - - setFontStrikeOut - setFontStrikeOut - ( bool strikeOut ) - - - setFontUnderline - setFontUnderline - ( bool underline ) - - - setFontWeight - setFontWeight - ( int w ) - - - setListStyle - setListStyle - ( ListStyle s ) - - - setLogicalFontSize - setLogicalFontSize - ( int s ) - - - setLogicalFontSizeStep - setLogicalFontSizeStep - ( int s ) - - - setMargin - setMargin - ( Margin m, int v ) - - - setNumberOfColumns - setNumberOfColumns - ( int ncols ) - - - setSelfNesting - setSelfNesting - ( bool nesting ) - - - setVerticalAlignment - setVerticalAlignment - ( VerticalAlignment valign ) - - - setWhiteSpaceMode - setWhiteSpaceMode - ( WhiteSpaceMode m ) - - - styleSheet - styleSheet - () - - - styleSheet - styleSheet-2 - () - - - verticalAlignment - verticalAlignment - () - - - whiteSpaceMode - whiteSpaceMode - () - - - operator= - operator-eq - ( const Q3StyleSheetItem & other ) - - - - Q3SyntaxHighlighter - q3syntaxhighlighter.html - - Q3SyntaxHighlighter - Q3SyntaxHighlighter - ( Q3TextEdit * textEdit ) - - - currentParagraph - currentParagraph - () - - - highlightParagraph - highlightParagraph - ( const QString & text, int endStateOfLastPara ) - - - rehighlight - rehighlight - () - - - setFormat - setFormat - ( int start, int count, const QFont & font, const QColor & color ) - - - setFormat - setFormat-2 - ( int start, int count, const QColor & color ) - - - setFormat - setFormat-3 - ( int start, int count, const QFont & font ) - - - textEdit - textEdit - () - - - isTabEnabled - isTabEnabled-2 - ( const char * name ) - - - setTabEnabled - setTabEnabled-2 - ( const char * name, bool enable ) - - - - Q3TabDialog - q3tabdialog.html - - Q3TabDialog - Q3TabDialog - ( QWidget * parent = 0, const char * name = 0, bool modal = false, Qt::WFlags f = 0 ) - - - aboutToShow - aboutToShow - () - - - addTab - addTab - ( QWidget * child, const QString & label ) - - - addTab - addTab-2 - ( QWidget * child, const QIcon & iconset, const QString & label ) - - - applyButtonPressed - applyButtonPressed - () - - - cancelButtonPressed - cancelButtonPressed - () - - - changeTab - changeTab - ( QWidget * w, const QIcon & iconset, const QString & label ) - - - changeTab - changeTab-2 - ( QWidget * w, const QString & label ) - - - currentChanged - currentChanged - ( QWidget * widget ) - - - currentPage - currentPage - () - - - defaultButtonPressed - defaultButtonPressed - () - - - hasApplyButton - hasApplyButton - () - - - hasCancelButton - hasCancelButton - () - - - hasDefaultButton - hasDefaultButton - () - - - hasHelpButton - hasHelpButton - () - - - hasOkButton - hasOkButton - () - - - helpButtonPressed - helpButtonPressed - () - - - insertTab - insertTab - ( QWidget * child, const QString & label, int index = -1 ) - - - insertTab - insertTab-2 - ( QWidget * child, const QIcon & iconset, const QString & label, int index = -1 ) - - - isTabEnabled - isTabEnabled - ( QWidget * w ) - - - removePage - removePage - ( QWidget * w ) - - - selected - selected - ( const QString & name ) - - - setApplyButton - setApplyButton - ( const QString & text ) - - - setApplyButton - setApplyButton-2 - () - - - setCancelButton - setCancelButton - ( const QString & text ) - - - setCancelButton - setCancelButton-2 - () - - - setDefaultButton - setDefaultButton - ( const QString & text ) - - - setDefaultButton - setDefaultButton-2 - () - - - setFont - setFont - ( const QFont & font ) - - - setHelpButton - setHelpButton - ( const QString & text ) - - - setHelpButton - setHelpButton-2 - () - - - setOkButton - setOkButton - ( const QString & text ) - - - setOkButton - setOkButton-2 - () - - - setTabBar - setTabBar - ( QTabBar * tb ) - - - setTabEnabled - setTabEnabled - ( QWidget * w, bool enable ) - - - showPage - showPage - ( QWidget * w ) - - - tabBar - tabBar - () - - - tabLabel - tabLabel - ( QWidget * w ) - - - - Q3Table - q3table.html - - EditMode - EditMode-enum - - - - FocusStyle - FocusStyle-enum - - - - SelectionMode - SelectionMode-enum - - - - Q3Table - Q3Table - ( QWidget * parent = 0, const char * name = 0 ) - - - Q3Table - Q3Table-2 - ( int numRows, int numCols, QWidget * parent = 0, const char * name = 0 ) - - - activateNextCell - activateNextCell - () - - - addSelection - addSelection - ( const Q3TableSelection & s ) - - - adjustColumn - adjustColumn - ( int col ) - - - adjustRow - adjustRow - ( int row ) - - - beginEdit - beginEdit - ( int row, int col, bool replace ) - - - cellGeometry - cellGeometry - ( int row, int col ) - - - cellRect - cellRect - ( int row, int col ) - - - cellWidget - cellWidget - ( int row, int col ) - - - clearCell - clearCell - ( int row, int col ) - - - clearCellWidget - clearCellWidget - ( int row, int col ) - - - clearSelection - clearSelection - ( bool repaint = true ) - - - clicked - clicked - ( int row, int col, int button, const QPoint & mousePos ) - - - columnAt - columnAt - ( int x ) - - - columnClicked - columnClicked - ( int col ) - - - columnIndexChanged - columnIndexChanged - ( int section, int fromIndex, int toIndex ) - - - columnPos - columnPos - ( int col ) - - - columnWidth - columnWidth - ( int col ) - - - columnWidthChanged - columnWidthChanged - ( int col ) - - - contentsDragEnterEvent - contentsDragEnterEvent - ( QDragEnterEvent * e ) - - - contentsDragLeaveEvent - contentsDragLeaveEvent - ( QDragLeaveEvent * e ) - - - contentsDragMoveEvent - contentsDragMoveEvent - ( QDragMoveEvent * e ) - - - contentsDropEvent - contentsDropEvent - ( QDropEvent * e ) - - - contextMenuRequested - contextMenuRequested - ( int row, int col, const QPoint & pos ) - - - createEditor - createEditor - ( int row, int col, bool initFromCell ) - - - currEditCol - currEditCol - () - - - currEditRow - currEditRow - () - - - currentChanged - currentChanged - ( int row, int col ) - - - currentColumn - currentColumn - () - - - currentRow - currentRow - () - - - currentSelection - currentSelection - () - - - doubleClicked - doubleClicked - ( int row, int col, int button, const QPoint & mousePos ) - - - dragEnabled - dragEnabled - () - - - dragObject - dragObject - () - - - drawContents - drawContents - ( QPainter * p, int cx, int cy, int cw, int ch ) - - - dropped - dropped - ( QDropEvent * e ) - - - editCell - editCell - ( int row, int col, bool replace = false ) - - - editMode - editMode - () - - - endEdit - endEdit - ( int row, int col, bool accept, bool replace ) - - - ensureCellVisible - ensureCellVisible - ( int row, int col ) - - - hideColumn - hideColumn - ( int col ) - - - hideRow - hideRow - ( int row ) - - - horizontalHeader - horizontalHeader - () - - - indexOf - indexOf - ( int row, int col ) - - - insertColumns - insertColumns - ( int col, int count = 1 ) - - - insertRows - insertRows - ( int row, int count = 1 ) - - - insertWidget - insertWidget - ( int row, int col, QWidget * w ) - - - isColumnHidden - isColumnHidden - ( int col ) - - - isColumnReadOnly - isColumnReadOnly - ( int col ) - - - isColumnSelected - isColumnSelected - ( int col, bool full = false ) - - - isColumnStretchable - isColumnStretchable - ( int col ) - - - isEditing - isEditing - () - - - isRowHidden - isRowHidden - ( int row ) - - - isRowReadOnly - isRowReadOnly - ( int row ) - - - isRowSelected - isRowSelected - ( int row, bool full = false ) - - - isRowStretchable - isRowStretchable - ( int row ) - - - isSelected - isSelected - ( int row, int col ) - - - item - item - ( int row, int col ) - - - paintCell - paintCell - ( QPainter * p, int row, int col, const QRect & cr, bool selected, const QColorGroup & cg ) - - - paintCell - paintCell-2 - ( QPainter * p, int row, int col, const QRect & cr, bool selected ) - - - paintEmptyArea - paintEmptyArea - ( QPainter * p, int cx, int cy, int cw, int ch ) - - - paintFocus - paintFocus - ( QPainter * p, const QRect & cr ) - - - pixmap - pixmap - ( int row, int col ) - - - pressed - pressed - ( int row, int col, int button, const QPoint & mousePos ) - - - removeColumn - removeColumn - ( int col ) - - - removeColumns - removeColumns - ( const Q3MemArray<int> & cols ) - - - removeRow - removeRow - ( int row ) - - - removeRows - removeRows - ( const Q3MemArray<int> & rows ) - - - removeSelection - removeSelection - ( const Q3TableSelection & s ) - - - removeSelection - removeSelection-2 - ( int num ) - - - repaintSelections - repaintSelections - () - - - resizeData - resizeData - ( int len ) - - - rowAt - rowAt - ( int y ) - - - rowHeight - rowHeight - ( int row ) - - - rowHeightChanged - rowHeightChanged - ( int row ) - - - rowIndexChanged - rowIndexChanged - ( int section, int fromIndex, int toIndex ) - - - rowPos - rowPos - ( int row ) - - - selectCells - selectCells - ( int start_row, int start_col, int end_row, int end_col ) - - - selectColumn - selectColumn - ( int col ) - - - selectRow - selectRow - ( int row ) - - - selection - selection - ( int num ) - - - selectionChanged - selectionChanged - () - - - setCellContentFromEditor - setCellContentFromEditor - ( int row, int col ) - - - setCellWidget - setCellWidget - ( int row, int col, QWidget * e ) - - - setColumnLabels - setColumnLabels - ( const QStringList & labels ) - - - setColumnReadOnly - setColumnReadOnly - ( int col, bool ro ) - - - setColumnStretchable - setColumnStretchable - ( int col, bool stretch ) - - - setColumnWidth - setColumnWidth - ( int col, int w ) - - - setCurrentCell - setCurrentCell - ( int row, int col ) - - - setDragEnabled - setDragEnabled - ( bool b ) - - - setEditMode - setEditMode - ( EditMode mode, int row, int col ) - - - setItem - setItem - ( int row, int col, Q3TableItem * item ) - - - setLeftMargin - setLeftMargin - ( int m ) - - - setPixmap - setPixmap - ( int row, int col, const QPixmap & pix ) - - - setRowHeight - setRowHeight - ( int row, int h ) - - - setRowLabels - setRowLabels - ( const QStringList & labels ) - - - setRowReadOnly - setRowReadOnly - ( int row, bool ro ) - - - setRowStretchable - setRowStretchable - ( int row, bool stretch ) - - - setText - setText - ( int row, int col, const QString & text ) - - - setTopMargin - setTopMargin - ( int m ) - - - showColumn - showColumn - ( int col ) - - - showRow - showRow - ( int row ) - - - sortColumn - sortColumn - ( int col, bool ascending = true, bool wholeRows = false ) - - - startDrag - startDrag - () - - - swapCells - swapCells - ( int row1, int col1, int row2, int col2 ) - - - swapColumns - swapColumns - ( int col1, int col2, bool swapHeader = false ) - - - swapRows - swapRows - ( int row1, int row2, bool swapHeader = false ) - - - takeItem - takeItem - ( Q3TableItem * i ) - - - text - text - ( int row, int col ) - - - updateCell - updateCell - ( int row, int col ) - - - updateHeaderStates - updateHeaderStates - () - - - valueChanged - valueChanged - ( int row, int col ) - - - verticalHeader - verticalHeader - () - - - - Q3TableItem - q3tableitem.html - - EditType - EditType-enum - - - - Q3TableItem - Q3TableItem - ( Q3Table * table, EditType et ) - - - Q3TableItem - Q3TableItem-2 - ( Q3Table * table, EditType et, const QString & text ) - - - Q3TableItem - Q3TableItem-3 - ( Q3Table * table, EditType et, const QString & text, const QPixmap & p ) - - - alignment - alignment - () - - - col - col - () - - - colSpan - colSpan - () - - - createEditor - createEditor - () - - - editType - editType - () - - - isEnabled - isEnabled - () - - - isReplaceable - isReplaceable - () - - - key - key - () - - - paint - paint - ( QPainter * p, const QColorGroup & cg, const QRect & cr, bool selected ) - - - pixmap - pixmap - () - - - row - row - () - - - rowSpan - rowSpan - () - - - rtti - rtti - () - - - setCol - setCol - ( int c ) - - - setContentFromEditor - setContentFromEditor - ( QWidget * w ) - - - setEnabled - setEnabled - ( bool b ) - - - setPixmap - setPixmap - ( const QPixmap & p ) - - - setReplaceable - setReplaceable - ( bool b ) - - - setRow - setRow - ( int r ) - - - setSpan - setSpan - ( int rs, int cs ) - - - setText - setText - ( const QString & str ) - - - setWordWrap - setWordWrap - ( bool b ) - - - sizeHint - sizeHint - () - - - table - table - () - - - text - text - () - - - wordWrap - wordWrap - () - - - - Q3TableSelection - q3tableselection.html - - Q3TableSelection - Q3TableSelection - () - - - Q3TableSelection - Q3TableSelection-2 - ( int start_row, int start_col, int end_row, int end_col ) - - - anchorCol - anchorCol - () - - - anchorRow - anchorRow - () - - - bottomRow - bottomRow - () - - - expandTo - expandTo - ( int row, int col ) - - - init - init - ( int row, int col ) - - - isActive - isActive - () - - - isEmpty - isEmpty - () - - - leftCol - leftCol - () - - - numCols - numCols - () - - - numRows - numRows - () - - - rightCol - rightCol - () - - - topRow - topRow - () - - - operator!= - operator-not-eq - ( const Q3TableSelection & s ) - - - operator== - operator-eq-eq - ( const Q3TableSelection & s ) - - - - Q3TextBrowser - q3textbrowser.html - - Q3TextBrowser - Q3TextBrowser - ( QWidget * parent = 0, const char * name = 0 ) - - - anchorClicked - anchorClicked - ( const QString & name, const QString & link ) - - - backward - backward - () - - - backwardAvailable - backwardAvailable - ( bool available ) - - - forward - forward - () - - - forwardAvailable - forwardAvailable - ( bool available ) - - - highlighted - highlighted - ( const QString & link ) - - - home - home - () - - - keyPressEvent - keyPressEvent - ( QKeyEvent * e ) - - - linkClicked - linkClicked - ( const QString & link ) - - - reload - reload - () - - - setText - setText-2 - ( const QString & txt ) - - - sourceChanged - sourceChanged - ( const QString & src ) - - - - Q3TextDrag - q3textdrag.html - - Q3TextDrag - Q3TextDrag - ( const QString & text, QWidget * dragSource = 0, const char * name = 0 ) - - - Q3TextDrag - Q3TextDrag-2 - ( QWidget * dragSource = 0, const char * name = 0 ) - - - canDecode - canDecode - ( const QMimeSource * source ) - - - decode - decode - ( const QMimeSource * source, QString & string ) - - - decode - decode-2 - ( const QMimeSource * source, QString & string, QString & subtype ) - - - setSubtype - setSubtype - ( const QString & subtype ) - - - setText - setText - ( const QString & text ) - - - - Q3TextEdit - q3textedit.html - - CursorAction - CursorAction-enum - - - - KeyboardAction - KeyboardAction-enum - - - - VerticalAlignment - VerticalAlignment-enum - - - - WordWrap - WordWrap-enum - - - - WrapPolicy - WrapPolicy-enum - - - - TextFormat - textFormat - - - - Q3TextEdit - Q3TextEdit - ( const QString & text, const QString & context = QString() - - - Q3TextEdit - Q3TextEdit-2 - ( QWidget * parent = 0, const char * name = 0 ) - - - alignment - alignment - () - - - anchorAt - anchorAt - ( const QPoint & pos, Qt::AnchorAttribute attr = Qt::AnchorHref ) - - - append - append - ( const QString & text ) - - - bold - bold - () - - - charAt - charAt - ( const QPoint & pos, int * para ) - - - clear - clear - () - - - clearParagraphBackground - clearParagraphBackground - ( int para ) - - - clicked - clicked - ( int para, int pos ) - - - color - color - () - - - context - context - () - - - copy - copy - () - - - copyAvailable - copyAvailable - ( bool yes ) - - - createPopupMenu - createPopupMenu - ( const QPoint & pos ) - - - createPopupMenu - createPopupMenu-2 - () - - - currentAlignmentChanged - currentAlignmentChanged - ( int a ) - - - currentColorChanged - currentColorChanged - ( const QColor & c ) - - - currentFont - currentFont - () - - - currentFontChanged - currentFontChanged - ( const QFont & f ) - - - currentVerticalAlignmentChanged - currentVerticalAlignmentChanged - ( VerticalAlignment a ) - - - cursorPositionChanged - cursorPositionChanged-2 - ( int para, int pos ) - - - cut - cut - () - - - del - del - () - - - doKeyboardAction - doKeyboardAction - ( KeyboardAction action ) - - - doubleClicked - doubleClicked - ( int para, int pos ) - - - ensureCursorVisible - ensureCursorVisible - () - - - family - family - () - - - find - find - ( const QString & expr, bool cs, bool wo, bool forward = true, int * para = 0, int * index = 0 ) - - - focusNextPrevChild - focusNextPrevChild - ( bool n ) - - - font - font - () - - - getCursorPosition - getCursorPosition - ( int * para, int * index ) - - - getSelection - getSelection - ( int * paraFrom, int * indexFrom, int * paraTo, int * indexTo, int selNum = 0 ) - - - heightForWidth - heightForWidth - ( int w ) - - - insert - insert - ( const QString & text, uint insertionFlags = CheckNewLines | RemoveSelected ) - - - insert - insert-2 - ( const QString & text, bool indent, bool checkNewLine = true, bool removeSelected = true ) - - - insertAt - insertAt - ( const QString & text, int para, int index ) - - - insertParagraph - insertParagraph - ( const QString & text, int para ) - - - isRedoAvailable - isRedoAvailable - () - - - isUndoAvailable - isUndoAvailable - () - - - italic - italic - () - - - keyPressEvent - keyPressEvent - ( QKeyEvent * e ) - - - lineOfChar - lineOfChar - ( int para, int index ) - - - lines - lines - () - - - linesOfParagraph - linesOfParagraph - ( int para ) - - - mimeSourceFactory - mimeSourceFactory - () - - - modificationChanged - modificationChanged - ( bool m ) - - - moveCursor - moveCursor - ( CursorAction action, bool select ) - - - paragraphAt - paragraphAt - ( const QPoint & pos ) - - - paragraphBackgroundColor - paragraphBackgroundColor - ( int para ) - - - paragraphLength - paragraphLength - ( int para ) - - - paragraphRect - paragraphRect - ( int para ) - - - paragraphs - paragraphs - () - - - paste - paste - () - - - pasteSubType - pasteSubType - ( const QByteArray & subtype ) - - - placeCursor - placeCursor - ( const QPoint & pos, Q3TextCursor * c = 0 ) - - - pointSize - pointSize - () - - - redo - redo - () - - - redoAvailable - redoAvailable - ( bool yes ) - - - removeParagraph - removeParagraph - ( int para ) - - - removeSelectedText - removeSelectedText - ( int selNum = 0 ) - - - removeSelection - removeSelection - ( int selNum = 0 ) - - - repaintChanged - repaintChanged - () - - - returnPressed - returnPressed - () - - - scrollToAnchor - scrollToAnchor - ( const QString & name ) - - - scrollToBottom - scrollToBottom - () - - - selectAll - selectAll - ( bool select = true ) - - - selectionChanged - selectionChanged - () - - - setAlignment - setAlignment - ( int a ) - - - setBold - setBold - ( bool b ) - - - setColor - setColor - ( const QColor & c ) - - - setCurrentFont - setCurrentFont - ( const QFont & f ) - - - setCursorPosition - setCursorPosition - ( int para, int index ) - - - setFamily - setFamily - ( const QString & fontFamily ) - - - setItalic - setItalic - ( bool b ) - - - setMimeSourceFactory - setMimeSourceFactory - ( Q3MimeSourceFactory * factory ) - - - setParagraphBackgroundColor - setParagraphBackgroundColor - ( int para, const QColor & bg ) - - - setPointSize - setPointSize - ( int s ) - - - setSelection - setSelection - ( int paraFrom, int indexFrom, int paraTo, int indexTo, int selNum = 0 ) - - - setSelectionAttributes - setSelectionAttributes - ( int selNum, const QColor & back, bool invertText ) - - - setStyleSheet - setStyleSheet - ( Q3StyleSheet * styleSheet ) - - - setUnderline - setUnderline - ( bool b ) - - - setVerticalAlignment - setVerticalAlignment - ( VerticalAlignment a ) - - - styleSheet - styleSheet - () - - - sync - sync - () - - - syntaxHighlighter - syntaxHighlighter - () - - - textChanged - textChanged - () - - - textCursor - textCursor - () - - - underline - underline - () - - - undo - undo - () - - - undoAvailable - undoAvailable - ( bool yes ) - - - verticalAlignment - verticalAlignment - () - - - zoomIn - zoomIn - ( int range ) - - - zoomIn - zoomIn-2 - () - - - zoomOut - zoomOut - ( int range ) - - - zoomOut - zoomOut-2 - () - - - zoomTo - zoomTo - ( int size ) - - - - Q3TextView - q3textview.html - - - Q3TimeEdit - q3timeedit.html - - Display - Display-enum - - - - Q3TimeEdit - Q3TimeEdit - ( QWidget * parent = 0, const char * name = 0 ) - - - Q3TimeEdit - Q3TimeEdit-2 - ( const QTime & time, QWidget * parent = 0, const char * name = 0 ) - - - sectionFormattedText - sectionFormattedText - ( int sec ) - - - separator - separator - () - - - setHour - setHour - ( int h ) - - - setMinute - setMinute - ( int m ) - - - setRange - setRange - ( const QTime & min, const QTime & max ) - - - setSecond - setSecond - ( int s ) - - - setSeparator - setSeparator - ( const QString & s ) - - - valueChanged - valueChanged - ( const QTime & time ) - - - - Q3ToolBar - q3toolbar.html - - Q3ToolBar - Q3ToolBar - ( const QString & label, Q3MainWindow * parent, Qt::ToolBarDock dock = Qt::DockTop, bool newLine = false, const char * name = 0 ) - - - Q3ToolBar - Q3ToolBar-2 - ( const QString & label, Q3MainWindow * mainWindow, QWidget * parent, bool newLine = false, const char * name = 0, Qt::WFlags f = 0 ) - - - Q3ToolBar - Q3ToolBar-3 - ( Q3MainWindow * parent = 0, const char * name = 0 ) - - - addSeparator - addSeparator - () - - - clear - clear - () - - - mainWindow - mainWindow - () - - - setStretchableWidget - setStretchableWidget - ( QWidget * w ) - - - setFilenames - setFilenamesx - ( const QStringList & list ) - - - - Q3UriDrag - q3uridrag.html - - Q3UriDrag - Q3UriDrag - ( const Q3StrList & uris, QWidget * dragSource = 0, const char * name = 0 ) - - - Q3UriDrag - Q3UriDrag-2 - ( QWidget * dragSource = 0, const char * name = 0 ) - - - canDecode - canDecode - ( const QMimeSource * source ) - - - decode - decode - ( const QMimeSource * source, Q3StrList & list ) - - - decodeLocalFiles - decodeLocalFiles - ( const QMimeSource * source, QStringList & list ) - - - decodeToUnicodeUris - decodeToUnicodeUris - ( const QMimeSource * source, QStringList & list ) - - - localFileToUri - localFileToUri - ( const QString & filename ) - - - setFileNames - setFileNames - ( const QStringList & filenames ) - - - setFileNames - setFileNames-2 - ( const QString & name ) - - - setFilenames - setFilenames-2x - ( const QString & name ) - - - setUnicodeUris - setUnicodeUris - ( const QStringList & list ) - - - setUris - setUris - ( const QList<QByteArray> & list ) - - - unicodeUriToUri - unicodeUriToUri - ( const QString & string ) - - - uriToLocalFile - uriToLocalFile - ( const char * string ) - - - uriToUnicodeUri - uriToUnicodeUri - ( const char * string ) - - - - Q3Url - q3url.html - - Q3Url - Q3Url - () - - - Q3Url - Q3Url-2 - ( const QString & url ) - - - Q3Url - Q3Url-3 - ( const Q3Url & url ) - - - Q3Url - Q3Url-4 - ( const Q3Url & url, const QString & relUrl, bool checkSlash = false ) - - - addPath - addPath - ( const QString & pa ) - - - cdUp - cdUp - () - - - decode - decode - ( QString & url ) - - - dirPath - dirPath - () - - - encode - encode - ( QString & url ) - - - encodedPathAndQuery - encodedPathAndQuery - () - - - fileName - fileName - () - - - hasHost - hasHost - () - - - hasPassword - hasPassword - () - - - hasPath - hasPath - () - - - hasPort - hasPort - () - - - hasRef - hasRef - () - - - hasUser - hasUser - () - - - host - host - () - - - isLocalFile - isLocalFile - () - - - isRelativeUrl - isRelativeUrl - ( const QString & url ) - - - isValid - isValid - () - - - parse - parse - ( const QString & url ) - - - password - password - () - - - path - path - ( bool correct = true ) - - - port - port - () - - - protocol - protocol - () - - - query - query - () - - - ref - ref - () - - - reset - reset - () - - - setEncodedPathAndQuery - setEncodedPathAndQuery - ( const QString & pathAndQuery ) - - - setFileName - setFileName - ( const QString & name ) - - - setHost - setHost - ( const QString & host ) - - - setPassword - setPassword - ( const QString & pass ) - - - setPath - setPath - ( const QString & path ) - - - setPort - setPort - ( int port ) - - - setProtocol - setProtocol - ( const QString & protocol ) - - - setQuery - setQuery - ( const QString & txt ) - - - setRef - setRef - ( const QString & txt ) - - - setUser - setUser - ( const QString & user ) - - - toString - toString - ( bool encodedPath = false, bool forcePrependProtocol = true ) - - - user - user - () - - - operator - operator-QString - QString() - - - operator= - operator-eq - ( const Q3Url & url ) - - - operator= - operator-eq-2 - ( const QString & url ) - - - operator== - operator-eq-eq - ( const Q3Url & url ) - - - operator== - operator-eq-eq-2 - ( const QString & url ) - - - - Q3UrlOperator - q3urloperator.html - - Q3UrlOperator - Q3UrlOperator - () - - - Q3UrlOperator - Q3UrlOperator-2 - ( const QString & url ) - - - Q3UrlOperator - Q3UrlOperator-3 - ( const Q3UrlOperator & url ) - - - Q3UrlOperator - Q3UrlOperator-4 - ( const Q3UrlOperator & url, const QString & relUrl, bool checkSlash = false ) - - - clearEntries - clearEntries - () - - - connectionStateChanged - connectionStateChanged - ( int state, const QString & data ) - - - copy - copy - ( const QString & from, const QString & to, bool move = false, bool toPath = true ) - - - copy - copy-2 - ( const QStringList & files, const QString & dest, bool move = false ) - - - createdDirectory - createdDirectory - ( const QUrlInfo & i, Q3NetworkOperation * op ) - - - data - data - ( const QByteArray & data, Q3NetworkOperation * op ) - - - dataTransferProgress - dataTransferProgress - ( int bytesDone, int bytesTotal, Q3NetworkOperation * op ) - - - deleteNetworkProtocol - deleteNetworkProtocol - () - - - finished - finished - ( Q3NetworkOperation * op ) - - - get - get - ( const QString & location = QString() - - - getNetworkProtocol - getNetworkProtocol - () - - - info - info - ( const QString & entry ) - - - isDir - isDir - ( bool * ok = 0 ) - - - itemChanged - itemChanged - ( Q3NetworkOperation * op ) - - - listChildren - listChildren - () - - - mkdir - mkdir - ( const QString & dirname ) - - - nameFilter - nameFilter - () - - - newChildren - newChildren - ( const Q3ValueList<QUrlInfo> & i, Q3NetworkOperation * op ) - - - put - put - ( const QByteArray & data, const QString & location = QString() - - - remove - remove - ( const QString & filename ) - - - removed - removed - ( Q3NetworkOperation * op ) - - - rename - rename - ( const QString & oldname, const QString & newname ) - - - setNameFilter - setNameFilter - ( const QString & nameFilter ) - - - start - start - ( Q3NetworkOperation * op ) - - - startedNextCopy - startedNextCopy - ( const Q3PtrList<Q3NetworkOperation> & lst ) - - - stop - stop - () - - - operator= - operator-eq - ( const Q3UrlOperator & url ) - - - operator= - operator-eq-2 - ( const QString & url ) - - - - Q3ValueList - q3valuelist.html - - ConstIterator - ConstIterator-typedef - - - - Iterator - Iterator-typedef - - - - const_iterator - const_iterator-typedef - - - - const_pointer - const_pointer-typedef - - - - const_reference - const_reference-typedef - - - - iterator - iterator-typedefx - - - - pointer - pointer-typedef - - - - reference - reference-typedef - - - - size_type - size_type-typedef - - - - value_type - value_type-typedef - - - - Q3ValueList - Q3ValueList - () - - - Q3ValueList - Q3ValueList-2 - ( const Q3ValueList<T> & l ) - - - Q3ValueList - Q3ValueList-3 - ( const QLinkedList<T> & l ) - - - Q3ValueList - Q3ValueList-4 - ( const QList<T> & l ) - - - Q3ValueList - Q3ValueList-5 - ( const std::list<T> & l ) - - - append - append - ( const T & x ) - - - at - at - ( Q3ValueList<T>::size_type i ) - - - at - at-2 - ( Q3ValueList<T>::size_type i ) - - - contains - contains - ( const T & x ) - - - fromLast - fromLast - () - - - fromLast - fromLast-2 - () - - - insert - insert - ( Q3ValueList<T>::Iterator it, const T & x ) - - - insert - insert-2 - ( Q3ValueList<T>::Iterator pos, Q3ValueList<T>::size_type n, const T & x ) - - - prepend - prepend - ( const T & x ) - - - remove - remove - ( Q3ValueList<T>::Iterator it ) - - - remove - remove-2 - ( const T & x ) - - - operator - operator-QList-ltT-gt - QList<T>() - - - operator!= - operator-not-eq - ( const Q3ValueList<T> & l ) - - - operator+ - operator-2b - ( const Q3ValueList<T> & l ) - - - operator+= - operator-2b-eq - ( const Q3ValueList<T> & l ) - - - operator+= - operator-2b-eq-2 - ( const T & x ) - - - operator<< - operator-lt-lt - ( const T & x ) - - - operator= - operator-eq - ( const Q3ValueList<T> & l ) - - - operator= - operator-eq-2 - ( const QList<T> & l ) - - - operator= - operator-eq-3 - ( const std::list<T> & l ) - - - operator== - operator-eq-eq - ( const Q3ValueList<T> & l ) - - - operator== - operator-eq-eq-2 - ( const std::list<T> & l ) - - - operator[] - operator-5b-5d - ( Q3ValueList<T>::size_type i ) - - - operator[] - operator-5b-5d-2 - ( Q3ValueList<T>::size_type i ) - - - - Q3ValueListConstIterator - q3valuelistconstiterator.html - - Q3ValueListConstIterator - Q3ValueListConstIterator - () - - - Q3ValueListConstIterator - Q3ValueListConstIterator-2 - ( const Q3ValueListConstIterator & o ) - - - Q3ValueListConstIterator - Q3ValueListConstIterator-3 - ( const QLinkedList<T>::const_iterator & o ) - - - Q3ValueListConstIterator - Q3ValueListConstIterator-4 - ( const QLinkedList<T>::iterator & o ) - - - - Q3ValueListIterator - q3valuelistiterator.html - - Q3ValueListIterator - Q3ValueListIterator - () - - - Q3ValueListIterator - Q3ValueListIterator-2 - ( const Q3ValueListIterator & o ) - - - Q3ValueListIterator - Q3ValueListIterator-3 - ( const QLinkedList<T>::iterator & o ) - - - - Q3ValueStack - q3valuestack.html - - Q3ValueStack - Q3ValueStack - () - - - pop - pop - () - - - push - push - ( const T & d ) - - - top - top - () - - - top - top-2 - () - - - - Q3ValueVector - q3valuevector.html - - Q3ValueVector - Q3ValueVector - () - - - Q3ValueVector - Q3ValueVector-2 - ( const Q3ValueVector<T> & v ) - - - Q3ValueVector - Q3ValueVector-3 - ( QVector<T>::size_type n, const T & val = T() - - - Q3ValueVector - Q3ValueVector-4 - ( const std::vector<T> & v ) - - - at - at - ( int i, bool * ok = 0 ) - - - at - at-2 - ( int i, bool * ok = 0 ) - - - resize - resize - ( int n, const T & val = T() - - - operator= - operator-eq - ( const Q3ValueVector<T> & v ) - - - operator= - operator-eq-2 - ( const std::vector<T> & v ) - - - - Q3VBox - q3vbox.html - - Q3VBox - Q3VBox - ( QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) - - - - Q3VButtonGroup - q3vbuttongroup.html - - Q3VButtonGroup - Q3VButtonGroup - ( QWidget * parent = 0, const char * name = 0 ) - - - Q3VButtonGroup - Q3VButtonGroup-2 - ( const QString & title, QWidget * parent = 0, const char * name = 0 ) - - - - Q3WhatsThis - q3whatsthis.html - - Q3WhatsThis - Q3WhatsThis - ( QWidget * widget ) - - - add - add - ( QWidget * widget, const QString & text ) - - - clicked - clicked - ( const QString & href ) - - - display - display - ( const QString & text, const QPoint & pos = QCursor::pos() - - - enterWhatsThisMode - enterWhatsThisMode - () - - - inWhatsThisMode - inWhatsThisMode - () - - - leaveWhatsThisMode - leaveWhatsThisMode - ( const QString & text = QString() - - - remove - remove - ( QWidget * widget ) - - - text - text - ( const QPoint & pos ) - - - whatsThisButton - whatsThisButton - ( QWidget * parent ) - - - - Q3WidgetStack - q3widgetstack.html - - Q3WidgetStack - Q3WidgetStack - ( QWidget * parent, const char * name = 0, Qt::WFlags f = 0 ) - - - aboutToShow - aboutToShow - ( int id ) - - - aboutToShow - aboutToShow-2 - ( QWidget * widget ) - - - addWidget - addWidget - ( QWidget * w, int id = -1 ) - - - id - id - ( QWidget * widget ) - - - raiseWidget - raiseWidget - ( int id ) - - - raiseWidget - raiseWidget-2 - ( QWidget * w ) - - - removeWidget - removeWidget - ( QWidget * w ) - - - setChildGeometries - setChildGeometries - () - - - visibleWidget - visibleWidget - () - - - widget - widget - ( int id ) - - - setFinish - setFinish - ( QWidget * widget, bool finish ) - - - - Q3Wizard - q3wizard.html - - Q3Wizard - Q3Wizard - ( QWidget * parent = 0, const char * name = 0, bool modal = false, Qt::WFlags f = 0 ) - - - addPage - addPage - ( QWidget * page, const QString & title ) - - - appropriate - appropriate - ( QWidget * page ) - - - back - back - () - - - backButton - backButton - () - - - cancelButton - cancelButton - () - - - currentPage - currentPage - () - - - finishButton - finishButton - () - - - help - help - () - - - helpButton - helpButton - () - - - helpClicked - helpClicked - () - - - indexOf - indexOf - ( QWidget * page ) - - - insertPage - insertPage - ( QWidget * page, const QString & title, int index ) - - - layOutButtonRow - layOutButtonRow - ( QHBoxLayout * layout ) - - - layOutTitleRow - layOutTitleRow - ( QHBoxLayout * layout, const QString & title ) - - - next - next - () - - - nextButton - nextButton - () - - - page - page - ( int index ) - - - pageCount - pageCount - () - - - removePage - removePage - ( QWidget * page ) - - - selected - selected - ( const QString & title ) - - - setAppropriate - setAppropriate - ( QWidget * page, bool appropriate ) - - - setBackEnabled - setBackEnabled - ( QWidget * page, bool enable ) - - - setFinishEnabled - setFinishEnabled - ( QWidget * page, bool enable ) - - - setHelpEnabled - setHelpEnabled - ( QWidget * page, bool enable ) - - - setNextEnabled - setNextEnabled - ( QWidget * page, bool enable ) - - - setTitle - setTitle - ( QWidget * page, const QString & title ) - - - showPage - showPage - ( QWidget * page ) - - - title - title - ( QWidget * page ) - - - QAbstractButton - QAbstractButton-2 - ( QWidget * parent, const char * name, Qt::WFlags f = 0 ) - - - accel - accel - () - - - iconSet - iconSet - () - - - isOn - isOn - () - - - isToggleButton - isToggleButton - () - - - pixmap - pixmap - () - - - setAccel - setAccel - ( const QKeySequence & key ) - - - setIconSet - setIconSet - ( const QIcon & icon ) - - - setOn - setOn - ( bool b ) - - - setPixmap - setPixmap - ( const QPixmap & p ) - - - setToggleButton - setToggleButton - ( bool b ) - - - - QAbstractButton - qabstractbutton.html - - QAbstractButton - QAbstractButton - ( QWidget * parent = 0 ) - - - animateClick - animateClick - ( int msec = 100 ) - - - checkStateSet - checkStateSet - () - - - click - click - () - - - clicked - clicked - ( bool checked = false ) - - - group - group - () - - - hitButton - hitButton - ( const QPoint & pos ) - - - nextCheckState - nextCheckState - () - - - pressed - pressed - () - - - released - released - () - - - toggle - toggle - () - - - toggled - toggled - ( bool checked ) - - - - QAbstractEventDispatcher - qabstracteventdispatcher.html - - EventFilter - EventFilter-typedef - - - - TimerInfo - TimerInfo-typedef - - - - QAbstractEventDispatcher - QAbstractEventDispatcher - ( QObject * parent = 0 ) - - - aboutToBlock - aboutToBlock - () - - - awake - awake - () - - - filterEvent - filterEvent - ( void * message ) - - - flush - flush - () - - - hasPendingEvents - hasPendingEvents - () - - - instance - instance - ( QThread * thread = 0 ) - - - interrupt - interrupt - () - - - processEvents - processEvents - ( QEventLoop::ProcessEventsFlags flags ) - - - registerSocketNotifier - registerSocketNotifier - ( QSocketNotifier * notifier ) - - - registerTimer - registerTimer - ( int interval, QObject * object ) - - - registerTimer - registerTimer-2 - ( int timerId, int interval, QObject * object ) - - - registeredTimers - registeredTimers - ( QObject * object ) - - - setEventFilter - setEventFilter - ( EventFilter filter ) - - - unregisterSocketNotifier - unregisterSocketNotifier - ( QSocketNotifier * notifier ) - - - unregisterTimer - unregisterTimer - ( int timerId ) - - - unregisterTimers - unregisterTimers - ( QObject * object ) - - - wakeUp - wakeUp - () - - - - QAbstractItemDelegate - qabstractitemdelegate.html - - EndEditHint - EndEditHint-enum - - - - QAbstractItemDelegate - QAbstractItemDelegate - ( QObject * parent = 0 ) - - - closeEditor - closeEditor - ( QWidget * editor, EndEditHint hint = NoHint ) - - - commitData - commitData - ( QWidget * editor ) - - - createEditor - createEditor - ( QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index ) - - - editorEvent - editorEvent - ( QEvent * event, QAbstractItemModel * model, const QStyleOptionViewItem & option, const QModelIndex & index ) - - - elidedText - elidedText - ( const QFontMetrics & fontMetrics, int width, Qt::TextElideMode mode, const QString & text ) - - - paint - paint - ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) - - - setEditorData - setEditorData - ( QWidget * editor, const QModelIndex & index ) - - - setModelData - setModelData - ( QWidget * editor, QAbstractItemModel * model, const QModelIndex & index ) - - - sizeHint - sizeHint - ( const QStyleOptionViewItem & option, const QModelIndex & index ) - - - updateEditorGeometry - updateEditorGeometry - ( QWidget * editor, const QStyleOptionViewItem & option, const QModelIndex & index ) - - - - QAbstractItemModel - qabstractitemmodel.html - - QAbstractItemModel - QAbstractItemModel - ( QObject * parent = 0 ) - - - beginInsertColumns - beginInsertColumns - ( const QModelIndex & parent, int first, int last ) - - - beginInsertRows - beginInsertRows - ( const QModelIndex & parent, int first, int last ) - - - beginRemoveColumns - beginRemoveColumns - ( const QModelIndex & parent, int first, int last ) - - - beginRemoveRows - beginRemoveRows - ( const QModelIndex & parent, int first, int last ) - - - buddy - buddy - ( const QModelIndex & index ) - - - canFetchMore - canFetchMore - ( const QModelIndex & parent ) - - - columnCount - columnCount - ( const QModelIndex & parent = QModelIndex() - - - createIndex - createIndex - ( int row, int column, void * ptr = 0 ) - - - createIndex - createIndex-2 - ( int row, int column, int id ) - - - data - data - ( const QModelIndex & index, int role = Qt::DisplayRole ) - - - dataChanged - dataChanged - ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) - - - dropMimeData - dropMimeData - ( const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent ) - - - endInsertColumns - endInsertColumns - () - - - endInsertRows - endInsertRows - () - - - endRemoveColumns - endRemoveColumns - () - - - endRemoveRows - endRemoveRows - () - - - fetchMore - fetchMore - ( const QModelIndex & parent ) - - - ItemFlags - flags - QAbstractItemModel::flags( const QModelIndex & index ) - - - hasChildren - hasChildren - ( const QModelIndex & parent = QModelIndex() - - - hasIndex - hasIndex - ( int row, int column, const QModelIndex & parent = QModelIndex() - - - headerData - headerData - ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) - - - headerDataChanged - headerDataChanged - ( Qt::Orientation orientation, int first, int last ) - - - index - index - ( int row, int column, const QModelIndex & parent = QModelIndex() - - - insertColumn - insertColumn - ( int column, const QModelIndex & parent = QModelIndex() - - - insertColumns - insertColumns - ( int column, int count, const QModelIndex & parent = QModelIndex() - - - insertRow - insertRow - ( int row, const QModelIndex & parent = QModelIndex() - - - insertRows - insertRows - ( int row, int count, const QModelIndex & parent = QModelIndex() - - - itemData - itemData - ( const QModelIndex & index ) - - - match - match - ( const QModelIndex & start, int role, const QVariant & value, int hits = 1, MatchFlags flags = MatchFlags( MatchFromStart | MatchWrap ) - - - mimeData - mimeData - ( const QModelIndexList & indexes ) - - - mimeTypes - mimeTypes - () - - - parent - parent - ( const QModelIndex & index ) - - - removeColumn - removeColumn - ( int column, const QModelIndex & parent = QModelIndex() - - - removeColumns - removeColumns - ( int column, int count, const QModelIndex & parent = QModelIndex() - - - removeRow - removeRow - ( int row, const QModelIndex & parent = QModelIndex() - - - removeRows - removeRows - ( int row, int count, const QModelIndex & parent = QModelIndex() - - - reset - reset - () - - - revert - revert - () - - - rowCount - rowCount - ( const QModelIndex & parent = QModelIndex() - - - setData - setData - ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) - - - setHeaderData - setHeaderData - ( int section, Qt::Orientation orientation, const QVariant & value, int role = Qt::EditRole ) - - - setItemData - setItemData - ( const QModelIndex & index, const QMap<int, QVariant> & roles ) - - - sibling - sibling - ( int row, int column, const QModelIndex & index ) - - - sort - sort - ( int column, Qt::SortOrder order = Qt::AscendingOrder ) - - - span - span - ( const QModelIndex & index ) - - - submit - submit - () - - - DropActions - supportedDropActions - QAbstractItemModel::supportedDropActions() - - - - QAbstractItemView - qabstractitemview.html - - CursorAction - CursorAction-enum - - - - ScrollHint - ScrollHint-enum - - - - SelectionBehavior - SelectionBehavior-enum - - - - SelectionMode - SelectionMode-enum - - - - State - State-enum - - - - TextElideMode - textElideMode - - - - QAbstractItemView - QAbstractItemView - ( QWidget * parent = 0 ) - - - activated - activated - ( const QModelIndex & index ) - - - clearSelection - clearSelection - () - - - clicked - clicked - ( const QModelIndex & index ) - - - closeEditor - closeEditor - ( QWidget * editor, QAbstractItemDelegate::EndEditHint hint ) - - - closePersistentEditor - closePersistentEditor - ( const QModelIndex & index ) - - - commitData - commitData - ( QWidget * editor ) - - - currentChanged - currentChanged - ( const QModelIndex & current, const QModelIndex & previous ) - - - currentIndex - currentIndex - () - - - dataChanged - dataChanged - ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) - - - doubleClicked - doubleClicked - ( const QModelIndex & index ) - - - dragEnterEvent - dragEnterEvent - ( QDragEnterEvent * e ) - - - dragLeaveEvent - dragLeaveEvent - ( QDragLeaveEvent * event ) - - - dragMoveEvent - dragMoveEvent - ( QDragMoveEvent * e ) - - - dropEvent - dropEvent - ( QDropEvent * e ) - - - edit - edit - ( const QModelIndex & index ) - - - edit - edit-2 - ( const QModelIndex & index, EditTrigger trigger, QEvent * event ) - - - editorDestroyed - editorDestroyed - ( QObject * editor ) - - - entered - entered - ( const QModelIndex & index ) - - - focusInEvent - focusInEvent - ( QFocusEvent * e ) - - - focusOutEvent - focusOutEvent - ( QFocusEvent * e ) - - - horizontalOffset - horizontalOffset - () - - - horizontalStepsPerItem - horizontalStepsPerItem - () - - - indexAt - indexAt - ( const QPoint & p ) - - - isIndexHidden - isIndexHidden - ( const QModelIndex & index ) - - - itemDelegate - itemDelegate - () - - - keyPressEvent - keyPressEvent - ( QKeyEvent * e ) - - - keyboardSearch - keyboardSearch - ( const QString & search ) - - - model - model - () - - - mouseDoubleClickEvent - mouseDoubleClickEvent - ( QMouseEvent * e ) - - - mouseMoveEvent - mouseMoveEvent - ( QMouseEvent * e ) - - - mousePressEvent - mousePressEvent - ( QMouseEvent * e ) - - - mouseReleaseEvent - mouseReleaseEvent - ( QMouseEvent * e ) - - - moveCursor - moveCursor - ( CursorAction cursorAction, Qt::KeyboardModifiers modifiers ) - - - openPersistentEditor - openPersistentEditor - ( const QModelIndex & index ) - - - pressed - pressed - ( const QModelIndex & index ) - - - reset - reset - () - - - resizeEvent - resizeEvent - ( QResizeEvent * e ) - - - rootIndex - rootIndex - () - - - rowsAboutToBeRemoved - rowsAboutToBeRemoved - ( const QModelIndex & parent, int start, int end ) - - - rowsInserted - rowsInserted - ( const QModelIndex & parent, int start, int end ) - - - scrollTo - scrollTo - ( const QModelIndex & index, ScrollHint hint = EnsureVisible ) - - - selectAll - selectAll - () - - - selectedIndexes - selectedIndexes - () - - - selectionChanged - selectionChanged - ( const QItemSelection & selected, const QItemSelection & deselected ) - - - SelectionFlags - selectionCommand - QAbstractItemView::selectionCommand( const QModelIndex & index, const QEvent * event = 0 ) - - - selectionModel - selectionModel - () - - - setCurrentIndex - setCurrentIndex - ( const QModelIndex & index ) - - - setHorizontalStepsPerItem - setHorizontalStepsPerItem - ( int steps ) - - - setItemDelegate - setItemDelegate - ( QAbstractItemDelegate * delegate ) - - - setModel - setModel - ( QAbstractItemModel * model ) - - - setRootIndex - setRootIndex - ( const QModelIndex & index ) - - - setSelection - setSelection - ( const QRect & rect, QItemSelectionModel::SelectionFlags flags ) - - - setSelectionModel - setSelectionModel - ( QItemSelectionModel * selectionModel ) - - - setState - setState - ( State state ) - - - setVerticalStepsPerItem - setVerticalStepsPerItem - ( int steps ) - - - sizeHintForColumn - sizeHintForColumn - ( int column ) - - - sizeHintForIndex - sizeHintForIndex - ( const QModelIndex & index ) - - - sizeHintForRow - sizeHintForRow - ( int row ) - - - startDrag - startDrag - ( Qt::DropActions supportedActions ) - - - state - state - () - - - timerEvent - timerEvent - ( QTimerEvent * e ) - - - verticalOffset - verticalOffset - () - - - verticalStepsPerItem - verticalStepsPerItem - () - - - viewOptions - viewOptions - () - - - viewportEntered - viewportEntered - () - - - viewportEvent - viewportEvent - ( QEvent * event ) - - - visualRect - visualRect - ( const QModelIndex & index ) - - - visualRegionForSelection - visualRegionForSelection - ( const QItemSelection & selection ) - - - - QAbstractListModel - qabstractlistmodel.html - - QAbstractListModel - QAbstractListModel - ( QObject * parent = 0 ) - - - index - index - ( int row, int column = 0, const QModelIndex & parent = QModelIndex() - - - - QAbstractScrollArea - qabstractscrollarea.html - - ScrollBarPolicy - horizontalScrollBarPolicy - - - - ScrollBarPolicy - verticalScrollBarPolicy - - - - QAbstractScrollArea - QAbstractScrollArea - ( QWidget * parent = 0 ) - - - contextMenuEvent - contextMenuEvent - ( QContextMenuEvent * e ) - - - dragEnterEvent - dragEnterEvent - ( QDragEnterEvent * event ) - - - dragLeaveEvent - dragLeaveEvent - ( QDragLeaveEvent * event ) - - - dragMoveEvent - dragMoveEvent - ( QDragMoveEvent * event ) - - - dropEvent - dropEvent - ( QDropEvent * event ) - - - event - event - ( QEvent * e ) - - - horizontalScrollBar - horizontalScrollBar - () - - - keyPressEvent - keyPressEvent - ( QKeyEvent * e ) - - - maximumViewportSize - maximumViewportSize - () - - - mouseDoubleClickEvent - mouseDoubleClickEvent - ( QMouseEvent * e ) - - - mouseMoveEvent - mouseMoveEvent - ( QMouseEvent * e ) - - - mousePressEvent - mousePressEvent - ( QMouseEvent * e ) - - - mouseReleaseEvent - mouseReleaseEvent - ( QMouseEvent * e ) - - - paintEvent - paintEvent - ( QPaintEvent * event ) - - - resizeEvent - resizeEvent - ( QResizeEvent * event ) - - - scrollContentsBy - scrollContentsBy - ( int dx, int dy ) - - - setViewportMargins - setViewportMargins - ( int left, int top, int right, int bottom ) - - - verticalScrollBar - verticalScrollBar - () - - - viewport - viewport - () - - - viewportEvent - viewportEvent - ( QEvent * e ) - - - wheelEvent - wheelEvent - ( QWheelEvent * e ) - - - addLine - addLine - () - - - addPage - addPage - () - - - lineStep - lineStep - () - - - maxValue - maxValue - () - - - minValue - minValue - () - - - setLineStep - setLineStep - ( int v ) - - - setMaxValue - setMaxValue - ( int v ) - - - setMinValue - setMinValue - ( int v ) - - - setSteps - setSteps - ( int single, int page ) - - - subtractLine - subtractLine - () - - - subtractPage - subtractPage - () - - - - QAbstractSlider - qabstractslider.html - - SliderAction - SliderAction-enum - - - - SliderChange - SliderChange-enum - - - - Orientation - orientation - - - - QAbstractSlider - QAbstractSlider - ( QWidget * parent = 0 ) - - - actionTriggered - actionTriggered - ( int action ) - - - rangeChanged - rangeChanged - ( int min, int max ) - - - repeatAction - repeatAction - () - - - setRange - setRange - ( int min, int max ) - - - setRepeatAction - setRepeatAction - ( SliderAction action, int thresholdTime = 500, int repeatTime = 50 ) - - - setSliderPosition - setSliderPosition - ( int position ) - - - sliderChange - sliderChange - ( SliderChange change ) - - - sliderMoved - sliderMoved - ( int value ) - - - sliderPosition - sliderPosition - () - - - sliderPressed - sliderPressed - () - - - sliderReleased - sliderReleased - () - - - triggerAction - triggerAction - ( SliderAction action ) - - - valueChanged - valueChanged - ( int value ) - - - Error - Error-enum - - - - State - State-typedef - - - - connectionClosed - connectionClosed - () - - - delayedCloseFinished - delayedCloseFinished - () - - - setSocket - setSocket - ( int socket ) - - - socket - socket - () - - - waitForMore - waitForMore - ( int msecs, bool * timeout = 0 ) - - - - QAbstractSocket - qabstractsocket.html - - SocketError - SocketError-enum - - - - SocketState - SocketState-enum - - - - SocketType - SocketType-enum - - - - QAbstractSocket - QAbstractSocket - ( SocketType socketType, QObject * parent ) - - - abort - abort - () - - - bytesAvailable - bytesAvailable - () - - - bytesToWrite - bytesToWrite - () - - - canReadLine - canReadLine - () - - - close - close - () - - - connectToHost - connectToHost - ( const QString & hostName, quint16 port, OpenMode openMode = ReadWrite ) - - - connectToHost - connectToHost-2 - ( const QHostAddress & address, quint16 port, OpenMode openMode = ReadWrite ) - - - connected - connected - () - - - disconnectFromHost - disconnectFromHost - () - - - disconnected - disconnected - () - - - error - error - () - - - error - error-2 - ( SocketError socketError ) - - - hostFound - hostFound - () - - - isValid - isValid - () - - - localAddress - localAddress - () - - - localPort - localPort - () - - - peerAddress - peerAddress - () - - - peerName - peerName - () - - - peerPort - peerPort - () - - - readBufferSize - readBufferSize - () - - - setReadBufferSize - setReadBufferSize - ( qint64 size ) - - - setSocketDescriptor - setSocketDescriptor - ( int socketDescriptor, SocketState socketState = ConnectedState, OpenMode openMode = ReadWrite ) - - - setSocketError - setSocketError - ( SocketError socketError ) - - - setSocketState - setSocketState - ( SocketState state ) - - - socketDescriptor - socketDescriptor - () - - - socketType - socketType - () - - - state - state - () - - - stateChanged - stateChanged - ( SocketState socketState ) - - - waitForConnected - waitForConnected - ( int msecs = 30000 ) - - - waitForDisconnected - waitForDisconnected - ( int msecs = 30000 ) - - - - QAbstractSpinBox - qabstractspinbox.html - - ButtonSymbols - ButtonSymbols-enum - - - - Alignment - alignment - - - - QAbstractSpinBox - QAbstractSpinBox - ( QWidget * parent = 0 ) - - - clear - clear - () - - - editingFinished - editingFinished - () - - - fixup - fixup - ( QString & input ) - - - interpretText - interpretText - () - - - lineEdit - lineEdit - () - - - selectAll - selectAll - () - - - setLineEdit - setLineEdit - ( QLineEdit * lineEdit ) - - - stepBy - stepBy - ( int steps ) - - - stepDown - stepDown - () - - - stepEnabled - stepEnabled - () - - - stepUp - stepUp - () - - - State - validate - QAbstractSpinBox::validate( QString & input, int & pos ) - - - - QAbstractTableModel - qabstracttablemodel.html - - QAbstractTableModel - QAbstractTableModel - ( QObject * parent = 0 ) - - - index - index - ( int row, int column, const QModelIndex & parent = QModelIndex() - - - - QAbstractTextDocumentLayout::Selection - qabstracttextdocumentlayout-selection.html - - - QAbstractTextDocumentLayout - qabstracttextdocumentlayout.html - - QAbstractTextDocumentLayout - QAbstractTextDocumentLayout - ( QTextDocument * document ) - - - anchorAt - anchorAt - ( const QPointF & position ) - - - document - document - () - - - documentChanged - documentChanged - ( int position, int charsRemoved, int charsAdded ) - - - documentSize - documentSize - () - - - documentSizeChanged - documentSizeChanged - ( const QSizeF & newSize ) - - - draw - draw - ( QPainter * painter, const PaintContext & context ) - - - drawInlineObject - drawInlineObject - ( QPainter * painter, const QRectF & rect, QTextInlineObject item, const QTextFormat & format ) - - - format - format - ( int position ) - - - frameBoundingRect - frameBoundingRect - ( QTextFrame * frame ) - - - pageCount - pageCount - () - - - pageCountChanged - pageCountChanged - ( int newPages ) - - - paintDevice - paintDevice - () - - - positionInlineObject - positionInlineObject - ( QTextInlineObject item, const QTextFormat & format ) - - - resizeInlineObject - resizeInlineObject - ( QTextInlineObject item, const QTextFormat & format ) - - - setPaintDevice - setPaintDevice - ( QPaintDevice * device ) - - - update - update - ( const QRectF & rect = QRectF( 0., 0., 1000000000., 1000000000. ) - - - - QAccessible - qaccessible.html - - Action - Action-enum - - - - Event - Event-enum - - - - InterfaceFactory - InterfaceFactory-typedef - - - - Role - Role-enum - - - - RootObjectHandler - RootObjectHandler-typedef - - - - Text - Text-enum - - - - UpdateHandler - UpdateHandler-typedef - - - - installFactory - installFactory - ( InterfaceFactory factory ) - - - installRootObjectHandler - installRootObjectHandler - ( RootObjectHandler handler ) - - - installUpdateHandler - installUpdateHandler - ( UpdateHandler handler ) - - - isActive - isActive - () - - - queryAccessibleInterface - queryAccessibleInterface - ( QObject * object ) - - - removeFactory - removeFactory - ( InterfaceFactory factory ) - - - setRootObject - setRootObject - ( QObject * object ) - - - updateAccessibility - updateAccessibility - ( QObject * object, int child, Event reason ) - - - - QAccessibleButton - qaccessiblebutton.html - - QAccessibleButton - QAccessibleButton - ( QWidget * w, Role role ) - - - button - button - () - - - - QAccessibleComboBox - qaccessiblecombobox.html - - QAccessibleComboBox - QAccessibleComboBox - ( QWidget * w ) - - - comboBox - comboBox - () - - - - QAccessibleDisplay - qaccessibledisplay.html - - QAccessibleDisplay - QAccessibleDisplay - ( QWidget * w, Role role = StaticText ) - - - - QAccessibleHeader - qaccessibleheader.html - - QAccessibleHeader - QAccessibleHeader - ( QWidget * w ) - - - header - header - () - - - - QAccessibleIconView - qaccessibleiconview.html - - QAccessibleIconView - QAccessibleIconView - ( QWidget * widget ) - - - iconView - iconView - () - - - - QAccessibleInterface - qaccessibleinterface.html - - actionText - actionText - ( int action, Text t, int child ) - - - childAt - childAt - ( int x, int y ) - - - childCount - childCount - () - - - doAction - doAction - ( int action, int child, const QVariantList & params = QVariantList() - - - indexOfChild - indexOfChild - ( const QAccessibleInterface * child ) - - - isValid - isValid - () - - - navigate - navigate - ( RelationFlag relation, int entry, QAccessibleInterface ** target ) - - - object - object - () - - - rect - rect - ( int child ) - - - relationTo - relationTo - ( int child, const QAccessibleInterface * other, int otherChild ) - - - role - role - ( int child ) - - - setText - setText - ( Text t, int child, const QString & text ) - - - state - state - ( int child ) - - - text - text - ( Text t, int child ) - - - userActionCount - userActionCount - ( int child ) - - - - QAccessibleLineEdit - qaccessiblelineedit.html - - QAccessibleLineEdit - QAccessibleLineEdit - ( QWidget * w, const QString & name = QString() - - - lineEdit - lineEdit - () - - - - QAccessibleListBox - qaccessiblelistbox.html - - QAccessibleListBox - QAccessibleListBox - ( QWidget * widget ) - - - clearSelection - clearSelection - () - - - listBox - listBox - () - - - selection - selection - () - - - setSelected - setSelected - ( int child, bool on, bool extend ) - - - - QAccessibleListView - qaccessiblelistview.html - - QAccessibleListView - QAccessibleListView - ( QWidget * widget ) - - - listView - listView - () - - - - QAccessibleObject - qaccessibleobject.html - - QAccessibleObject - QAccessibleObject - ( QObject * object ) - - - - QAccessiblePlugin - qaccessibleplugin.html - - QAccessiblePlugin - QAccessiblePlugin - ( QObject * parent = 0 ) - - - create - create - ( const QString & key, QObject * object ) - - - keys - keys - () - - - - QAccessibleScrollBar - qaccessiblescrollbar.html - - ScrollBarElements - ScrollBarElements-enum - - - - QAccessibleScrollBar - QAccessibleScrollBar - ( QWidget * w, const QString & name = QString() - - - scrollBar - scrollBar - () - - - - QAccessibleScrollView - qaccessiblescrollview.html - - QAccessibleScrollView - QAccessibleScrollView - ( QWidget * w, Role role ) - - - itemAt - itemAt - ( int x, int y ) - - - itemCount - itemCount - () - - - itemRect - itemRect - ( int item ) - - - - QAccessibleSlider - qaccessibleslider.html - - SliderElements - SliderElements-enum - - - - QAccessibleSlider - QAccessibleSlider - ( QWidget * w, const QString & name = QString() - - - defaultAction - defaultAction - ( int child ) - - - slider - slider - () - - - - QAccessibleSpinBox - qaccessiblespinbox.html - - SpinBoxElements - SpinBoxElements-enum - - - - QAccessibleSpinBox - QAccessibleSpinBox - ( QWidget * w ) - - - spinBox - spinBox - () - - - - QAccessibleTabBar - qaccessibletabbar.html - - QAccessibleTabBar - QAccessibleTabBar - ( QWidget * w ) - - - selection - selection - () - - - setSelected - setSelected - ( int child, bool on, bool extend ) - - - tabBar - tabBar - () - - - - QAccessibleTextEdit - qaccessibletextedit.html - - QAccessibleTextEdit - QAccessibleTextEdit - ( QWidget * widget ) - - - textEdit - textEdit - () - - - - QAccessibleToolButton - qaccessibletoolbutton.html - - ToolButtonElements - ToolButtonElements-enum - - - - QAccessibleToolButton - QAccessibleToolButton - ( QWidget * w, Role role ) - - - isSplitButton - isSplitButton - () - - - toolButton - toolButton - () - - - - QAccessibleWidget - qaccessiblewidget.html - - QAccessibleWidget - QAccessibleWidget - ( QWidget * w, Role role = Client, const QString & name = QString() - - - addControllingSignal - addControllingSignal - ( const QString & signal ) - - - parentObject - parentObject - () - - - setAccelerator - setAccelerator - ( const QString & accel ) - - - setDescription - setDescription - ( const QString & desc ) - - - setHelp - setHelp - ( const QString & help ) - - - setValue - setValue - ( const QString & value ) - - - widget - widget - () - - - - QAccessibleWidgetStack - qaccessiblewidgetstack.html - - QAccessibleWidgetStack - QAccessibleWidgetStack - ( QWidget * widget ) - - - widgetStack - widgetStack - () - - - QAction - QAction-4 - ( QObject * parent, const char * name ) - - - QAction - QAction-5 - ( const QString & text, const QKeySequence & shortcut, QObject * parent, const char * name ) - - - QAction - QAction-6 - ( const QIcon & icon, const QString & text, const QKeySequence & shortcut, QObject * parent, const char * name ) - - - accel - accel - () - - - activated - activated - ( int i = 0 ) - - - addTo - addTo - ( QWidget * w ) - - - iconSet - iconSet - () - - - isOn - isOn - () - - - isToggleAction - isToggleAction - () - - - menuText - menuText - () - - - removeFrom - removeFrom - ( QWidget * w ) - - - setAccel - setAccel - ( const QKeySequence & shortcut ) - - - setIconSet - setIconSet - ( const QIcon & i ) - - - setMenuText - setMenuText - ( const QString & text ) - - - setOn - setOn - ( bool b ) - - - setToggleAction - setToggleAction - ( bool b ) - - - - QAction - qaction.html - - ActionEvent - ActionEvent-enum - - - - ShortcutContext - shortcutContext - - - - QAction - QAction - ( QObject * parent ) - - - QAction - QAction-2 - ( const QString & text, QObject * parent ) - - - QAction - QAction-3 - ( const QIcon & icon, const QString & text, QObject * parent ) - - - actionGroup - actionGroup - () - - - activate - activate - ( ActionEvent event ) - - - changed - changed - () - - - data - data - () - - - hover - hover - () - - - hovered - hovered - () - - - isSeparator - isSeparator - () - - - menu - menu - () - - - parentWidget - parentWidget - () - - - setActionGroup - setActionGroup - ( QActionGroup * group ) - - - setData - setData - ( const QVariant & data ) - - - setDisabled - setDisabled - ( bool b ) - - - setSeparator - setSeparator - ( bool b ) - - - showStatusText - showStatusText - ( QWidget * widget = 0 ) - - - toggle - toggle - () - - - toggled - toggled - ( bool checked ) - - - trigger - trigger - () - - - triggered - triggered - ( bool checked = false ) - - - add - add - ( QAction * a ) - - - addSeparator - addSeparator - () - - - addTo - addTo - ( QWidget * widget ) - - - selected - selected - ( QAction * action ) - - - - QActionGroup - qactiongroup.html - - QActionGroup - QActionGroup - ( QObject * parent ) - - - actions - actions - () - - - addAction - addAction - ( QAction * action ) - - - addAction - addAction-2 - ( const QString & text ) - - - addAction - addAction-3 - ( const QIcon & icon, const QString & text ) - - - checkedAction - checkedAction - () - - - hovered - hovered - ( QAction * action ) - - - removeAction - removeAction - ( QAction * action ) - - - setDisabled - setDisabled - ( bool b ) - - - triggered - triggered - ( QAction * action ) - - - ColorMode - ColorMode-typedef - - - - colorMode - colorMode - () - - - flushX - flushX - () - - - hasGlobalMouseTracking - hasGlobalMouseTracking - () - - - Alignment - horizontalAlignment - QApplication::horizontalAlignment( Qt::Alignment align ) - - - MacintoshVersion - macVersion - QApplication::macVersion() - - - mainWidget - mainWidget - () - - - reverseLayout - reverseLayout - () - - - setColorMode - setColorMode - ( ColorMode mode ) - - - setFont - setFont-2 - ( const QFont & font, bool b, const char * className = 0 ) - - - setGlobalMouseTracking - setGlobalMouseTracking - ( bool b ) - - - setMainWidget - setMainWidget - ( QWidget * mainWidget ) - - - setOverrideCursor - setOverrideCursor-2 - ( const QCursor & cursor, bool replace ) - - - setPalette - setPalette-2 - ( const QPalette & pal, bool b, const char * className = 0 ) - - - setReverseLayout - setReverseLayout - ( bool reverse ) - - - setWinStyleHighlightColor - setWinStyleHighlightColor - ( const QColor & c ) - - - widgetAt - widgetAt-3 - ( int x, int y, bool child ) - - - widgetAt - widgetAt-4 - ( const QPoint & point, bool child ) - - - winStyleHighlightColor - winStyleHighlightColor - () - - - WindowsVersion - winVersion - QApplication::winVersion() - - - - QApplication - qapplication.html - - ColorSpec - ColorSpec-enum - - - - Type - Type-enum - - - - LayoutDirection - layoutDirection - - - - QApplication - QApplication - ( int & argc, char ** argv ) - - - QApplication - QApplication-2 - ( int & argc, char ** argv, bool GUIenabled ) - - - QApplication - QApplication-3 - ( int & argc, char ** argv, Type type ) - - - QApplication - QApplication-4 - ( Display * dpy, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0 ) - - - QApplication - QApplication-5 - ( Display * dpy, int & argc, char ** argv, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0 ) - - - aboutQt - aboutQt - () - - - activeModalWidget - activeModalWidget - () - - - activePopupWidget - activePopupWidget - () - - - activeWindow - activeWindow - () - - - allWidgets - allWidgets - () - - - beep - beep - () - - - changeOverrideCursor - changeOverrideCursor - ( const QCursor & cursor ) - - - clipboard - clipboard - () - - - closeAllWindows - closeAllWindows - () - - - colorSpec - colorSpec - () - - - commitData - commitData - ( QSessionManager & sm ) - - - desktop - desktop - () - - - exec - exec - () - - - focusWidget - focusWidget - () - - - fontMetrics - fontMetrics - () - - - inputContext - inputContext - () - - - isEffectEnabled - isEffectEnabled - ( Qt::UIEffect effect ) - - - isLeftToRight - isLeftToRight - () - - - isRightToLeft - isRightToLeft - () - - - isSessionRestored - isSessionRestored - () - - - KeyboardModifiers - keyboardModifiers - QApplication::keyboardModifiers() - - - lastWindowClosed - lastWindowClosed - () - - - macEventFilter - macEventFilter - ( EventHandlerCallRef caller, EventRef event ) - - - MouseButtons - mouseButtons - QApplication::mouseButtons() - - - overrideCursor - overrideCursor - () - - - qwsDecoration - qwsDecoration - () - - - qwsEventFilter - qwsEventFilter - ( QWSEvent * event ) - - - qwsSetCustomColors - qwsSetCustomColors - ( QRgb * colorTable, int start, int numColors ) - - - qwsSetDecoration - qwsSetDecoration - ( QDecoration * dec ) - - - qwsSetDecoration - qwsSetDecoration-2 - ( const QString & decoration ) - - - restoreOverrideCursor - restoreOverrideCursor - () - - - saveState - saveState - ( QSessionManager & sm ) - - - sessionId - sessionId - () - - - sessionKey - sessionKey - () - - - setActiveWindow - setActiveWindow - ( QWidget * act ) - - - setColorSpec - setColorSpec - ( int spec ) - - - setEffectEnabled - setEffectEnabled - ( Qt::UIEffect effect, bool enable = true ) - - - setInputContext - setInputContext - ( QInputContext * inputContext ) - - - setOverrideCursor - setOverrideCursor - ( const QCursor & cursor ) - - - setStyle - setStyle - ( QStyle * style ) - - - setStyle - setStyle-2 - ( const QString & style ) - - - style - style - () - - - syncX - syncX - () - - - topLevelAt - topLevelAt - ( const QPoint & p ) - - - topLevelAt - topLevelAt-2 - ( int x, int y ) - - - topLevelWidgets - topLevelWidgets - () - - - type - type - () - - - widgetAt - widgetAt - ( const QPoint & p ) - - - widgetAt - widgetAt-2 - ( int x, int y ) - - - winFocus - winFocus - ( QWidget * widget, bool gotFocus ) - - - x11EventFilter - x11EventFilter - ( XEvent * event ) - - - x11ProcessEvent - x11ProcessEvent - ( XEvent * event ) - - - - QBasicTimer - qbasictimer.html - - QBasicTimer - QBasicTimer - () - - - isActive - isActive - () - - - start - start - ( int msec, QObject * object ) - - - stop - stop - () - - - timerId - timerId - () - - - - QBitArray - qbitarray.html - - QBitArray - QBitArray - () - - - QBitArray - QBitArray-2 - ( int size, bool value = false ) - - - QBitArray - QBitArray-3 - ( const QBitArray & other ) - - - at - at - ( int i ) - - - clear - clear - () - - - clearBit - clearBit - ( int i ) - - - count - count - () - - - fill - fill - ( bool value, int size = -1 ) - - - fill - fill-2 - ( bool value, int begin, int end ) - - - isEmpty - isEmpty - () - - - isNull - isNull - () - - - resize - resize - ( int size ) - - - setBit - setBit - ( int i ) - - - setBit - setBit-2 - ( int i, bool value ) - - - size - size - () - - - testBit - testBit - ( int i ) - - - toggleBit - toggleBit - ( int i ) - - - truncate - truncate - ( int pos ) - - - operator!= - operator-not-eq - ( const QBitArray & other ) - - - operator& - operator-and-eq - amp;=( const QBitArray & other ) - - - operator= - operator-eq - ( const QBitArray & other ) - - - operator== - operator-eq-eq - ( const QBitArray & other ) - - - operator[] - operator-5b-5d - ( int i ) - - - operator[] - operator-5b-5d-2 - ( int i ) - - - operator[] - operator-5b-5d-3 - ( uint i ) - - - operator[] - operator-5b-5d-4 - ( uint i ) - - - operator^= - operator-5e-eq - ( const QBitArray & other ) - - - operator|= - operator-7c-eq - ( const QBitArray & other ) - - - operator~ - operator-7e - () - - - QBitmap - QBitmap-5 - ( int width, int height, bool clear ) - - - QBitmap - QBitmap-6 - ( int width, int height, const uchar * bits, bool isXbitmap = false ) - - - QBitmap - QBitmap-7 - ( const QImage & image ) - - - QBitmap - QBitmap-9 - ( const QSize & size, bool clear ) - - - QBitmap - QBitmap-10 - ( const QSize & size, const uchar * bits, bool isXbitmap = false ) - - - xForm - xForm - ( const QMatrix & matrix ) - - - operator= - operator-eq-2 - ( const QImage & image ) - - - - QBitmap - qbitmap.html - - QBitmap - QBitmap - () - - - QBitmap - QBitmap-2 - ( const QPixmap & pixmap ) - - - QBitmap - QBitmap-3 - ( int w, int h ) - - - QBitmap - QBitmap-4 - ( const QString & fileName, const char * format = 0 ) - - - QBitmap - QBitmap-8 - ( const QSize & size ) - - - clear - clear - () - - - fromData - fromData - ( const QSize & size, const uchar * bits, QImage::Format monoFormat = QImage::Format_MonoLSB ) - - - fromImage - fromImage - ( const QImage & image, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - transformed - transformed - ( const QMatrix & matrix ) - - - operator - operator-QVariant - QVariant() - - - operator= - operator-eq - ( const QPixmap & pixmap ) - - - QBoxLayout - QBoxLayout-3 - ( QWidget * parent, Direction dir, int margin = 0, int spacing = -1, const char * name = 0 ) - - - QBoxLayout - QBoxLayout-4 - ( QLayout * parentLayout, Direction dir, int spacing = -1, const char * name = 0 ) - - - QBoxLayout - QBoxLayout-5 - ( Direction dir, int spacing, const char * name = 0 ) - - - findWidget - findWidget - ( QWidget * w ) - - - - QBoxLayout - qboxlayout.html - - Direction - Direction-enum - - - - QBoxLayout - QBoxLayout - ( Direction dir, QWidget * parent ) - - - QBoxLayout - QBoxLayout-2 - ( Direction dir ) - - - addItem - addItem - ( QLayoutItem * item ) - - - addLayout - addLayout - ( QLayout * layout, int stretch = 0 ) - - - addSpacing - addSpacing - ( int size ) - - - addStretch - addStretch - ( int stretch = 0 ) - - - addStrut - addStrut - ( int size ) - - - addWidget - addWidget - ( QWidget * widget, int stretch = 0, Qt::Alignment alignment = 0 ) - - - direction - direction - () - - - Orientations - expandingDirections - QBoxLayout::expandingDirections() - - - hasHeightForWidth - hasHeightForWidth - () - - - heightForWidth - heightForWidth - ( int w ) - - - insertItem - insertItem - ( int index, QLayoutItem * item ) - - - insertLayout - insertLayout - ( int index, QLayout * layout, int stretch = 0 ) - - - insertSpacing - insertSpacing - ( int index, int size ) - - - insertStretch - insertStretch - ( int index, int stretch = 0 ) - - - insertWidget - insertWidget - ( int index, QWidget * widget, int stretch = 0, Qt::Alignment alignment = 0 ) - - - invalidate - invalidate - () - - - maximumSize - maximumSize - () - - - minimumSize - minimumSize - () - - - setDirection - setDirection - ( Direction direction ) - - - setGeometry - setGeometry - ( const QRect & r ) - - - setStretchFactor - setStretchFactor - ( QWidget * w, int stretch ) - - - setStretchFactor - setStretchFactor-2 - ( QLayout * l, int stretch ) - - - sizeHint - sizeHint - () - - - pixmap - pixmap - () - - - setPixmap - setPixmap - ( const QPixmap & pixmap ) - - - operator - operator-const-QColor--and - const QColor &() - - - - QBrush - qbrush.html - - QBrush - QBrush - () - - - QBrush - QBrush-2 - ( Qt::BrushStyle style ) - - - QBrush - QBrush-3 - ( const QColor & color, Qt::BrushStyle style = Qt::SolidPattern ) - - - QBrush - QBrush-4 - ( const QColor & color, const QPixmap & pixmap ) - - - QBrush - QBrush-5 - ( const QPixmap & pixmap ) - - - QBrush - QBrush-6 - ( const QBrush & other ) - - - QBrush - QBrush-7 - ( const QGradient & gradient ) - - - QBrush - QBrush-8 - ( Qt::GlobalColor color, Qt::BrushStyle style = Qt::SolidPattern ) - - - QBrush - QBrush-9 - ( Qt::GlobalColor color, const QPixmap & pixmap ) - - - color - color - () - - - gradient - gradient - () - - - isOpaque - isOpaque - () - - - setColor - setColor - ( const QColor & c ) - - - setColor - setColor-2 - ( Qt::GlobalColor c ) - - - setStyle - setStyle - ( Qt::BrushStyle style ) - - - setTexture - setTexture - ( const QPixmap & pixmap ) - - - BrushStyle - style - QBrush::style() - - - texture - texture - () - - - operator - operator-QVariant - QVariant() - - - operator!= - operator-not-eq - ( const QBrush & b ) - - - operator= - operator-eq - ( const QBrush & b ) - - - operator== - operator-eq-eq - ( const QBrush & b ) - - - - QBuffer - qbuffer.html - - QBuffer - QBuffer - ( QObject * parent = 0 ) - - - QBuffer - QBuffer-2 - ( QByteArray * byteArray, QObject * parent = 0 ) - - - buffer - buffer - () - - - buffer - buffer-2 - () - - - data - data - () - - - setBuffer - setBuffer - ( QByteArray * byteArray ) - - - setData - setData - ( const QByteArray & data ) - - - setData - setData-2 - ( const char * data, int size ) - - - insert - insert - ( QAbstractButton * b ) - - - remove - remove - ( QAbstractButton * b ) - - - - QButtonGroup - qbuttongroup.html - - QButtonGroup - QButtonGroup - ( QObject * parent = 0 ) - - - addButton - addButton - ( QAbstractButton * button ) - - - buttonClicked - buttonClicked - ( QAbstractButton * button ) - - - checkedButton - checkedButton - () - - - count - count - () - - - removeButton - removeButton - ( QAbstractButton * button ) - - - QByteArray - QByteArray-6 - ( int size ) - - - duplicate - duplicate - ( const QByteArray & a ) - - - duplicate - duplicate-2 - ( const char * a, uint n ) - - - find - find - ( char c, int from = 0 ) - - - find - find-2 - ( const char * c, int from = 0 ) - - - find - find-3 - ( const QByteArray & ba, int from = 0 ) - - - find - find-4 - ( const QString & s, int from = 0 ) - - - findRev - findRev - ( char c, int from = -1 ) - - - findRev - findRev-2 - ( const char * c, int from = -1 ) - - - findRev - findRev-3 - ( const QByteArray & ba, int from = -1 ) - - - findRev - findRev-4 - ( const QString & s, int from = -1 ) - - - leftJustify - leftJustify - ( uint width, char fill = ' ', bool truncate = false ) - - - lower - lower - () - - - resetRawData - resetRawData - ( const char * data, uint n ) - - - rightJustify - rightJustify - ( uint width, char fill = ' ', bool truncate = false ) - - - setRawData - setRawData - ( const char * a, uint n ) - - - simplifyWhiteSpace - simplifyWhiteSpace - () - - - stripWhiteSpace - stripWhiteSpace - () - - - upper - upper - () - - - - QByteArray - qbytearray.html - - QByteArray - QByteArray - () - - - QByteArray - QByteArray-2 - ( const char * str ) - - - QByteArray - QByteArray-3 - ( const char * data, int size ) - - - QByteArray - QByteArray-4 - ( int size, char ch ) - - - QByteArray - QByteArray-5 - ( const QByteArray & other ) - - - append - append - ( const QByteArray & ba ) - - - append - append-2 - ( const QString & str ) - - - append - append-3 - ( const char * str ) - - - append - append-4 - ( char ch ) - - - at - at - ( int i ) - - - capacity - capacity - () - - - chop - chop - ( int n ) - - - clear - clear - () - - - constData - constData - () - - - contains - contains - ( const QByteArray & ba ) - - - contains - contains-2 - ( const char * str ) - - - contains - contains-3 - ( char ch ) - - - count - count - ( const QByteArray & ba ) - - - count - count-2 - ( const char * str ) - - - count - count-3 - ( char ch ) - - - count - count-4 - () - - - data - data - () - - - data - data-2 - () - - - endsWith - endsWith - ( const QByteArray & ba ) - - - endsWith - endsWith-2 - ( const char * str ) - - - endsWith - endsWith-3 - ( char ch ) - - - fill - fill - ( char ch, int size = -1 ) - - - fromBase64 - fromBase64 - ( const QByteArray & base64 ) - - - fromRawData - fromRawData - ( const char * data, int size ) - - - indexOf - indexOf - ( const QByteArray & ba, int from = 0 ) - - - indexOf - indexOf-2 - ( const QString & str, int from = 0 ) - - - indexOf - indexOf-3 - ( const char * str, int from = 0 ) - - - indexOf - indexOf-4 - ( char ch, int from = 0 ) - - - insert - insert - ( int i, const QByteArray & ba ) - - - insert - insert-2 - ( int i, const QString & str ) - - - insert - insert-3 - ( int i, const char * str ) - - - insert - insert-4 - ( int i, char ch ) - - - isEmpty - isEmpty - () - - - isNull - isNull - () - - - lastIndexOf - lastIndexOf - ( const QByteArray & ba, int from = -1 ) - - - lastIndexOf - lastIndexOf-2 - ( const QString & str, int from = -1 ) - - - lastIndexOf - lastIndexOf-3 - ( const char * str, int from = -1 ) - - - lastIndexOf - lastIndexOf-4 - ( char ch, int from = -1 ) - - - left - left - ( int len ) - - - leftJustified - leftJustified - ( int width, char fill = ' ', bool truncate = false ) - - - length - length - () - - - mid - mid - ( int pos, int len = -1 ) - - - number - number - ( int n, int base = 10 ) - - - number - number-2 - ( uint n, int base = 10 ) - - - number - number-3 - ( qint64 n, int base = 10 ) - - - number - number-4 - ( quint64 n, int base = 10 ) - - - number - number-5 - ( double n, char f = 'g', int prec = 6 ) - - - prepend - prepend - ( const QByteArray & ba ) - - - prepend - prepend-2 - ( const char * str ) - - - prepend - prepend-3 - ( char ch ) - - - push_back - push_back - ( const QByteArray & other ) - - - push_back - push_back-2 - ( const char * str ) - - - push_back - push_back-3 - ( char ch ) - - - push_front - push_front - ( const QByteArray & other ) - - - push_front - push_front-2 - ( const char * str ) - - - push_front - push_front-3 - ( char ch ) - - - remove - remove - ( int pos, int len ) - - - replace - replace - ( int pos, int len, const QByteArray & after ) - - - replace - replace-2 - ( int pos, int len, const char * after ) - - - replace - replace-3 - ( const QByteArray & before, const QByteArray & after ) - - - replace - replace-4 - ( const char * before, const QByteArray & after ) - - - replace - replace-5 - ( const QByteArray & before, const char * after ) - - - replace - replace-6 - ( const QString & before, const QByteArray & after ) - - - replace - replace-7 - ( const QString & before, const char * after ) - - - replace - replace-8 - ( const char * before, const char * after ) - - - replace - replace-9 - ( char before, const QByteArray & after ) - - - replace - replace-10 - ( char before, const QString & after ) - - - replace - replace-11 - ( char before, const char * after ) - - - replace - replace-12 - ( char before, char after ) - - - reserve - reserve - ( int size ) - - - resize - resize - ( int size ) - - - right - right - ( int len ) - - - rightJustified - rightJustified - ( int width, char fill = ' ', bool truncate = false ) - - - setNum - setNum - ( int n, int base = 10 ) - - - setNum - setNum-2 - ( qlonglong, int base = 10 ) - - - setNum - setNum-3 - ( qulonglong, int base = 10 ) - - - setNum - setNum-4 - ( uint n, int base = 10 ) - - - setNum - setNum-5 - ( short n, int base = 10 ) - - - setNum - setNum-6 - ( ushort n, int base = 10 ) - - - setNum - setNum-7 - ( double n, char f = 'g', int prec = 6 ) - - - setNum - setNum-8 - ( float n, char f = 'g', int prec = 6 ) - - - simplified - simplified - () - - - size - size - () - - - split - split - ( char sep ) - - - squeeze - squeeze - () - - - startsWith - startsWith - ( const QByteArray & ba ) - - - startsWith - startsWith-2 - ( const char * str ) - - - startsWith - startsWith-3 - ( char ch ) - - - toBase64 - toBase64 - () - - - toDouble - toDouble - ( bool * ok = 0 ) - - - toFloat - toFloat - ( bool * ok = 0 ) - - - toInt - toInt - ( bool * ok = 0, int base = 10 ) - - - toLongLong - toLongLong - ( bool * ok = 0, int base = 10 ) - - - toLower - toLower - () - - - toShort - toShort - ( bool * ok = 0, int base = 10 ) - - - toUInt - toUInt - ( bool * ok = 0, int base = 10 ) - - - toULongLong - toULongLong - ( bool * ok = 0, int base = 10 ) - - - toUShort - toUShort - ( bool * ok = 0, int base = 10 ) - - - toUpper - toUpper - () - - - trimmed - trimmed - () - - - truncate - truncate - ( int pos ) - - - operator - operator-const-char--2a - const char *() - - - operator - operator-const-void--2a - const void *() - - - operator!= - operator-not-eq - ( const QString & str ) - - - operator+= - operator-2b-eq - ( const QByteArray & ba ) - - - operator+= - operator-2b-eq-2 - ( const QString & str ) - - - operator+= - operator-2b-eq-3 - ( const char * str ) - - - operator+= - operator-2b-eq-4 - ( char ch ) - - - operator< - operator-lt - ( const QString & str ) - - - operator<= - operator-lt-eq - ( const QString & str ) - - - operator= - operator-eq - ( const QByteArray & other ) - - - operator= - operator-eq-2 - ( const char * str ) - - - operator== - operator-eq-eq - ( const QString & str ) - - - operator> - operator-gt - ( const QString & str ) - - - operator>= - operator-gt-eq - ( const QString & str ) - - - operator[] - operator-5b-5d - ( int i ) - - - operator[] - operator-5b-5d-2 - ( int i ) - - - operator[] - operator-5b-5d-3 - ( uint i ) - - - operator[] - operator-5b-5d-4 - ( uint i ) - - - - QByteArrayMatcher - qbytearraymatcher.html - - QByteArrayMatcher - QByteArrayMatcher - () - - - QByteArrayMatcher - QByteArrayMatcher-2 - ( const QByteArray & pattern ) - - - QByteArrayMatcher - QByteArrayMatcher-3 - ( const QByteArrayMatcher & other ) - - - indexIn - indexIn - ( const QByteArray & ba, int from = 0 ) - - - pattern - pattern - () - - - setPattern - setPattern - ( const QByteArray & pattern ) - - - operator= - operator-eq - ( const QByteArrayMatcher & other ) - - - QCache - QCache-2 - ( int maxCost, int dummy ) - - - - QCache - qcache.html - - QCache - QCache - ( int maxCost = 100 ) - - - clear - clear - () - - - contains - contains - ( const Key & key ) - - - count - count - () - - - insert - insert - ( const Key & key, T * object, int cost = 1 ) - - - isEmpty - isEmpty - () - - - keys - keys - () - - - maxCost - maxCost - () - - - object - object - ( const Key & key ) - - - remove - remove - ( const Key & key ) - - - setMaxCost - setMaxCost - ( int cost ) - - - size - size - () - - - take - take - ( const Key & key ) - - - totalCost - totalCost - () - - - operator[] - operator-5b-5d - ( const Key & key ) - - - - QCDEStyle - qcdestyle.html - - QCDEStyle - QCDEStyle - ( bool useHighlightCols = false ) - - - ascii - ascii - () - - - latin1 - latin1 - () - - - lower - lower - () - - - mirrored - mirrored - () - - - networkOrdered - networkOrdered - () - - - upper - upper - () - - - - QChar - qchar.html - - Category - Category-enum - - - - CombiningClass - CombiningClass-enum - - - - Decomposition - Decomposition-enum - - - - Direction - Direction-enum - - - - Joining - Joining-enum - - - - SpecialCharacter - SpecialCharacter-enum - - - - UnicodeVersion - UnicodeVersion-enum - - - - QChar - QChar - () - - - QChar - QChar-2 - ( char ch ) - - - QChar - QChar-3 - ( uchar ch ) - - - QChar - QChar-4 - ( QLatin1Char ch ) - - - QChar - QChar-5 - ( uchar cell, uchar row ) - - - QChar - QChar-6 - ( ushort code ) - - - QChar - QChar-7 - ( short code ) - - - QChar - QChar-8 - ( uint code ) - - - QChar - QChar-9 - ( int code ) - - - QChar - QChar-10 - ( SpecialCharacter ch ) - - - category - category - () - - - cell - cell - () - - - combiningClass - combiningClass - () - - - decomposition - decomposition - () - - - decompositionTag - decompositionTag - () - - - digitValue - digitValue - () - - - direction - direction - () - - - fromAscii - fromAscii - ( char c ) - - - fromLatin1 - fromLatin1 - ( char c ) - - - hasMirrored - hasMirrored - () - - - isDigit - isDigit - () - - - isLetter - isLetter - () - - - isLetterOrNumber - isLetterOrNumber - () - - - isLower - isLower - () - - - isMark - isMark - () - - - isNull - isNull - () - - - isNumber - isNumber - () - - - isPrint - isPrint - () - - - isPunct - isPunct - () - - - isSpace - isSpace - () - - - isSymbol - isSymbol - () - - - isUpper - isUpper - () - - - joining - joining - () - - - mirroredChar - mirroredChar - () - - - row - row - () - - - toAscii - toAscii - () - - - toLatin1 - toLatin1 - () - - - toLower - toLower - () - - - toUpper - toUpper - () - - - unicode - unicode - () - - - unicode - unicode-2 - () - - - unicodeVersion - unicodeVersion - () - - - QCheckBox - QCheckBox-3 - ( QWidget * parent, const char * name ) - - - QCheckBox - QCheckBox-4 - ( const QString & text, QWidget * parent, const char * name ) - - - setNoChange - setNoChange - () - - - setState - setState - ( ToggleState state ) - - - state - state - () - - - - QCheckBox - qcheckbox.html - - ToggleState - ToggleState-enum - - - - QCheckBox - QCheckBox - ( QWidget * parent = 0 ) - - - QCheckBox - QCheckBox-2 - ( const QString & text, QWidget * parent = 0 ) - - - CheckState - checkState - QCheckBox::checkState() - - - setCheckState - setCheckState - ( Qt::CheckState state ) - - - stateChanged - stateChanged - ( int state ) - - - inserted - inserted - () - - - - QChildEvent - qchildevent.html - - QChildEvent - QChildEvent - ( Type type, QObject * child ) - - - added - added - () - - - child - child - () - - - polished - polished - () - - - removed - removed - () - - - data - data - ( Mode mode = Clipboard ) - - - setData - setData - ( QMimeSource * src, Mode mode = Clipboard ) - - - - QClipboard - qclipboard.html - - Mode - Mode-enum - - - - clear - clear - ( Mode mode = Clipboard ) - - - dataChanged - dataChanged - () - - - image - image - ( Mode mode = Clipboard ) - - - mimeData - mimeData - ( Mode mode = Clipboard ) - - - ownsClipboard - ownsClipboard - () - - - ownsSelection - ownsSelection - () - - - pixmap - pixmap - ( Mode mode = Clipboard ) - - - selectionChanged - selectionChanged - () - - - setImage - setImage - ( const QImage & image, Mode mode = Clipboard ) - - - setMimeData - setMimeData - ( QMimeData * src, Mode mode = Clipboard ) - - - setPixmap - setPixmap - ( const QPixmap & pixmap, Mode mode = Clipboard ) - - - setText - setText - ( const QString & text, Mode mode = Clipboard ) - - - supportsSelection - supportsSelection - () - - - text - text - ( Mode mode = Clipboard ) - - - text - text-2 - ( QString & subtype, Mode mode = Clipboard ) - - - - QCloseEvent - qcloseevent.html - - QCloseEvent - QCloseEvent - () - - - QColor - QColor-7 - ( int x, int y, int z, Spec colorSpec ) - - - getRgba - getRgba - ( int * r, int * g, int * b, int * a ) - - - hsv - hsv - ( int * h, int * s, int * v ) - - - pixel - pixel - ( int screen = -1 ) - - - rgb - rgb-2 - ( int * r, int * g, int * b ) - - - setRgba - setRgba-2 - ( int r, int g, int b, int a ) - - - - QColor - qcolor.html - - Spec - Spec-enum - - - - QColor - QColor - () - - - QColor - QColor-2 - ( int r, int g, int b, int a = 255 ) - - - QColor - QColor-3 - ( QRgb color ) - - - QColor - QColor-4 - ( const QString & name ) - - - QColor - QColor-5 - ( const char * name ) - - - QColor - QColor-6 - ( const QColor & color ) - - - QColor - QColor-8 - ( Qt::GlobalColor color ) - - - alpha - alpha - () - - - alphaF - alphaF - () - - - black - black - () - - - blackF - blackF - () - - - blue - blue - () - - - blueF - blueF - () - - - colorNames - colorNames - () - - - convertTo - convertTo - ( Spec colorSpec ) - - - cyan - cyan - () - - - cyanF - cyanF - () - - - dark - dark - ( int factor = 200 ) - - - fromCmyk - fromCmyk - ( int c, int m, int y, int k, int a = 255 ) - - - fromCmykF - fromCmykF - ( qreal c, qreal m, qreal y, qreal k, qreal a = 1.0 ) - - - fromHsv - fromHsv - ( int h, int s, int v, int a = 255 ) - - - fromHsvF - fromHsvF - ( qreal h, qreal s, qreal v, qreal a = 1.0 ) - - - fromRgb - fromRgb - ( QRgb rgb ) - - - fromRgb - fromRgb-2 - ( int r, int g, int b, int a = 255 ) - - - fromRgbF - fromRgbF - ( qreal r, qreal g, qreal b, qreal a = 1.0 ) - - - fromRgba - fromRgba - ( QRgb rgba ) - - - getCmyk - getCmyk - ( int * c, int * m, int * y, int * k, int * a = 0 ) - - - getCmykF - getCmykF - ( qreal * c, qreal * m, qreal * y, qreal * k, qreal * a = 0 ) - - - getHsv - getHsv - ( int * h, int * s, int * v, int * a = 0 ) - - - getHsvF - getHsvF - ( qreal * h, qreal * s, qreal * v, qreal * a = 0 ) - - - getRgb - getRgb - ( int * r, int * g, int * b, int * a = 0 ) - - - getRgbF - getRgbF - ( qreal * r, qreal * g, qreal * b, qreal * a = 0 ) - - - green - green - () - - - greenF - greenF - () - - - hue - hue - () - - - hueF - hueF - () - - - isValid - isValid - () - - - light - light - ( int factor = 150 ) - - - magenta - magenta - () - - - magentaF - magentaF - () - - - name - name - () - - - red - red - () - - - redF - redF - () - - - rgb - rgb - () - - - rgba - rgba - () - - - saturation - saturation - () - - - saturationF - saturationF - () - - - setAlpha - setAlpha - ( int alpha ) - - - setAlphaF - setAlphaF - ( qreal alpha ) - - - setBlue - setBlue - ( int blue ) - - - setBlueF - setBlueF - ( qreal blue ) - - - setCmyk - setCmyk - ( int c, int m, int y, int k, int a = 255 ) - - - setCmykF - setCmykF - ( qreal c, qreal m, qreal y, qreal k, qreal a = 1.0 ) - - - setGreen - setGreen - ( int green ) - - - setGreenF - setGreenF - ( qreal green ) - - - setHsv - setHsv - ( int h, int s, int v, int a = 255 ) - - - setHsvF - setHsvF - ( qreal h, qreal s, qreal v, qreal a = 1.0 ) - - - setNamedColor - setNamedColor - ( const QString & name ) - - - setRed - setRed - ( int red ) - - - setRedF - setRedF - ( qreal red ) - - - setRgb - setRgb - ( int r, int g, int b, int a = 255 ) - - - setRgb - setRgb-2 - ( QRgb rgb ) - - - setRgbF - setRgbF - ( qreal r, qreal g, qreal b, qreal a = 1.0 ) - - - setRgba - setRgba - ( QRgb rgba ) - - - spec - spec - () - - - toCmyk - toCmyk - () - - - toHsv - toHsv - () - - - toRgb - toRgb - () - - - value - value - () - - - valueF - valueF - () - - - yellow - yellow - () - - - yellowF - yellowF - () - - - operator - operator-QVariant - QVariant() - - - operator!= - operator-not-eq - ( const QColor & color ) - - - operator= - operator-eq - ( const QColor & color ) - - - operator= - operator-eq-2 - ( Qt::GlobalColor color ) - - - operator== - operator-eq-eq - ( const QColor & color ) - - - getColor - getColor-2 - ( const QColor & init, QWidget * parent, const char * name ) - - - getRgba - getRgba-2 - ( QRgb rgba, bool * ok, QWidget * parent, const char * name ) - - - - QColorDialog - qcolordialog.html - - customColor - customColor - ( int i ) - - - customCount - customCount - () - - - getColor - getColor - ( const QColor & initial = Qt::white, QWidget * parent = 0 ) - - - getRgba - getRgba - ( QRgb initial, bool * ok = 0, QWidget * parent = 0 ) - - - setCustomColor - setCustomColor - ( int number, QRgb color ) - - - setStandardColor - setStandardColor - ( int number, QRgb color ) - - - background - background - () - - - base - base - () - - - brightText - brightText - () - - - button - button - () - - - buttonText - buttonText - () - - - dark - dark - () - - - foreground - foreground - () - - - highlight - highlight - () - - - highlightedText - highlightedText - () - - - light - light - () - - - link - link - () - - - linkVisited - linkVisited - () - - - mid - mid - () - - - midlight - midlight - () - - - shadow - shadow - () - - - text - text - () - - - - QColorGroup - qcolorgroup.html - - QColorGroup - QColorGroup - () - - - QColorGroup - QColorGroup-2 - ( const QBrush & foreground, const QBrush & button, const QBrush & light, const QBrush & dark, const QBrush & mid, const QBrush & text, const QBrush & bright_text, const QBrush & base, const QBrush & background ) - - - QColorGroup - QColorGroup-3 - ( const QColor & foreground, const QColor & background, const QColor & light, const QColor & dark, const QColor & mid, const QColor & text, const QColor & base ) - - - QColorGroup - QColorGroup-4 - ( const QColorGroup & other ) - - - QColorGroup - QColorGroup-5 - ( const QPalette & pal ) - - - operator - operator-QVariant - QVariant() - - - operator!= - operator-not-eq - ( const QColorGroup & other ) - - - operator== - operator-eq-eq - ( const QColorGroup & other ) - - - QComboBox - QComboBox-2 - ( QWidget * parent, const char * name ) - - - QComboBox - QComboBox-3 - ( bool rw, QWidget * parent, const char * name = 0 ) - - - changeItem - changeItem - ( const QString & text, int index ) - - - changeItem - changeItem-2 - ( const QPixmap & pixmap, int index ) - - - changeItem - changeItem-3 - ( const QPixmap & pixmap, const QString & text, int index ) - - - clearEdit - clearEdit - () - - - clearValidator - clearValidator - () - - - currentItem - currentItem - () - - - editable - editable - () - - - insertItem - insertItem-3 - ( const QString & text, int index = -1 ) - - - insertItem - insertItem-4 - ( const QPixmap & pixmap, int index = -1 ) - - - insertItem - insertItem-5 - ( const QPixmap & pixmap, const QString & text, int index = -1 ) - - - insertStringList - insertStringList - ( const QStringList & list, int index = -1 ) - - - insertionPolicy - insertionPolicy - () - - - pixmap - pixmap - ( int index ) - - - popup - popup - () - - - setCurrentItem - setCurrentItem - ( int index ) - - - setCurrentText - setCurrentText - ( const QString & text ) - - - setInsertionPolicy - setInsertionPolicy - ( InsertPolicy policy ) - - - text - text - ( int index ) - - - textChanged - textChanged - ( const QString & ) - - - - QComboBox - qcombobox.html - - InsertPolicy - InsertPolicy-enum - - - - Policy - Policy-typedef - - - - SizeAdjustPolicy - SizeAdjustPolicy-enum - - - - QComboBox - QComboBox - ( QWidget * parent = 0 ) - - - activated - activated - ( int index ) - - - activated - activated-2 - ( const QString & text ) - - - addItem - addItem - ( const QString & text, const QVariant & userData = QVariant() - - - addItem - addItem-2 - ( const QIcon & icon, const QString & text, const QVariant & userData = QVariant() - - - addItems - addItems - ( const QStringList & texts ) - - - clearEditText - clearEditText - () - - - editTextChanged - editTextChanged - ( const QString & text ) - - - findData - findData - ( const QVariant & data, int role = Qt::UserRole, QAbstractItemModel::MatchFlags flags = QAbstractItemModel::MatchExactly | QAbstractItemModel::MatchCase ) - - - findText - findText - ( const QString & text, QAbstractItemModel::MatchFlags flags = QAbstractItemModel::MatchExactly | QAbstractItemModel::MatchCase ) - - - hidePopup - hidePopup - () - - - highlighted - highlighted - ( int index ) - - - highlighted - highlighted-2 - ( const QString & text ) - - - insertItem - insertItem - ( int index, const QString & text, const QVariant & userData = QVariant() - - - insertItem - insertItem-2 - ( int index, const QIcon & icon, const QString & text, const QVariant & userData = QVariant() - - - insertItems - insertItems - ( int index, const QStringList & list ) - - - itemData - itemData - ( int index, int role = Qt::UserRole ) - - - itemDelegate - itemDelegate - () - - - itemIcon - itemIcon - ( int index ) - - - itemText - itemText - ( int index ) - - - lineEdit - lineEdit - () - - - model - model - () - - - setEditText - setEditText - ( const QString & text ) - - - setItemData - setItemData - ( int index, const QVariant & value, int role = Qt::UserRole ) - - - setItemDelegate - setItemDelegate - ( QAbstractItemDelegate * delegate ) - - - setItemIcon - setItemIcon - ( int index, const QIcon & icon ) - - - setItemText - setItemText - ( int index, const QString & text ) - - - setLineEdit - setLineEdit - ( QLineEdit * edit ) - - - setModel - setModel - ( QAbstractItemModel * model ) - - - setValidator - setValidator - ( const QValidator * validator ) - - - setView - setView - ( QAbstractItemView * itemView ) - - - showPopup - showPopup - () - - - validator - validator - () - - - view - view - () - - - - QCommonStyle - qcommonstyle.html - - QCommonStyle - QCommonStyle - () - - - - QConicalGradient - qconicalgradient.html - - QConicalGradient - QConicalGradient - ( const QPointF & center, qreal angle ) - - - QConicalGradient - QConicalGradient-2 - ( qreal cx, qreal cy, qreal angle ) - - - angle - angle - () - - - center - center - () - - - QContextMenuEvent - QContextMenuEvent-3 - ( Reason reason, const QPoint & pos, const QPoint & globalPos, int dummy ) - - - QContextMenuEvent - QContextMenuEvent-4 - ( Reason reason, const QPoint & pos, int dummy ) - - - ButtonState - state - QContextMenuEvent::state() - - - - QContextMenuEvent - qcontextmenuevent.html - - Reason - Reason-enum - - - - QContextMenuEvent - QContextMenuEvent - ( Reason reason, const QPoint & pos, const QPoint & globalPos ) - - - QContextMenuEvent - QContextMenuEvent-2 - ( Reason reason, const QPoint & pos ) - - - globalPos - globalPos - () - - - globalX - globalX - () - - - globalY - globalY - () - - - pos - pos - () - - - reason - reason - () - - - x - x - () - - - y - y - () - - - QCopChannel - QCopChannel-2 - ( const QString & channel, QObject * parent, const char * name ) - - - - QCopChannel - qcopchannel.html - - QCopChannel - QCopChannel - ( const QString & channel, QObject * parent = 0 ) - - - channel - channel - () - - - isRegistered - isRegistered - ( const QString & channel ) - - - receive - receive - ( const QString & msg, const QByteArray & data ) - - - received - received - ( const QString & msg, const QByteArray & data ) - - - send - send - ( const QString & channel, const QString & msg, const QByteArray & data ) - - - send - send-2 - ( const QString & channel, const QString & msg ) - - - enter_loop - enter_loop - () - - - exit_loop - exit_loop - () - - - lock - lock - () - - - locked - locked - () - - - loopLevel - loopLevel - () - - - processOneEvent - processOneEvent - () - - - tryLock - tryLock - () - - - unlock - unlock - ( bool wakeUpGui = true ) - - - - QCoreApplication - qcoreapplication.html - - Encoding - Encoding-enum - - - - EventFilter - EventFilter-typedef - - - - QCoreApplication - QCoreApplication - ( int & argc, char ** argv ) - - - aboutToQuit - aboutToQuit - () - - - addLibraryPath - addLibraryPath - ( const QString & path ) - - - applicationDirPath - applicationDirPath - () - - - applicationFilePath - applicationFilePath - () - - - argc - argc - () - - - argv - argv - () - - - closingDown - closingDown - () - - - exec - exec - () - - - exit - exit - ( int returnCode = 0 ) - - - filterEvent - filterEvent - ( void * message, long * result ) - - - flush - flush - () - - - hasPendingEvents - hasPendingEvents - () - - - installTranslator - installTranslator - ( QTranslator * mf ) - - - instance - instance - () - - - libraryPaths - libraryPaths - () - - - notify - notify - ( QObject * receiver, QEvent * e ) - - - postEvent - postEvent - ( QObject * receiver, QEvent * event ) - - - processEvents - processEvents - ( QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents ) - - - processEvents - processEvents-2 - ( QEventLoop::ProcessEventsFlags flags, int maxtime ) - - - quit - quit - () - - - removeLibraryPath - removeLibraryPath - ( const QString & path ) - - - removePostedEvents - removePostedEvents - ( QObject * receiver ) - - - removeTranslator - removeTranslator - ( QTranslator * mf ) - - - sendEvent - sendEvent - ( QObject * receiver, QEvent * event ) - - - sendPostedEvents - sendPostedEvents - ( QObject * receiver, int event_type ) - - - sendPostedEvents - sendPostedEvents-2 - () - - - setEventFilter - setEventFilter - ( EventFilter filter ) - - - setLibraryPaths - setLibraryPaths - ( const QStringList & paths ) - - - startingUp - startingUp - () - - - translate - translate - ( const char * context, const char * sourceText, const char * comment = 0, Encoding encoding = DefaultCodec ) - - - unixSignal - unixSignal - ( int number ) - - - - QCursor - qcursor.html - - QCursor - QCursor - () - - - QCursor - QCursor-2 - ( Qt::CursorShape shape ) - - - QCursor - QCursor-3 - ( const QBitmap & bitmap, const QBitmap & mask, int hotX = -1, int hotY = -1 ) - - - QCursor - QCursor-4 - ( const QPixmap & pixmap, int hotX = -1, int hotY = -1 ) - - - QCursor - QCursor-5 - ( const QCursor & c ) - - - QCursor - QCursor-6 - ( HCURSOR handle ) - - - bitmap - bitmap - () - - - handle - handle - () - - - HANDLE - handle-2 - QCursor::handle() - - - hotSpot - hotSpot - () - - - mask - mask - () - - - pixmap - pixmap - () - - - pos - pos - () - - - setPos - setPos - ( int x, int y ) - - - setPos - setPos-2 - ( const QPoint & p ) - - - setShape - setShape - ( Qt::CursorShape shape ) - - - CursorShape - shape - QCursor::shape() - - - operator - operator-QVariant - QVariant() - - - operator= - operator-eq - ( const QCursor & c ) - - - QCustomEvent - QCustomEvent - ( int type, void * data = 0 ) - - - data - data - () - - - setData - setData - ( void * data ) - - - - QCustomEvent - qcustomevent.html - - QDataStream - QDataStream-3 - ( QByteArray * array, int mode ) - - - eof - eof - () - - - isPrintableData - isPrintableData - () - - - readRawBytes - readRawBytes - ( char * str, uint len ) - - - setPrintableData - setPrintableData - ( bool enable ) - - - writeRawBytes - writeRawBytes - ( const char * str, uint len ) - - - - QDataStream - qdatastream.html - - ByteOrder - ByteOrder-enum - - - - Status - Status-enum - - - - Version - Version-enum - - - - QDataStream - QDataStream - () - - - QDataStream - QDataStream-2 - ( QIODevice * d ) - - - QDataStream - QDataStream-4 - ( QByteArray * a, QIODevice::OpenMode mode ) - - - QDataStream - QDataStream-5 - ( const QByteArray & a ) - - - atEnd - atEnd - () - - - byteOrder - byteOrder - () - - - device - device - () - - - readBytes - readBytes - ( char *& s, uint & l ) - - - readRawData - readRawData - ( char * s, int len ) - - - resetStatus - resetStatus - () - - - setByteOrder - setByteOrder - ( ByteOrder bo ) - - - setDevice - setDevice - ( QIODevice * d ) - - - setStatus - setStatus - ( Status status ) - - - setVersion - setVersion - ( int v ) - - - status - status - () - - - unsetDevice - unsetDevice - () - - - version - version - () - - - writeBytes - writeBytes - ( const char * s, uint len ) - - - writeRawData - writeRawData - ( const char * s, int len ) - - - operator<< - operator-lt-lt - ( qint8 i ) - - - operator<< - operator-lt-lt-2 - ( bool i ) - - - operator<< - operator-lt-lt-3 - ( quint8 i ) - - - operator<< - operator-lt-lt-4 - ( quint16 i ) - - - operator<< - operator-lt-lt-5 - ( qint16 i ) - - - operator<< - operator-lt-lt-6 - ( qint32 i ) - - - operator<< - operator-lt-lt-7 - ( quint64 i ) - - - operator<< - operator-lt-lt-8 - ( qint64 i ) - - - operator<< - operator-lt-lt-9 - ( quint32 i ) - - - operator<< - operator-lt-lt-10 - ( float f ) - - - operator<< - operator-lt-lt-11 - ( double f ) - - - operator<< - operator-lt-lt-12 - ( const char * s ) - - - operator>> - operator-gt-gt - ( qint8 & i ) - - - operator>> - operator-gt-gt-2 - ( bool & i ) - - - operator>> - operator-gt-gt-3 - ( quint8 & i ) - - - operator>> - operator-gt-gt-4 - ( quint16 & i ) - - - operator>> - operator-gt-gt-5 - ( qint16 & i ) - - - operator>> - operator-gt-gt-6 - ( quint32 & i ) - - - operator>> - operator-gt-gt-7 - ( qint32 & i ) - - - operator>> - operator-gt-gt-8 - ( quint64 & i ) - - - operator>> - operator-gt-gt-9 - ( qint64 & i ) - - - operator>> - operator-gt-gt-10 - ( float & f ) - - - operator>> - operator-gt-gt-11 - ( double & f ) - - - operator>> - operator-gt-gt-12 - ( char *& s ) - - - currentDate - currentDate - ( Qt::TimeSpec spec ) - - - dayName - dayName - ( int weekday ) - - - leapYear - leapYear - ( int year ) - - - monthName - monthName - ( int month ) - - - - QDate - qdate.html - - QDate - QDate - () - - - QDate - QDate-2 - ( int y, int m, int d ) - - - addDays - addDays - ( int ndays ) - - - addMonths - addMonths - ( int nmonths ) - - - addYears - addYears - ( int nyears ) - - - currentDate - currentDate-2 - () - - - day - day - () - - - dayOfWeek - dayOfWeek - () - - - dayOfYear - dayOfYear - () - - - daysInMonth - daysInMonth - () - - - daysInYear - daysInYear - () - - - daysTo - daysTo - ( const QDate & d ) - - - fromJulianDay - fromJulianDay - ( int jd ) - - - fromString - fromString - ( const QString & string, Qt::DateFormat format = Qt::TextDate ) - - - fromString - fromString-2 - ( const QString & string, const QString & format ) - - - isLeapYear - isLeapYear - ( int year ) - - - isNull - isNull - () - - - isValid - isValid - () - - - isValid - isValid-2 - ( int y, int m, int d ) - - - longDayName - longDayName - ( int weekday ) - - - longMonthName - longMonthName - ( int month ) - - - month - month - () - - - setYMD - setYMD - ( int y, int m, int d ) - - - shortDayName - shortDayName - ( int weekday ) - - - shortMonthName - shortMonthName - ( int month ) - - - toJulianDay - toJulianDay - () - - - toString - toString - ( const QString & format ) - - - toString - toString-2 - ( Qt::DateFormat format = Qt::TextDate ) - - - weekNumber - weekNumber - ( int * yearNumber = 0 ) - - - year - year - () - - - operator!= - operator-not-eq - ( const QDate & d ) - - - operator< - operator-lt - ( const QDate & d ) - - - operator<= - operator-lt-eq - ( const QDate & d ) - - - operator== - operator-eq-eq - ( const QDate & d ) - - - operator> - operator-gt - ( const QDate & d ) - - - operator>= - operator-gt-eq - ( const QDate & d ) - - - - QDateEdit - qdateedit.html - - QDateEdit - QDateEdit - ( QWidget * parent = 0 ) - - - QDateEdit - QDateEdit-2 - ( const QDate & date, QWidget * parent = 0 ) - - - currentDateTime - currentDateTime-2 - ( Qt::TimeSpec spec ) - - - setTime_t - setTime_t-2 - ( uint secsSince1Jan1970UTC, Qt::TimeSpec spec ) - - - - QDateTime - qdatetime.html - - QDateTime - QDateTime - () - - - QDateTime - QDateTime-2 - ( const QDate & date ) - - - QDateTime - QDateTime-3 - ( const QDate & date, const QTime & time, Qt::TimeSpec spec = Qt::LocalTime ) - - - QDateTime - QDateTime-4 - ( const QDateTime & other ) - - - addDays - addDays - ( int ndays ) - - - addMonths - addMonths - ( int nmonths ) - - - addSecs - addSecs - ( int nsecs ) - - - addYears - addYears - ( int nyears ) - - - currentDateTime - currentDateTime - () - - - date - date - () - - - daysTo - daysTo - ( const QDateTime & other ) - - - fromString - fromString - ( const QString & string, Qt::DateFormat format = Qt::TextDate ) - - - fromString - fromString-2 - ( const QString & string, const QString & format ) - - - isNull - isNull - () - - - isValid - isValid - () - - - secsTo - secsTo - ( const QDateTime & other ) - - - setDate - setDate - ( const QDate & date ) - - - setTime - setTime - ( const QTime & time ) - - - setTimeSpec - setTimeSpec - ( Qt::TimeSpec spec ) - - - setTime_t - setTime_t - ( uint seconds ) - - - time - time - () - - - TimeSpec - timeSpec - QDateTime::timeSpec() - - - toLocalTime - toLocalTime - () - - - toString - toString - ( const QString & format ) - - - toString - toString-2 - ( Qt::DateFormat format = Qt::TextDate ) - - - toTimeSpec - toTimeSpec - ( Qt::TimeSpec specification ) - - - toTime_t - toTime_t - () - - - toUTC - toUTC - () - - - operator!= - operator-not-eq - ( const QDateTime & other ) - - - operator< - operator-lt - ( const QDateTime & other ) - - - operator<= - operator-lt-eq - ( const QDateTime & other ) - - - operator= - operator-eq - ( const QDateTime & other ) - - - operator== - operator-eq-eq - ( const QDateTime & other ) - - - operator> - operator-gt - ( const QDateTime & other ) - - - operator>= - operator-gt-eq - ( const QDateTime & other ) - - - - QDateTimeEdit - qdatetimeedit.html - - QDateTimeEdit - QDateTimeEdit - ( QWidget * parent = 0 ) - - - QDateTimeEdit - QDateTimeEdit-2 - ( const QDateTime & datetime, QWidget * parent = 0 ) - - - QDateTimeEdit - QDateTimeEdit-3 - ( const QDate & date, QWidget * parent = 0 ) - - - QDateTimeEdit - QDateTimeEdit-4 - ( const QTime & time, QWidget * parent = 0 ) - - - dateChanged - dateChanged - ( const QDate & date ) - - - dateTimeChanged - dateTimeChanged - ( const QDateTime & datetime ) - - - dateTimeFromText - dateTimeFromText - ( const QString & text ) - - - sectionText - sectionText - ( Section section ) - - - setDateRange - setDateRange - ( const QDate & min, const QDate & max ) - - - setTimeRange - setTimeRange - ( const QTime & min, const QTime & max ) - - - textFromDateTime - textFromDateTime - ( const QDateTime & dateTime ) - - - timeChanged - timeChanged - ( const QTime & time ) - - - - QDecoration - qdecoration.html - - DecorationRegion - DecorationRegion-enum - - - - DecorationState - DecorationState-enum - - - - QDecoration - QDecoration - () - - - buildSysMenu - buildSysMenu - ( QWidget * widget, QMenu * menu ) - - - menuTriggered - menuTriggered - ( QWidget * widget, QAction * action ) - - - paint - paint - ( QPainter * painter, const QWidget * widget, int decorationRegion = All, DecorationState state = Normal ) - - - region - region - ( const QWidget * widget, const QRect & rect, int type = All ) - - - region - region-2 - ( const QWidget * w, int decorationRegion = All ) - - - regionAt - regionAt - ( const QWidget * w, const QPoint & point ) - - - regionClicked - regionClicked - ( QWidget * widget, int reg ) - - - regionDoubleClicked - regionDoubleClicked - ( QWidget * widget, int reg ) - - - startMove - startMove - ( QWidget * widget ) - - - startResize - startResize - ( QWidget * widget ) - - - - QDecorationFactory - qdecorationfactory.html - - create - create - ( const QString & key ) - - - keys - keys - () - - - - QDecorationPlugin - qdecorationplugin.html - - QDecorationPlugin - QDecorationPlugin - ( QObject * parent = 0 ) - - - create - create - ( const QString & key ) - - - keys - keys - () - - - - QDesktopWidget - qdesktopwidget.html - - QDesktopWidget - QDesktopWidget - () - - - availableGeometry - availableGeometry - ( int screen = -1 ) - - - availableGeometry - availableGeometry-2 - ( const QWidget * widget ) - - - availableGeometry - availableGeometry-3 - ( const QPoint & p ) - - - isVirtualDesktop - isVirtualDesktop - () - - - numScreens - numScreens - () - - - primaryScreen - primaryScreen - () - - - resized - resized - ( int screen ) - - - screen - screen - ( int screen = -1 ) - - - screenGeometry - screenGeometry - ( int screen = -1 ) - - - screenGeometry - screenGeometry-2 - ( const QWidget * widget ) - - - screenGeometry - screenGeometry-3 - ( const QPoint & p ) - - - screenNumber - screenNumber - ( const QWidget * widget = 0 ) - - - screenNumber - screenNumber-2 - ( const QPoint & point ) - - - workAreaResized - workAreaResized - ( int screen ) - - - QDial - QDial-2 - ( int minValue, int maxValue, int pageStep, int value, QWidget * parent = 0, const char * name = 0 ) - - - QDial - QDial-3 - ( QWidget * parent, const char * name ) - - - dialMoved - dialMoved - ( int value ) - - - dialPressed - dialPressed - () - - - dialReleased - dialReleased - () - - - - QDial - qdial.html - - QDial - QDial - ( QWidget * parent = 0 ) - - - QDialog - QDialog-2 - ( QWidget * parent, const char * name, bool modal = false, Qt::WFlags f = 0 ) - - - - QDialog - qdialog.html - - DialogCode - DialogCode-enum - - - - QDialog - QDialog - ( QWidget * parent = 0, Qt::WFlags f = 0 ) - - - accept - accept - () - - - done - done - ( int r ) - - - exec - exec - () - - - extension - extension - () - - - Orientation - orientation - QDialog::orientation() - - - reject - reject - () - - - result - result - () - - - setExtension - setExtension - ( QWidget * extension ) - - - setOrientation - setOrientation - ( Qt::Orientation orientation ) - - - setResult - setResult - ( int i ) - - - showExtension - showExtension - ( bool showIt ) - - - operator= - operator-eq-2 - ( const QString & path ) - - - absFilePath - absFilePath - ( const QString & fileName, bool acceptAbsPath = true ) - - - absPath - absPath - () - - - cleanDirPath - cleanDirPath - ( const QString & name ) - - - convertToAbs - convertToAbs - () - - - currentDirPath - currentDirPath - () - - - entryInfoList - entryInfoList - ( const QString & nameFilter, Filters filters = NoFilter, SortFlags sort = NoSort ) - - - entryList - entryList-2 - ( const QString & nameFilter, Filters filters = NoFilter, SortFlags sort = NoSort ) - - - homeDirPath - homeDirPath - () - - - matchAllDirs - matchAllDirs - () - - - mkdir - mkdir-2 - ( const QString & dirName, bool acceptAbsPath ) - - - nameFilter - nameFilter - () - - - rmdir - rmdir-2 - ( const QString & dirName, bool acceptAbsPath ) - - - rootDirPath - rootDirPath - () - - - setMatchAllDirs - setMatchAllDirs - ( bool on ) - - - setNameFilter - setNameFilter - ( const QString & nameFilter ) - - - - QDir - qdir.html - - FilterSpec - FilterSpec-typedef - - - - SortSpec - SortSpec-typedef - - - - QDir - QDir - ( const QDir & dir ) - - - QDir - QDir-2 - ( const QString & path = QString() - - - QDir - QDir-3 - ( const QString & path, const QString & nameFilter, SortFlags sort = SortFlags( Name | IgnoreCase ) - - - absoluteFilePath - absoluteFilePath - ( const QString & fileName ) - - - absolutePath - absolutePath - () - - - addResourceSearchPath - addResourceSearchPath - ( const QString & path ) - - - canonicalPath - canonicalPath - () - - - cd - cd - ( const QString & dirName ) - - - cdUp - cdUp - () - - - cleanPath - cleanPath - ( const QString & path ) - - - convertSeparators - convertSeparators - ( const QString & pathName ) - - - count - count - () - - - current - current - () - - - currentPath - currentPath - () - - - dirName - dirName - () - - - drives - drives - () - - - entryInfoList - entryInfoList-2 - ( Filters filters = NoFilter, SortFlags sort = NoSort ) - - - entryInfoList - entryInfoList-3 - ( const QStringList & nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort ) - - - entryList - entryList - ( const QStringList & nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort ) - - - entryList - entryList-3 - ( Filters filters = NoFilter, SortFlags sort = NoSort ) - - - exists - exists - ( const QString & name ) - - - exists - exists-2 - () - - - filePath - filePath - ( const QString & fileName ) - - - filter - filter - () - - - home - home - () - - - homePath - homePath - () - - - isAbsolute - isAbsolute - () - - - isAbsolutePath - isAbsolutePath - ( const QString & path ) - - - isReadable - isReadable - () - - - isRelative - isRelative - () - - - isRelativePath - isRelativePath - ( const QString & path ) - - - isRoot - isRoot - () - - - makeAbsolute - makeAbsolute - () - - - match - match - ( const QString & filter, const QString & fileName ) - - - match - match-2 - ( const QStringList & filters, const QString & fileName ) - - - mkdir - mkdir - ( const QString & dirName ) - - - mkpath - mkpath - ( const QString & dirPath ) - - - nameFilters - nameFilters - () - - - path - path - () - - - refresh - refresh - () - - - relativeFilePath - relativeFilePath - ( const QString & fileName ) - - - remove - remove - ( const QString & fileName ) - - - rename - rename - ( const QString & oldName, const QString & newName ) - - - rmdir - rmdir - ( const QString & dirName ) - - - rmpath - rmpath - ( const QString & dirPath ) - - - root - root - () - - - rootPath - rootPath - () - - - separator - separator - () - - - setCurrent - setCurrent - ( const QString & path ) - - - setFilter - setFilter - ( Filters filters ) - - - setNameFilters - setNameFilters - ( const QStringList & nameFilters ) - - - setPath - setPath - ( const QString & path ) - - - setSorting - setSorting - ( SortFlags sort ) - - - sorting - sorting - () - - - temp - temp - () - - - tempPath - tempPath - () - - - operator!= - operator-not-eq - ( const QDir & dir ) - - - operator= - operator-eq - ( const QDir & dir ) - - - operator== - operator-eq-eq - ( const QDir & dir ) - - - operator[] - operator-5b-5d - ( int pos ) - - - - QDirectPainter - qdirectpainter.html - - QDirectPainter - QDirectPainter - ( QWidget * w ) - - - depth - depth - () - - - frameBuffer - frameBuffer - () - - - height - height - () - - - lineStep - lineStep - () - - - numRects - numRects - () - - - offset - offset - () - - - rect - rect - ( int i ) - - - region - region - () - - - setAreaChanged - setAreaChanged - ( const QRect & r ) - - - size - size - () - - - transformOrientation - transformOrientation - () - - - width - width - () - - - xOffset - xOffset - () - - - yOffset - yOffset - () - - - - QDirModel - qdirmodel.html - - Roles - Roles-enum - - - - QDirModel - QDirModel - ( const QStringList & nameFilters, QDir::Filters filters, QDir::SortFlags sort, QObject * parent = 0 ) - - - QDirModel - QDirModel-2 - ( QObject * parent = 0 ) - - - columnCount - columnCount - ( const QModelIndex & parent ) - - - data - data - ( const QModelIndex & index, int role = Qt::DisplayRole ) - - - dropMimeData - dropMimeData - ( const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent ) - - - fileIcon - fileIcon - ( const QModelIndex & index ) - - - fileInfo - fileInfo - ( const QModelIndex & index ) - - - fileName - fileName - ( const QModelIndex & index ) - - - filePath - filePath - ( const QModelIndex & index ) - - - Filters - filter - QDirModel::filter() - - - ItemFlags - flags - QDirModel::flags( const QModelIndex & index ) - - - hasChildren - hasChildren - ( const QModelIndex & parent ) - - - headerData - headerData - ( int section, Qt::Orientation orientation, int role ) - - - iconProvider - iconProvider - () - - - index - index - ( int row, int column, const QModelIndex & parent = QModelIndex() - - - index - index-2 - ( const QString & path, int column = 0 ) - - - isDir - isDir - ( const QModelIndex & index ) - - - mimeData - mimeData - ( const QModelIndexList & indexes ) - - - mimeTypes - mimeTypes - () - - - mkdir - mkdir - ( const QModelIndex & parent, const QString & name ) - - - nameFilters - nameFilters - () - - - parent - parent - ( const QModelIndex & child ) - - - refresh - refresh - ( const QModelIndex & parent = QModelIndex() - - - remove - remove - ( const QModelIndex & index ) - - - rmdir - rmdir - ( const QModelIndex & index ) - - - rowCount - rowCount - ( const QModelIndex & parent ) - - - setData - setData - ( const QModelIndex & index, const QVariant & value, int role ) - - - setFilter - setFilter - ( QDir::Filters filters ) - - - setIconProvider - setIconProvider - ( QFileIconProvider * provider ) - - - setNameFilters - setNameFilters - ( const QStringList & filters ) - - - setSorting - setSorting - ( QDir::SortFlags sort ) - - - sort - sort - ( int column, Qt::SortOrder order ) - - - SortFlags - sorting - QDirModel::sorting() - - - DropActions - supportedDropActions - QDirModel::supportedDropActions() - - - - QDockWidget - qdockwidget.html - - DockWidgetAreas - allowedAreas - - - - QDockWidget - QDockWidget - ( const QString & title, QWidget * parent = 0, Qt::WFlags flags = 0 ) - - - QDockWidget - QDockWidget-2 - ( QWidget * parent = 0, Qt::WFlags flags = 0 ) - - - allowedAreasChanged - allowedAreasChanged - ( Qt::DockWidgetAreas allowedAreas ) - - - featuresChanged - featuresChanged - ( DockWidgetFeatures features ) - - - isAreaAllowed - isAreaAllowed - ( Qt::DockWidgetArea area ) - - - setWidget - setWidget - ( QWidget * widget ) - - - toggleViewAction - toggleViewAction - () - - - topLevelChanged - topLevelChanged - ( bool topLevel ) - - - widget - widget - () - - - - QDomAttr - qdomattr.html - - QDomAttr - QDomAttr - () - - - QDomAttr - QDomAttr-2 - ( const QDomAttr & x ) - - - name - name - () - - - NodeType - nodeType - QDomAttr::nodeType() - - - ownerElement - ownerElement - () - - - setValue - setValue - ( const QString & v ) - - - specified - specified - () - - - value - value - () - - - operator= - operator-eq - ( const QDomAttr & x ) - - - - QDomCDATASection - qdomcdatasection.html - - QDomCDATASection - QDomCDATASection - () - - - QDomCDATASection - QDomCDATASection-2 - ( const QDomCDATASection & x ) - - - NodeType - nodeType - QDomCDATASection::nodeType() - - - operator= - operator-eq - ( const QDomCDATASection & x ) - - - - QDomCharacterData - qdomcharacterdata.html - - QDomCharacterData - QDomCharacterData - () - - - QDomCharacterData - QDomCharacterData-2 - ( const QDomCharacterData & x ) - - - appendData - appendData - ( const QString & arg ) - - - data - data - () - - - deleteData - deleteData - ( unsigned long offset, unsigned long count ) - - - insertData - insertData - ( unsigned long offset, const QString & arg ) - - - length - length - () - - - NodeType - nodeType - QDomCharacterData::nodeType() - - - replaceData - replaceData - ( unsigned long offset, unsigned long count, const QString & arg ) - - - setData - setData - ( const QString & v ) - - - substringData - substringData - ( unsigned long offset, unsigned long count ) - - - operator= - operator-eq - ( const QDomCharacterData & x ) - - - - QDomComment - qdomcomment.html - - QDomComment - QDomComment - () - - - QDomComment - QDomComment-2 - ( const QDomComment & x ) - - - NodeType - nodeType - QDomComment::nodeType() - - - operator= - operator-eq - ( const QDomComment & x ) - - - - QDomDocument - qdomdocument.html - - QDomDocument - QDomDocument - () - - - QDomDocument - QDomDocument-2 - ( const QString & name ) - - - QDomDocument - QDomDocument-3 - ( const QDomDocumentType & doctype ) - - - QDomDocument - QDomDocument-4 - ( const QDomDocument & x ) - - - createAttribute - createAttribute - ( const QString & name ) - - - createAttributeNS - createAttributeNS - ( const QString & nsURI, const QString & qName ) - - - createCDATASection - createCDATASection - ( const QString & value ) - - - createComment - createComment - ( const QString & value ) - - - createDocumentFragment - createDocumentFragment - () - - - createElement - createElement - ( const QString & tagName ) - - - createElementNS - createElementNS - ( const QString & nsURI, const QString & qName ) - - - createEntityReference - createEntityReference - ( const QString & name ) - - - createProcessingInstruction - createProcessingInstruction - ( const QString & target, const QString & data ) - - - createTextNode - createTextNode - ( const QString & value ) - - - doctype - doctype - () - - - documentElement - documentElement - () - - - elementById - elementById - ( const QString & elementId ) - - - elementsByTagName - elementsByTagName - ( const QString & tagname ) - - - elementsByTagNameNS - elementsByTagNameNS - ( const QString & nsURI, const QString & localName ) - - - implementation - implementation - () - - - importNode - importNode - ( const QDomNode & importedNode, bool deep ) - - - NodeType - nodeType - QDomDocument::nodeType() - - - setContent - setContent - ( const QByteArray & data, bool namespaceProcessing, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 ) - - - setContent - setContent-2 - ( const QString & text, bool namespaceProcessing, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 ) - - - setContent - setContent-3 - ( QIODevice * dev, bool namespaceProcessing, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 ) - - - setContent - setContent-4 - ( const QString & text, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 ) - - - setContent - setContent-5 - ( const QByteArray & buffer, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 ) - - - setContent - setContent-6 - ( QIODevice * dev, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 ) - - - setContent - setContent-7 - ( QXmlInputSource * source, QXmlReader * reader, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 ) - - - toByteArray - toByteArray - ( int indent = 1 ) - - - toString - toString - ( int indent = 1 ) - - - operator= - operator-eq - ( const QDomDocument & x ) - - - - QDomDocumentFragment - qdomdocumentfragment.html - - QDomDocumentFragment - QDomDocumentFragment - () - - - QDomDocumentFragment - QDomDocumentFragment-2 - ( const QDomDocumentFragment & x ) - - - NodeType - nodeType - QDomDocumentFragment::nodeType() - - - operator= - operator-eq - ( const QDomDocumentFragment & x ) - - - - QDomDocumentType - qdomdocumenttype.html - - QDomDocumentType - QDomDocumentType - () - - - QDomDocumentType - QDomDocumentType-2 - ( const QDomDocumentType & n ) - - - entities - entities - () - - - internalSubset - internalSubset - () - - - name - name - () - - - NodeType - nodeType - QDomDocumentType::nodeType() - - - notations - notations - () - - - publicId - publicId - () - - - systemId - systemId - () - - - operator= - operator-eq - ( const QDomDocumentType & n ) - - - - QDomElement - qdomelement.html - - QDomElement - QDomElement - () - - - QDomElement - QDomElement-2 - ( const QDomElement & x ) - - - attribute - attributex - ( const QString & name, const QString & defValue = QString() - - - attributeNS - attributeNS - ( const QString nsURI, const QString & localName, const QString & defValue = QString() - - - attributeNode - attributeNode - ( const QString & name ) - - - attributeNodeNS - attributeNodeNS - ( const QString & nsURI, const QString & localName ) - - - attributes - attributes - () - - - elementsByTagName - elementsByTagName - ( const QString & tagname ) - - - elementsByTagNameNS - elementsByTagNameNS - ( const QString & nsURI, const QString & localName ) - - - hasAttribute - hasAttribute - ( const QString & name ) - - - hasAttributeNS - hasAttributeNS - ( const QString & nsURI, const QString & localName ) - - - NodeType - nodeType - QDomElement::nodeType() - - - removeAttribute - removeAttribute - ( const QString & name ) - - - removeAttributeNS - removeAttributeNS - ( const QString & nsURI, const QString & localName ) - - - removeAttributeNode - removeAttributeNode - ( const QDomAttr & oldAttr ) - - - setAttribute - setAttribute - ( const QString & name, const QString & value ) - - - setAttribute - setAttribute-2 - ( const QString & name, int value ) - - - setAttribute - setAttribute-3 - ( const QString & name, uint value ) - - - setAttribute - setAttribute-4 - ( const QString & name, qlonglong value ) - - - setAttribute - setAttribute-5 - ( const QString & name, qulonglong value ) - - - setAttribute - setAttribute-6 - ( const QString & name, double value ) - - - setAttributeNS - setAttributeNS - ( const QString nsURI, const QString & qName, const QString & value ) - - - setAttributeNS - setAttributeNS-2 - ( const QString nsURI, const QString & qName, int value ) - - - setAttributeNS - setAttributeNS-3 - ( const QString nsURI, const QString & qName, uint value ) - - - setAttributeNS - setAttributeNS-4 - ( const QString nsURI, const QString & qName, qlonglong value ) - - - setAttributeNS - setAttributeNS-5 - ( const QString nsURI, const QString & qName, qulonglong value ) - - - setAttributeNS - setAttributeNS-6 - ( const QString nsURI, const QString & qName, double value ) - - - setAttributeNode - setAttributeNode - ( const QDomAttr & newAttr ) - - - setAttributeNodeNS - setAttributeNodeNS - ( const QDomAttr & newAttr ) - - - setTagName - setTagName - ( const QString & name ) - - - tagName - tagName - () - - - text - text - () - - - operator= - operator-eq - ( const QDomElement & x ) - - - - QDomEntity - qdomentity.html - - QDomEntity - QDomEntity - () - - - QDomEntity - QDomEntity-2 - ( const QDomEntity & x ) - - - NodeType - nodeType - QDomEntity::nodeType() - - - notationName - notationName - () - - - publicId - publicId - () - - - systemId - systemId - () - - - operator= - operator-eq - ( const QDomEntity & x ) - - - - QDomEntityReference - qdomentityreference.html - - QDomEntityReference - QDomEntityReference - () - - - QDomEntityReference - QDomEntityReference-2 - ( const QDomEntityReference & x ) - - - NodeType - nodeType - QDomEntityReference::nodeType() - - - operator= - operator-eq - ( const QDomEntityReference & x ) - - - - QDomImplementation - qdomimplementation.html - - QDomImplementation - QDomImplementation - () - - - QDomImplementation - QDomImplementation-2 - ( const QDomImplementation & x ) - - - createDocument - createDocument - ( const QString & nsURI, const QString & qName, const QDomDocumentType & doctype ) - - - createDocumentType - createDocumentType - ( const QString & qName, const QString & publicId, const QString & systemId ) - - - hasFeature - hasFeature - ( const QString & feature, const QString & version ) - - - isNull - isNull - () - - - operator!= - operator-not-eq - ( const QDomImplementation & x ) - - - operator= - operator-eq - ( const QDomImplementation & x ) - - - operator== - operator-eq-eq - ( const QDomImplementation & x ) - - - - QDomNamedNodeMap - qdomnamednodemap.html - - QDomNamedNodeMap - QDomNamedNodeMap - () - - - QDomNamedNodeMap - QDomNamedNodeMap-2 - ( const QDomNamedNodeMap & n ) - - - contains - contains - ( const QString & name ) - - - count - count - () - - - item - item - ( int index ) - - - length - length - () - - - namedItem - namedItem - ( const QString & name ) - - - namedItemNS - namedItemNS - ( const QString & nsURI, const QString & localName ) - - - removeNamedItem - removeNamedItem - ( const QString & name ) - - - removeNamedItemNS - removeNamedItemNS - ( const QString & nsURI, const QString & localName ) - - - setNamedItem - setNamedItem - ( const QDomNode & newNode ) - - - setNamedItemNS - setNamedItemNS - ( const QDomNode & newNode ) - - - operator!= - operator-not-eq - ( const QDomNamedNodeMap & n ) - - - operator= - operator-eq - ( const QDomNamedNodeMap & n ) - - - operator== - operator-eq-eq - ( const QDomNamedNodeMap & n ) - - - - QDomNode - qdomnode.html - - NodeType - NodeType-enum - - - - QDomNode - QDomNode - () - - - QDomNode - QDomNode-2 - ( const QDomNode & n ) - - - appendChild - appendChild - ( const QDomNode & newChild ) - - - attributes - attributes - () - - - childNodes - childNodes - () - - - clear - clear - () - - - cloneNode - cloneNode - ( bool deep = true ) - - - firstChild - firstChild - () - - - firstChildElement - firstChildElement - ( const QString & tagName = QString() - - - hasAttributes - hasAttributes - () - - - hasChildNodes - hasChildNodes - () - - - insertAfter - insertAfter - ( const QDomNode & newChild, const QDomNode & refChild ) - - - insertBefore - insertBefore - ( const QDomNode & newChild, const QDomNode & refChild ) - - - isAttr - isAttr - () - - - isCDATASection - isCDATASection - () - - - isCharacterData - isCharacterData - () - - - isComment - isComment - () - - - isDocument - isDocument - () - - - isDocumentFragment - isDocumentFragment - () - - - isDocumentType - isDocumentType - () - - - isElement - isElement - () - - - isEntity - isEntity - () - - - isEntityReference - isEntityReference - () - - - isNotation - isNotation - () - - - isNull - isNull - () - - - isProcessingInstruction - isProcessingInstruction - () - - - isSupported - isSupported - ( const QString & feature, const QString & version ) - - - isText - isText - () - - - lastChild - lastChild - () - - - lastChildElement - lastChildElement - ( const QString & tagName = QString() - - - localName - localName - () - - - namedItem - namedItem - ( const QString & name ) - - - namespaceURI - namespaceURI - () - - - nextSibling - nextSibling - () - - - nextSiblingElement - nextSiblingElement - ( const QString & tagName = QString() - - - nodeName - nodeName - () - - - nodeType - nodeType - () - - - nodeValue - nodeValue - () - - - normalize - normalize - () - - - ownerDocument - ownerDocument - () - - - parentNode - parentNode - () - - - prefix - prefix - () - - - previousSibling - previousSibling - () - - - previousSiblingElement - previousSiblingElement - ( const QString & tagName = QString() - - - removeChild - removeChild - ( const QDomNode & oldChild ) - - - replaceChild - replaceChild - ( const QDomNode & newChild, const QDomNode & oldChild ) - - - save - save - ( QTextStream & str, int indent ) - - - setNodeValue - setNodeValue - ( const QString & v ) - - - setPrefix - setPrefix - ( const QString & pre ) - - - toAttr - toAttr - () - - - toCDATASection - toCDATASection - () - - - toCharacterData - toCharacterData - () - - - toComment - toComment - () - - - toDocument - toDocument - () - - - toDocumentFragment - toDocumentFragment - () - - - toDocumentType - toDocumentType - () - - - toElement - toElement - () - - - toEntity - toEntity - () - - - toEntityReference - toEntityReference - () - - - toNotation - toNotation - () - - - toProcessingInstruction - toProcessingInstruction - () - - - toText - toText - () - - - operator!= - operator-not-eq - ( const QDomNode & n ) - - - operator= - operator-eq - ( const QDomNode & n ) - - - operator== - operator-eq-eq - ( const QDomNode & n ) - - - - QDomNodeList - qdomnodelist.html - - QDomNodeList - QDomNodeList - () - - - QDomNodeList - QDomNodeList-2 - ( const QDomNodeList & n ) - - - count - count - () - - - item - item - ( int index ) - - - length - length - () - - - operator!= - operator-not-eq - ( const QDomNodeList & n ) - - - operator= - operator-eq - ( const QDomNodeList & n ) - - - operator== - operator-eq-eq - ( const QDomNodeList & n ) - - - - QDomNotation - qdomnotation.html - - QDomNotation - QDomNotation - () - - - QDomNotation - QDomNotation-2 - ( const QDomNotation & x ) - - - NodeType - nodeType - QDomNotation::nodeType() - - - publicId - publicId - () - - - systemId - systemId - () - - - operator= - operator-eq - ( const QDomNotation & x ) - - - - QDomProcessingInstruction - qdomprocessinginstruction.html - - QDomProcessingInstruction - QDomProcessingInstruction - () - - - QDomProcessingInstruction - QDomProcessingInstruction-2 - ( const QDomProcessingInstruction & x ) - - - data - data - () - - - NodeType - nodeType - QDomProcessingInstruction::nodeType() - - - setData - setData - ( const QString & d ) - - - target - target - () - - - operator= - operator-eq - ( const QDomProcessingInstruction & x ) - - - - QDomText - qdomtext.html - - QDomText - QDomText - () - - - QDomText - QDomText-2 - ( const QDomText & x ) - - - NodeType - nodeType - QDomText::nodeType() - - - splitText - splitText - ( int offset ) - - - operator= - operator-eq - ( const QDomText & x ) - - - - QDoubleSpinBox - qdoublespinbox.html - - QDoubleSpinBox - QDoubleSpinBox - ( QWidget * parent = 0 ) - - - setRange - setRange - ( double min, double max ) - - - textFromValue - textFromValue - ( double v ) - - - valueChanged - valueChanged - ( double d ) - - - valueChanged - valueChanged-2 - ( const QString & text ) - - - valueFromText - valueFromText - ( const QString & text ) - - - QDoubleValidator - QDoubleValidator-3 - ( QObject * parent, const char * name ) - - - QDoubleValidator - QDoubleValidator-4 - ( double bottom, double top, int decimals, QObject * parent, const char * name ) - - - - QDoubleValidator - qdoublevalidator.html - - QDoubleValidator - QDoubleValidator - ( QObject * parent ) - - - QDoubleValidator - QDoubleValidator-2 - ( double bottom, double top, int decimals, QObject * parent ) - - - setRange - setRange - ( double minimum, double maximum, int decimals = 0 ) - - - State - validate - QDoubleValidator::validate( QString & input, int & pos ) - - - - QDrag - qdrag.html - - QDrag - QDrag - ( QWidget * dragSource ) - - - actionChanged - actionChanged - ( Qt::DropAction action ) - - - hotSpot - hotSpot - () - - - mimeData - mimeData - () - - - pixmap - pixmap - () - - - setDragCursor - setDragCursor - ( const QPixmap & cursor, Qt::DropAction action ) - - - setHotSpot - setHotSpot - ( const QPoint & hotspot ) - - - setMimeData - setMimeData - ( QMimeData * data ) - - - setPixmap - setPixmap - ( const QPixmap & pixmap ) - - - source - source - () - - - DropAction - start - QDrag::start( Qt::DropActions request = Qt::CopyAction ) - - - target - target - () - - - targetChanged - targetChanged - ( QWidget * newTarget ) - - - - QDragEnterEvent - qdragenterevent.html - - QDragEnterEvent - QDragEnterEvent - ( const QPoint & point, Qt::DropActions actions, const QMimeData * data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers ) - - - - QDragLeaveEvent - qdragleaveevent.html - - QDragLeaveEvent - QDragLeaveEvent - () - - - accept - accept-2 - ( bool y ) - - - - QDragMoveEvent - qdragmoveevent.html - - QDragMoveEvent - QDragMoveEvent - ( const QPoint & pos, Qt::DropActions actions, const QMimeData * data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = DragMove ) - - - accept - accept - ( const QRect & rectangle ) - - - accept - accept-3 - () - - - answerRect - answerRect - () - - - ignore - ignore - ( const QRect & rectangle ) - - - ignore - ignore-2 - () - - - Action - Action-enum - - - - accept - accept-2 - ( bool accept ) - - - acceptAction - acceptAction - ( bool accept = true ) - - - action - action - () - - - data - data - ( const char * f ) - - - encodedData - encodedData - ( const char * format ) - - - format - format - ( int n = 0 ) - - - provides - provides - ( const char * mimeType ) - - - setPoint - setPoint - ( const QPoint & point ) - - - - QDropEvent - qdropevent.html - - QDropEvent - QDropEvent - ( const QPoint & pos, Qt::DropActions actions, const QMimeData * data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = Drop ) - - - accept - accept - () - - - acceptProposedAction - acceptProposedAction - () - - - DropAction - dropAction - QDropEvent::dropAction() - - - KeyboardModifiers - keyboardModifiers - QDropEvent::keyboardModifiers() - - - mimeData - mimeData - () - - - MouseButtons - mouseButtons - QDropEvent::mouseButtons() - - - pos - pos - () - - - DropActions - possibleActions - QDropEvent::possibleActions() - - - DropAction - proposedAction - QDropEvent::proposedAction() - - - setDropAction - setDropAction - ( Qt::DropAction action ) - - - source - source - () - - - message - message - ( const QString & text ) - - - - QErrorMessage - qerrormessage.html - - QErrorMessage - QErrorMessage - ( QWidget * parent = 0 ) - - - qtHandler - qtHandler - () - - - showMessage - showMessage - ( const QString & message ) - - - - QEvent - qevent.html - - Type - Type-enum - - - - QEvent - QEvent - ( Type type ) - - - accept - accept - () - - - ignore - ignore - () - - - spontaneous - spontaneous - () - - - type - type - () - - - name - name - () - - - open - open-2 - ( OpenMode flags, FILE * f ) - - - open - open-3 - ( OpenMode flags, int fd ) - - - setName - setName - ( const QString & name ) - - - - QFile - qfile.html - - DecoderFn - DecoderFn-typedef - - - - EncoderFn - EncoderFn-typedef - - - - FileError - FileError-enum - - - - PermissionSpec - PermissionSpec-typedef - - - - QFile - QFile-2 - ( const QString & name ) - - - QFile - QFile-3 - ( QObject * parent ) - - - QFile - QFile-4 - ( const QString & name, QObject * parent ) - - - copy - copy - ( const QString & newName ) - - - copy - copy-2 - ( const QString & fileName, const QString & newName ) - - - decodeName - decodeName - ( const QByteArray & localFileName ) - - - decodeName - decodeName-2 - ( const char * localFileName ) - - - encodeName - encodeName - ( const QString & fileName ) - - - error - error - () - - - exists - exists - ( const QString & fileName ) - - - exists - exists-2 - () - - - fileEngine - fileEngine - () - - - fileName - fileName - () - - - handle - handle - () - - - isSequential - isSequential - () - - - link - link - ( const QString & newName ) - - - link - link-2 - ( const QString & oldName, const QString & newName ) - - - open - open - ( OpenMode mode ) - - - open - open-4 - ( FILE * fh, OpenMode mode ) - - - open - open-5 - ( int fd, OpenMode mode ) - - - permissions - permissions - () - - - permissions - permissions-2 - ( const QString & fileName ) - - - readLink - readLink - ( const QString & fileName ) - - - readLink - readLink-2 - () - - - remove - remove - () - - - remove - remove-2 - ( const QString & fileName ) - - - rename - rename - ( const QString & newName ) - - - rename - rename-2 - ( const QString & oldName, const QString & newName ) - - - resize - resize - ( qint64 sz ) - - - resize - resize-2 - ( const QString & fileName, qint64 sz ) - - - setDecodingFunction - setDecodingFunction - ( DecoderFn function ) - - - setEncodingFunction - setEncodingFunction - ( EncoderFn function ) - - - setFileName - setFileName - ( const QString & name ) - - - setPermissions - setPermissions - ( Permissions permissions ) - - - setPermissions - setPermissions-2 - ( const QString & fileName, Permissions permissions ) - - - unsetError - unsetError - () - - - getExistingDirectory - getExistingDirectory-2 - ( const QString & dir, QWidget * parent = 0, const char * name = 0, const QString & caption = QString() - - - getOpenFileName - getOpenFileName-2 - ( const QString & dir, const QString & filter = QString() - - - getOpenFileNames - getOpenFileNames-2 - ( const QString & filter, const QString & dir = QString() - - - getSaveFileName - getSaveFileName-2 - ( const QString & dir, const QString & filter = QString() - - - mode - mode - () - - - selectedFile - selectedFile - () - - - setDir - setDir - ( const QString & directory ) - - - setDir - setDir-2 - ( const QDir & directory ) - - - setMode - setMode - ( FileMode m ) - - - - QFileDialog - qfiledialog.html - - AcceptMode - AcceptMode-enum - - - - DialogLabel - DialogLabel-enum - - - - FileMode - FileMode-enum - - - - Mode - Mode-typedef - - - - ViewMode - ViewMode-enum - - - - QFileDialog - QFileDialog - ( QWidget * parent, Qt::WFlags flags ) - - - QFileDialog - QFileDialog-2 - ( QWidget * parent = 0, const QString & caption = QString() - - - currentChanged - currentChanged - ( const QString & path ) - - - directory - directory - () - - - filesSelected - filesSelected - ( const QStringList & selected ) - - - filters - filters - () - - - getExistingDirectory - getExistingDirectory - ( QWidget * parent = 0, const QString & caption = QString() - - - getOpenFileName - getOpenFileName - ( QWidget * parent = 0, const QString & caption = QString() - - - getOpenFileNames - getOpenFileNames - ( QWidget * parent = 0, const QString & caption = QString() - - - getSaveFileName - getSaveFileName - ( QWidget * parent = 0, const QString & caption = QString() - - - history - history - () - - - iconProvider - iconProvider - () - - - itemDelegate - itemDelegate - () - - - labelText - labelText - ( DialogLabel label ) - - - selectFile - selectFile - ( const QString & filename ) - - - selectFilter - selectFilter - ( const QString & filter ) - - - selectedFiles - selectedFiles - () - - - selectedFilter - selectedFilter - () - - - setDirectory - setDirectory - ( const QString & directory ) - - - setDirectory - setDirectory-2 - ( const QDir & directory ) - - - setFilter - setFilter - ( const QString & filter ) - - - setFilters - setFilters - ( const QStringList & filters ) - - - setHistory - setHistory - ( const QStringList & paths ) - - - setIconProvider - setIconProvider - ( QFileIconProvider * provider ) - - - setItemDelegate - setItemDelegate - ( QAbstractItemDelegate * delegate ) - - - setLabelText - setLabelText - ( DialogLabel label, const QString & text ) - - - - QFileEngine - qfileengine.html - - FileName - FileName-enum - - - - FileOwner - FileOwner-enum - - - - FileTime - FileTime-enum - - - - Type - Type-enum - - - - QFileEngine - QFileEngine - () - - - at - at - () - - - caseSensitive - caseSensitive - () - - - chmod - chmod - ( uint perms ) - - - close - close - () - - - copy - copy - ( const QString & newName ) - - - createFileEngine - createFileEngine - ( const QString & file ) - - - entryList - entryList - ( QDir::Filters filters, const QStringList & filterNames ) - - - FileError - error - QFileEngine::error() - - - errorString - errorString - () - - - fileFlags - fileFlags - ( FileFlags type = FileInfoAll ) - - - fileName - fileName - ( FileName file = DefaultName ) - - - fileTime - fileTime - ( FileTime time ) - - - flush - flush - () - - - isRelativePath - isRelativePath - () - - - isSequential - isSequential - () - - - link - link - ( const QString & newName ) - - - map - map - ( qint64 offset, qint64 size ) - - - mkdir - mkdir - ( const QString & dirName, bool createParentDirectories ) - - - open - open - ( int mode ) - - - owner - owner - ( FileOwner owner ) - - - ownerId - ownerId - ( FileOwner owner ) - - - read - read - ( char * data, qint64 maxSize ) - - - remove - remove - () - - - rename - rename - ( const QString & newName ) - - - rmdir - rmdir - ( const QString & dirName, bool recurseParentDirectories ) - - - seek - seek - ( qint64 offset ) - - - setFileName - setFileName - ( const QString & file ) - - - setSize - setSize - ( qint64 size ) - - - size - size - () - - - type - type - () - - - unmap - unmap - ( uchar * data ) - - - write - write - ( const char * data, qint64 size ) - - - - QFileEngineHandler - qfileenginehandler.html - - QFileEngineHandler - QFileEngineHandler - () - - - createFileEngine - createFileEngine - ( const QString & path ) - - - - QFileIconProvider - qfileiconprovider.html - - IconType - IconType-enum - - - - QFileIconProvider - QFileIconProvider - () - - - icon - icon - ( IconType type ) - - - icon - icon-2 - ( const QFileInfo & info ) - - - type - type - ( const QFileInfo & info ) - - - absFilePath - absFilePath - () - - - baseName - baseName-2 - ( bool complete ) - - - convertToAbs - convertToAbs - () - - - dir - dir-2 - ( bool absPath ) - - - dirPath - dirPath - ( bool absPath = false ) - - - extension - extension - ( bool complete = true ) - - - permission - permission-2 - ( PermissionSpec permissions ) - - - - QFileInfo - qfileinfo.html - - QFileInfo - QFileInfo - () - - - QFileInfo - QFileInfo-2 - ( const QString & file ) - - - QFileInfo - QFileInfo-3 - ( const QFile & file ) - - - QFileInfo - QFileInfo-4 - ( const QDir & dir, const QString & file ) - - - QFileInfo - QFileInfo-5 - ( const QFileInfo & fileinfo ) - - - absoluteDir - absoluteDir - () - - - absoluteFilePath - absoluteFilePath - () - - - absolutePath - absolutePath - () - - - baseName - baseName - () - - - caching - caching - () - - - canonicalFilePath - canonicalFilePath - () - - - canonicalPath - canonicalPath - () - - - completeBaseName - completeBaseName - () - - - completeSuffix - completeSuffix - () - - - created - created - () - - - dir - dir - () - - - exists - exists - () - - - fileName - fileName - () - - - filePath - filePath - () - - - group - group - () - - - groupId - groupId - () - - - isAbsolute - isAbsolute - () - - - isDir - isDir - () - - - isExecutable - isExecutable - () - - - isFile - isFile - () - - - isHidden - isHidden - () - - - isReadable - isReadable - () - - - isRelative - isRelative - () - - - isRoot - isRoot - () - - - isSymLink - isSymLink - () - - - isWritable - isWritable - () - - - lastModified - lastModified - () - - - lastRead - lastRead - () - - - makeAbsolute - makeAbsolute - () - - - owner - owner - () - - - ownerId - ownerId - () - - - path - path - () - - - permission - permission - ( QFile::Permissions permissions ) - - - Permissions - permissions - QFileInfo::permissions() - - - readLink - readLink - () - - - refresh - refresh - () - - - setCaching - setCaching - ( bool enable ) - - - setFile - setFile - ( const QString & file ) - - - setFile - setFile-2 - ( const QFile & file ) - - - setFile - setFile-3 - ( const QDir & dir, const QString & file ) - - - size - size - () - - - suffix - suffix - () - - - operator!= - operator-not-eq - ( const QFileInfo & fileinfo ) - - - operator= - operator-eq - ( const QFileInfo & fileinfo ) - - - operator== - operator-eq-eq - ( const QFileInfo & fileinfo ) - - - - QFileOpenEvent - qfileopenevent.html - - file - file - () - - - - QFocusEvent - qfocusevent.html - - Reason - Reason-enum - - - - QFocusEvent - QFocusEvent - ( Type type, Qt::FocusReason reason = Qt::OtherFocusReason ) - - - gotFocus - gotFocus - () - - - lostFocus - lostFocus - () - - - FocusReason - reason - QFocusEvent::reason() - - - - QFocusFrame - qfocusframe.html - - QFocusFrame - QFocusFrame - ( QWidget * parent = 0 ) - - - setWidget - setWidget - ( QWidget * widget ) - - - widget - widget - () - - - defaultFont - defaultFont - () - - - pointSizeFloat - pointSizeFloat - () - - - setDefaultFont - setDefaultFont - ( const QFont & f ) - - - setPixelSizeFloat - setPixelSizeFloat - ( qreal pixelSize ) - - - setPointSizeFloat - setPointSizeFloat - ( qreal size ) - - - - QFont - qfont.html - - Stretch - Stretch-enum - - - - Style - Style-enum - - - - StyleHint - StyleHint-enum - - - - StyleStrategy - StyleStrategy-enum - - - - Weight - Weight-enum - - - - QFont - QFont - () - - - QFont - QFont-2 - ( const QString & family, int pointSize = -1, int weight = -1, bool italic = false ) - - - QFont - QFont-3 - ( const QFont & font, QPaintDevice * pd ) - - - QFont - QFont-4 - ( const QFont & font ) - - - bold - bold - () - - - defaultFamily - defaultFamily - () - - - exactMatch - exactMatch - () - - - family - family - () - - - fixedPitch - fixedPitch - () - - - fromString - fromString - ( const QString & descrip ) - - - handle - handle - () - - - insertSubstitution - insertSubstitution - ( const QString & familyName, const QString & substituteName ) - - - insertSubstitutions - insertSubstitutions - ( const QString & familyName, const QStringList & substituteNames ) - - - isCopyOf - isCopyOf - ( const QFont & f ) - - - italic - italic - () - - - kerning - kerning - () - - - key - key - () - - - lastResortFamily - lastResortFamily - () - - - lastResortFont - lastResortFont - () - - - overline - overline - () - - - pixelSize - pixelSize - () - - - pointSize - pointSize - () - - - pointSizeF - pointSizeF - () - - - rawMode - rawMode - () - - - rawName - rawName - () - - - removeSubstitution - removeSubstitution - ( const QString & familyName ) - - - resolve - resolve - ( const QFont & other ) - - - setBold - setBold - ( bool enable ) - - - setFamily - setFamily - ( const QString & family ) - - - setFixedPitch - setFixedPitch - ( bool enable ) - - - setItalic - setItalic - ( bool enable ) - - - setKerning - setKerning - ( bool enable ) - - - setOverline - setOverline - ( bool enable ) - - - setPixelSize - setPixelSize - ( int pixelSize ) - - - setPointSize - setPointSize - ( int pointSize ) - - - setPointSizeF - setPointSizeF - ( qreal pointSize ) - - - setRawMode - setRawMode - ( bool enable ) - - - setRawName - setRawName - ( const QString & name ) - - - setStretch - setStretch - ( int factor ) - - - setStrikeOut - setStrikeOut - ( bool enable ) - - - setStyle - setStyle - ( Style style ) - - - setStyleHint - setStyleHint - ( StyleHint hint, StyleStrategy strategy = PreferDefault ) - - - setStyleStrategy - setStyleStrategy - ( StyleStrategy s ) - - - setUnderline - setUnderline - ( bool enable ) - - - setWeight - setWeight - ( int weight ) - - - stretch - stretch - () - - - strikeOut - strikeOut - () - - - style - style - () - - - styleHint - styleHint - () - - - styleStrategy - styleStrategy - () - - - substitute - substitute - ( const QString & familyName ) - - - substitutes - substitutes - ( const QString & familyName ) - - - substitutions - substitutions - () - - - toString - toString - () - - - underline - underline - () - - - weight - weight - () - - - operator - operator-QVariant - QVariant() - - - operator!= - operator-not-eq - ( const QFont & f ) - - - operator< - operator-lt - ( const QFont & f ) - - - operator= - operator-eq - ( const QFont & font ) - - - operator== - operator-eq-eq - ( const QFont & f ) - - - - QFontDatabase - qfontdatabase.html - - WritingSystem - WritingSystem-enum - - - - QFontDatabase - QFontDatabase - () - - - bold - bold - ( const QString & family, const QString & style ) - - - families - families - ( WritingSystem writingSystem = Any ) - - - font - font - ( const QString & family, const QString & style, int pointSize ) - - - isBitmapScalable - isBitmapScalable - ( const QString & family, const QString & style = QString() - - - isFixedPitch - isFixedPitch - ( const QString & family, const QString & style = QString() - - - isScalable - isScalable - ( const QString & family, const QString & style = QString() - - - isSmoothlyScalable - isSmoothlyScalable - ( const QString & family, const QString & style = QString() - - - italic - italic - ( const QString & family, const QString & style ) - - - pointSizes - pointSizes - ( const QString & family, const QString & style = QString() - - - smoothSizes - smoothSizes - ( const QString & family, const QString & style ) - - - standardSizes - standardSizes - () - - - styleString - styleString - ( const QFont & f ) - - - styles - styles - ( const QString & family ) - - - weight - weight - ( const QString & family, const QString & style ) - - - writingSystemName - writingSystemName - ( WritingSystem writingSystem ) - - - writingSystemSample - writingSystemSample - ( WritingSystem writingSystem ) - - - writingSystems - writingSystems - () - - - - QFontDialog - qfontdialog.html - - getFont - getFont - ( bool * ok, const QFont & initial, QWidget * parent = 0 ) - - - getFont - getFont-2 - ( bool * ok, const QFont & def, QWidget * parent, const char * name ) - - - getFont - getFont-3 - ( bool * ok, QWidget * parent, const char * name ) - - - getFont - getFont-5 - ( bool * ok, QWidget * parent = 0 ) - - - - QFontInfo - qfontinfo.html - - QFontInfo - QFontInfo - ( const QFont & font ) - - - QFontInfo - QFontInfo-2 - ( const QFontInfo & fi ) - - - bold - bold - () - - - exactMatch - exactMatch - () - - - family - family - () - - - fixedPitch - fixedPitch - () - - - italic - italic - () - - - pixelSize - pixelSize - () - - - pointSize - pointSize - () - - - pointSizeF - pointSizeF - () - - - rawMode - rawMode - () - - - Style - style - QFontInfo::style() - - - StyleHint - styleHint - QFontInfo::styleHint() - - - weight - weight - () - - - operator= - operator-eq - ( const QFontInfo & fi ) - - - boundingRect - boundingRect-3 - ( const QString & text, int len ) - - - boundingRect - boundingRect-4 - ( int x, int y, int w, int h, int flags, const QString & str, int len, int tabstops = 0, int * tabarray = 0 ) - - - size - size-2 - ( int flags, const QString & str, int len, int tabstops = 0, int * tabarray = 0 ) - - - - QFontMetrics - qfontmetrics.html - - QFontMetrics - QFontMetrics - ( const QFont & font ) - - - QFontMetrics - QFontMetrics-2 - ( const QFont & font, QPaintDevice * paintdevice ) - - - QFontMetrics - QFontMetrics-3 - ( const QFontMetrics & fm ) - - - ascent - ascent - () - - - boundingRect - boundingRect - ( QChar ch ) - - - boundingRect - boundingRect-2 - ( const QString & str ) - - - boundingRect - boundingRect-5 - ( int x, int y, int width, int height, int flags, const QString & text, int tabstops = 0, int * tabarray = 0 ) - - - boundingRect - boundingRect-6 - ( const QRect & r, int flgs, const QString & str, int tabstops = 0, int * tabarray = 0 ) - - - charWidth - charWidth - ( const QString & str, int pos ) - - - descent - descent - () - - - height - height - () - - - inFont - inFont - ( QChar ch ) - - - leading - leading - () - - - leftBearing - leftBearing - ( QChar ch ) - - - lineSpacing - lineSpacing - () - - - lineWidth - lineWidth - () - - - maxWidth - maxWidth - () - - - minLeftBearing - minLeftBearing - () - - - minRightBearing - minRightBearing - () - - - overlinePos - overlinePos - () - - - rightBearing - rightBearing - ( QChar ch ) - - - size - size - ( int flgs, const QString & text, int tabstops = 0, int * tabarray = 0 ) - - - strikeOutPos - strikeOutPos - () - - - underlinePos - underlinePos - () - - - width - width - ( const QString & str, int len = -1 ) - - - width - width-2 - ( QChar ch ) - - - operator!= - operator-not-eq - ( const QFontMetrics & other ) - - - operator= - operator-eq - ( const QFontMetrics & fm ) - - - operator== - operator-eq-eq - ( const QFontMetrics & other ) - - - - QFontMetricsF - qfontmetricsf.html - - QFontMetricsF - QFontMetricsF - ( const QFont & font ) - - - QFontMetricsF - QFontMetricsF-2 - ( const QFont & font, QPaintDevice * paintdevice ) - - - QFontMetricsF - QFontMetricsF-3 - ( const QFontMetrics & fontMetrics ) - - - QFontMetricsF - QFontMetricsF-4 - ( const QFontMetricsF & fm ) - - - ascent - ascent - () - - - boundingRect - boundingRect - ( const QString & text ) - - - boundingRect - boundingRect-2 - ( QChar ch ) - - - boundingRect - boundingRect-3 - ( const QRectF & rect, int flags, const QString & text, int tabstops = 0, int * tabarray = 0 ) - - - descent - descent - () - - - height - height - () - - - inFont - inFont - ( QChar ch ) - - - leading - leading - () - - - leftBearing - leftBearing - ( QChar ch ) - - - lineSpacing - lineSpacing - () - - - lineWidth - lineWidth - () - - - maxWidth - maxWidth - () - - - minLeftBearing - minLeftBearing - () - - - minRightBearing - minRightBearing - () - - - overlinePos - overlinePos - () - - - rightBearing - rightBearing - ( QChar ch ) - - - size - size - ( int flags, const QString & text, int tabstops = 0, int * tabarray = 0 ) - - - strikeOutPos - strikeOutPos - () - - - underlinePos - underlinePos - () - - - width - width - ( const QString & text ) - - - width - width-2 - ( QChar ch ) - - - operator!= - operator-not-eq - ( const QFontMetricsF & other ) - - - operator= - operator-eq - ( const QFontMetricsF & fm ) - - - operator= - operator-eq-2 - ( const QFontMetrics & fontMetrics ) - - - operator== - operator-eq-eq - ( const QFontMetricsF & other ) - - - QFrame - QFrame-2 - ( QWidget * parent, const char * name, Qt::WFlags f = 0 ) - - - - QFrame - qframe.html - - Shadow - Shadow-enum - - - - Shape - Shape-enum - - - - QFrame - QFrame - ( QWidget * parent = 0, Qt::WFlags f = 0 ) - - - frameStyle - frameStyle - () - - - setFrameStyle - setFrameStyle - ( int style ) - - - QFtp - QFtp-2 - ( QObject * parent, const char * name ) - - - readBlock - readBlock - ( char * data, quint64 maxlen ) - - - - QFtp - qftp.html - - Command - Command-enum - - - - Error - Error-enum - - - - State - State-enum - - - - TransferMode - TransferMode-enum - - - - TransferType - TransferType-enum - - - - QFtp - QFtp - ( QObject * parent = 0 ) - - - abort - abort - () - - - bytesAvailable - bytesAvailable - () - - - cd - cd - ( const QString & dir ) - - - clearPendingCommands - clearPendingCommands - () - - - close - close - () - - - commandFinished - commandFinished - ( int id, bool error ) - - - commandStarted - commandStarted - ( int id ) - - - connectToHost - connectToHost - ( const QString & host, quint16 port = 21 ) - - - currentCommand - currentCommand - () - - - currentDevice - currentDevice - () - - - currentId - currentId - () - - - dataTransferProgress - dataTransferProgress - ( qint64 done, qint64 total ) - - - done - done - ( bool error ) - - - error - error - () - - - errorString - errorString - () - - - get - get - ( const QString & file, QIODevice * dev = 0, TransferType type = Binary ) - - - hasPendingCommands - hasPendingCommands - () - - - list - list - ( const QString & dir = QString() - - - listInfo - listInfo - ( const QUrlInfo & i ) - - - login - login - ( const QString & user = QString() - - - mkdir - mkdir - ( const QString & dir ) - - - put - put - ( QIODevice * dev, const QString & file, TransferType type = Binary ) - - - put - put-2 - ( const QByteArray & data, const QString & file, TransferType type = Binary ) - - - rawCommand - rawCommand - ( const QString & command ) - - - rawCommandReply - rawCommandReply - ( int replyCode, const QString & detail ) - - - read - read - ( char * data, qint64 maxlen ) - - - readAll - readAll - () - - - readyRead - readyRead - () - - - remove - remove - ( const QString & file ) - - - rename - rename - ( const QString & oldname, const QString & newname ) - - - rmdir - rmdir - ( const QString & dir ) - - - setProxy - setProxy - ( const QString & host, quint16 port ) - - - setTransferMode - setTransferMode - ( TransferMode mode ) - - - state - state - () - - - stateChanged - stateChanged - ( int state ) - - - - QGfxDriverFactory - qgfxdriverfactory.html - - create - create - ( const QString & key, int displayId ) - - - keys - keys - () - - - - QGfxDriverPlugin - qgfxdriverplugin.html - - QGfxDriverPlugin - QGfxDriverPlugin - ( QObject * parent = 0 ) - - - create - create - ( const QString & driver, int displayId ) - - - keys - keys - () - - - - QGLColormap - qglcolormap.html - - QGLColormap - QGLColormap - () - - - QGLColormap - QGLColormap-2 - ( const QGLColormap & map ) - - - detach - detach - () - - - entryColor - entryColor - ( int idx ) - - - entryRgb - entryRgb - ( int idx ) - - - find - find - ( QRgb color ) - - - findNearest - findNearest - ( QRgb color ) - - - isEmpty - isEmpty - () - - - setEntries - setEntries - ( int count, const QRgb * colors, int base = 0 ) - - - setEntry - setEntry - ( int idx, QRgb color ) - - - setEntry - setEntry-2 - ( int idx, const QColor & color ) - - - size - size - () - - - operator= - operator-eq - ( const QGLColormap & map ) - - - - QGLContext - qglcontext.html - - QGLContext - QGLContext - ( const QGLFormat & format, QPaintDevice * device ) - - - bindTexture - bindTexture - ( const QImage & image, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA8 ) - - - bindTexture - bindTexture-2 - ( const QString & fileName ) - - - bindTexture - bindTexture-3 - ( const QPixmap & pixmap, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA8 ) - - - chooseContext - chooseContext - ( const QGLContext * shareContext = 0 ) - - - chooseMacVisual - chooseMacVisual - ( GDHandle device ) - - - choosePixelFormat - choosePixelFormat - ( void * dummyPfd, HDC pdc ) - - - chooseVisual - chooseVisual - () - - - create - create - ( const QGLContext * shareContext = 0 ) - - - currentContext - currentContext - () - - - deleteTexture - deleteTexture - ( GLuint id ) - - - device - device - () - - - deviceIsPixmap - deviceIsPixmap - () - - - doneCurrent - doneCurrent - () - - - format - format - () - - - generateFontDisplayLists - generateFontDisplayLists - ( const QFont & font, int listBase ) - - - getProcAddress - getProcAddress - ( const QString & proc ) - - - initialized - initialized - () - - - isSharing - isSharing - () - - - isValid - isValid - () - - - makeCurrent - makeCurrent - () - - - overlayTransparentColor - overlayTransparentColor - () - - - requestedFormat - requestedFormat - () - - - reset - reset - () - - - setFormat - setFormat - ( const QGLFormat & format ) - - - setInitialized - setInitialized - ( bool on ) - - - setTextureCacheLimit - setTextureCacheLimit - ( int size ) - - - setWindowCreated - setWindowCreated - ( bool on ) - - - swapBuffers - swapBuffers - () - - - textureCacheLimit - textureCacheLimit - () - - - windowCreated - windowCreated - () - - - - QGLFormat - qglformat.html - - QGLFormat - QGLFormat - () - - - QGLFormat - QGLFormat-2 - ( QGL::FormatOptions options, int plane = 0 ) - - - QGLFormat - QGLFormat-3 - ( const QGLFormat & other ) - - - accum - accum - () - - - accumBufferSize - accumBufferSize - () - - - alpha - alpha - () - - - alphaBufferSize - alphaBufferSize - () - - - defaultFormat - defaultFormat - () - - - defaultOverlayFormat - defaultOverlayFormat - () - - - depth - depth - () - - - depthBufferSize - depthBufferSize - () - - - directRendering - directRendering - () - - - doubleBuffer - doubleBuffer - () - - - hasOpenGL - hasOpenGL - () - - - hasOpenGLOverlays - hasOpenGLOverlays - () - - - hasOverlay - hasOverlay - () - - - plane - plane - () - - - rgba - rgba - () - - - sampleBuffers - sampleBuffers - () - - - samples - samples - () - - - setAccum - setAccum - ( bool enable ) - - - setAccumBufferSize - setAccumBufferSize - ( int size ) - - - setAlpha - setAlpha - ( bool enable ) - - - setAlphaBufferSize - setAlphaBufferSize - ( int size ) - - - setDefaultFormat - setDefaultFormat - ( const QGLFormat & f ) - - - setDefaultOverlayFormat - setDefaultOverlayFormat - ( const QGLFormat & f ) - - - setDepth - setDepth - ( bool enable ) - - - setDepthBufferSize - setDepthBufferSize - ( int size ) - - - setDirectRendering - setDirectRendering - ( bool enable ) - - - setDoubleBuffer - setDoubleBuffer - ( bool enable ) - - - setOption - setOption - ( QGL::FormatOptions opt ) - - - setOverlay - setOverlay - ( bool enable ) - - - setPlane - setPlane - ( int plane ) - - - setRgba - setRgba - ( bool enable ) - - - setSampleBuffers - setSampleBuffers - ( bool enable ) - - - setSamples - setSamples - ( int numSamples ) - - - setStencil - setStencil - ( bool enable ) - - - setStencilBufferSize - setStencilBufferSize - ( int size ) - - - setStereo - setStereo - ( bool enable ) - - - stencil - stencil - () - - - stencilBufferSize - stencilBufferSize - () - - - stereo - stereo - () - - - testOption - testOption - ( QGL::FormatOptions opt ) - - - operator= - operator-eq - ( const QGLFormat & other ) - - - setFormat - setFormat - ( const QGLFormat & format ) - - - QGLWidget - QGLWidget-4 - ( QWidget * parent, const char * name, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 ) - - - QGLWidget - QGLWidget-5 - ( const QGLFormat & format, QWidget * parent, const char * name, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 ) - - - QGLWidget - QGLWidget-6 - ( QGLContext * context, QWidget * parent, const char * name, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 ) - - - - QGLWidget - qglwidget.html - - QGLWidget - QGLWidget - ( QWidget * parent = 0, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 ) - - - QGLWidget - QGLWidget-2 - ( QGLContext * context, QWidget * parent = 0, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 ) - - - QGLWidget - QGLWidget-3 - ( const QGLFormat & format, QWidget * parent = 0, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 ) - - - autoBufferSwap - autoBufferSwap - () - - - bindTexture - bindTexture - ( const QImage & image, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA8 ) - - - bindTexture - bindTexture-2 - ( const QPixmap & pixmap, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA8 ) - - - bindTexture - bindTexture-3 - ( const QString & fileName ) - - - colormap - colormap - () - - - context - context - () - - - convertToGLFormat - convertToGLFormat - ( const QImage & img ) - - - deleteTexture - deleteTexture - ( GLuint id ) - - - doneCurrent - doneCurrent - () - - - doubleBuffer - doubleBuffer - () - - - fontDisplayListBase - fontDisplayListBase - ( const QFont & fnt, int listBase = 2000 ) - - - format - format - () - - - glDraw - glDraw - () - - - glInit - glInit - () - - - grabFrameBuffer - grabFrameBuffer - ( bool withAlpha = false ) - - - initializeGL - initializeGL - () - - - initializeOverlayGL - initializeOverlayGL - () - - - isSharing - isSharing - () - - - isValid - isValid - () - - - makeCurrent - makeCurrent - () - - - makeOverlayCurrent - makeOverlayCurrent - () - - - overlayContext - overlayContext - () - - - paintEvent - paintEvent - ( QPaintEvent * event ) - - - paintGL - paintGL - () - - - paintOverlayGL - paintOverlayGL - () - - - qglClearColor - qglClearColor - ( const QColor & c ) - - - qglColor - qglColor - ( const QColor & c ) - - - renderPixmap - renderPixmap - ( int w = 0, int h = 0, bool useContext = false ) - - - renderText - renderText - ( int x, int y, const QString & str, const QFont & fnt = QFont() - - - renderText - renderText-2 - ( double x, double y, double z, const QString & str, const QFont & fnt = QFont() - - - resizeEvent - resizeEvent - ( QResizeEvent * event ) - - - resizeGL - resizeGL - ( int width, int height ) - - - resizeOverlayGL - resizeOverlayGL - ( int width, int height ) - - - setAutoBufferSwap - setAutoBufferSwap - ( bool on ) - - - setColormap - setColormap - ( const QGLColormap & cmap ) - - - setMouseTracking - setMouseTracking - ( bool enable ) - - - swapBuffers - swapBuffers - () - - - updateGL - updateGL - () - - - updateOverlayGL - updateOverlayGL - () - - - - QGradient - qgradient.html - - Spread - Spread-enum - - - - Type - Type-enum - - - - setColorAt - setColorAt - ( qreal pos, const QColor & color ) - - - setSpread - setSpread - ( Spread spread ) - - - setStops - setStops - ( const QGradientStops & stops ) - - - spread - spread - () - - - stops - stops - () - - - type - type - () - - - QGridLayout - QGridLayout-3 - ( QWidget * parent, int nRows, int nCols = 1, int margin = 0, int space = -1, const char * name = 0 ) - - - QGridLayout - QGridLayout-4 - ( int nRows, int nCols = 1, int spacing = -1, const char * name = 0 ) - - - QGridLayout - QGridLayout-5 - ( QLayout * parentLayout, int nRows = 1, int nCols = 1, int spacing = -1, const char * name = 0 ) - - - addColSpacing - addColSpacing - ( int col, int minsize ) - - - addMultiCell - addMultiCell - ( QLayoutItem * l, int fromRow, int toRow, int fromCol, int toCol, Qt::Alignment align = 0 ) - - - addMultiCellLayout - addMultiCellLayout - ( QLayout * layout, int fromRow, int toRow, int fromCol, int toCol, Qt::Alignment align = 0 ) - - - addMultiCellWidget - addMultiCellWidget - ( QWidget * w, int fromRow, int toRow, int fromCol, int toCol, Qt::Alignment align = 0 ) - - - addRowSpacing - addRowSpacing - ( int row, int minsize ) - - - cellGeometry - cellGeometry - ( int row, int column ) - - - colSpacing - colSpacing - ( int col ) - - - colStretch - colStretch - ( int col ) - - - expand - expand - ( int nRows, int nCols ) - - - findWidget - findWidget - ( QWidget * w, int * row, int * column ) - - - numCols - numCols - () - - - numRows - numRows - () - - - Corner - origin - QGridLayout::origin() - - - rowSpacing - rowSpacing - ( int row ) - - - setColSpacing - setColSpacing - ( int col, int minSize ) - - - setColStretch - setColStretch - ( int col, int stretch ) - - - setOrigin - setOrigin - ( Qt::Corner corner ) - - - setRowSpacing - setRowSpacing - ( int row, int minSize ) - - - - QGridLayout - qgridlayout.html - - QGridLayout - QGridLayout - ( QWidget * parent ) - - - QGridLayout - QGridLayout-2 - () - - - addItem - addItem - ( QLayoutItem * item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = 0 ) - - - addItem - addItem-2 - ( QLayoutItem * item ) - - - addLayout - addLayout - ( QLayout * layout, int row, int column, Qt::Alignment alignment = 0 ) - - - addLayout - addLayout-2 - ( QLayout * layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 ) - - - addWidget - addWidget-2 - ( QWidget * w, int row, int column, Qt::Alignment alignment = 0 ) - - - addWidget - addWidget-3 - ( QWidget * w, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 ) - - - cellRect - cellRect - ( int row, int column ) - - - columnCount - columnCount - () - - - columnMinimumWidth - columnMinimumWidth - ( int column ) - - - columnStretch - columnStretch - ( int column ) - - - Orientations - expandingDirections - QGridLayout::expandingDirections() - - - getItemPosition - getItemPosition - ( int index, int * row, int * column, int * rowSpan, int * columnSpan ) - - - hasHeightForWidth - hasHeightForWidth - () - - - heightForWidth - heightForWidth - ( int w ) - - - invalidate - invalidate - () - - - maximumSize - maximumSize - () - - - minimumSize - minimumSize - () - - - Corner - originCorner - QGridLayout::originCorner() - - - rowCount - rowCount - () - - - rowMinimumHeight - rowMinimumHeight - ( int row ) - - - rowStretch - rowStretch - ( int row ) - - - setColumnMinimumWidth - setColumnMinimumWidth - ( int column, int minSize ) - - - setColumnStretch - setColumnStretch - ( int column, int stretch ) - - - setGeometry - setGeometry - ( const QRect & r ) - - - setOriginCorner - setOriginCorner - ( Qt::Corner c ) - - - setRowMinimumHeight - setRowMinimumHeight - ( int row, int minSize ) - - - setRowStretch - setRowStretch - ( int row, int stretch ) - - - sizeHint - sizeHint - () - - - QGroupBox - QGroupBox-3 - ( QWidget * parent, const char * name ) - - - QGroupBox - QGroupBox-4 - ( const QString & title, QWidget * parent, const char * name ) - - - - QGroupBox - qgroupbox.html - - Alignment - alignment - - - - QGroupBox - QGroupBox - ( QWidget * parent = 0 ) - - - QGroupBox - QGroupBox-2 - ( const QString & title, QWidget * parent = 0 ) - - - toggled - toggled - ( bool on ) - - - - QHash::const_iterator - qhash-const-iterator.html - - const_iterator - const_iterator - () - - - const_iterator - const_iterator-3 - ( const iterator & other ) - - - key - key - () - - - value - value - () - - - operator!= - operator-not-eq - ( const const_iterator & other ) - - - operator* - operator-2a - () - - - operator+ - operator-2b - ( int j ) - - - operator++ - operator-2b-2b - () - - - operator++ - operator-2b-2b-2 - ( int ) - - - operator+= - operator-2b-eq - ( int j ) - - - operator- - operator- - ( int j ) - - - operator-- - operator-- - () - - - operator-- - operator---2 - ( int ) - - - operator-= - operator--eq - ( int j ) - - - operator-& - operator--gt - gt;() - - - operator== - operator-eq-eq - ( const const_iterator & other ) - - - - QHash::iterator - qhash-iterator.html - - iterator - iterator - () - - - key - key - () - - - value - value - () - - - operator!= - operator-not-eq - ( const iterator & other ) - - - operator!= - operator-not-eq-2 - ( const const_iterator & other ) - - - operator* - operator-2a - () - - - operator+ - operator-2b - ( int j ) - - - operator++ - operator-2b-2b - () - - - operator++ - operator-2b-2b-2 - ( int ) - - - operator+= - operator-2b-eq - ( int j ) - - - operator- - operator- - ( int j ) - - - operator-- - operator-- - () - - - operator-- - operator---2 - ( int ) - - - operator-= - operator--eq - ( int j ) - - - operator-& - operator--gt - gt;() - - - operator== - operator-eq-eq - ( const iterator & other ) - - - operator== - operator-eq-eq-2 - ( const const_iterator & other ) - - - - QHash - qhash.html - - ConstIterator - ConstIterator-typedef - - - - Iterator - Iterator-typedef - - - - QHash - QHash - () - - - QHash - QHash-2 - ( const QHash<Key, T> & other ) - - - begin - begin - () - - - begin - begin-2 - () - - - capacity - capacity - () - - - clear - clear - () - - - constBegin - constBegin - () - - - constEnd - constEnd - () - - - contains - contains - ( const Key & key ) - - - count - count - ( const Key & key ) - - - count - count-2 - () - - - empty - empty - () - - - end - end - () - - - end - end-2 - () - - - erase - erase - ( iterator pos ) - - - find - find - ( const Key & key ) - - - find - find-2 - ( const Key & key ) - - - insert - insert - ( const Key & key, const T & value ) - - - insertMulti - insertMulti - ( const Key & key, const T & value ) - - - isEmpty - isEmpty - () - - - key - key - ( const T & value ) - - - keys - keys - () - - - keys - keys-2 - ( const T & value ) - - - remove - remove - ( const Key & key ) - - - reserve - reserve - ( int size ) - - - size - size - () - - - squeeze - squeeze - () - - - take - take - ( const Key & key ) - - - unite - unite - ( const QHash<Key, T> & other ) - - - value - value - ( const Key & key ) - - - value - value-2 - ( const Key & key, const T & defaultValue ) - - - values - values - () - - - values - values-2 - ( const Key & key ) - - - operator!= - operator-not-eq - ( const QHash<Key, T> & other ) - - - operator= - operator-eq - ( const QHash<Key, T> & other ) - - - operator== - operator-eq-eq - ( const QHash<Key, T> & other ) - - - operator[] - operator-5b-5d - ( const Key & key ) - - - operator[] - operator-5b-5d-2 - ( const Key & key ) - - - - QHashIterator - qhashiterator.html - - QHashIterator - QHashIterator - ( const QHash<Key, T> & hash ) - - - findNext - findNext - ( const T & value ) - - - findPrevious - findPrevious - ( const T & value ) - - - hasNext - hasNext - () - - - hasPrevious - hasPrevious - () - - - key - key - () - - - next - next - () - - - peekNext - peekNext - () - - - peekPrevious - peekPrevious - () - - - previous - previous - () - - - toBack - toBack - () - - - toFront - toFront - () - - - value - value - () - - - operator= - operator-eq - ( const QHash<Key, T> & hash ) - - - QHBoxLayout - QHBoxLayout-3 - ( QWidget * parent, int margin, int spacing = -1, const char * name = 0 ) - - - QHBoxLayout - QHBoxLayout-4 - ( QLayout * parentLayout, int spacing = -1, const char * name = 0 ) - - - QHBoxLayout - QHBoxLayout-5 - ( int spacing, const char * name = 0 ) - - - - QHBoxLayout - qhboxlayout.html - - QHBoxLayout - QHBoxLayout - () - - - QHBoxLayout - QHBoxLayout-2 - ( QWidget * parent ) - - - - QHeaderView - qheaderview.html - - ResizeMode - ResizeMode-enum - - - - QHeaderView - QHeaderView - ( Qt::Orientation orientation, QWidget * parent = 0 ) - - - count - count - () - - - headerDataChanged - headerDataChanged - ( Qt::Orientation orientation, int logicalFirst, int logicalLast ) - - - hideSection - hideSection - ( int logicalIndex ) - - - horizontalOffset - horizontalOffset - () - - - isClickable - isClickable - () - - - isMovable - isMovable - () - - - isSectionHidden - isSectionHidden - ( int logicalIndex ) - - - length - length - () - - - logicalIndex - logicalIndex - ( int visualIndex ) - - - logicalIndexAt - logicalIndexAt - ( int position ) - - - logicalIndexAt - logicalIndexAt-2 - ( int x, int y ) - - - logicalIndexAt - logicalIndexAt-3 - ( const QPoint & pos ) - - - moveSection - moveSection - ( int from, int to ) - - - offset - offset - () - - - Orientation - orientation - QHeaderView::orientation() - - - paintSection - paintSection - ( QPainter * painter, const QRect & rect, int logicalIndex ) - - - resizeMode - resizeMode - ( int logicalIndex ) - - - resizeSection - resizeSection - ( int logicalIndex, int size ) - - - sectionAutoResize - sectionAutoResize - ( int logicalIndex, ResizeMode mode ) - - - sectionClicked - sectionClicked - ( int logicalIndex ) - - - sectionCountChanged - sectionCountChanged - ( int oldCount, int newCount ) - - - sectionDoubleClicked - sectionDoubleClicked - ( int logicalIndex ) - - - sectionHandleDoubleClicked - sectionHandleDoubleClicked - ( int logicalIndex ) - - - sectionMoved - sectionMoved - ( int logicalIndex, int oldVisualIndex, int newVisualIndex ) - - - sectionPosition - sectionPosition - ( int logicalIndex ) - - - sectionPressed - sectionPressed - ( int logicalIndex ) - - - sectionResized - sectionResized - ( int logicalIndex, int oldSize, int newSize ) - - - sectionSize - sectionSize - ( int logicalIndex ) - - - sectionSizeFromContents - sectionSizeFromContents - ( int logicalIndex ) - - - sectionSizeHint - sectionSizeHint - ( int logicalIndex ) - - - sectionViewportPosition - sectionViewportPosition - ( int logicalIndex ) - - - sectionsAboutToBeRemoved - sectionsAboutToBeRemoved - ( const QModelIndex & parent, int logicalFirst, int logicalLast ) - - - sectionsInserted - sectionsInserted - ( const QModelIndex & parent, int logicalFirst, int logicalLast ) - - - sectionsMoved - sectionsMoved - () - - - setClickable - setClickable - ( bool clickable ) - - - setMovable - setMovable - ( bool movable ) - - - setOffset - setOffset - ( int offset ) - - - setResizeMode - setResizeMode - ( ResizeMode mode ) - - - setResizeMode - setResizeMode-2 - ( int logicalIndex, ResizeMode mode ) - - - setSectionHidden - setSectionHidden - ( int logicalIndex, bool hide ) - - - setSortIndicator - setSortIndicator - ( int logicalIndex, Qt::SortOrder order ) - - - showSection - showSection - ( int logicalIndex ) - - - sizeHint - sizeHint - () - - - SortOrder - sortIndicatorOrder - QHeaderView::sortIndicatorOrder() - - - sortIndicatorSection - sortIndicatorSection - () - - - verticalOffset - verticalOffset - () - - - visualIndex - visualIndex - ( int logicalIndex ) - - - visualIndexAt - visualIndexAt - ( int position ) - - - - QHideEvent - qhideevent.html - - QHideEvent - QHideEvent - () - - - ip4Addr - ip4Addr - () - - - isIPv4Address - isIPv4Address - () - - - isIPv6Address - isIPv6Address - () - - - isIp4Addr - isIp4Addr - () - - - - QHostAddress - qhostaddress.html - - SpecialAddress - SpecialAddress-enum - - - - QHostAddress - QHostAddress - () - - - QHostAddress - QHostAddress-2 - ( quint32 ip4Addr ) - - - QHostAddress - QHostAddress-3 - ( quint8 * ip6Addr ) - - - QHostAddress - QHostAddress-4 - ( const Q_IPV6ADDR & ip6Addr ) - - - QHostAddress - QHostAddress-5 - ( const QString & address ) - - - QHostAddress - QHostAddress-6 - ( const QHostAddress & address ) - - - QHostAddress - QHostAddress-7 - ( SpecialAddress address ) - - - clear - clear - () - - - isNull - isNull - () - - - NetworkLayerProtocol - protocol - QHostAddress::protocol() - - - setAddress - setAddress - ( quint32 ip4Addr ) - - - setAddress - setAddress-2 - ( quint8 * ip6Addr ) - - - setAddress - setAddress-3 - ( const Q_IPV6ADDR & ip6Addr ) - - - setAddress - setAddress-4 - ( const QString & address ) - - - toIPv4Address - toIPv4Address - () - - - toIPv6Address - toIPv6Address - () - - - toString - toString - () - - - operator= - operator-eq - ( const QHostAddress & address ) - - - operator== - operator-eq-eq - ( const QHostAddress & other ) - - - operator== - operator-eq-eq-2 - ( SpecialAddress other ) - - - - QHostInfo - qhostinfo.html - - HostInfoError - HostInfoError-enum - - - - QHostInfo - QHostInfo - ( int id = -1 ) - - - QHostInfo - QHostInfo-2 - ( const QHostInfo & other ) - - - abortHostLookup - abortHostLookup - ( int id ) - - - addresses - addresses - () - - - error - error - () - - - errorString - errorString - () - - - fromName - fromName - ( const QString & name ) - - - hostName - hostName - () - - - localHostName - localHostName - () - - - lookupHost - lookupHost - ( const QString & name, QObject * receiver, const char * member ) - - - lookupId - lookupId - () - - - setAddresses - setAddresses - ( const QList<QHostAddress> & addresses ) - - - setError - setError - ( HostInfoError error ) - - - setErrorString - setErrorString - ( const QString & str ) - - - setHostName - setHostName - ( const QString & hostName ) - - - setLookupId - setLookupId - ( int id ) - - - operator= - operator-eq - ( const QHostInfo & other ) - - - - QHoverEvent - qhoverevent.html - - QHoverEvent - QHoverEvent - ( Type type, const QPoint & pos, const QPoint & oldPos ) - - - oldPos - oldPos - () - - - pos - pos - () - - - closeConnection - closeConnection - () - - - readBlock - readBlock - ( char * data, quint64 maxlen ) - - - - QHttp - qhttp.html - - Error - Error-enum - - - - State - State-enum - - - - QHttp - QHttp - ( QObject * parent = 0 ) - - - QHttp - QHttp-2 - ( const QString & hostName, quint16 port = 80, QObject * parent = 0 ) - - - abort - abort - () - - - bytesAvailable - bytesAvailable - () - - - clearPendingRequests - clearPendingRequests - () - - - close - close - () - - - currentDestinationDevice - currentDestinationDevice - () - - - currentId - currentId - () - - - currentRequest - currentRequest - () - - - currentSourceDevice - currentSourceDevice - () - - - dataReadProgress - dataReadProgress - ( int done, int total ) - - - dataSendProgress - dataSendProgress - ( int done, int total ) - - - done - done - ( bool error ) - - - error - error - () - - - errorString - errorString - () - - - get - get - ( const QString & path, QIODevice * to = 0 ) - - - hasPendingRequests - hasPendingRequests - () - - - head - head - ( const QString & path ) - - - post - post - ( const QString & path, QIODevice * data, QIODevice * to = 0 ) - - - post - post-2 - ( const QString & path, const QByteArray & data, QIODevice * to = 0 ) - - - read - read - ( char * data, qint64 maxlen ) - - - readAll - readAll - () - - - readyRead - readyRead - ( const QHttpResponseHeader & resp ) - - - request - request - ( const QHttpRequestHeader & header, QIODevice * data = 0, QIODevice * to = 0 ) - - - request - request-2 - ( const QHttpRequestHeader & header, const QByteArray & data, QIODevice * to = 0 ) - - - requestFinished - requestFinished - ( int id, bool error ) - - - requestStarted - requestStarted - ( int id ) - - - responseHeaderReceived - responseHeaderReceived - ( const QHttpResponseHeader & resp ) - - - setHost - setHost - ( const QString & hostName, quint16 port = 80 ) - - - setProxy - setProxy - ( const QString & host, int port, const QString & username = QString() - - - setSocket - setSocket - ( QTcpSocket * socket ) - - - setUser - setUser - ( const QString & userName, const QString & password = QString() - - - state - state - () - - - stateChanged - stateChanged - ( int state ) - - - - QHttpHeader - qhttpheader.html - - QHttpHeader - QHttpHeader - () - - - QHttpHeader - QHttpHeader-2 - ( const QHttpHeader & header ) - - - QHttpHeader - QHttpHeader-3 - ( const QString & str ) - - - contentLength - contentLength - () - - - contentType - contentType - () - - - hasContentLength - hasContentLength - () - - - hasContentType - hasContentType - () - - - hasKey - hasKey - ( const QString & key ) - - - isValid - isValid - () - - - keys - keys - () - - - majorVersion - majorVersion - () - - - minorVersion - minorVersion - () - - - removeValue - removeValue - ( const QString & key ) - - - setContentLength - setContentLength - ( int len ) - - - setContentType - setContentType - ( const QString & type ) - - - setValue - setValue - ( const QString & key, const QString & value ) - - - toString - toString - () - - - value - value - ( const QString & key ) - - - operator= - operator-eq - ( const QHttpHeader & h ) - - - - QHttpRequestHeader - qhttprequestheader.html - - QHttpRequestHeader - QHttpRequestHeader - () - - - QHttpRequestHeader - QHttpRequestHeader-2 - ( const QString & method, const QString & path, int majorVer = 1, int minorVer = 1 ) - - - QHttpRequestHeader - QHttpRequestHeader-3 - ( const QHttpRequestHeader & header ) - - - QHttpRequestHeader - QHttpRequestHeader-4 - ( const QString & str ) - - - majorVersion - majorVersion - () - - - method - method - () - - - minorVersion - minorVersion - () - - - path - path - () - - - setRequest - setRequest - ( const QString & method, const QString & path, int majorVer = 1, int minorVer = 1 ) - - - operator= - operator-eq - ( const QHttpRequestHeader & header ) - - - - QHttpResponseHeader - qhttpresponseheader.html - - QHttpResponseHeader - QHttpResponseHeader-3 - () - - - QHttpResponseHeader - QHttpResponseHeader-4 - ( const QHttpResponseHeader & header ) - - - majorVersion - majorVersion - () - - - minorVersion - minorVersion - () - - - reasonPhrase - reasonPhrase - () - - - statusCode - statusCode - () - - - operator= - operator-eq - ( const QHttpResponseHeader & header ) - - - Size - Size-enum - - - - pixmap - pixmap-4 - ( Size size, Mode mode, State state = Off ) - - - pixmap - pixmap-5 - ( Size size, bool enabled, State state = Off ) - - - pixmap - pixmap-6 - () - - - pixmapSize - pixmapSize - ( Size which ) - - - reset - reset - ( const QPixmap & pixmap, Size size ) - - - setPixmap - setPixmap - ( const QPixmap & pixmap, Size size, Mode mode = Normal, State state = Off ) - - - setPixmap - setPixmap-2 - ( const QString & fileName, Size size, Mode mode = Normal, State state = Off ) - - - setPixmapSize - setPixmapSize - ( Size which, const QSize & size ) - - - - QIcon - qicon.html - - Mode - Mode-enum - - - - State - State-enum - - - - QIcon - QIcon - () - - - QIcon - QIcon-2 - ( const QPixmap & pixmap ) - - - QIcon - QIcon-3 - ( const QIcon & other ) - - - QIcon - QIcon-4 - ( const QString & fileName ) - - - QIcon - QIcon-5 - ( QIconEngine * engine ) - - - actualSize - actualSize - ( const QSize & size, Mode mode = Normal, State state = Off ) - - - addFile - addFile - ( const QString & fileName, const QSize & size = QSize() - - - addPixmap - addPixmap - ( const QPixmap & pixmap, Mode mode = Normal, State state = Off ) - - - isNull - isNull - () - - - paint - paint - ( QPainter * painter, const QRect & rect, Qt::Alignment alignment = Qt::AlignCenter, Mode mode = Normal, State state = Off ) - - - paint - paint-2 - ( QPainter * painter, int x, int y, int w, int h, Qt::Alignment alignment = Qt::AlignCenter, Mode mode = Normal, State state = Off ) - - - pixmap - pixmap - ( const QSize & size, Mode mode = Normal, State state = Off ) - - - pixmap - pixmap-2 - ( int w, int h, Mode mode = Normal, State state = Off ) - - - pixmap - pixmap-3 - ( int extent, Mode mode = Normal, State state = Off ) - - - serialNumber - serialNumber - () - - - operator - operator-QVariant - QVariant() - - - operator= - operator-eq - ( const QIcon & other ) - - - - QIconDragEvent - qicondragevent.html - - QIconDragEvent - QIconDragEvent - () - - - - QIconEngine - qiconengine.html - - actualSize - actualSize - ( const QSize & size, QIcon::Mode mode, QIcon::State state ) - - - addFile - addFile - ( const QString & fileName, const QSize & size, QIcon::Mode mode, QIcon::State state ) - - - addPixmap - addPixmap - ( const QPixmap & pixmap, QIcon::Mode mode, QIcon::State state ) - - - paint - paint - ( QPainter * painter, const QRect & rect, QIcon::Mode mode, QIcon::State state ) - - - pixmap - pixmap - ( const QSize & size, QIcon::Mode mode, QIcon::State state ) - - - - QIconEnginePlugin - qiconengineplugin.html - - QIconEnginePlugin - QIconEnginePlugin - ( QObject * parent = 0 ) - - - create - create - ( const QString & filename ) - - - keys - keys - () - - - QImage - QImage-9 - ( int w, int h, int depth, int numColors = 0, Endian bitOrder = IgnoreEndian ) - - - QImage - QImage-10 - ( const QSize & size, int depth, int numColors = 0, Endian bitOrder = IgnoreEndian ) - - - QImage - QImage-11 - ( uchar * data, int w, int h, int depth, const QRgb * colortable, int numColors, Endian bitOrder ) - - - QImage - QImage-12 - ( uchar * data, int w, int h, int depth, int bpl, const QRgb * colortable, int numColors, Endian bitOrder ) - - - QImage - QImage-13 - ( const QByteArray & data ) - - - bitOrder - bitOrder - () - - - convertBitOrder - convertBitOrder - ( Endian bitOrder ) - - - convertDepth - convertDepth - ( int depth, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - convertDepthWithPalette - convertDepthWithPalette - ( int d, QRgb * palette, int palette_count, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - copy - copy - ( int x, int y, int w, int h, Qt::ImageConversionFlags flags ) - - - copy - copy-2 - ( const QRect & rect, Qt::ImageConversionFlags flags ) - - - create - create - ( int width, int height, int depth, int numColors = 0, Endian bitOrder = IgnoreEndian ) - - - create - create-2 - ( const QSize & size, int depth, int numColors = 0, Endian bitOrder = IgnoreEndian ) - - - hasAlphaBuffer - hasAlphaBuffer - () - - - invertPixels - invertPixels-2 - ( bool invertAlpha ) - - - jumpTable - jumpTable - () - - - jumpTable - jumpTable-2 - () - - - mirror - mirror - ( bool horizontal = false, bool vertical = true ) - - - reset - reset - () - - - scaleHeight - scaleHeight - ( int h ) - - - scaleWidth - scaleWidth - ( int w ) - - - setAlphaBuffer - setAlphaBuffer - ( bool enable ) - - - smoothScale - smoothScale - ( int width, int height, Qt::AspectRatioMode mode = Qt::IgnoreAspectRatio ) - - - smoothScale - smoothScale-2 - ( const QSize & size, Qt::AspectRatioMode mode = Qt::IgnoreAspectRatio ) - - - swapRGB - swapRGB - () - - - systemBitOrder - systemBitOrder - () - - - systemByteOrder - systemByteOrder - () - - - xForm - xForm - ( const QMatrix & matrix ) - - - ImageConversionFlags - bitBlt - flags = Qt::AutoColor ) - - - - QImage - qimage.html - - Endian - Endian-enum - - - - Format - Format-enum - - - - InvertMode - InvertMode-enum - - - - QImage - QImage - () - - - QImage - QImage-2 - ( const QSize & size, Format format ) - - - QImage - QImage-3 - ( int width, int height, Format format ) - - - QImage - QImage-4 - ( uchar * data, int width, int height, Format format ) - - - QImage - QImage-5 - ( const char * const[] xpm ) - - - QImage - QImage-6 - ( const QString & fileName, const char * format = 0 ) - - - QImage - QImage-7 - ( const char * fileName, const char * format = 0 ) - - - QImage - QImage-8 - ( const QImage & image ) - - - allGray - allGray - () - - - alphaChannel - alphaChannel - () - - - bits - bits - () - - - bits - bits-2 - () - - - bytesPerLine - bytesPerLine - () - - - color - color - ( int i ) - - - colorTable - colorTable - () - - - convertToFormat - convertToFormat - ( Format format, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - convertToFormat - convertToFormat-2 - ( Format format, const QVector<QRgb> & colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - copy - copy-3 - ( int x, int y, int w, int h ) - - - copy - copy-4 - ( const QRect & r = QRect() - - - createAlphaMask - createAlphaMask - ( Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - createHeuristicMask - createHeuristicMask - ( bool clipTight = true ) - - - depth - depth - () - - - detach - detach - () - - - dotsPerMeterX - dotsPerMeterX - () - - - dotsPerMeterY - dotsPerMeterY - () - - - fill - fill - ( uint pixel ) - - - format - format - () - - - fromData - fromData - ( const uchar * data, int size, const char * format = 0 ) - - - fromData - fromData-2 - ( const QByteArray & data, const char * format = 0 ) - - - hasAlphaChannel - hasAlphaChannel - () - - - height - height - () - - - invertPixels - invertPixels - ( InvertMode mode = InvertRgb ) - - - isDetached - isDetached - () - - - isGrayscale - isGrayscale - () - - - isNull - isNull - () - - - load - load - ( const QString & fileName, const char * format = 0 ) - - - loadFromData - loadFromData - ( const uchar * data, int len, const char * format = 0 ) - - - loadFromData - loadFromData-2 - ( const QByteArray & data, const char * format = 0 ) - - - metric - metric - ( PaintDeviceMetric metric ) - - - mirrored - mirrored - ( bool horizontal = false, bool vertical = true ) - - - numBytes - numBytes - () - - - numColors - numColors - () - - - offset - offset - () - - - pixel - pixel - ( int x, int y ) - - - pixelIndex - pixelIndex - ( int x, int y ) - - - rect - rect - () - - - rgbSwapped - rgbSwapped - () - - - save - save - ( const QString & fileName, const char * format, int quality = -1 ) - - - save - save-2 - ( QIODevice * device, const char * format, int quality = -1 ) - - - scaled - scaled - ( int w, int h, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation ) - - - scaled - scaled-2 - ( const QSize & size, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation ) - - - scaledToHeight - scaledToHeight - ( int h, Qt::TransformationMode mode = Qt::FastTransformation ) - - - scaledToWidth - scaledToWidth - ( int w, Qt::TransformationMode mode = Qt::FastTransformation ) - - - scanLine - scanLine - ( int i ) - - - scanLine - scanLine-2 - ( int i ) - - - serialNumber - serialNumber - () - - - setAlphaChannel - setAlphaChannel - ( const QImage & alphaChannel ) - - - setColor - setColor - ( int i, QRgb c ) - - - setColorTable - setColorTable - ( const QVector<QRgb> colors ) - - - setDotsPerMeterX - setDotsPerMeterX - ( int x ) - - - setDotsPerMeterY - setDotsPerMeterY - ( int y ) - - - setNumColors - setNumColors - ( int numColors ) - - - setOffset - setOffset - ( const QPoint & p ) - - - setPixel - setPixel - ( int x, int y, uint index_or_rgb ) - - - setText - setText - ( const char * key, const char * lang, const QString & s ) - - - size - size - () - - - text - text - ( const char * key, const char * lang = 0 ) - - - text - text-2 - ( const QImageTextKeyLang & kl ) - - - textKeys - textKeys - () - - - textLanguages - textLanguages - () - - - textList - textList - () - - - transformed - transformed - ( const QMatrix & matrix, Qt::TransformationMode mode = Qt::FastTransformation ) - - - trueMatrix - trueMatrix - ( const QMatrix & matrix, int w, int h ) - - - valid - valid - ( int x, int y ) - - - width - width - () - - - operator - operator-QVariant - QVariant() - - - operator!= - operator-not-eq - ( const QImage & i ) - - - operator= - operator-eq - ( const QImage & image ) - - - operator== - operator-eq-eq - ( const QImage & i ) - - - - QImageIOHandler - qimageiohandler.html - - ImageOption - ImageOption-enum - - - - QImageIOHandler - QImageIOHandler - () - - - canRead - canRead - () - - - currentImageNumber - currentImageNumber - () - - - currentImageRect - currentImageRect - () - - - device - device - () - - - format - format - () - - - imageCount - imageCount - () - - - jumpToImage - jumpToImage - ( int imageNumber ) - - - jumpToNextImage - jumpToNextImage - () - - - loopCount - loopCount - () - - - name - name - () - - - nextImageDelay - nextImageDelay - () - - - option - option - ( ImageOption option ) - - - read - read - ( QImage * image ) - - - setDevice - setDevice - ( QIODevice * device ) - - - setFormat - setFormat - ( const QByteArray & format ) - - - setOption - setOption - ( ImageOption option, const QVariant & value ) - - - supportsOption - supportsOption - ( ImageOption option ) - - - write - write - ( const QImage & image ) - - - - QImageIOHandlerFactoryInterface - qimageiohandlerfactoryinterface.html - - create - create - ( QIODevice * device, const QByteArray & format = QByteArray() - - - - QImageIOPlugin - qimageioplugin.html - - QImageIOPlugin - QImageIOPlugin - ( QObject * parent = 0 ) - - - capabilities - capabilities - ( QIODevice * device, const QByteArray & format ) - - - - QImageReader - qimagereader.html - - ImageReaderError - ImageReaderError-enum - - - - QImageReader - QImageReader - () - - - QImageReader - QImageReader-2 - ( QIODevice * device, const QByteArray & format = QByteArray() - - - QImageReader - QImageReader-3 - ( const QString & fileName, const QByteArray & format = QByteArray() - - - canRead - canRead - () - - - clipRect - clipRect - () - - - currentImageNumber - currentImageNumber - () - - - currentImageRect - currentImageRect - () - - - device - device - () - - - error - error - () - - - errorString - errorString - () - - - fileName - fileName - () - - - format - format - () - - - imageCount - imageCount - () - - - imageFormat - imageFormat - ( const QString & fileName ) - - - imageFormat - imageFormat-2 - ( QIODevice * device ) - - - jumpToImage - jumpToImage - ( int imageNumber ) - - - jumpToNextImage - jumpToNextImage - () - - - loopCount - loopCount - () - - - nextImageDelay - nextImageDelay - () - - - read - read - () - - - scaledClipRect - scaledClipRect - () - - - scaledSize - scaledSize - () - - - setClipRect - setClipRect - ( const QRect & rect ) - - - setDevice - setDevice - ( QIODevice * device ) - - - setFileName - setFileName - ( const QString & fileName ) - - - setFormat - setFormat - ( const QByteArray & format ) - - - setScaledClipRect - setScaledClipRect - ( const QRect & rect ) - - - setScaledSize - setScaledSize - ( const QSize & size ) - - - size - size - () - - - supportedImageFormats - supportedImageFormats - () - - - - QImageWriter - qimagewriter.html - - ImageWriterError - ImageWriterError-enum - - - - QImageWriter - QImageWriter - () - - - QImageWriter - QImageWriter-2 - ( QIODevice * device, const QByteArray & format ) - - - QImageWriter - QImageWriter-3 - ( const QString & fileName, const QByteArray & format = QByteArray() - - - canWrite - canWrite - () - - - description - description - () - - - device - device - () - - - error - error - () - - - errorString - errorString - () - - - fileName - fileName - () - - - format - format - () - - - gamma - gamma - () - - - quality - quality - () - - - setDescription - setDescription - ( const QString & description ) - - - setDevice - setDevice - ( QIODevice * device ) - - - setFileName - setFileName - ( const QString & fileName ) - - - setFormat - setFormat - ( const QByteArray & format ) - - - setGamma - setGamma - ( float gamma ) - - - setQuality - setQuality - ( int quality ) - - - supportedImageFormats - supportedImageFormats - () - - - write - write - ( const QImage & image ) - - - - QInputContext - qinputcontext.html - - StandardFormat - StandardFormat-enum - - - - QInputContext - QInputContext - ( QObject * parent = 0 ) - - - actions - actions - () - - - filterEvent - filterEvent - ( const QEvent * event ) - - - font - font - () - - - identifierName - identifierName - () - - - isComposing - isComposing - () - - - language - language - () - - - mouseHandler - mouseHandler - ( int x, QMouseEvent * event ) - - - reset - reset - () - - - sendEvent - sendEvent - ( const QInputMethodEvent & event ) - - - standardFormat - standardFormat - ( StandardFormat s ) - - - update - update - () - - - widgetDestroyed - widgetDestroyed - ( QWidget * widget ) - - - x11FilterEvent - x11FilterEvent - ( QWidget * keywidget, XEvent * event ) - - - - QInputContextPlugin - qinputcontextplugin.html - - QInputContextPlugin - QInputContextPlugin - ( QObject * parent = 0 ) - - - create - create - ( const QString & key ) - - - description - description - ( const QString & key ) - - - displayName - displayName - ( const QString & key ) - - - keys - keys - () - - - languages - languages - ( const QString & key ) - - - getDouble - getDouble-2 - ( const QString & title, const QString & label, double value = 0, double minValue = -2147483647, double maxValue = 2147483647, int decimals = 1, bool * ok = 0, QWidget * parent = 0, const char * = 0, Qt::WFlags f = 0 ) - - - getInteger - getInteger-2 - ( const QString & title, const QString & label, int value = 0, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, bool * ok = 0, QWidget * parent = 0, const char * = 0, Qt::WFlags f = 0 ) - - - getItem - getItem-2 - ( const QString & title, const QString & label, const QStringList & list, int current = 0, bool editable = true, bool * ok = 0, QWidget * parent = 0, const char * = 0, Qt::WFlags f = 0 ) - - - getText - getText-2 - ( const QString & title, const QString & label, QLineEdit::EchoMode echo = QLineEdit::Normal, const QString & text = QString() - - - - QInputDialog - qinputdialog.html - - getDouble - getDouble - ( QWidget * parent, const QString & title, const QString & label, double value = 0, double minValue = -2147483647, double maxValue = 2147483647, int decimals = 1, bool * ok = 0, Qt::WFlags f = 0 ) - - - getInteger - getInteger - ( QWidget * parent, const QString & title, const QString & label, int value = 0, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, bool * ok = 0, Qt::WFlags f = 0 ) - - - getItem - getItem - ( QWidget * parent, const QString & title, const QString & label, const QStringList & list, int current = 0, bool editable = true, bool * ok = 0, Qt::WFlags f = 0 ) - - - getText - getText - ( QWidget * parent, const QString & title, const QString & label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString & text = QString() - - - - QInputEvent - qinputevent.html - - KeyboardModifiers - modifiers - QInputEvent::modifiers() - - - - QInputMethodEvent::Attribute - qinputmethodevent-attribute.html - - Attribute - Attribute - ( AttributeType type, int start, int length, QVariant value ) - - - - QInputMethodEvent - qinputmethodevent.html - - AttributeType - AttributeType-enum - - - - QInputMethodEvent - QInputMethodEvent - () - - - QInputMethodEvent - QInputMethodEvent-2 - ( const QString & preeditText, const QList<Attribute> & attributes ) - - - QInputMethodEvent - QInputMethodEvent-3 - ( const QInputMethodEvent & other ) - - - attributes - attributes - () - - - commitString - commitString - () - - - preeditString - preeditString - () - - - replacementLength - replacementLength - () - - - replacementStart - replacementStart - () - - - setCommitString - setCommitString - ( const QString & commitString, int replaceFrom = 0, int replaceLength = 0 ) - - - QIntValidator - QIntValidator-3 - ( QObject * parent, const char * name ) - - - QIntValidator - QIntValidator-4 - ( int minimum, int maximum, QObject * parent, const char * name ) - - - - QIntValidator - qintvalidator.html - - QIntValidator - QIntValidator - ( QObject * parent ) - - - QIntValidator - QIntValidator-2 - ( int minimum, int maximum, QObject * parent ) - - - setRange - setRange - ( int bottom, int top ) - - - State - validate - QIntValidator::validate( QString & input, int & pos ) - - - Offset - Offset-typedef - - - - Status - Status-typedef - - - - at - at - () - - - at - at-2 - ( Offset offset ) - - - flags - flags - () - - - getch - getch - () - - - isAsynchronous - isAsynchronous - () - - - isBuffered - isBuffered - () - - - isCombinedAccess - isCombinedAccess - () - - - isDirectAccess - isDirectAccess - () - - - isInactive - isInactive - () - - - isRaw - isRaw - () - - - isSequentialAccess - isSequentialAccess - () - - - isSynchronous - isSynchronous - () - - - isTranslated - isTranslated - () - - - mode - mode - () - - - putch - putch - ( int ch ) - - - readBlock - readBlock - ( char * data, quint64 size ) - - - resetStatus - resetStatus - () - - - state - state - () - - - status - status - () - - - ungetch - ungetch - ( int ch ) - - - writeBlock - writeBlock - ( const char * data, quint64 size ) - - - writeBlock - writeBlock-2 - ( const QByteArray & data ) - - - - QIODevice - qiodevice.html - - QIODevice - QIODevice - () - - - QIODevice - QIODevice-2 - ( QObject * parent ) - - - aboutToClose - aboutToClose - () - - - atEnd - atEnd - () - - - bytesAvailable - bytesAvailable - () - - - bytesToWrite - bytesToWrite - () - - - bytesWritten - bytesWritten - ( qint64 bytes ) - - - canReadLine - canReadLine - () - - - close - close - () - - - errorString - errorString - () - - - flush - flush - () - - - getChar - getChar - ( char * c ) - - - isOpen - isOpen - () - - - isReadable - isReadable - () - - - isSequential - isSequential - () - - - isTextModeEnabled - isTextModeEnabled - () - - - isWritable - isWritable - () - - - open - open - ( OpenMode mode ) - - - openMode - openMode - () - - - pos - pos - () - - - putChar - putChar - ( char c ) - - - read - read - ( char * data, qint64 maxSize ) - - - read - read-2 - ( qint64 maxSize ) - - - readAll - readAll - () - - - readData - readData - ( char * data, qint64 maxSize ) - - - readLine - readLine - ( char * data, qint64 maxSize ) - - - readLine - readLine-2 - ( qint64 maxSize = 0 ) - - - readLineData - readLineData - ( char * data, qint64 maxSize ) - - - readyRead - readyRead - () - - - reset - reset - () - - - seek - seek - ( qint64 pos ) - - - setErrorString - setErrorString - ( const QString & str ) - - - setOpenMode - setOpenMode - ( OpenMode openMode ) - - - setTextModeEnabled - setTextModeEnabled - ( bool enabled ) - - - size - size - () - - - ungetChar - ungetChar - ( char c ) - - - waitForBytesWritten - waitForBytesWritten - ( int msecs ) - - - waitForReadyRead - waitForReadyRead - ( int msecs ) - - - write - write - ( const char * data, qint64 maxSize ) - - - write - write-2 - ( const QByteArray & byteArray ) - - - writeData - writeData - ( const char * data, qint64 maxSize ) - - - - QItemDelegate - qitemdelegate.html - - QItemDelegate - QItemDelegate - ( QObject * parent = 0 ) - - - createEditor - createEditor - ( QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index ) - - - drawCheck - drawCheck - ( QPainter * painter, const QStyleOptionViewItem & option, const QRect & rect, Qt::CheckState state ) - - - drawDecoration - drawDecoration - ( QPainter * painter, const QStyleOptionViewItem & option, const QRect & rect, const QPixmap & pixmap ) - - - drawDisplay - drawDisplay - ( QPainter * painter, const QStyleOptionViewItem & option, const QRect & rect, const QString & text ) - - - drawFocus - drawFocus - ( QPainter * painter, const QStyleOptionViewItem & option, const QRect & rect ) - - - eventFilter - eventFilter - ( QObject * object, QEvent * event ) - - - itemEditorFactory - itemEditorFactory - () - - - paint - paint - ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) - - - setEditorData - setEditorData - ( QWidget * editor, const QModelIndex & index ) - - - setItemEditorFactory - setItemEditorFactory - ( QItemEditorFactory * factory ) - - - setModelData - setModelData - ( QWidget * editor, QAbstractItemModel * model, const QModelIndex & index ) - - - sizeHint - sizeHint - ( const QStyleOptionViewItem & option, const QModelIndex & index ) - - - updateEditorGeometry - updateEditorGeometry - ( QWidget * editor, const QStyleOptionViewItem & option, const QModelIndex & index ) - - - - QItemEditorFactory - qitemeditorfactory.html - - QItemEditorFactory - QItemEditorFactory - () - - - createEditor - createEditor - ( QVariant::Type type, QWidget * parent ) - - - defaultFactory - defaultFactory - () - - - registerEditor - registerEditor - ( QVariant::Type type, QItemEditorCreatorBase * creator ) - - - setDefaultFactory - setDefaultFactory - ( QItemEditorFactory * factory ) - - - valuePropertyName - valuePropertyName - ( QVariant::Type type ) - - - - QItemSelection - qitemselection.html - - QItemSelection - QItemSelection - () - - - QItemSelection - QItemSelection-2 - ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) - - - contains - contains - ( const QModelIndex & index ) - - - indexes - indexes - () - - - merge - merge - ( const QItemSelection & other, QItemSelectionModel::SelectionFlags command ) - - - select - select - ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) - - - split - split - ( const QItemSelectionRange & range, const QItemSelectionRange & other, QItemSelection * result ) - - - - QItemSelectionModel - qitemselectionmodel.html - - QItemSelectionModel - QItemSelectionModel - ( QAbstractItemModel * model ) - - - clear - clear - () - - - columnIntersectsSelection - columnIntersectsSelection - ( int column, const QModelIndex & parent ) - - - currentChanged - currentChanged - ( const QModelIndex & current, const QModelIndex & previous ) - - - currentColumnChanged - currentColumnChanged - ( const QModelIndex & current, const QModelIndex & previous ) - - - currentIndex - currentIndex - () - - - currentRowChanged - currentRowChanged - ( const QModelIndex & current, const QModelIndex & previous ) - - - emitSelectionChanged - emitSelectionChanged - ( const QItemSelection & newSelection, const QItemSelection & oldSelection ) - - - isColumnSelected - isColumnSelected - ( int column, const QModelIndex & parent ) - - - isRowSelected - isRowSelected - ( int row, const QModelIndex & parent ) - - - isSelected - isSelected - ( const QModelIndex & index ) - - - model - model - () - - - reset - reset - () - - - rowIntersectsSelection - rowIntersectsSelection - ( int row, const QModelIndex & parent ) - - - select - select - ( const QModelIndex & index, SelectionFlags command ) - - - select - select-2 - ( const QItemSelection & selection, SelectionFlags command ) - - - selectedIndexes - selectedIndexes - () - - - selection - selection - () - - - selectionChanged - selectionChanged - ( const QItemSelection & selected, const QItemSelection & deselected ) - - - setCurrentIndex - setCurrentIndex - ( const QModelIndex & index, SelectionFlags command ) - - - - QItemSelectionRange - qitemselectionrange.html - - QItemSelectionRange - QItemSelectionRange - () - - - QItemSelectionRange - QItemSelectionRange-2 - ( const QItemSelectionRange & other ) - - - QItemSelectionRange - QItemSelectionRange-3 - ( const QModelIndex & parent, const QModelIndex & index ) - - - QItemSelectionRange - QItemSelectionRange-4 - ( const QModelIndex & index ) - - - bottom - bottom - () - - - bottomRight - bottomRight - () - - - contains - contains - ( const QModelIndex & index ) - - - height - height - () - - - indexes - indexes - () - - - intersect - intersect - ( const QItemSelectionRange & other ) - - - intersects - intersects - ( const QItemSelectionRange & other ) - - - isValid - isValid - () - - - left - left - () - - - model - model - () - - - parent - parent - () - - - right - right - () - - - top - top - () - - - topLeft - topLeft - () - - - width - width - () - - - operator!= - operator-not-eq - ( const QItemSelectionRange & other ) - - - operator== - operator-eq-eq - ( const QItemSelectionRange & other ) - - - - QKbdDriverFactory - qkbddriverfactory.html - - create - create - ( const QString & key, const QString & device ) - - - keys - keys - () - - - - QKbdDriverPlugin - qkbddriverplugin.html - - QKbdDriverPlugin - QKbdDriverPlugin - ( QObject * parent = 0 ) - - - create - create - ( const QString & driver, const QString & device ) - - - keys - keys - () - - - QKeyEvent - QKeyEvent-2 - ( Type type, int key, int ascii, int modifiers, const QString & text = QString() - - - ascii - ascii - () - - - ButtonState - state - QKeyEvent::state() - - - ButtonState - stateAfter - QKeyEvent::stateAfter() - - - - QKeyEvent - qkeyevent.html - - QKeyEvent - QKeyEvent - ( Type type, int key, Qt::KeyboardModifiers modifiers, const QString & text = QString() - - - count - count - () - - - isAutoRepeat - isAutoRepeat - () - - - key - key - () - - - KeyboardModifiers - modifiers - QKeyEvent::modifiers() - - - text - text - () - - - operator - operator-int - int() - - - - QKeySequence - qkeysequence.html - - SequenceMatch - SequenceMatch-enum - - - - QKeySequence - QKeySequence - () - - - QKeySequence - QKeySequence-2 - ( const QString & key ) - - - QKeySequence - QKeySequence-3 - ( int k1, int k2 = 0, int k3 = 0, int k4 = 0 ) - - - QKeySequence - QKeySequence-4 - ( const QKeySequence & keysequence ) - - - count - count - () - - - isEmpty - isEmpty - () - - - matches - matches - ( const QKeySequence & seq ) - - - mnemonic - mnemonic - ( const QString & text ) - - - operator - operator-QString - QString() - - - operator - operator-QVariant - QVariant() - - - operator!= - operator-not-eq - ( const QKeySequence & other ) - - - operator< - operator-lt - ( const QKeySequence & other ) - - - operator<= - operator-lt-eq - ( const QKeySequence & other ) - - - operator= - operator-eq - ( const QKeySequence & other ) - - - operator== - operator-eq-eq - ( const QKeySequence & other ) - - - operator> - operator-gt - ( const QKeySequence & other ) - - - operator>= - operator-gt-eq - ( const QKeySequence & other ) - - - operator[] - operator-5b-5d - ( uint index ) - - - QLabel - QLabel-3 - ( QWidget * parent, const char * name, Qt::WFlags f = 0 ) - - - QLabel - QLabel-4 - ( const QString & text, QWidget * parent, const char * name, Qt::WFlags f = 0 ) - - - QLabel - QLabel-5 - ( QWidget * buddy, const QString & text, QWidget * parent = 0, const char * name = 0, Qt::WFlags f = 0 ) - - - setAlignment - setAlignment-2 - ( int alignment ) - - - - QLabel - qlabel.html - - Alignment - alignment - - - - TextFormat - textFormat - - - - QLabel - QLabel - ( QWidget * parent = 0, Qt::WFlags f = 0 ) - - - QLabel - QLabel-2 - ( const QString & text, QWidget * parent = 0, Qt::WFlags f = 0 ) - - - buddy - buddy - () - - - clear - clear - () - - - movie - movie - () - - - picture - picture - () - - - setBuddy - setBuddy - ( QWidget * buddy ) - - - setMovie - setMovie - ( QMovie * movie ) - - - setNum - setNum - ( int num ) - - - setNum - setNum-2 - ( double num ) - - - setPicture - setPicture - ( const QPicture & picture ) - - - - QLatin1Char - qlatin1char.html - - QLatin1Char - QLatin1Char - ( char c ) - - - toLatin1 - toLatin1 - () - - - unicode - unicode - () - - - - QLatin1String - qlatin1string.html - - QLatin1String - QLatin1String - ( const char * str ) - - - latin1 - latin1 - () - - - operator!= - operator-not-eq - ( const QString & other ) - - - operator< - operator-lt - ( const QString & other ) - - - operator<= - operator-lt-eq - ( const QString & other ) - - - operator== - operator-eq-eq - ( const QString & other ) - - - operator> - operator-gt - ( const QString & other ) - - - operator>= - operator-gt-eq - ( const QString & other ) - - - QLayout - QLayout-4 - ( QWidget * parent, int margin, int spacing = -1, const char * name = 0 ) - - - QLayout - QLayout-5 - ( QLayout * parentLayout, int spacing = -1, const char * name = 0 ) - - - QLayout - QLayout-6 - ( int spacing, const char * name = 0 ) - - - add - add - ( QWidget * w ) - - - autoAdd - autoAdd - () - - - defaultBorder - defaultBorder - () - - - deleteAllItems - deleteAllItems - () - - - freeze - freeze - ( int w = 0, int h = 0 ) - - - isTopLevel - isTopLevel - () - - - iterator - iterator - () - - - mainWidget - mainWidget - () - - - remove - remove - ( QWidget * w ) - - - resizeMode - resizeMode - () - - - setAutoAdd - setAutoAdd - ( bool a ) - - - setResizeMode - setResizeMode - ( SizeConstraint constraint ) - - - - QLayout - qlayout.html - - SizeConstraint - SizeConstraint-enum - - - - QLayout - QLayout - ( QWidget * parent ) - - - QLayout - QLayout-2 - () - - - activate - activate - () - - - addChildLayout - addChildLayout - ( QLayout * l ) - - - addChildWidget - addChildWidget - ( QWidget * w ) - - - addItem - addItem - ( QLayoutItem * item ) - - - addWidget - addWidget - ( QWidget * w ) - - - alignmentRect - alignmentRect - ( const QRect & r ) - - - closestAcceptableSize - closestAcceptableSize - ( const QWidget * w, QSize s ) - - - count - count - () - - - Orientations - expandingDirections - QLayout::expandingDirections() - - - indexOf - indexOf - ( QWidget * w ) - - - invalidate - invalidate - () - - - isEmpty - isEmpty - () - - - isEnabled - isEnabled - () - - - itemAt - itemAt - ( int index ) - - - maximumSize - maximumSize - () - - - menuBar - menuBar - () - - - minimumSize - minimumSize - () - - - parentWidget - parentWidget - () - - - removeItem - removeItem - ( QLayoutItem * item ) - - - removeWidget - removeWidget - ( QWidget * widget ) - - - setAlignment - setAlignment - ( QWidget * w, Qt::Alignment alignment ) - - - setAlignment - setAlignment-2 - ( QLayout * l, Qt::Alignment alignment ) - - - setEnabled - setEnabled - ( bool enable ) - - - setGeometry - setGeometry - ( const QRect & r ) - - - setMenuBar - setMenuBar - ( QWidget * w ) - - - takeAt - takeAt - ( int index ) - - - update - update - () - - - - QLayoutItem - qlayoutitem.html - - QLayoutItem - QLayoutItem - ( Qt::Alignment alignment = 0 ) - - - Alignment - alignment - QLayoutItem::alignment() - - - Orientations - expandingDirections - QLayoutItem::expandingDirections() - - - geometry - geometry - () - - - hasHeightForWidth - hasHeightForWidth - () - - - heightForWidth - heightForWidth - ( int w ) - - - invalidate - invalidate - () - - - isEmpty - isEmpty - () - - - layout - layout - () - - - maximumSize - maximumSize - () - - - minimumHeightForWidth - minimumHeightForWidth - ( int w ) - - - minimumSize - minimumSize - () - - - setAlignment - setAlignment - ( Qt::Alignment alignment ) - - - setGeometry - setGeometry - ( const QRect & r ) - - - sizeHint - sizeHint - () - - - spacerItem - spacerItem - () - - - widget - widget - () - - - QLCDNumber - QLCDNumber-3 - ( QWidget * parent, const char * name ) - - - QLCDNumber - QLCDNumber-4 - ( uint numDigits, QWidget * parent, const char * name ) - - - - QLCDNumber - qlcdnumber.html - - Mode - Mode-enum - - - - SegmentStyle - SegmentStyle-enum - - - - QLCDNumber - QLCDNumber - ( QWidget * parent = 0 ) - - - QLCDNumber - QLCDNumber-2 - ( uint numDigits, QWidget * parent = 0 ) - - - checkOverflow - checkOverflow - ( double num ) - - - checkOverflow - checkOverflow-2 - ( int num ) - - - overflow - overflow - () - - - setBinMode - setBinMode - () - - - setDecMode - setDecMode - () - - - setHexMode - setHexMode - () - - - setOctMode - setOctMode - () - - - library - library - () - - - setAutoUnload - setAutoUnload - ( bool b ) - - - - QLibrary - qlibrary.html - - QLibrary - QLibrary - ( QObject * parent = 0 ) - - - QLibrary - QLibrary-2 - ( const QString & fileName, QObject * parent = 0 ) - - - isLoaded - isLoaded - () - - - load - load - () - - - resolve - resolve - ( const char * symbol ) - - - resolve - resolve-2 - ( const QString & fileName, const char * symbol ) - - - unload - unload - () - - - - QLibraryInfo - qlibraryinfo.html - - LibraryLocation - LibraryLocation-enum - - - - buildKey - buildKey - () - - - configuration - configuration - () - - - licensedProducts - licensedProducts - () - - - licensee - licensee - () - - - location - location - ( LibraryLocation loc ) - - - - QLine - qline.html - - QLine - QLine - () - - - QLine - QLine-2 - ( const QPoint & pt1, const QPoint & pt2 ) - - - QLine - QLine-3 - ( int x1, int y1, int x2, int y2 ) - - - dx - dx - () - - - dy - dy - () - - - isNull - isNull - () - - - p1 - p1 - () - - - p2 - p2 - () - - - translate - translate - ( const QPoint & point ) - - - translate - translate-2 - ( int dx, int dy ) - - - x1 - x1 - () - - - x2 - x2 - () - - - y1 - y1 - () - - - y2 - y2 - () - - - operator!= - operator-not-eq - ( const QLine & d ) - - - operator== - operator-eq-eq - ( const QLine & other ) - - - - QLinearGradient - qlineargradient.html - - QLinearGradient - QLinearGradient - ( const QPointF & start, const QPointF & finalStop ) - - - QLinearGradient - QLinearGradient-2 - ( qreal xStart, qreal yStart, qreal xFinalStop, qreal yFinalStop ) - - - finalStop - finalStop - () - - - start - start - () - - - QLineEdit - QLineEdit-3 - ( QWidget * parent, const char * name ) - - - QLineEdit - QLineEdit-4 - ( const QString & contents, QWidget * parent, const char * name ) - - - QLineEdit - QLineEdit-5 - ( const QString & contents, const QString & inputMask, QWidget * parent = 0, const char * name = 0 ) - - - characterAt - characterAt - ( int xpos, QChar * chr ) - - - clearModified - clearModified - () - - - clearValidator - clearValidator - () - - - cursorLeft - cursorLeft - ( bool mark, int steps = 1 ) - - - cursorRight - cursorRight - ( bool mark, int steps = 1 ) - - - edited - edited - () - - - frame - frame - () - - - getSelection - getSelection - ( int * start, int * end ) - - - hasMarkedText - hasMarkedText - () - - - lostFocus - lostFocus - () - - - markedText - markedText - () - - - repaintArea - repaintArea - ( int a, int b ) - - - setEdited - setEdited - ( bool on ) - - - validateAndSet - validateAndSet - ( const QString & newText, int newPos, int newMarkAnchor, int newMarkDrag ) - - - - QLineEdit - qlineedit.html - - EchoMode - EchoMode-enum - - - - Alignment - alignment - - - - QLineEdit - QLineEdit - ( QWidget * parent = 0 ) - - - QLineEdit - QLineEdit-2 - ( const QString & contents, QWidget * parent = 0 ) - - - backspace - backspace - () - - - clear - clear - () - - - contextMenuEvent - contextMenuEvent - ( QContextMenuEvent * e ) - - - copy - copy - () - - - createStandardContextMenu - createStandardContextMenu - () - - - cursorBackward - cursorBackward - ( bool mark, int steps = 1 ) - - - cursorForward - cursorForward - ( bool mark, int steps = 1 ) - - - cursorPositionAt - cursorPositionAt - ( const QPoint & pos ) - - - cursorPositionChanged - cursorPositionChanged - ( int old, int new ) - - - cursorWordBackward - cursorWordBackward - ( bool mark ) - - - cursorWordForward - cursorWordForward - ( bool mark ) - - - cut - cut - () - - - del - del - () - - - deselect - deselect - () - - - editingFinished - editingFinished - () - - - end - end - ( bool mark ) - - - home - home - ( bool mark ) - - - insert - insert - ( const QString & newText ) - - - keyPressEvent - keyPressEvent - ( QKeyEvent * e ) - - - minimumSizeHint - minimumSizeHint - () - - - paste - paste - () - - - redo - redo - () - - - returnPressed - returnPressed - () - - - selectAll - selectAll - () - - - selectionChanged - selectionChanged - () - - - selectionStart - selectionStart - () - - - setSelection - setSelection - ( int start, int length ) - - - setValidator - setValidator - ( const QValidator * v ) - - - sizeHint - sizeHint - () - - - textChanged - textChanged - ( const QString & text ) - - - undo - undo - () - - - validator - validator - () - - - - QLineF - qlinef.html - - IntersectType - IntersectType-enum - - - - QLineF - QLineF - () - - - QLineF - QLineF-2 - ( const QPointF & pt1, const QPointF & pt2 ) - - - QLineF - QLineF-3 - ( qreal x1, qreal y1, qreal x2, qreal y2 ) - - - QLineF - QLineF-4 - ( const QLine & line ) - - - angle - angle - ( const QLineF & line ) - - - dx - dx - () - - - dy - dy - () - - - intersect - intersect - ( const QLineF & other, QPointF * intersectionPoint ) - - - isNull - isNull - () - - - length - length - () - - - normalVector - normalVector - () - - - p2 - p2 - () - - - pointAt - pointAt - ( qreal t ) - - - setLength - setLength - ( qreal length ) - - - toLine - toLine - () - - - translate - translate - ( const QPointF & point ) - - - translate - translate-2 - ( qreal dx, qreal dy ) - - - unitVector - unitVector - () - - - x1 - x1 - () - - - x2 - x2 - () - - - y1 - y1 - () - - - y2 - y2 - () - - - operator!= - operator-not-eq - ( const QLineF & d ) - - - operator== - operator-eq-eq - ( const QLineF & other ) - - - - QLinkedList::const_iterator - qlinkedlist-const-iterator.html - - const_iterator - const_iterator - () - - - const_iterator - const_iterator-3 - ( const const_iterator & other ) - - - const_iterator - const_iterator-4 - ( iterator other ) - - - operator!= - operator-not-eq - ( const const_iterator & other ) - - - operator* - operator-2a - () - - - operator+ - operator-2b - ( int j ) - - - operator++ - operator-2b-2b - () - - - operator++ - operator-2b-2b-2 - ( int ) - - - operator+= - operator-2b-eq - ( int j ) - - - operator- - operator- - ( int j ) - - - operator-- - operator-- - () - - - operator-- - operator---2 - ( int ) - - - operator-= - operator--eq - ( int j ) - - - operator-& - operator--gt - gt;() - - - operator= - operator-eq - ( const const_iterator & other ) - - - operator== - operator-eq-eq - ( const const_iterator & other ) - - - - QLinkedList::iterator - qlinkedlist-iterator.html - - iterator - iterator - () - - - iterator - iterator-3 - ( const iterator & other ) - - - operator!= - operator-not-eq - ( const iterator & other ) - - - operator!= - operator-not-eq-2 - ( const const_iterator & other ) - - - operator* - operator-2a - () - - - operator+ - operator-2b - ( int j ) - - - operator++ - operator-2b-2b - () - - - operator++ - operator-2b-2b-2 - ( int ) - - - operator+= - operator-2b-eq - ( int j ) - - - operator- - operator- - ( int j ) - - - operator-- - operator-- - () - - - operator-- - operator---2 - ( int ) - - - operator-= - operator--eq - ( int j ) - - - operator-& - operator--gt - gt;() - - - operator= - operator-eq - ( const iterator & other ) - - - operator== - operator-eq-eq - ( const iterator & other ) - - - operator== - operator-eq-eq-2 - ( const const_iterator & other ) - - - find - find - ( iterator from, const T & t ) - - - find - find-2 - ( const T & t ) - - - find - find-3 - ( const_iterator from, const T & t ) - - - find - find-4 - ( const T & t ) - - - findIndex - findIndex - ( const T & t ) - - - remove - remove - ( iterator pos ) - - - - QLinkedList - qlinkedlist.html - - ConstIterator - ConstIterator-typedef - - - - Iterator - Iterator-typedef - - - - const_pointer - const_pointer-typedef - - - - const_reference - const_reference-typedef - - - - pointer - pointer-typedef - - - - reference - reference-typedef - - - - value_type - value_type-typedef - - - - QLinkedList - QLinkedList - () - - - QLinkedList - QLinkedList-2 - ( const QLinkedList & other ) - - - append - append - ( const T & value ) - - - back - back - () - - - back - back-2 - () - - - begin - begin - () - - - begin - begin-2 - () - - - clear - clear - () - - - constBegin - constBegin - () - - - constEnd - constEnd - () - - - contains - contains - ( const T & value ) - - - count - count - ( const T & value ) - - - count - count-2 - () - - - empty - empty - () - - - end - end - () - - - end - end-2 - () - - - erase - erase - ( iterator pos ) - - - erase - erase-2 - ( iterator begin, iterator end ) - - - first - first - () - - - first - first-2 - () - - - front - front - () - - - front - front-2 - () - - - insert - insert - ( iterator before, const T & value ) - - - isEmpty - isEmpty - () - - - last - last - () - - - last - last-2 - () - - - pop_back - pop_back - () - - - pop_front - pop_front - () - - - prepend - prepend - ( const T & value ) - - - push_back - push_back - ( const T & value ) - - - push_front - push_front - ( const T & value ) - - - removeAll - removeAll - ( const T & value ) - - - removeFirst - removeFirst - () - - - removeLast - removeLast - () - - - size - size - () - - - takeFirst - takeFirst - () - - - takeLast - takeLast - () - - - operator!= - operator-not-eq - ( const QLinkedList & other ) - - - operator+ - operator-2b - ( const QLinkedList & other ) - - - operator+= - operator-2b-eq - ( const QLinkedList & other ) - - - operator+= - operator-2b-eq-2 - ( const T & value ) - - - operator<< - operator-lt-lt - ( const T & value ) - - - operator<< - operator-lt-lt-2 - ( const QLinkedList & l ) - - - operator= - operator-eq - ( const QLinkedList & other ) - - - operator== - operator-eq-eq - ( const QLinkedList & other ) - - - - QLinkedListIterator - qlinkedlistiterator.html - - QLinkedListIterator - QLinkedListIterator - ( const QLinkedList<T> & list ) - - - findNext - findNext - ( const T & value ) - - - findPrevious - findPrevious - ( const T & value ) - - - hasNext - hasNext - () - - - hasPrevious - hasPrevious - () - - - next - next - () - - - peekNext - peekNext - () - - - peekPrevious - peekPrevious - () - - - previous - previous - () - - - toBack - toBack - () - - - toFront - toFront - () - - - operator= - operator-eq - ( const QLinkedList<T> & list ) - - - - QList::const_iterator - qlist-const-iterator.html - - const_iterator - const_iterator - () - - - const_iterator - const_iterator-3 - ( const const_iterator & other ) - - - const_iterator - const_iterator-4 - ( const iterator & other ) - - - operator!= - operator-not-eq - ( const const_iterator & other ) - - - operator* - operator-2a - () - - - operator+ - operator-2b - ( int j ) - - - operator++ - operator-2b-2b - () - - - operator++ - operator-2b-2b-2 - ( int ) - - - operator+= - operator-2b-eq - ( int j ) - - - operator- - operator- - ( int j ) - - - operator- - operator--2 - ( const_iterator other ) - - - operator-- - operator-- - () - - - operator-- - operator---2 - ( int ) - - - operator-= - operator--eq - ( int j ) - - - operator-& - operator--gt - gt;() - - - operator< - operator-lt - ( const const_iterator & other ) - - - operator<= - operator-lt-eq - ( const const_iterator & other ) - - - operator== - operator-eq-eq - ( const const_iterator & other ) - - - operator> - operator-gt - ( const const_iterator & other ) - - - operator>= - operator-gt-eq - ( const const_iterator & other ) - - - operator[] - operator-5b-5d - ( int j ) - - - - QList::iterator - qlist-iterator.html - - iterator - iterator - () - - - iterator - iterator-3 - ( const iterator & other ) - - - operator!= - operator-not-eq - ( const iterator & other ) - - - operator!= - operator-not-eq-2 - ( const const_iterator & other ) - - - operator* - operator-2a - () - - - operator+ - operator-2b - ( int j ) - - - operator++ - operator-2b-2b - () - - - operator++ - operator-2b-2b-2 - ( int ) - - - operator+= - operator-2b-eq - ( int j ) - - - operator- - operator- - ( int j ) - - - operator- - operator--2 - ( iterator other ) - - - operator-- - operator-- - () - - - operator-- - operator---2 - ( int ) - - - operator-= - operator--eq - ( int j ) - - - operator-& - operator--gt - gt;() - - - operator< - operator-lt - ( const iterator & other ) - - - operator< - operator-lt-2 - ( const const_iterator & other ) - - - operator<= - operator-lt-eq - ( const iterator & other ) - - - operator<= - operator-lt-eq-2 - ( const const_iterator & other ) - - - operator== - operator-eq-eq - ( const iterator & other ) - - - operator== - operator-eq-eq-2 - ( const const_iterator & other ) - - - operator> - operator-gt - ( const iterator & other ) - - - operator> - operator-gt-2 - ( const const_iterator & other ) - - - operator>= - operator-gt-eq - ( const iterator & other ) - - - operator>= - operator-gt-eq-2 - ( const const_iterator & other ) - - - operator[] - operator-5b-5d - ( int j ) - - - find - find - ( const T & t ) - - - find - find-2 - ( const T & t ) - - - find - find-3 - ( iterator from, const T & t ) - - - find - find-4 - ( const_iterator from, const T & t ) - - - findIndex - findIndex - ( const T & t ) - - - remove - remove - ( iterator pos ) - - - remove - remove-2 - ( const T & t ) - - - - QList - qlist.html - - ConstIterator - ConstIterator-typedef - - - - Iterator - Iterator-typedef - - - - const_pointer - const_pointer-typedef - - - - const_reference - const_reference-typedef - - - - pointer - pointer-typedef - - - - reference - reference-typedef - - - - value_type - value_type-typedef - - - - QList - QList - () - - - QList - QList-2 - ( const QList & other ) - - - append - append - ( const T & value ) - - - at - at - ( int i ) - - - back - back - () - - - back - back-2 - () - - - begin - begin - () - - - begin - begin-2 - () - - - clear - clear - () - - - constBegin - constBegin - () - - - constEnd - constEnd - () - - - contains - contains - ( const T & value ) - - - count - count - ( const T & value ) - - - count - count-2 - () - - - empty - empty - () - - - end - end - () - - - end - end-2 - () - - - erase - erase - ( iterator pos ) - - - erase - erase-2 - ( iterator begin, iterator end ) - - - first - first - () - - - first - first-2 - () - - - fromSet - fromSet - ( const QSet<T> & set ) - - - fromStdList - fromStdList - ( const std::list<T> & list ) - - - fromVector - fromVector - ( const QVector<T> & vector ) - - - front - front - () - - - front - front-2 - () - - - indexOf - indexOf - ( const T & value, int from = 0 ) - - - insert - insert - ( int i, const T & value ) - - - insert - insert-2 - ( iterator before, const T & value ) - - - isEmpty - isEmpty - () - - - last - last - () - - - last - last-2 - () - - - lastIndexOf - lastIndexOf - ( const T & value, int from = -1 ) - - - mid - mid - ( int pos, int length = -1 ) - - - move - move - ( int from, int to ) - - - pop_back - pop_back - () - - - pop_front - pop_front - () - - - prepend - prepend - ( const T & value ) - - - push_back - push_back - ( const T & value ) - - - push_front - push_front - ( const T & value ) - - - removeAll - removeAll - ( const T & value ) - - - removeAt - removeAt - ( int i ) - - - removeFirst - removeFirst - () - - - removeLast - removeLast - () - - - replace - replace - ( int i, const T & value ) - - - size - size - () - - - swap - swap - ( int i, int j ) - - - takeAt - takeAt - ( int i ) - - - takeFirst - takeFirst - () - - - takeLast - takeLast - () - - - toSet - toSet - () - - - list - toStdList - <T> QList::toStdList() - - - toVector - toVector - () - - - value - value - ( int i ) - - - value - value-2 - ( int i, const T & defaultValue ) - - - operator!= - operator-not-eq - ( const QList & other ) - - - operator+ - operator-2b - ( const QList & other ) - - - operator+= - operator-2b-eq - ( const QList & other ) - - - operator+= - operator-2b-eq-2 - ( const T & value ) - - - operator<< - operator-lt-lt - ( const T & value ) - - - operator<< - operator-lt-lt-2 - ( const QList & l ) - - - operator= - operator-eq - ( const QList & other ) - - - operator== - operator-eq-eq - ( const QList & other ) - - - operator[] - operator-5b-5d - ( int i ) - - - operator[] - operator-5b-5d-2 - ( int i ) - - - - QListIterator - qlistiterator.html - - QListIterator - QListIterator - ( const QList<T> & list ) - - - findNext - findNext - ( const T & value ) - - - findPrevious - findPrevious - ( const T & value ) - - - hasNext - hasNext - () - - - hasPrevious - hasPrevious - () - - - next - next - () - - - peekNext - peekNext - () - - - peekPrevious - peekPrevious - () - - - previous - previous - () - - - toBack - toBack - () - - - toFront - toFront - () - - - operator= - operator-eq - ( const QList<T> & list ) - - - - QListView - qlistview.html - - Flow - Flow-enum - - - - LayoutMode - LayoutMode-enum - - - - Movement - Movement-enum - - - - ResizeMode - ResizeMode-enum - - - - ViewMode - ViewMode-enum - - - - QListView - QListView - ( QWidget * parent = 0 ) - - - clearPropertyFlags - clearPropertyFlags - () - - - internalDrag - internalDrag - ( Qt::DropActions supportedActions ) - - - internalDrop - internalDrop - ( QDropEvent * e ) - - - isRowHidden - isRowHidden - ( int row ) - - - rectForIndex - rectForIndex - ( const QModelIndex & index ) - - - setRowHidden - setRowHidden - ( int row, bool hide ) - - - - QListWidget - qlistwidget.html - - QListWidget - QListWidget - ( QWidget * parent = 0 ) - - - addItem - addItem - ( const QString & label ) - - - addItem - addItem-2 - ( QListWidgetItem * item ) - - - addItems - addItems - ( const QStringList & labels ) - - - clear - clear - () - - - closePersistentEditor - closePersistentEditor - ( QListWidgetItem * item ) - - - currentItem - currentItem - () - - - currentItemChanged - currentItemChanged - ( QListWidgetItem * current, QListWidgetItem * previous ) - - - currentRowChanged - currentRowChanged - ( int currentRow ) - - - currentTextChanged - currentTextChanged - ( const QString & currentText ) - - - dropMimeData - dropMimeData - ( int index, const QMimeData * data, Qt::DropAction action ) - - - editItem - editItem - ( QListWidgetItem * item ) - - - findItems - findItems - ( const QRegExp & rx ) - - - indexFromItem - indexFromItem - ( QListWidgetItem * item ) - - - insertItem - insertItem - ( int row, QListWidgetItem * item ) - - - insertItem - insertItem-2 - ( int row, const QString & label ) - - - insertItems - insertItems - ( int row, const QStringList & labels ) - - - isItemHidden - isItemHidden - ( const QListWidgetItem * item ) - - - isItemSelected - isItemSelected - ( const QListWidgetItem * item ) - - - item - item - ( int row ) - - - itemActivated - itemActivated - ( QListWidgetItem * item ) - - - itemAt - itemAt - ( const QPoint & p ) - - - itemAt - itemAt-2 - ( int x, int y ) - - - itemChanged - itemChanged - ( QListWidgetItem * item ) - - - itemClicked - itemClicked - ( QListWidgetItem * item ) - - - itemDoubleClicked - itemDoubleClicked - ( QListWidgetItem * item ) - - - itemEntered - itemEntered - ( QListWidgetItem * item ) - - - itemFromIndex - itemFromIndex - ( const QModelIndex & index ) - - - itemPressed - itemPressed - ( QListWidgetItem * item ) - - - itemSelectionChanged - itemSelectionChanged - () - - - items - items - ( const QMimeData * data ) - - - mimeData - mimeData - ( const QList<QListWidgetItem *> items ) - - - mimeTypes - mimeTypes - () - - - openPersistentEditor - openPersistentEditor - ( QListWidgetItem * item ) - - - row - row - ( const QListWidgetItem * item ) - - - scrollToItem - scrollToItem - ( const QListWidgetItem * item, ScrollHint hint = EnsureVisible ) - - - selectedItems - selectedItems - () - - - setCurrentItem - setCurrentItem - ( QListWidgetItem * item ) - - - setItemHidden - setItemHidden - ( const QListWidgetItem * item, bool hide ) - - - setItemSelected - setItemSelected - ( const QListWidgetItem * item, bool select ) - - - sortItems - sortItems - ( Qt::SortOrder order = Qt::AscendingOrder ) - - - DropActions - supportedDropActions - QListWidget::supportedDropActions() - - - takeItem - takeItem - ( int row ) - - - visualItemRect - visualItemRect - ( const QListWidgetItem * item ) - - - - QListWidgetItem - qlistwidgetitem.html - - QListWidgetItem - QListWidgetItem - ( QListWidget * parent = 0, int type = Type ) - - - QListWidgetItem - QListWidgetItem-2 - ( const QString & text, QListWidget * parent = 0, int type = Type ) - - - backgroundColor - backgroundColor - () - - - CheckState - checkState - QListWidgetItem::checkState() - - - clone - clone - () - - - data - data - ( int role ) - - - ItemFlags - flags - QListWidgetItem::flags() - - - font - font - () - - - icon - icon - () - - - listWidget - listWidget - () - - - read - read - ( QDataStream & in ) - - - setBackgroundColor - setBackgroundColor - ( const QColor & color ) - - - setCheckState - setCheckState - ( Qt::CheckState state ) - - - setData - setData - ( int role, const QVariant & value ) - - - setFlags - setFlags - ( Qt::ItemFlags flags ) - - - setFont - setFont - ( const QFont & font ) - - - setIcon - setIcon - ( const QIcon & icon ) - - - setStatusTip - setStatusTip - ( const QString & statusTip ) - - - setText - setText - ( const QString & text ) - - - setTextAlignment - setTextAlignment - ( int alignment ) - - - setTextColor - setTextColor - ( const QColor & color ) - - - setToolTip - setToolTip - ( const QString & toolTip ) - - - setWhatsThis - setWhatsThis - ( const QString & whatsThis ) - - - statusTip - statusTip - () - - - text - text - () - - - textAlignment - textAlignment - () - - - textColor - textColor - () - - - toolTip - toolTip - () - - - type - type - () - - - whatsThis - whatsThis - () - - - write - write - ( QDataStream & out ) - - - operator< - operator-lt - ( const QListWidgetItem & other ) - - - - QLocale - qlocale.html - - Country - Country-enum - - - - Language - Language-enum - - - - QLocale - QLocale - () - - - QLocale - QLocale-2 - ( const QString & name ) - - - QLocale - QLocale-3 - ( Language language, Country country = AnyCountry ) - - - QLocale - QLocale-4 - ( const QLocale & other ) - - - c - c - () - - - country - country - () - - - countryToString - countryToString - ( Country country ) - - - language - language - () - - - languageToString - languageToString - ( Language language ) - - - name - name - () - - - setDefault - setDefault - ( const QLocale & locale ) - - - system - system - () - - - toDouble - toDouble - ( const QString & s, bool * ok = 0 ) - - - toFloat - toFloat - ( const QString & s, bool * ok = 0 ) - - - toInt - toInt - ( const QString & s, bool * ok = 0, int base = 0 ) - - - toLongLong - toLongLong - ( const QString & s, bool * ok = 0, int base = 0 ) - - - toShort - toShort - ( const QString & s, bool * ok = 0, int base = 0 ) - - - toString - toString - ( qlonglong i ) - - - toString - toString-2 - ( qulonglong i ) - - - toString - toString-3 - ( double i, char f = 'g', int prec = 6 ) - - - toString - toString-4 - ( short i ) - - - toString - toString-5 - ( ushort i ) - - - toString - toString-6 - ( int i ) - - - toString - toString-7 - ( uint i ) - - - toString - toString-8 - ( float i, char f = 'g', int prec = 6 ) - - - toUInt - toUInt - ( const QString & s, bool * ok = 0, int base = 0 ) - - - toULongLong - toULongLong - ( const QString & s, bool * ok = 0, int base = 0 ) - - - toUShort - toUShort - ( const QString & s, bool * ok = 0, int base = 0 ) - - - operator!= - operator-not-eq - ( const QLocale & other ) - - - operator= - operator-eq - ( const QLocale & other ) - - - operator== - operator-eq-eq - ( const QLocale & other ) - - - - QMacMime - qmacmime.html - - QMacMime - QMacMime - ( char t ) - - - all - all - ( QMacMimeType t ) - - - canConvert - canConvert - ( const QString & mime, int flav ) - - - convertFromMime - convertFromMime - ( const QString & mime, QVariant data, int flav ) - - - convertToMime - convertToMime - ( const QString & mime, QList<QByteArray> data, int flav ) - - - convertor - convertor - ( QMacMimeType t, const QString & mime, int flav ) - - - convertorName - convertorName - () - - - countFlavors - countFlavors - () - - - flavor - flavor - ( int index ) - - - flavorFor - flavorFor - ( const QString & mime ) - - - flavorToMime - flavorToMime - ( QMacMimeType t, int flav ) - - - mimeFor - mimeFor - ( int flav ) - - - - QMacStyle - qmacstyle.html - - FocusRectPolicy - FocusRectPolicy-enum - - - - WidgetSizePolicy - WidgetSizePolicy-enum - - - - QMacStyle - QMacStyle - () - - - focusRectPolicy - focusRectPolicy - ( const QWidget * w ) - - - setFocusRectPolicy - setFocusRectPolicy - ( QWidget * w, FocusRectPolicy policy ) - - - setWidgetSizePolicy - setWidgetSizePolicy - ( const QWidget * w, WidgetSizePolicy policy ) - - - standardPalette - standardPalette - () - - - widgetSizePolicy - widgetSizePolicy - ( const QWidget * w ) - - - QMainWindow - QMainWindow-2 - ( QWidget * parent, const char * name, Qt::WFlags flags = 0 ) - - - - QMainWindow - qmainwindow.html - - ToolButtonStyle - toolButtonStyle - - - - QMainWindow - QMainWindow - ( QWidget * parent = 0, Qt::WFlags flags = 0 ) - - - addDockWidget - addDockWidget - ( Qt::DockWidgetArea area, QDockWidget * dockwidget ) - - - addDockWidget - addDockWidget-2 - ( Qt::DockWidgetArea area, QDockWidget * dockwidget, Qt::Orientation orientation ) - - - addToolBar - addToolBar - ( Qt::ToolBarArea area, QToolBar * toolbar ) - - - addToolBar - addToolBar-2 - ( QToolBar * toolbar ) - - - addToolBar - addToolBar-3 - ( const QString & title ) - - - addToolBarBreak - addToolBarBreak - ( Qt::ToolBarArea area = Qt::TopToolBarArea ) - - - centralWidget - centralWidget - () - - - DockWidgetArea - corner - QMainWindow::corner( Qt::Corner corner ) - - - createPopupMenu - createPopupMenu - () - - - DockWidgetArea - dockWidgetArea - QMainWindow::dockWidgetArea( QDockWidget * dockwidget ) - - - iconSizeChanged - iconSizeChanged - ( const QSize & iconSize ) - - - insertToolBar - insertToolBar - ( QToolBar * before, QToolBar * toolbar ) - - - insertToolBarBreak - insertToolBarBreak - ( QToolBar * before ) - - - menuBar - menuBar - () - - - removeDockWidget - removeDockWidget - ( QDockWidget * dockwidget ) - - - removeToolBar - removeToolBar - ( QToolBar * toolbar ) - - - restoreState - restoreState - ( const QByteArray & state, int version = 0 ) - - - saveState - saveState - ( int version = 0 ) - - - setCentralWidget - setCentralWidget - ( QWidget * widget ) - - - setCorner - setCorner - ( Qt::Corner corner, Qt::DockWidgetArea area ) - - - setMenuBar - setMenuBar - ( QMenuBar * menuBar ) - - - setStatusBar - setStatusBar - ( QStatusBar * statusbar ) - - - splitDockWidget - splitDockWidget - ( QDockWidget * first, QDockWidget * second, Qt::Orientation orientation ) - - - statusBar - statusBar - () - - - ToolBarArea - toolBarArea - QMainWindow::toolBarArea( QToolBar * toolbar ) - - - toolButtonStyleChanged - toolButtonStyleChanged - ( Qt::ToolButtonStyle toolButtonStyle ) - - - data - data - () - - - - QMap::const_iterator - qmap-const-iterator.html - - const_iterator - const_iterator - () - - - const_iterator - const_iterator-3 - ( const iterator & other ) - - - key - key - () - - - value - value - () - - - operator!= - operator-not-eq - ( const const_iterator & other ) - - - operator* - operator-2a - () - - - operator+ - operator-2b - ( int j ) - - - operator++ - operator-2b-2b - () - - - operator++ - operator-2b-2b-2 - ( int ) - - - operator+= - operator-2b-eq - ( int j ) - - - operator- - operator- - ( int j ) - - - operator-- - operator-- - () - - - operator-- - operator---2 - ( int ) - - - operator-= - operator--eq - ( int j ) - - - operator-& - operator--gt - gt;() - - - operator== - operator-eq-eq - ( const const_iterator & other ) - - - data - data - () - - - - QMap::iterator - qmap-iterator.html - - iterator - iterator - () - - - key - key - () - - - value - value - () - - - operator!= - operator-not-eq - ( const iterator & other ) - - - operator!= - operator-not-eq-2 - ( const const_iterator & other ) - - - operator* - operator-2a - () - - - operator+ - operator-2b - ( int j ) - - - operator++ - operator-2b-2b - () - - - operator++ - operator-2b-2b-2 - ( int ) - - - operator+= - operator-2b-eq - ( int j ) - - - operator- - operator- - ( int j ) - - - operator-- - operator-- - () - - - operator-- - operator---2 - ( int ) - - - operator-= - operator--eq - ( int j ) - - - operator-& - operator--gt - gt;() - - - operator== - operator-eq-eq - ( const iterator & other ) - - - operator== - operator-eq-eq-2 - ( const const_iterator & other ) - - - erase - erase-2 - ( const Key & key ) - - - insert - insert-2 - ( const Key & key, const T & value, bool overwrite ) - - - remove - remove-2 - ( iterator it ) - - - replace - replace - ( const Key & key, const T & value ) - - - - QMap - qmap.html - - ConstIterator - ConstIterator-typedef - - - - Iterator - Iterator-typedef - - - - QMap - QMap - () - - - QMap - QMap-2 - ( const QMap<Key, T> & other ) - - - QMap - QMap-3 - ( const std::map<Key, T> & other ) - - - begin - begin - () - - - begin - begin-2 - () - - - clear - clear - () - - - constBegin - constBegin - () - - - constEnd - constEnd - () - - - contains - contains - ( const Key & key ) - - - count - count - ( const Key & key ) - - - count - count-2 - () - - - empty - empty - () - - - end - end - () - - - end - end-2 - () - - - erase - erase - ( iterator pos ) - - - find - find - ( const Key & key ) - - - find - find-2 - ( const Key & key ) - - - insert - insert - ( const Key & key, const T & value ) - - - insertMulti - insertMulti - ( const Key & key, const T & value ) - - - isEmpty - isEmpty - () - - - key - key - ( const T & value ) - - - keys - keys - () - - - keys - keys-2 - ( const T & value ) - - - lowerBound - lowerBound - ( const Key & key ) - - - lowerBound - lowerBound-2 - ( const Key & key ) - - - remove - remove - ( const Key & key ) - - - size - size - () - - - take - take - ( const Key & key ) - - - map - toStdMap - <Key, T> QMap::toStdMap() - - - unite - unite - ( const QMap<Key, T> & other ) - - - upperBound - upperBound - ( const Key & key ) - - - upperBound - upperBound-2 - ( const Key & key ) - - - value - value - ( const Key & key ) - - - value - value-2 - ( const Key & key, const T & defaultValue ) - - - values - values - () - - - values - values-2 - ( const Key & key ) - - - operator!= - operator-not-eq - ( const QMap<Key, T> & other ) - - - operator= - operator-eq - ( const QMap<Key, T> & other ) - - - operator== - operator-eq-eq - ( const QMap<Key, T> & other ) - - - operator[] - operator-5b-5d - ( const Key & key ) - - - operator[] - operator-5b-5d-2 - ( const Key & key ) - - - - QMapIterator - qmapiterator.html - - QMapIterator - QMapIterator - ( const QMap<Key, T> & map ) - - - findNext - findNext - ( const T & value ) - - - findPrevious - findPrevious - ( const T & value ) - - - hasNext - hasNext - () - - - hasPrevious - hasPrevious - () - - - key - key - () - - - next - next - () - - - peekNext - peekNext - () - - - peekPrevious - peekPrevious - () - - - previous - previous - () - - - toBack - toBack - () - - - toFront - toFront - () - - - value - value - () - - - operator= - operator-eq - ( const QMap<Key, T> & map ) - - - invert - invert - ( bool * invertible = 0 ) - - - map - map-3 - ( const QRect & rect ) - - - mapToRegion - mapToRegion - ( const QRect & rect ) - - - - QMatrix - qmatrix.html - - QMatrix - QMatrix - () - - - QMatrix - QMatrix-2 - ( qreal m11, qreal m12, qreal m21, qreal m22, qreal dx, qreal dy ) - - - QMatrix - QMatrix-3 - ( const QMatrix & matrix ) - - - det - det - () - - - dx - dx - () - - - dy - dy - () - - - inverted - inverted - ( bool * invertible = 0 ) - - - isIdentity - isIdentity - () - - - isInvertible - isInvertible - () - - - m11 - m11 - () - - - m12 - m12 - () - - - m21 - m21 - () - - - m22 - m22 - () - - - map - map - ( qreal x, qreal y, qreal * tx, qreal * ty ) - - - map - map-2 - ( const QPainterPath & p ) - - - map - map-4 - ( int x, int y, int * tx, int * ty ) - - - map - map-5 - ( const QPoint & p ) - - - map - map-6 - ( const QPointF & point ) - - - map - map-7 - ( const QLineF & line ) - - - map - map-8 - ( const QLine & line ) - - - map - map-9 - ( const QPolygon & a ) - - - map - map-10 - ( const QPolygonF & a ) - - - map - map-11 - ( const QRegion & r ) - - - mapRect - mapRect - ( const QRect & rect ) - - - mapRect - mapRect-2 - ( const QRectF & rect ) - - - mapToPolygon - mapToPolygon - ( const QRect & rect ) - - - reset - reset - () - - - rotate - rotate - ( qreal a ) - - - scale - scale - ( qreal sx, qreal sy ) - - - setMatrix - setMatrix - ( qreal m11, qreal m12, qreal m21, qreal m22, qreal dx, qreal dy ) - - - shear - shear - ( qreal sh, qreal sv ) - - - translate - translate - ( qreal dx, qreal dy ) - - - operator!= - operator-not-eq - ( const QMatrix & m ) - - - operator* - operator-2a - ( const QMatrix & m ) - - - operator*= - operator-2a-eq - ( const QMatrix & m ) - - - operator= - operator-eq - ( const QMatrix & matrix ) - - - operator== - operator-eq-eq - ( const QMatrix & m ) - - - aboutToHide - aboutToHide - () - - - accel - accel - ( int id ) - - - activateItemAt - activateItemAt - ( int index ) - - - activated - activated - ( int itemId ) - - - changeItem - changeItem - ( int id, const QString & text ) - - - changeItem - changeItem-2 - ( int id, const QPixmap & pixmap ) - - - changeItem - changeItem-3 - ( int id, const QIcon & icon, const QString & text ) - - - columns - columns - () - - - connectItem - connectItem - ( int id, const QObject * receiver, const char * member ) - - - count - count - () - - - disconnectItem - disconnectItem - ( int id, const QObject * receiver, const char * member ) - - - findItem - findItem - ( int id ) - - - findPopup - findPopup - ( QMenu * popup, int * index ) - - - frameWidth - frameWidth - () - - - highlighted - highlighted - ( int itemId ) - - - iconSet - iconSet - ( int id ) - - - idAt - idAt - ( int index ) - - - indexOf - indexOf - ( int id ) - - - insertItem - insertItem - ( const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0, int id = -1, int index = -1 ) - - - insertItem - insertItem-2 - ( const QIcon & icon, const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0, int id = -1, int index = -1 ) - - - insertItem - insertItem-3 - ( const QPixmap & pixmap, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0, int id = -1, int index = -1 ) - - - insertItem - insertItem-4 - ( const QString & text, int id = -1, int index = -1 ) - - - insertItem - insertItem-5 - ( const QIcon & icon, const QString & text, int id = -1, int index = -1 ) - - - insertItem - insertItem-6 - ( const QString & text, QMenu * popup, int id = -1, int index = -1 ) - - - insertItem - insertItem-7 - ( const QIcon & icon, const QString & text, QMenu * popup, int id = -1, int index = -1 ) - - - insertItem - insertItem-8 - ( const QPixmap & pixmap, int id = -1, int index = -1 ) - - - insertItem - insertItem-9 - ( const QPixmap & pixmap, QMenu * popup, int id = -1, int index = -1 ) - - - insertSeparator - insertSeparator-2 - ( int index = -1 ) - - - insertTearOffHandle - insertTearOffHandle - ( int a = 0, int b = 0 ) - - - isCheckable - isCheckable - () - - - isItemActive - isItemActive - ( int id ) - - - isItemChecked - isItemChecked - ( int id ) - - - isItemEnabled - isItemEnabled - ( int id ) - - - isItemVisible - isItemVisible - ( int id ) - - - itemAtPos - itemAtPos - ( const QPoint & p, bool ignoreSeparator = true ) - - - itemFont - itemFont - ( int id ) - - - itemGeometry - itemGeometry - ( int index ) - - - itemHeight - itemHeight - ( int index ) - - - itemHeight - itemHeight-2 - ( QMenuItem * mi ) - - - itemParameter - itemParameter - ( int id ) - - - pixmap - pixmap - ( int id ) - - - popup - popup-2 - ( const QPoint & pos, int indexAtPoint ) - - - removeItem - removeItem - ( int id ) - - - removeItemAt - removeItemAt - ( int index ) - - - setAccel - setAccel - ( const QKeySequence & key, int id ) - - - setCheckable - setCheckable - ( bool checkable ) - - - setItemChecked - setItemChecked - ( int id, bool check ) - - - setItemEnabled - setItemEnabled - ( int id, bool enable ) - - - setItemFont - setItemFont - ( int id, const QFont & font ) - - - setItemParameter - setItemParameter - ( int id, int param ) - - - setItemVisible - setItemVisible - ( int id, bool visible ) - - - setWhatsThis - setWhatsThis - ( int id, const QString & w ) - - - text - text - ( int id ) - - - whatsThis - whatsThis - ( int id ) - - - - QMenu - qmenu.html - - QMenu - QMenu - ( QWidget * parent = 0 ) - - - QMenu - QMenu-2 - ( const QString & title, QWidget * parent = 0 ) - - - aboutToShow - aboutToShow - () - - - activeAction - activeAction - () - - - addAction - addAction - ( const QString & text ) - - - addAction - addAction-2 - ( const QIcon & icon, const QString & text ) - - - addAction - addAction-3 - ( const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0 ) - - - addAction - addAction-4 - ( const QIcon & icon, const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0 ) - - - addMenu - addMenu - ( QMenu * menu ) - - - addMenu - addMenu-2 - ( const QString & title ) - - - addMenu - addMenu-3 - ( const QIcon & icon, const QString & title ) - - - addSeparator - addSeparator - () - - - clear - clear - () - - - defaultAction - defaultAction - () - - - exec - exec - () - - - exec - exec-2 - ( const QPoint & p, QAction * action = 0 ) - - - exec - exec-3 - ( QList<QAction *> actions, const QPoint & pos, QAction * at = 0 ) - - - hideTearOffMenu - hideTearOffMenu - () - - - hovered - hovered - ( QAction * action ) - - - insertMenu - insertMenu - ( QAction * before, QMenu * menu ) - - - insertSeparator - insertSeparator - ( QAction * before ) - - - isTearOffMenuVisible - isTearOffMenuVisible - () - - - menuAction - menuAction - () - - - popup - popup - ( const QPoint & p, QAction * atAction = 0 ) - - - setActiveAction - setActiveAction - ( QAction * act ) - - - setDefaultAction - setDefaultAction - ( QAction * act ) - - - triggered - triggered - ( QAction * action ) - - - Separator - Separator-enum - - - - QMenuBar - QMenuBar-2 - ( QWidget * parent, const char * name ) - - - accel - accel - ( int id ) - - - activateItemAt - activateItemAt - ( int index ) - - - activated - activated - ( int itemId ) - - - autoGeometry - autoGeometry - () - - - changeItem - changeItem - ( int id, const QString & text ) - - - changeItem - changeItem-2 - ( int id, const QPixmap & pixmap ) - - - changeItem - changeItem-3 - ( int id, const QIcon & icon, const QString & text ) - - - connectItem - connectItem - ( int id, const QObject * receiver, const char * member ) - - - count - count - () - - - disconnectItem - disconnectItem - ( int id, const QObject * receiver, const char * member ) - - - findItem - findItem - ( int id ) - - - frameWidth - frameWidth - () - - - highlighted - highlighted - ( int itemId ) - - - iconSet - iconSet - ( int id ) - - - idAt - idAt - ( int index ) - - - indexOf - indexOf - ( int id ) - - - insertItem - insertItem - ( const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0, int id = -1, int index = -1 ) - - - insertItem - insertItem-2 - ( const QIcon & icon, const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0, int id = -1, int index = -1 ) - - - insertItem - insertItem-3 - ( const QPixmap & pixmap, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0, int id = -1, int index = -1 ) - - - insertItem - insertItem-4 - ( const QString & text, int id = -1, int index = -1 ) - - - insertItem - insertItem-5 - ( const QIcon & icon, const QString & text, int id = -1, int index = -1 ) - - - insertItem - insertItem-6 - ( const QString & text, QMenu * popup, int id = -1, int index = -1 ) - - - insertItem - insertItem-7 - ( const QIcon & icon, const QString & text, QMenu * popup, int id = -1, int index = -1 ) - - - insertItem - insertItem-8 - ( const QPixmap & pixmap, int id = -1, int index = -1 ) - - - insertItem - insertItem-9 - ( const QPixmap & pixmap, QMenu * popup, int id = -1, int index = -1 ) - - - insertSeparator - insertSeparator - ( int index = -1 ) - - - isItemActive - isItemActive - ( int id ) - - - isItemChecked - isItemChecked - ( int id ) - - - isItemEnabled - isItemEnabled - ( int id ) - - - isItemVisible - isItemVisible - ( int id ) - - - itemAtPos - itemAtPos - ( const QPoint & p ) - - - itemParameter - itemParameter - ( int id ) - - - itemRect - itemRect - ( int index ) - - - pixmap - pixmap - ( int id ) - - - removeItem - removeItem - ( int id ) - - - removeItemAt - removeItemAt - ( int index ) - - - separator - separator - () - - - setAccel - setAccel - ( const QKeySequence & key, int id ) - - - setAutoGeometry - setAutoGeometry - ( bool ) - - - setItemChecked - setItemChecked - ( int id, bool check ) - - - setItemEnabled - setItemEnabled - ( int id, bool enable ) - - - setItemParameter - setItemParameter - ( int id, int param ) - - - setItemVisible - setItemVisible - ( int id, bool visible ) - - - setSeparator - setSeparator - ( Separator sep ) - - - setWhatsThis - setWhatsThis - ( int id, const QString & w ) - - - text - text - ( int id ) - - - whatsThis - whatsThis - ( int id ) - - - - QMenuBar - qmenubar.html - - QMenuBar - QMenuBar - ( QWidget * parent = 0 ) - - - activeAction - activeAction - () - - - addAction - addAction - ( const QString & text ) - - - addAction - addAction-2 - ( const QString & text, const QObject * receiver, const char * member ) - - - addMenu - addMenu - ( QMenu * menu ) - - - addMenu - addMenu-2 - ( const QString & title ) - - - addMenu - addMenu-3 - ( const QIcon & icon, const QString & title ) - - - addSeparator - addSeparator - () - - - clear - clear - () - - - hovered - hovered - ( QAction * action ) - - - insertMenu - insertMenu - ( QAction * before, QMenu * menu ) - - - triggered - triggered - ( QAction * action ) - - - QMenuItem - QMenuItem - () - - - id - id - () - - - signalValue - signalValue - () - - - - QMenuItem - qmenuitem.html - - QMessageBox - QMessageBox-3 - ( const QString & caption, const QString & text, Icon icon, int button0, int button1, int button2, QWidget * parent, const char * name, bool modal, Qt::WFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint ) - - - QMessageBox - QMessageBox-4 - ( QWidget * parent, const char * name ) - - - message - message - ( const QString & caption, const QString & text, const QString & buttonText = QString() - - - query - query - ( const QString & caption, const QString & text, const QString & yesButtonText = QString() - - - standardIcon - standardIcon - ( Icon icon, Qt::GUIStyle style ) - - - - QMessageBox - qmessagebox.html - - Icon - Icon-enum - - - - TextFormat - textFormat - - - - QMessageBox - QMessageBox - ( QWidget * parent = 0 ) - - - QMessageBox - QMessageBox-2 - ( const QString & caption, const QString & text, Icon icon, int button0, int button1, int button2, QWidget * parent = 0, Qt::WFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint ) - - - about - about - ( QWidget * parent, const QString & caption, const QString & text ) - - - aboutQt - aboutQt - ( QWidget * parent, const QString & caption = QString() - - - buttonText - buttonText - ( int button ) - - - critical - critical - ( QWidget * parent, const QString & caption, const QString & text, int button0, int button1, int button2 = 0 ) - - - critical - critical-2 - ( QWidget * parent, const QString & caption, const QString & text, const QString & button0Text = QString() - - - information - information - ( QWidget * parent, const QString & caption, const QString & text, int button0, int button1 = 0, int button2 = 0 ) - - - information - information-2 - ( QWidget * parent, const QString & caption, const QString & text, const QString & button0Text = QString() - - - question - question - ( QWidget * parent, const QString & caption, const QString & text, int button0, int button1 = 0, int button2 = 0 ) - - - question - question-2 - ( QWidget * parent, const QString & caption, const QString & text, const QString & button0Text = QString() - - - setButtonText - setButtonText - ( int button, const QString & text ) - - - standardIcon - standardIcon-2 - ( Icon icon ) - - - warning - warning - ( QWidget * parent, const QString & caption, const QString & text, int button0, int button1, int button2 = 0 ) - - - warning - warning-2 - ( QWidget * parent, const QString & caption, const QString & text, const QString & button0Text = QString() - - - - QMetaClassInfo - qmetaclassinfo.html - - name - name - () - - - value - value - () - - - - QMetaEnum - qmetaenum.html - - isFlag - isFlag - () - - - isValid - isValid - () - - - key - key - ( int index ) - - - keyCount - keyCount - () - - - keyToValue - keyToValue - ( const char * key ) - - - keysToValue - keysToValue - ( const char * keys ) - - - name - name - () - - - scope - scope - () - - - value - value - ( int index ) - - - valueToKey - valueToKey - ( int value ) - - - valueToKeys - valueToKeys - ( int value ) - - - - QMetaMember - qmetamember.html - - Attributes - Attributes-enum - - - - MemberType - MemberType-enum - - - - access - access - () - - - memberType - memberType - () - - - parameterNames - parameterNames - () - - - parameterTypes - parameterTypes - () - - - signature - signature - () - - - tag - tag - () - - - typeName - typeName - () - - - - QMetaMethod - qmetamethod.html - - Attributes - Attributes-enum - - - - MethodType - MethodType-enum - - - - access - access - () - - - memberType - memberType - () - - - methodType - methodType - () - - - parameterNames - parameterNames - () - - - parameterTypes - parameterTypes - () - - - signature - signature - () - - - tag - tag - () - - - typeName - typeName - () - - - - QMetaObject - qmetaobject.html - - checkConnectArgs - checkConnectArgs - ( const char * signal, const char * member ) - - - classInfo - classInfo - ( int index ) - - - classInfoCount - classInfoCount - () - - - classInfoOffset - classInfoOffset - () - - - className - className - () - - - enumerator - enumerator - ( int index ) - - - enumeratorCount - enumeratorCount - () - - - enumeratorOffset - enumeratorOffset - () - - - indexOfClassInfo - indexOfClassInfo - ( const char * name ) - - - indexOfEnumerator - indexOfEnumerator - ( const char * name ) - - - indexOfMember - indexOfMember - ( const char * member ) - - - indexOfProperty - indexOfProperty - ( const char * name ) - - - indexOfSignal - indexOfSignal - ( const char * signal ) - - - indexOfSlot - indexOfSlot - ( const char * slot ) - - - invokeMember - invokeMember - ( QObject * obj, const char * member, Qt::ConnectionType type, QGenericReturnArgument ret, QGenericArgument val0 = QGenericArgument( 0 ) - - - invokeMember - invokeMember-2 - ( QObject * obj, const char * member, QGenericArgument val0 = QGenericArgument( 0 ) - - - invokeMember - invokeMember-3 - ( QObject * obj, const char * member, QGenericReturnArgument ret, QGenericArgument val0 = QGenericArgument( 0 ) - - - invokeMember - invokeMember-4 - ( QObject * obj, const char * member, Qt::ConnectionType type, QGenericArgument val0 = QGenericArgument( 0 ) - - - member - member - ( int index ) - - - memberCount - memberCount - () - - - memberOffset - memberOffset - () - - - normalizedSignature - normalizedSignature - ( const char * member ) - - - property - property - ( int index ) - - - propertyCount - propertyCount - () - - - propertyOffset - propertyOffset - () - - - superClass - superClass - () - - - - QMetaProperty - qmetaproperty.html - - enumerator - enumerator - () - - - isDesignable - isDesignable - ( const QObject * object = 0 ) - - - isEditable - isEditable - ( const QObject * object = 0 ) - - - isEnumType - isEnumType - () - - - isFlagType - isFlagType - () - - - isReadable - isReadable - () - - - isScriptable - isScriptable - ( const QObject * object = 0 ) - - - isStored - isStored - ( const QObject * object = 0 ) - - - isValid - isValid - () - - - isWritable - isWritable - () - - - name - name - () - - - read - read - ( const QObject * object ) - - - reset - reset - ( QObject * object ) - - - Type - type - QMetaProperty::type() - - - typeName - typeName - () - - - write - write - ( QObject * object, const QVariant & value ) - - - - QMetaType - qmetatype.html - - construct - construct - ( int type, const void * copy ) - - - destroy - destroy - ( int type, void * data ) - - - isRegistered - isRegistered - ( int type ) - - - type - type - ( const char * typeName ) - - - typeName - typeName - ( int type ) - - - - QMimeData - qmimedata.html - - QMimeData - QMimeData - () - - - clear - clear - () - - - colorData - colorData - () - - - data - data - ( const QString & mimetype ) - - - formats - formats - () - - - hasColor - hasColor - () - - - hasFormat - hasFormat - ( const QString & mimetype ) - - - hasHtml - hasHtml - () - - - hasImage - hasImage - () - - - hasText - hasText - () - - - hasUrls - hasUrls - () - - - html - html - () - - - imageData - imageData - () - - - retrieveData - retrieveData - ( const QString & mimetype, QVariant::Type type ) - - - setColorData - setColorData - ( const QVariant & color ) - - - setData - setData - ( const QString & mimetype, const QByteArray & data ) - - - setHtml - setHtml - ( const QString & html ) - - - setImageData - setImageData - ( const QVariant & image ) - - - setText - setText - ( const QString & text ) - - - setUrls - setUrls - ( const QList<QUrl> & urls ) - - - text - text - () - - - urls - urls - () - - - - QModelIndex - qmodelindex.html - - QModelIndex - QModelIndex - () - - - QModelIndex - QModelIndex-2 - ( const QModelIndex & other ) - - - child - child - ( int row, int column ) - - - column - column - () - - - internalId - internalId - () - - - internalPointer - internalPointer - () - - - isValid - isValid - () - - - model - model - () - - - parent - parent - () - - - row - row - () - - - sibling - sibling - ( int row, int column ) - - - operator!= - operator-not-eq - ( const QModelIndex & other ) - - - operator== - operator-eq-eq - ( const QModelIndex & other ) - - - - QMotifStyle - qmotifstyle.html - - QMotifStyle - QMotifStyle - ( bool useHighlightCols = false ) - - - setUseHighlightColors - setUseHighlightColors - ( bool arg ) - - - useHighlightColors - useHighlightColors - () - - - - QMouseDriverFactory - qmousedriverfactory.html - - create - create - ( const QString & key, const QString & device ) - - - keys - keys - () - - - - QMouseDriverPlugin - qmousedriverplugin.html - - QMouseDriverPlugin - QMouseDriverPlugin - ( QObject * parent = 0 ) - - - create - create - ( const QString & driver, const QString & device ) - - - keys - keys - () - - - QMouseEvent - QMouseEvent-3 - ( Type type, const QPoint & pos, Qt::ButtonState button, int state ) - - - QMouseEvent - QMouseEvent-4 - ( Type type, const QPoint & pos, const QPoint & globalPos, Qt::ButtonState button, int state ) - - - ButtonState - state - QMouseEvent::state() - - - ButtonState - stateAfter - QMouseEvent::stateAfter() - - - - QMouseEvent - qmouseevent.html - - QMouseEvent - QMouseEvent - ( Type type, const QPoint & position, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers ) - - - QMouseEvent - QMouseEvent-2 - ( Type type, const QPoint & pos, const QPoint & globalPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers ) - - - MouseButton - button - QMouseEvent::button() - - - MouseButtons - buttons - QMouseEvent::buttons() - - - globalPos - globalPos - () - - - globalX - globalX - () - - - globalY - globalY - () - - - pos - pos - () - - - x - x - () - - - y - y - () - - - - QMoveEvent - qmoveevent.html - - QMoveEvent - QMoveEvent - ( const QPoint & pos, const QPoint & oldPos ) - - - oldPos - oldPos - () - - - pos - pos - () - - - finished - finished-2 - () - - - frameImage - frameImage - () - - - frameNumber - frameNumber - () - - - framePixmap - framePixmap - () - - - isNull - isNull - () - - - pause - pause - () - - - paused - paused - () - - - restart - restart - () - - - running - running - () - - - step - step - () - - - unpause - unpause - () - - - - QMovie - qmovie.html - - MovieState - MovieState-enum - - - - QMovie - QMovie - ( QObject * parent = 0 ) - - - QMovie - QMovie-2 - ( QIODevice * device, const QByteArray & format = QByteArray() - - - QMovie - QMovie-3 - ( const QString & fileName, const QByteArray & format = QByteArray() - - - backgroundColor - backgroundColor - () - - - currentFrameNumber - currentFrameNumber - () - - - currentImage - currentImage - () - - - currentPixmap - currentPixmap - () - - - device - device - () - - - error - error - ( QImageReader::ImageReaderError error ) - - - fileName - fileName - () - - - finished - finished - () - - - format - format - () - - - frameCount - frameCount - () - - - frameRect - frameRect - () - - - isValid - isValid - () - - - jumpToFrame - jumpToFrame - ( int frameNumber ) - - - jumpToNextFrame - jumpToNextFrame - () - - - loopCount - loopCount - () - - - nextFrameDelay - nextFrameDelay - () - - - resized - resized - ( const QSize & size ) - - - setBackgroundColor - setBackgroundColor - ( const QColor & color ) - - - setDevice - setDevice - ( QIODevice * device ) - - - setFileName - setFileName - ( const QString & fileName ) - - - setFormat - setFormat - ( const QByteArray & format ) - - - setPaused - setPaused - ( bool paused ) - - - setSpeed - setSpeed - ( int percentSpeed ) - - - speed - speed - () - - - start - start - () - - - started - started - () - - - state - state - () - - - stateChanged - stateChanged - ( MovieState state ) - - - stop - stop - () - - - updated - updated - ( const QRect & rect ) - - - - QMultiHash - qmultihash.html - - QMultiHash - QMultiHash - () - - - QMultiHash - QMultiHash-2 - ( const QHash<Key, T> & other ) - - - insert - insert - ( const Key & key, const T & value ) - - - replace - replace - ( const Key & key, const T & value ) - - - operator+ - operator-2b - ( const QMultiHash & other ) - - - operator+= - operator-2b-eq - ( const QMultiHash & other ) - - - - QMultiMap - qmultimap.html - - QMultiMap - QMultiMap - () - - - QMultiMap - QMultiMap-2 - ( const QMap<Key, T> & other ) - - - insert - insert - ( const Key & key, const T & value ) - - - replace - replace - ( const Key & key, const T & value ) - - - operator+ - operator-2b - ( const QMultiMap & other ) - - - operator+= - operator-2b-eq - ( const QMultiMap & other ) - - - - QMutableHashIterator - qmutablehashiterator.html - - QMutableHashIterator - QMutableHashIterator - ( QHash<Key, T> & hash ) - - - findNext - findNext - ( const T & value ) - - - findPrevious - findPrevious - ( const T & value ) - - - hasNext - hasNext - () - - - hasPrevious - hasPrevious - () - - - key - key - () - - - next - next - () - - - peekNext - peekNext - () - - - peekPrevious - peekPrevious - () - - - previous - previous - () - - - remove - remove - () - - - setValue - setValue - ( const T & value ) - - - toBack - toBack - () - - - toFront - toFront - () - - - value - value - () - - - operator= - operator-eq - ( QHash<Key, T> & hash ) - - - - QMutableLinkedListIterator - qmutablelinkedlistiterator.html - - QMutableLinkedListIterator - QMutableLinkedListIterator - ( QLinkedList<T> & list ) - - - findNext - findNext - ( const T & value ) - - - findPrevious - findPrevious - ( const T & value ) - - - hasNext - hasNext - () - - - hasPrevious - hasPrevious - () - - - insert - insert - ( const T & value ) - - - next - next - () - - - peekNext - peekNext - () - - - peekPrevious - peekPrevious - () - - - previous - previous - () - - - remove - remove - () - - - setValue - setValue - ( const T & value ) - - - toBack - toBack - () - - - toFront - toFront - () - - - value - value - () - - - operator= - operator-eq - ( QLinkedList<T> & list ) - - - - QMutableListIterator - qmutablelistiterator.html - - QMutableListIterator - QMutableListIterator - ( QList<T> & list ) - - - findNext - findNext - ( const T & value ) - - - findPrevious - findPrevious - ( const T & value ) - - - hasNext - hasNext - () - - - hasPrevious - hasPrevious - () - - - insert - insert - ( const T & value ) - - - next - next - () - - - peekNext - peekNext - () - - - peekPrevious - peekPrevious - () - - - previous - previous - () - - - remove - remove - () - - - setValue - setValue - ( const T & value ) - - - toBack - toBack - () - - - toFront - toFront - () - - - value - value - () - - - operator= - operator-eq - ( QList<T> & list ) - - - - QMutableMapIterator - qmutablemapiterator.html - - QMutableMapIterator - QMutableMapIterator - ( QMap<Key, T> & map ) - - - findNext - findNext - ( const T & value ) - - - findPrevious - findPrevious - ( const T & value ) - - - hasNext - hasNext - () - - - hasPrevious - hasPrevious - () - - - key - key - () - - - next - next - () - - - peekNext - peekNext - () - - - peekPrevious - peekPrevious - () - - - previous - previous - () - - - remove - remove - () - - - setValue - setValue - ( const T & value ) - - - toBack - toBack - () - - - toFront - toFront - () - - - value - value - () - - - operator= - operator-eq - ( QMap<Key, T> & map ) - - - - QMutableVectorIterator - qmutablevectoriterator.html - - QMutableVectorIterator - QMutableVectorIterator - ( QVector<T> & vector ) - - - findNext - findNext - ( const T & value ) - - - findPrevious - findPrevious - ( const T & value ) - - - hasNext - hasNext - () - - - hasPrevious - hasPrevious - () - - - insert - insert - ( const T & value ) - - - next - next - () - - - peekNext - peekNext - () - - - peekPrevious - peekPrevious - () - - - previous - previous - () - - - remove - remove - () - - - setValue - setValue - ( const T & value ) - - - toBack - toBack - () - - - toFront - toFront - () - - - value - value - () - - - operator= - operator-eq - ( QVector<T> & vector ) - - - QMutex - QMutex-2 - ( bool recursive ) - - - locked - locked - () - - - - QMutex - qmutex.html - - RecursionMode - RecursionMode-enum - - - - QMutex - QMutex - ( RecursionMode mode = NonRecursive ) - - - lock - lock - () - - - tryLock - tryLock - () - - - unlock - unlock - () - - - - QMutexLocker - qmutexlocker.html - - QMutexLocker - QMutexLocker - ( QMutex * mutex ) - - - mutex - mutex - () - - - relock - relock - () - - - unlock - unlock - () - - - QObject - QObject-3 - ( QObject * parent, const char * name ) - - - checkConnectArgs - checkConnectArgs - ( const char * signal, const QObject * object, const char * member ) - - - child - child - ( const char * objName, const char * inheritsClass = 0, bool recursiveSearch = true ) - - - className - className - () - - - insertChild - insertChild - ( QObject * object ) - - - isA - isA - ( const char * classname ) - - - name - name - () - - - name - name-2 - ( const char * defaultName ) - - - normalizeSignalSlot - normalizeSignalSlot - ( const char * signalSlot ) - - - removeChild - removeChild - ( QObject * object ) - - - setName - setName - ( const char * name ) - - - - QObject - qobject.html - - QObject - QObject - ( QObject * parent = 0 ) - - - blockSignals - blockSignals - ( bool block ) - - - childEvent - childEvent - ( QChildEvent * event ) - - - children - children - () - - - connect - connect - ( const QObject * sender, const char * signal, const QObject * receiver, const char * member, Qt::ConnectionType type = Qt::AutoCompatConnection ) - - - connect - connect-2 - ( const QObject * sender, const char * signal, const char * member, Qt::ConnectionType type = Qt::AutoCompatConnection ) - - - connectNotify - connectNotify - ( const char * signal ) - - - customEvent - customEvent - ( QEvent * event ) - - - deleteLater - deleteLater - () - - - destroyed - destroyed - ( QObject * obj = 0 ) - - - disconnect - disconnect - ( const QObject * sender, const char * signal, const QObject * receiver, const char * member ) - - - disconnect - disconnect-2 - ( const char * signal = 0, const QObject * receiver = 0, const char * member = 0 ) - - - disconnect - disconnect-3 - ( const QObject * receiver, const char * member = 0 ) - - - disconnectNotify - disconnectNotify - ( const char * signal ) - - - dumpObjectInfo - dumpObjectInfo - () - - - dumpObjectTree - dumpObjectTree - () - - - event - event - ( QEvent * e ) - - - eventFilter - eventFilter - ( QObject * watched, QEvent * e ) - - - findChild - findChild - ( const QString & name = QString() - - - findChildren - findChildren - ( const QString & name = QString() - - - findChildren - findChildren-2 - ( const QRegExp & re ) - - - inherits - inherits - ( const char * clname ) - - - installEventFilter - installEventFilter - ( QObject * filterObj ) - - - isWidgetType - isWidgetType - () - - - killTimer - killTimer - ( int id ) - - - metaObject - metaObject - () - - - moveToThread - moveToThread - ( QThread * targetThread ) - - - parent - parent - () - - - property - property - ( const char * name ) - - - receivers - receivers - ( const char * signal ) - - - removeEventFilter - removeEventFilter - ( QObject * obj ) - - - sender - sender - () - - - setParent - setParent - ( QObject * parent ) - - - setProperty - setProperty - ( const char * name, const QVariant & value ) - - - signalsBlocked - signalsBlocked - () - - - startTimer - startTimer - ( int interval ) - - - thread - thread - () - - - timerEvent - timerEvent - ( QTimerEvent * event ) - - - tr - tr - ( const char * sourceText, const char * comment ) - - - trUtf8 - trUtf8 - ( const char * sourceText, const char * comment ) - - - - QObjectCleanupHandler - qobjectcleanuphandler.html - - QObjectCleanupHandler - QObjectCleanupHandler - () - - - add - add - ( QObject * object ) - - - clear - clear - () - - - isEmpty - isEmpty - () - - - remove - remove - ( QObject * object ) - - - x11AppCells - x11AppCells - ( int screen = -1 ) - - - HANDLE - x11AppColormap - QPaintDevice::x11AppColormap( int screen = -1 ) - - - x11AppDefaultColormap - x11AppDefaultColormap - ( int screen = -1 ) - - - x11AppDefaultVisual - x11AppDefaultVisual - ( int screen = -1 ) - - - x11AppDepth - x11AppDepth - ( int screen = -1 ) - - - x11AppDisplay - x11AppDisplay - () - - - x11AppDpiX - x11AppDpiX - ( int screen = -1 ) - - - x11AppDpiY - x11AppDpiY - ( int screen = -1 ) - - - HANDLE - x11AppRootWindow - QPaintDevice::x11AppRootWindow( int screen = -1 ) - - - x11AppScreen - x11AppScreen - () - - - x11AppVisual - x11AppVisual - ( int screen = -1 ) - - - x11Cells - x11Cells - () - - - HANDLE - x11Colormap - QPaintDevice::x11Colormap() - - - x11DefaultColormap - x11DefaultColormap - () - - - x11DefaultVisual - x11DefaultVisual - () - - - x11Depth - x11Depth - () - - - x11Display - x11Display - () - - - x11Screen - x11Screen - () - - - x11SetAppDpiX - x11SetAppDpiX - ( int dpi, int screen ) - - - x11SetAppDpiY - x11SetAppDpiY - ( int dpi, int screen ) - - - x11Visual - x11Visual - () - - - - QPaintDevice - qpaintdevice.html - - QPaintDevice - QPaintDevice - () - - - depth - depth - () - - - height - height - () - - - heightMM - heightMM - () - - - logicalDpiX - logicalDpiX - () - - - logicalDpiY - logicalDpiY - () - - - numColors - numColors - () - - - paintEngine - paintEngine - () - - - paintingActive - paintingActive - () - - - width - width - () - - - widthMM - widthMM - () - - - - QPaintEngine - qpaintengine.html - - PolygonDrawMode - PolygonDrawMode-enum - - - - Type - Type-enum - - - - QPaintEngine - QPaintEngine - ( PaintEngineFeatures caps = 0 ) - - - begin - begin - ( QPaintDevice * pdev ) - - - drawEllipse - drawEllipse - ( const QRectF & rect ) - - - drawEllipse - drawEllipse-2 - ( const QRect & rect ) - - - drawImage - drawImage - ( const QRectF & rectangle, const QImage & image, const QRectF & sr, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - drawLines - drawLines - ( const QLineF * lines, int lineCount ) - - - drawLines - drawLines-2 - ( const QLine * lines, int lineCount ) - - - drawPath - drawPath - ( const QPainterPath & path ) - - - drawPixmap - drawPixmap - ( const QRectF & r, const QPixmap & pm, const QRectF & sr ) - - - drawPoints - drawPoints - ( const QPointF * points, int pointCount ) - - - drawPoints - drawPoints-2 - ( const QPoint * points, int pointCount ) - - - drawPolygon - drawPolygon - ( const QPointF * points, int pointCount, PolygonDrawMode mode ) - - - drawPolygon - drawPolygon-2 - ( const QPoint * points, int pointCount, PolygonDrawMode mode ) - - - drawRects - drawRects - ( const QRectF * rects, int rectCount ) - - - drawRects - drawRects-2 - ( const QRect * rects, int rectCount ) - - - drawTextItem - drawTextItem - ( const QPointF & p, const QTextItem & textItem ) - - - drawTiledPixmap - drawTiledPixmap - ( const QRectF & rect, const QPixmap & pixmap, const QPointF & p ) - - - end - end - () - - - hasFeature - hasFeature - ( PaintEngineFeatures feature ) - - - isActive - isActive - () - - - paintDevice - paintDevice - () - - - painter - painter - () - - - setActive - setActive - ( bool state ) - - - type - type - () - - - updateState - updateState - ( const QPaintEngineState & state ) - - - backgroundColor - backgroundColor - () - - - begin - begin-2 - ( QPaintDevice * pdev, const QWidget * init ) - - - boundingRect - boundingRect-3 - ( const QRect & rect, int flags, const QString & text, int len ) - - - boundingRect - boundingRect-4 - ( int x, int y, int w, int h, int flags, const QString & text, int len ) - - - drawConvexPolygon - drawConvexPolygon-5 - ( const QPolygonF & polygon, int index, int npoints = -1 ) - - - drawConvexPolygon - drawConvexPolygon-6 - ( const QPolygon & polygon, int index, int npoints = -1 ) - - - drawCubicBezier - drawCubicBezier - ( const QPolygon & a, int index = 0 ) - - - drawLineSegments - drawLineSegments - ( const QPolygon & a, int index = 0, int nlines = -1 ) - - - drawPoints - drawPoints-2 - ( const QPolygon & points, int index, int npoints = -1 ) - - - drawPolygon - drawPolygon-2 - ( const QPolygon & pa, bool winding, int index = 0, int npoints = -1 ) - - - drawPolygon - drawPolygon-5 - ( const QPolygonF & polygon, bool winding, int index = 0, int npoints = -1 ) - - - drawPolyline - drawPolyline-2 - ( const QPolygon & pa, int index, int npoints = -1 ) - - - drawText - drawText-3 - ( int x, int y, const QString & text, int pos, int len ) - - - drawText - drawText-4 - ( const QPoint & p, const QString & text, int pos, int len ) - - - drawText - drawText-5 - ( int x, int y, const QString & text, int len ) - - - drawText - drawText-6 - ( const QPoint & p, const QString & s, int len ) - - - drawText - drawText-7 - ( const QRect & r, int flags, const QString & str, int len, QRect * br = 0 ) - - - drawText - drawText-8 - ( int x, int y, int w, int h, int flags, const QString & str, int len, QRect * br = 0 ) - - - hasViewXForm - hasViewXForm - () - - - hasWorldXForm - hasWorldXForm - () - - - redirect - redirect - ( QPaintDevice * pdev, QPaintDevice * replacement ) - - - redirect - redirect-2 - ( QPaintDevice * pdev ) - - - resetXForm - resetXForm - () - - - setBackgroundColor - setBackgroundColor - ( const QColor & color ) - - - setViewXForm - setViewXForm - ( bool enabled ) - - - setWorldMatrix - setWorldMatrix - ( const QMatrix & wm, bool combine = false ) - - - setWorldXForm - setWorldXForm - ( bool enabled ) - - - worldMatrix - worldMatrix - () - - - xForm - xForm - ( const QPoint & p ) - - - xForm - xForm-2 - ( const QRect & r ) - - - xForm - xForm-3 - ( const QPolygon & a ) - - - xForm - xForm-4 - ( const QPolygon & av, int index, int npoints ) - - - xFormDev - xFormDev - ( const QRect & r ) - - - xFormDev - xFormDev-2 - ( const QPoint & p ) - - - xFormDev - xFormDev-3 - ( const QPolygon & a ) - - - xFormDev - xFormDev-4 - ( const QPolygon & ad, int index, int npoints ) - - - - QPainter - qpainter.html - - CompositionMode - CompositionMode-enum - - - - QPainter - QPainter - () - - - QPainter - QPainter-2 - ( QPaintDevice * pd ) - - - background - background - () - - - BGMode - backgroundMode - QPainter::backgroundMode() - - - begin - begin - ( QPaintDevice * pd ) - - - boundingRect - boundingRect - ( const QRectF & rect, int flags, const QString & str ) - - - boundingRect - boundingRect-2 - ( const QRectF & rectangle, const QString & text, const QTextOption & option = QTextOption() - - - boundingRect - boundingRect-5 - ( int x, int y, int w, int h, int flags, const QString & text ) - - - boundingRect - boundingRect-6 - ( const QRect & rect, int flags, const QString & str ) - - - brush - brush - () - - - brushOrigin - brushOrigin - () - - - clipPath - clipPath - () - - - clipRegion - clipRegion - () - - - compositionMode - compositionMode - () - - - device - device - () - - - deviceMatrix - deviceMatrix - () - - - drawArc - drawArc - ( const QRectF & r, int a, int alen ) - - - drawArc - drawArc-2 - ( const QRect & r, int startAngle, int spanAngle ) - - - drawArc - drawArc-3 - ( int x, int y, int w, int h, int startAngle, int spanAngle ) - - - drawChord - drawChord - ( const QRectF & r, int a, int alen ) - - - drawChord - drawChord-2 - ( const QRect & r, int startAngle, int spanAngle ) - - - drawChord - drawChord-3 - ( int x, int y, int w, int h, int startAngle, int spanAngle ) - - - drawConvexPolygon - drawConvexPolygon - ( const QPointF * points, int pointCount ) - - - drawConvexPolygon - drawConvexPolygon-2 - ( const QPoint * points, int pointCount ) - - - drawConvexPolygon - drawConvexPolygon-3 - ( const QPolygonF & polygon ) - - - drawConvexPolygon - drawConvexPolygon-4 - ( const QPolygon & polygon ) - - - drawEllipse - drawEllipse - ( const QRectF & r ) - - - drawEllipse - drawEllipse-2 - ( const QRect & r ) - - - drawEllipse - drawEllipse-3 - ( int x, int y, int w, int h ) - - - drawImage - drawImage - ( const QRectF & targetRect, const QImage & image, const QRectF & sourceRect, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - drawImage - drawImage-2 - ( const QPointF & p, const QImage & image, const QRectF & sr, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - drawImage - drawImage-3 - ( const QRectF & rectangle, const QImage & image ) - - - drawImage - drawImage-4 - ( const QPoint & p, const QImage & image ) - - - drawImage - drawImage-5 - ( const QPointF & p, const QImage & image ) - - - drawImage - drawImage-6 - ( const QPoint & p, const QImage & image, const QRect & sr, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - drawImage - drawImage-7 - ( const QRect & rectangle, const QImage & image ) - - - drawImage - drawImage-8 - ( int x, int y, const QImage & image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - drawImage - drawImage-9 - ( const QRect & targetRect, const QImage & image, const QRect & sourceRect, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - drawLine - drawLine - ( const QLineF & l ) - - - drawLine - drawLine-2 - ( const QLine & l ) - - - drawLine - drawLine-3 - ( int x1, int y1, int x2, int y2 ) - - - drawLine - drawLine-4 - ( const QPoint & p1, const QPoint & p2 ) - - - drawLine - drawLine-5 - ( const QPointF & p1, const QPointF & p2 ) - - - drawLines - drawLines - ( const QLineF * lines, int lineCount ) - - - drawLines - drawLines-2 - ( const QVector<QLineF> & lines ) - - - drawLines - drawLines-3 - ( const QLine * lines, int lineCount ) - - - drawLines - drawLines-4 - ( const QVector<QLine> & lines ) - - - drawLines - drawLines-5 - ( const QVector<QPoint> & pointPairs ) - - - drawLines - drawLines-6 - ( const QVector<QPointF> & pointPairs ) - - - drawLines - drawLines-7 - ( const QPointF * pointPairs, int lineCount ) - - - drawLines - drawLines-8 - ( const QPoint * pointPairs, int lineCount ) - - - drawPath - drawPath - ( const QPainterPath & path ) - - - drawPicture - drawPicture - ( const QPointF & p, const QPicture & picture ) - - - drawPicture - drawPicture-2 - ( int x, int y, const QPicture & picture ) - - - drawPicture - drawPicture-3 - ( const QPoint & p, const QPicture & picture ) - - - drawPie - drawPie - ( const QRectF & r, int a, int alen ) - - - drawPie - drawPie-2 - ( const QRect & rect, int startAngle, int spanAngle ) - - - drawPie - drawPie-3 - ( int x, int y, int w, int h, int startAngle, int spanAngle ) - - - drawPixmap - drawPixmap - ( const QRectF & r, const QPixmap & pm, const QRectF & sr ) - - - drawPixmap - drawPixmap-2 - ( const QRect & targetRect, const QPixmap & pixmap, const QRect & sourceRect ) - - - drawPixmap - drawPixmap-3 - ( const QPointF & p, const QPixmap & pixmap, const QRectF & sourceRect ) - - - drawPixmap - drawPixmap-4 - ( const QPointF & p, const QPixmap & pixmap ) - - - drawPixmap - drawPixmap-5 - ( int x, int y, const QPixmap & pixmap ) - - - drawPixmap - drawPixmap-6 - ( int x, int y, int width, int height, const QPixmap & pixmap ) - - - drawPixmap - drawPixmap-7 - ( int x, int y, int w, int h, const QPixmap & pm, int sx, int sy, int sw, int sh ) - - - drawPixmap - drawPixmap-8 - ( int x, int y, const QPixmap & pixmap, int sx, int sy, int sw, int sh ) - - - drawPixmap - drawPixmap-9 - ( const QPoint & p, const QPixmap & pm, const QRect & sr ) - - - drawPixmap - drawPixmap-10 - ( const QPoint & p, const QPixmap & pm ) - - - drawPixmap - drawPixmap-11 - ( const QRect & r, const QPixmap & pm ) - - - drawPoint - drawPoint - ( const QPointF & p ) - - - drawPoint - drawPoint-2 - ( const QPoint & p ) - - - drawPoint - drawPoint-3 - ( int x, int y ) - - - drawPoints - drawPoints - ( const QPointF * points, int pointCount ) - - - drawPoints - drawPoints-3 - ( const QPolygonF & points ) - - - drawPoints - drawPoints-4 - ( const QPoint * points, int pointCount ) - - - drawPoints - drawPoints-5 - ( const QPolygon & points ) - - - drawPolygon - drawPolygon - ( const QPointF * points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill ) - - - drawPolygon - drawPolygon-3 - ( const QPolygon & pa, Qt::FillRule fillRule = Qt::OddEvenFill ) - - - drawPolygon - drawPolygon-4 - ( const QPolygonF & pa, Qt::FillRule fillRule = Qt::OddEvenFill ) - - - drawPolygon - drawPolygon-6 - ( const QPoint * points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill ) - - - drawPolyline - drawPolyline - ( const QPointF * points, int pointCount ) - - - drawPolyline - drawPolyline-3 - ( const QPolygon & pa ) - - - drawPolyline - drawPolyline-4 - ( const QPolygonF & pa ) - - - drawPolyline - drawPolyline-5 - ( const QPoint * points, int pointCount ) - - - drawRect - drawRect - ( const QRectF & r ) - - - drawRect - drawRect-2 - ( int x, int y, int w, int h ) - - - drawRect - drawRect-3 - ( const QRect & rect ) - - - drawRects - drawRects - ( const QRectF * rects, int rectCount ) - - - drawRects - drawRects-2 - ( const QVector<QRectF> & rectangles ) - - - drawRects - drawRects-3 - ( const QRect * rects, int rectCount ) - - - drawRects - drawRects-4 - ( const QVector<QRect> & rectangles ) - - - drawRoundRect - drawRoundRect - ( const QRectF & r, int xRnd = 25, int yRnd = 25 ) - - - drawRoundRect - drawRoundRect-2 - ( int x, int y, int w, int h, int xRnd = 25, int yRnd = 25 ) - - - drawRoundRect - drawRoundRect-3 - ( const QRect & r, int xRnd = 25, int yRnd = 25 ) - - - drawText - drawText - ( const QPointF & p, const QString & str ) - - - drawText - drawText-2 - ( const QRectF & rectangle, const QString & text, const QTextOption & option = QTextOption() - - - drawText - drawText-9 - ( int x, int y, const QString & text ) - - - drawText - drawText-10 - ( int x, int y, int w, int h, int flags, const QString & text, QRect * br = 0 ) - - - drawText - drawText-11 - ( const QRect & r, int flags, const QString & str, QRect * br = 0 ) - - - drawText - drawText-12 - ( const QPoint & p, const QString & s ) - - - drawText - drawText-13 - ( const QRectF & r, int flags, const QString & str, QRectF * br = 0 ) - - - drawTiledPixmap - drawTiledPixmap - ( int x, int y, int w, int h, const QPixmap & pixmap, int sx = 0, int sy = 0 ) - - - drawTiledPixmap - drawTiledPixmap-2 - ( const QRect & rect, const QPixmap & pixmap, const QPoint & sp = QPoint() - - - drawTiledPixmap - drawTiledPixmap-3 - ( const QRectF & r, const QPixmap & pixmap, const QPointF & sp = QPointF() - - - end - end - () - - - eraseRect - eraseRect - ( const QRectF & r ) - - - eraseRect - eraseRect-2 - ( const QRect & rect ) - - - eraseRect - eraseRect-3 - ( int x, int y, int w, int h ) - - - fillPath - fillPath - ( const QPainterPath & path, const QBrush & brush ) - - - fillRect - fillRect - ( const QRectF & r, const QBrush & brush ) - - - fillRect - fillRect-2 - ( const QRect & rect, const QBrush & brush ) - - - fillRect - fillRect-3 - ( int x, int y, int w, int h, const QBrush & brush ) - - - font - font - () - - - fontInfo - fontInfo - () - - - fontMetrics - fontMetrics - () - - - hasClipping - hasClipping - () - - - initFrom - initFrom - ( const QWidget * widget ) - - - isActive - isActive - () - - - LayoutDirection - layoutDirection - QPainter::layoutDirection() - - - matrix - matrix - () - - - matrixEnabled - matrixEnabled - () - - - paintEngine - paintEngine - () - - - pen - pen - () - - - renderHints - renderHints - () - - - resetMatrix - resetMatrix - () - - - restore - restore - () - - - rotate - rotate - ( qreal a ) - - - save - save - () - - - scale - scale - ( qreal sx, qreal sy ) - - - setBackground - setBackground - ( const QBrush & bg ) - - - setBackgroundMode - setBackgroundMode - ( Qt::BGMode mode ) - - - setBrush - setBrush - ( Qt::BrushStyle style ) - - - setBrush - setBrush-2 - ( const QBrush & brush ) - - - setBrushOrigin - setBrushOrigin - ( const QPointF & p ) - - - setBrushOrigin - setBrushOrigin-2 - ( const QPoint & p ) - - - setBrushOrigin - setBrushOrigin-3 - ( int x, int y ) - - - setClipPath - setClipPath - ( const QPainterPath & path, Qt::ClipOperation op = Qt::ReplaceClip ) - - - setClipRect - setClipRect - ( const QRect & rect, Qt::ClipOperation op = Qt::ReplaceClip ) - - - setClipRect - setClipRect-2 - ( int x, int y, int w, int h, Qt::ClipOperation op = Qt::ReplaceClip ) - - - setClipRect - setClipRect-3 - ( const QRectF & rect, Qt::ClipOperation op = Qt::ReplaceClip ) - - - setClipRegion - setClipRegion - ( const QRegion & r, Qt::ClipOperation op = Qt::ReplaceClip ) - - - setClipping - setClipping - ( bool enable ) - - - setCompositionMode - setCompositionMode - ( CompositionMode mode ) - - - setFont - setFont - ( const QFont & font ) - - - setLayoutDirection - setLayoutDirection - ( Qt::LayoutDirection direction ) - - - setMatrix - setMatrix - ( const QMatrix & matrix, bool combine = false ) - - - setMatrixEnabled - setMatrixEnabled - ( bool enable ) - - - setPen - setPen - ( const QPen & pen ) - - - setPen - setPen-2 - ( const QColor & color ) - - - setPen - setPen-3 - ( Qt::PenStyle style ) - - - setRenderHint - setRenderHint - ( RenderHint hint, bool on = true ) - - - setViewTransformEnabled - setViewTransformEnabled - ( bool enable ) - - - setViewport - setViewport - ( int x, int y, int w, int h ) - - - setViewport - setViewport-2 - ( const QRect & r ) - - - setWindow - setWindow - ( int x, int y, int w, int h ) - - - setWindow - setWindow-2 - ( const QRect & r ) - - - shear - shear - ( qreal sh, qreal sv ) - - - strokePath - strokePath - ( const QPainterPath & path, const QPen & pen ) - - - translate - translate - ( const QPointF & offset ) - - - translate - translate-2 - ( qreal dx, qreal dy ) - - - translate - translate-3 - ( const QPoint & offset ) - - - viewTransformEnabled - viewTransformEnabled - () - - - viewport - viewport - () - - - window - window - () - - - - QPainterPath - qpainterpath.html - - QPainterPath - QPainterPath - () - - - QPainterPath - QPainterPath-2 - ( const QPointF & startPoint ) - - - QPainterPath - QPainterPath-3 - ( const QPainterPath & other ) - - - addEllipse - addEllipse - ( const QRectF & boundingRect ) - - - addEllipse - addEllipse-2 - ( qreal x, qreal y, qreal width, qreal height ) - - - addPath - addPath - ( const QPainterPath & other ) - - - addPolygon - addPolygon - ( const QPolygonF & polygon ) - - - addRect - addRect - ( const QRectF & rectangle ) - - - addRect - addRect-2 - ( qreal x, qreal y, qreal width, qreal height ) - - - addRegion - addRegion - ( const QRegion & region ) - - - addText - addText - ( const QPointF & point, const QFont & font, const QString & text ) - - - addText - addText-2 - ( qreal x, qreal y, const QFont & font, const QString & text ) - - - arcTo - arcTo - ( const QRectF & rectangle, qreal startAngle, qreal sweepLength ) - - - arcTo - arcTo-2 - ( qreal x, qreal y, qreal width, qreal height, qreal startAngle, qreal sweepLength ) - - - boundingRect - boundingRect - () - - - closeSubpath - closeSubpath - () - - - connectPath - connectPath - ( const QPainterPath & other ) - - - contains - contains - ( const QPointF & pt ) - - - contains - contains-2 - ( const QRectF & rect ) - - - controlPointRect - controlPointRect - () - - - cubicTo - cubicTo - ( const QPointF & c1, const QPointF & c2, const QPointF & endPoint ) - - - cubicTo - cubicTo-2 - ( qreal ctrlPt1x, qreal ctrlPt1y, qreal ctrlPt2x, qreal ctrlPt2y, qreal endPtx, qreal endPty ) - - - currentPosition - currentPosition - () - - - Element - elementAt - & QPainterPath::elementAt( int index ) - - - elementCount - elementCount - () - - - FillRule - fillRule - QPainterPath::fillRule() - - - intersects - intersects - ( const QRectF & rect ) - - - isEmpty - isEmpty - () - - - lineTo - lineTo - ( const QPointF & endPoint ) - - - lineTo - lineTo-2 - ( qreal x, qreal y ) - - - moveTo - moveTo - ( const QPointF & point ) - - - moveTo - moveTo-2 - ( qreal x, qreal y ) - - - quadTo - quadTo - ( const QPointF & c, const QPointF & endPoint ) - - - quadTo - quadTo-2 - ( qreal ctrlPtx, qreal ctrlPty, qreal endPtx, qreal endPty ) - - - setFillRule - setFillRule - ( Qt::FillRule fillRule ) - - - toFillPolygon - toFillPolygon - ( const QMatrix & matrix = QMatrix() - - - toFillPolygons - toFillPolygons - ( const QMatrix & matrix = QMatrix() - - - toReversed - toReversed - () - - - toSubpathPolygons - toSubpathPolygons - ( const QMatrix & matrix = QMatrix() - - - operator!= - operator-not-eq - ( const QPainterPath & path ) - - - operator= - operator-eq - ( const QPainterPath & other ) - - - operator== - operator-eq-eq - ( const QPainterPath & path ) - - - erased - erased - () - - - - QPaintEvent - qpaintevent.html - - QPaintEvent - QPaintEvent - ( const QRegion & paintRegion ) - - - QPaintEvent - QPaintEvent-2 - ( const QRect & paintRect ) - - - QPaintEvent - QPaintEvent-3 - ( const QRegion & paintRegion, const QRect & paintRect ) - - - rect - rect - () - - - region - region - () - - - - QPair - qpair.html - - first_type - first_type-typedef - - - - second_type - second_type-typedef - - - - QPair - QPair - () - - - QPair - QPair-2 - ( const T1 & value1, const T2 & value2 ) - - - operator= - operator-eq - ( const QPair & other ) - - - QPalette - QPalette-6 - ( const QColor & foreground, const QColor & background, const QColor & light, const QColor & dark, const QColor & mid, const QColor & text, const QColor & base ) - - - QPalette - QPalette-7 - ( const QColorGroup & active, const QColorGroup & disabled, const QColorGroup & inactive ) - - - active - active - () - - - copy - copy - () - - - disabled - disabled - () - - - inactive - inactive - () - - - normal - normal - () - - - setActive - setActive - ( const QColorGroup & colorGroup ) - - - setDisabled - setDisabled - ( const QColorGroup & colorGroup ) - - - setInactive - setInactive - ( const QColorGroup & colorGroup ) - - - setNormal - setNormal - ( const QColorGroup & colorGroup ) - - - - QPalette - qpalette.html - - ColorGroup - ColorGroup-enum - - - - ColorRole - ColorRole-enum - - - - QPalette - QPalette - () - - - QPalette - QPalette-2 - ( const QColor & button ) - - - QPalette - QPalette-3 - ( Qt::GlobalColor button ) - - - QPalette - QPalette-4 - ( const QColor & button, const QColor & background ) - - - QPalette - QPalette-5 - ( const QBrush & foreground, const QBrush & button, const QBrush & light, const QBrush & dark, const QBrush & mid, const QBrush & text, const QBrush & bright_text, const QBrush & base, const QBrush & background ) - - - QPalette - QPalette-8 - ( const QPalette & p ) - - - alternateBase - alternateBase - () - - - background - background - () - - - base - base - () - - - brightText - brightText - () - - - brush - brush - ( ColorGroup gr, ColorRole cr ) - - - brush - brush-2 - ( ColorRole r ) - - - button - button - () - - - buttonText - buttonText - () - - - color - color - ( ColorGroup gr, ColorRole r ) - - - color - color-2 - ( ColorRole r ) - - - currentColorGroup - currentColorGroup - () - - - dark - dark - () - - - foreground - foreground - () - - - highlight - highlight - () - - - highlightedText - highlightedText - () - - - isCopyOf - isCopyOf - ( const QPalette & p ) - - - isEqual - isEqual - ( ColorGroup cg1, ColorGroup cg2 ) - - - light - light - () - - - link - link - () - - - linkVisited - linkVisited - () - - - mid - mid - () - - - midlight - midlight - () - - - resolve - resolve - ( const QPalette & other ) - - - serialNumber - serialNumber - () - - - setBrush - setBrush - ( ColorRole cr, const QBrush & brush ) - - - setBrush - setBrush-2 - ( ColorGroup cg, ColorRole cr, const QBrush & b ) - - - setColor - setColor - ( ColorGroup gr, ColorRole r, const QColor & c ) - - - setColor - setColor-2 - ( ColorRole r, const QColor & c ) - - - setColorGroup - setColorGroup - ( ColorGroup cg, const QBrush & foreground, const QBrush & button, const QBrush & light, const QBrush & dark, const QBrush & mid, const QBrush & text, const QBrush & bright_text, const QBrush & base, const QBrush & background ) - - - setCurrentColorGroup - setCurrentColorGroup - ( ColorGroup cg ) - - - shadow - shadow - () - - - text - text - () - - - operator - operator-QVariant - QVariant() - - - operator!= - operator-not-eq - ( const QPalette & p ) - - - operator= - operator-eq - ( const QPalette & p ) - - - operator== - operator-eq-eq - ( const QPalette & p ) - - - - QPen - qpen.html - - QPen - QPen - () - - - QPen - QPen-2 - ( Qt::PenStyle style ) - - - QPen - QPen-3 - ( const QColor & color ) - - - QPen - QPen-4 - ( const QBrush & brush, qreal width, Qt::PenStyle s = Qt::SolidLine, Qt::PenCapStyle c = Qt::SquareCap, Qt::PenJoinStyle j = Qt::BevelJoin ) - - - QPen - QPen-5 - ( const QPen & p ) - - - brush - brush - () - - - PenCapStyle - capStyle - QPen::capStyle() - - - color - color - () - - - isSolid - isSolid - () - - - PenJoinStyle - joinStyle - QPen::joinStyle() - - - setBrush - setBrush - ( const QBrush & brush ) - - - setCapStyle - setCapStyle - ( Qt::PenCapStyle c ) - - - setColor - setColor - ( const QColor & c ) - - - setJoinStyle - setJoinStyle - ( Qt::PenJoinStyle j ) - - - setStyle - setStyle - ( Qt::PenStyle s ) - - - setWidth - setWidth - ( int width ) - - - setWidthF - setWidthF - ( qreal width ) - - - PenStyle - style - QPen::style() - - - width - width - () - - - widthF - widthF - () - - - operator - operator-QVariant - QVariant() - - - operator!= - operator-not-eq - ( const QPen & p ) - - - operator= - operator-eq - ( const QPen & p ) - - - operator== - operator-eq-eq - ( const QPen & p ) - - - - QPersistentModelIndex - qpersistentmodelindex.html - - QPersistentModelIndex - QPersistentModelIndex-2 - ( const QModelIndex & index ) - - - QPersistentModelIndex - QPersistentModelIndex-3 - ( const QPersistentModelIndex & other ) - - - child - child - ( int row, int column ) - - - column - column - () - - - isValid - isValid - () - - - model - model - () - - - parent - parent - () - - - row - row - () - - - sibling - sibling - ( int row, int column ) - - - operator - operator-const-QModelIndex--and - const QModelIndex &() - - - operator!= - operator-not-eq - ( const QModelIndex & other ) - - - operator< - operator-lt - ( const QPersistentModelIndex & other ) - - - operator= - operator-eq - ( const QPersistentModelIndex & other ) - - - operator= - operator-eq-2 - ( const QModelIndex & other ) - - - operator== - operator-eq-eq - ( const QPersistentModelIndex & other ) - - - operator== - operator-eq-eq-2 - ( const QModelIndex & other ) - - - copy - copy - () - - - - QPicture - qpicture.html - - QPicture - QPicture - ( int formatVersion = -1 ) - - - QPicture - QPicture-2 - ( const QPicture & pic ) - - - boundingRect - boundingRect - () - - - data - data - () - - - inputFormatList - inputFormatList - () - - - inputFormats - inputFormats - () - - - isNull - isNull - () - - - load - load - ( const QString & fileName, const char * format = 0 ) - - - load - load-2 - ( QIODevice * dev, const char * format = 0 ) - - - metric - metric - ( PaintDeviceMetric m ) - - - outputFormatList - outputFormatList - () - - - outputFormats - outputFormats - () - - - pictureFormat - pictureFormat - ( const QString & fileName ) - - - play - play - ( QPainter * painter ) - - - save - save - ( const QString & fileName, const char * format = 0 ) - - - save - save-2 - ( QIODevice * dev, const char * format = 0 ) - - - setBoundingRect - setBoundingRect - ( const QRect & r ) - - - setData - setData - ( const char * data, uint size ) - - - size - size - () - - - operator= - operator-eq - ( const QPicture & p ) - - - - QPictureFormatPlugin - qpictureformatplugin.html - - QPictureFormatPlugin - QPictureFormatPlugin - ( QObject * parent = 0 ) - - - installIOHandler - installIOHandler - ( const QString & format ) - - - keys - keys - () - - - - QPictureIO - qpictureio.html - - QPictureIO - QPictureIO - () - - - QPictureIO - QPictureIO-2 - ( QIODevice * ioDevice, const char * format ) - - - QPictureIO - QPictureIO-3 - ( const QString & fileName, const char * format ) - - - defineIOHandler - defineIOHandler - ( const char * format, const char * header, const char * flags, picture_io_handler readPicture, picture_io_handler writePicture ) - - - description - description - () - - - fileName - fileName - () - - - format - format - () - - - gamma - gamma - () - - - inputFormats - inputFormats - () - - - ioDevice - ioDevice - () - - - outputFormats - outputFormats - () - - - parameters - parameters - () - - - picture - picture - () - - - pictureFormat - pictureFormat - ( const QString & fileName ) - - - pictureFormat - pictureFormat-2 - ( QIODevice * d ) - - - quality - quality - () - - - read - read - () - - - setDescription - setDescription - ( const QString & description ) - - - setFileName - setFileName - ( const QString & fileName ) - - - setFormat - setFormat - ( const char * format ) - - - setGamma - setGamma - ( float gamma ) - - - setIODevice - setIODevice - ( QIODevice * ioDevice ) - - - setParameters - setParameters - ( const char * parameters ) - - - setPicture - setPicture - ( const QPicture & picture ) - - - setQuality - setQuality - ( int q ) - - - setStatus - setStatus - ( int status ) - - - status - status - () - - - write - write - () - - - ColorMode - ColorMode-enum - - - - QPixmap - QPixmap-6 - ( const QString & fileName, const char * format, ColorMode mode ) - - - QPixmap - QPixmap-7 - ( const QImage & image ) - - - convertFromImage - convertFromImage - ( const QImage & image, ColorMode mode ) - - - convertFromImage - convertFromImage-2 - ( const QImage & image, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - convertToImage - convertToImage - () - - - load - load-2 - ( const QString & fileName, const char * format, ColorMode mode ) - - - loadFromData - loadFromData-2 - ( const uchar * buf, uint len, const char * format, ColorMode mode ) - - - resize - resize - ( int w, int h ) - - - resize - resize-2 - ( const QSize & size ) - - - selfMask - selfMask - () - - - xForm - xForm - ( const QMatrix & matrix ) - - - operator - operator-QImage - QImage() - - - operator= - operator-eq-2 - ( const QImage & image ) - - - - QPixmap - qpixmap.html - - HBitmapFormat - HBitmapFormat-enum - - - - QPixmap - QPixmap - () - - - QPixmap - QPixmap-2 - ( int w, int h ) - - - QPixmap - QPixmap-3 - ( const QString & fileName, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - QPixmap - QPixmap-4 - ( const char * const[] xpm ) - - - QPixmap - QPixmap-5 - ( const QPixmap & pixmap ) - - - QPixmap - QPixmap-9 - ( const QSize & size ) - - - alphaChannel - alphaChannel - () - - - copy - copy - ( const QRect & rect = QRect() - - - copy - copy-2 - ( int x, int y, int w, int h ) - - - createHeuristicMask - createHeuristicMask - ( bool clipTight = true ) - - - createMaskFromColor - createMaskFromColor - ( const QColor & maskColor ) - - - defaultDepth - defaultDepth - () - - - depth - depth - () - - - detach - detach - () - - - fill - fill - ( const QColor & fillColor = Qt::white ) - - - fill - fill-2 - ( const QWidget * widget, const QPoint & offset ) - - - fill - fill-3 - ( const QWidget * widget, int xoff, int yoff ) - - - fromImage - fromImage - ( const QImage & img, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - fromWinHBITMAP - fromWinHBITMAP - ( HBITMAP bitmap, HBitmapFormat format = NoAlpha ) - - - grabWidget - grabWidget - ( QWidget * widget, int x = 0, int y = 0, int w = -1, int h = -1 ) - - - grabWidget - grabWidget-2 - ( QWidget * widget, const QRect & rect ) - - - grabWindow - grabWindow - ( WId window, int x = 0, int y = 0, int w = -1, int h = -1 ) - - - hasAlpha - hasAlpha - () - - - hasAlphaChannel - hasAlphaChannel - () - - - height - height - () - - - isNull - isNull - () - - - isQBitmap - isQBitmap - () - - - load - load - ( const QString & fileName, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - loadFromData - loadFromData - ( const uchar * buf, uint len, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - loadFromData - loadFromData-3 - ( const QByteArray & buf, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor ) - - - mask - mask - () - - - metric - metric - ( PaintDeviceMetric m ) - - - rect - rect - () - - - save - save - ( const QString & fileName, const char * format, int quality = -1 ) - - - save - save-2 - ( QIODevice * device, const char * format, int quality = -1 ) - - - scaled - scaled - ( int w, int h, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation ) - - - scaled - scaled-2 - ( const QSize & size, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation ) - - - scaledToHeight - scaledToHeight - ( int h, Qt::TransformationMode mode = Qt::FastTransformation ) - - - scaledToWidth - scaledToWidth - ( int w, Qt::TransformationMode mode = Qt::FastTransformation ) - - - serialNumber - serialNumber - () - - - setAlphaChannel - setAlphaChannel - ( const QPixmap & alpha ) - - - setMask - setMask - ( const QBitmap & newmask ) - - - size - size - () - - - toImage - toImage - () - - - toWinHBITMAP - toWinHBITMAP - ( HBitmapFormat format = NoAlpha ) - - - transformed - transformed - ( const QMatrix & matrix, Qt::TransformationMode mode = Qt::FastTransformation ) - - - trueMatrix - trueMatrix - ( const QMatrix & m, int w, int h ) - - - width - width - () - - - x11Info - x11Info - () - - - HANDLE - x11PictureHandle - QPixmap::x11PictureHandle() - - - operator - operator-QVariant - QVariant() - - - operator! - operator-not - () - - - operator= - operator-eq - ( const QPixmap & pixmap ) - - - find - find-2 - ( const QString & key ) - - - - QPixmapCache - qpixmapcache.html - - cacheLimit - cacheLimit - () - - - clear - clear - () - - - find - find - ( const QString & key, QPixmap & pm ) - - - insert - insert - ( const QString & key, const QPixmap & pm ) - - - remove - remove - ( const QString & key ) - - - setCacheLimit - setCacheLimit - ( int n ) - - - - QPlastiqueStyle - qplastiquestyle.html - - QPlastiqueStyle - QPlastiqueStyle - () - - - unpolish - unpolish-2 - ( QApplication * app ) - - - - QPluginLoader - qpluginloader.html - - QPluginLoader - QPluginLoader - ( QObject * parent = 0 ) - - - QPluginLoader - QPluginLoader-2 - ( const QString & fileName, QObject * parent = 0 ) - - - instance - instance - () - - - isLoaded - isLoaded - () - - - load - load - () - - - staticInstances - staticInstances - () - - - unload - unload - () - - - - QPoint - qpoint.html - - QPoint - QPoint - () - - - QPoint - QPoint-2 - ( int xpos, int ypos ) - - - isNull - isNull - () - - - manhattanLength - manhattanLength - () - - - rx - rx - () - - - ry - ry - () - - - setX - setX - ( int x ) - - - setY - setY - ( int y ) - - - x - x - () - - - y - y - () - - - operator*= - operator-2a-eq - ( qreal c ) - - - operator+= - operator-2b-eq - ( const QPoint & p ) - - - operator-= - operator--eq - ( const QPoint & p ) - - - operator/= - operator-2f-eq - ( qreal c ) - - - - QPointer - qpointer.html - - QPointer - QPointer - () - - - QPointer - QPointer-2 - ( T * p ) - - - QPointer - QPointer-3 - ( const QPointer<T> & p ) - - - isNull - isNull - () - - - operator - operator-T--2a - T *() - - - operator* - operator-2a - () - - - operator-& - operator--gt - gt;() - - - operator= - operator-eq - ( const QPointer<T> & p ) - - - operator= - operator-eq-2 - ( T * p ) - - - - QPointF - qpointf.html - - QPointF - QPointF - () - - - QPointF - QPointF-2 - ( const QPoint & point ) - - - QPointF - QPointF-3 - ( qreal x, qreal y ) - - - isNull - isNull - () - - - rx - rx - () - - - ry - ry - () - - - setX - setX - ( qreal x ) - - - setY - setY - ( qreal y ) - - - toPoint - toPoint - () - - - x - x - () - - - y - y - () - - - operator*= - operator-2a-eq - ( qreal factor ) - - - operator+= - operator-2b-eq - ( const QPointF & other ) - - - operator-= - operator--eq - ( const QPointF & other ) - - - operator/= - operator-2f-eq - ( qreal factor ) - - - - QPolygon - qpolygon.html - - QPolygon - QPolygon - () - - - QPolygon - QPolygon-2 - ( int size ) - - - QPolygon - QPolygon-3 - ( const QPolygon & a ) - - - QPolygon - QPolygon-4 - ( const QVector<QPoint> & pts ) - - - QPolygon - QPolygon-5 - ( const QRect & r, bool closed = false ) - - - boundingRect - boundingRect - () - - - point - point - ( int index, int * x, int * y ) - - - point - point-2 - ( int index ) - - - putPoints - putPoints - ( int index, int nPoints, int firstx, int firsty, ... ) - - - putPoints - putPoints-3 - ( int index, int nPoints, const QPolygon & from, int fromIndex = 0 ) - - - setPoint - setPoint - ( int index, int x, int y ) - - - setPoint - setPoint-2 - ( int i, const QPoint & p ) - - - setPoints - setPoints - ( int nPoints, const int * points ) - - - setPoints - setPoints-2 - ( int nPoints, int firstx, int firsty, ... ) - - - translate - translate - ( int dx, int dy ) - - - translate - translate-2 - ( const QPoint & offset ) - - - operator - operator-QVariant - QVariant() - - - - QPolygonF - qpolygonf.html - - QPolygonF - QPolygonF - () - - - QPolygonF - QPolygonF-2 - ( int size ) - - - QPolygonF - QPolygonF-3 - ( const QPolygonF & other ) - - - QPolygonF - QPolygonF-4 - ( const QVector<QPointF> & vector ) - - - QPolygonF - QPolygonF-5 - ( const QRectF & rect ) - - - QPolygonF - QPolygonF-6 - ( const QPolygon & a ) - - - boundingRect - boundingRect - () - - - isClosed - isClosed - () - - - toPolygon - toPolygon - () - - - translate - translate - ( const QPointF & offset ) - - - translate - translate-2 - ( qreal dx, qreal dy ) - - - - QPrintEngine - qprintengine.html - - PrintEnginePropertyKey - PrintEnginePropertyKey-enum - - - - abort - abort - () - - - metric - metric - ( QPaintDevice::PaintDeviceMetric id ) - - - newPage - newPage - () - - - PrinterState - printerState - QPrintEngine::printerState() - - - property - property - ( PrintEnginePropertyKey key ) - - - setProperty - setProperty - ( PrintEnginePropertyKey key, const QVariant & value ) - - - aborted - aborted - () - - - fromPage - fromPage - () - - - isOptionEnabled - isOptionEnabled - ( PrinterOption option ) - - - margins - margins - ( uint * top, uint * left, uint * bottom, uint * right ) - - - margins - margins-2 - () - - - maxPage - maxPage - () - - - minPage - minPage - () - - - outputToFile - outputToFile - () - - - pageSetup - pageSetup - ( QWidget * parent = 0 ) - - - printRange - printRange - () - - - printSetup - printSetup - ( QWidget * parent = 0 ) - - - setFromTo - setFromTo - ( int from, int to ) - - - setMinMax - setMinMax - ( int minPage, int maxPage ) - - - setOptionEnabled - setOptionEnabled - ( PrinterOption option, bool enable ) - - - setOutputToFile - setOutputToFile - ( bool enable ) - - - setPrintRange - setPrintRange - ( PrintRange range ) - - - setup - setup - ( QWidget * parent = 0 ) - - - toPage - toPage - () - - - - QPrinter - qprinter.html - - ColorMode - ColorMode-enum - - - - Orientation - Orientation-enum - - - - PageOrder - PageOrder-enum - - - - PageSize - PageSize-enum - - - - PaperSource - PaperSource-enum - - - - PrintRange - PrintRange-enum - - - - PrinterMode - PrinterMode-enum - - - - PrinterOption - PrinterOption-enum - - - - PrinterState - PrinterState-enum - - - - QPrinter - QPrinter - ( PrinterMode mode = ScreenResolution ) - - - abort - abort - () - - - colorMode - colorMode - () - - - creator - creator - () - - - devType - devType - () - - - docName - docName - () - - - fullPage - fullPage - () - - - newPage - newPage - () - - - numCopies - numCopies - () - - - orientation - orientation - () - - - outputFileName - outputFileName - () - - - pageOrder - pageOrder - () - - - pageRect - pageRect - () - - - pageSize - pageSize - () - - - paintEngine - paintEngine - () - - - paperRect - paperRect - () - - - paperSource - paperSource - () - - - printProgram - printProgram - () - - - printerName - printerName - () - - - printerState - printerState - () - - - resolution - resolution - () - - - setColorMode - setColorMode - ( ColorMode newColorMode ) - - - setCreator - setCreator - ( const QString & creator ) - - - setDocName - setDocName - ( const QString & name ) - - - setFullPage - setFullPage - ( bool fp ) - - - setNumCopies - setNumCopies - ( int numCopies ) - - - setOrientation - setOrientation - ( Orientation orientation ) - - - setOutputFileName - setOutputFileName - ( const QString & fileName ) - - - setPageOrder - setPageOrder - ( PageOrder pageOrder ) - - - setPageSize - setPageSize - ( PageSize newPageSize ) - - - setPaperSource - setPaperSource - ( PaperSource source ) - - - setPrintProgram - setPrintProgram - ( const QString & printProg ) - - - setPrinterName - setPrinterName - ( const QString & name ) - - - setResolution - setResolution - ( int dpi ) - - - setWinPageSize - setWinPageSize - ( int pageSize ) - - - supportedResolutions - supportedResolutions - () - - - winPageSize - winPageSize - () - - - - QProcess - qprocess.html - - ProcessChannel - ProcessChannel-enum - - - - ProcessChannelMode - ProcessChannelMode-enum - - - - ProcessError - ProcessError-enum - - - - ProcessState - ProcessState-enum - - - - QProcess - QProcess - ( QObject * parent = 0 ) - - - close - close - () - - - closeReadChannel - closeReadChannel - ( ProcessChannel channel ) - - - closeWriteChannel - closeWriteChannel - () - - - environment - environment - () - - - ProcessError - error - QProcess::error() - - - error - error-2 - ( ProcessError error ) - - - execute - execute - ( const QString & program, const QStringList & arguments ) - - - execute - execute-2 - ( const QString & program ) - - - exitCode - exitCode - () - - - finished - finished - ( int exitCode ) - - - pid - pid - () - - - readAllStandardError - readAllStandardError - () - - - readAllStandardOutput - readAllStandardOutput - () - - - readChannel - readChannel - () - - - readChannelMode - readChannelMode - () - - - readyReadStandardError - readyReadStandardError - () - - - readyReadStandardOutput - readyReadStandardOutput - () - - - setEnvironment - setEnvironment - ( const QStringList & environment ) - - - setProcessState - setProcessState - ( ProcessState state ) - - - setReadChannel - setReadChannel - ( ProcessChannel channel ) - - - setReadChannelMode - setReadChannelMode - ( ProcessChannelMode mode ) - - - setWorkingDirectory - setWorkingDirectory - ( const QString & dir ) - - - setupChildProcess - setupChildProcess - () - - - start - start - ( const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite ) - - - start - start-2 - ( const QString & program, OpenMode mode = ReadWrite ) - - - startDetached - startDetached - ( const QString & program, const QStringList & arguments ) - - - startDetached - startDetached-2 - ( const QString & program ) - - - started - started - () - - - ProcessState - state - QProcess::state() - - - stateChanged - stateChanged - ( ProcessState newState ) - - - terminate - terminate - () - - - waitForFinished - waitForFinished - ( int msecs = 30000 ) - - - waitForStarted - waitForStarted - ( int msecs = 30000 ) - - - workingDirectory - workingDirectory - () - - - - QProgressBar - qprogressbar.html - - Alignment - alignment - - - - QProgressBar - QProgressBar - ( QWidget * parent = 0 ) - - - reset - reset - () - - - setRange - setRange - ( int minimum, int maximum ) - - - valueChanged - valueChanged - ( int value ) - - - - QProgressDialog - qprogressdialog.html - - QProgressDialog - QProgressDialog - ( QWidget * parent = 0, Qt::WFlags f = 0 ) - - - QProgressDialog - QProgressDialog-2 - ( const QString & labelText, const QString & cancelButtonText, int minimum, int maximum, QWidget * parent = 0, Qt::WFlags f = 0 ) - - - cancel - cancel - () - - - canceled - canceled - () - - - forceShow - forceShow - () - - - reset - reset - () - - - setBar - setBar - ( QProgressBar * bar ) - - - setCancelButton - setCancelButton - ( QPushButton * cancelButton ) - - - setCancelButtonText - setCancelButtonText - ( const QString & cancelButtonText ) - - - setLabel - setLabel - ( QLabel * label ) - - - setRange - setRange - ( int minimum, int maximum ) - - - sizeHint - sizeHint - () - - - - QProxyModel - qproxymodel.html - - QProxyModel - QProxyModel - ( QObject * parent = 0 ) - - - columnCount - columnCount - ( const QModelIndex & parent ) - - - data - data - ( const QModelIndex & index, int role ) - - - dropMimeData - dropMimeData - ( const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent ) - - - fetchMore - fetchMore - ( const QModelIndex & parent ) - - - ItemFlags - flags - QProxyModel::flags( const QModelIndex & index ) - - - hasChildren - hasChildren - ( const QModelIndex & parent ) - - - headerData - headerData - ( int section, Qt::Orientation orientation, int role ) - - - index - index - ( int row, int column, const QModelIndex & parent ) - - - insertColumns - insertColumns - ( int column, int count, const QModelIndex & parent ) - - - insertRows - insertRows - ( int row, int count, const QModelIndex & parent ) - - - match - match - ( const QModelIndex & start, int role, const QVariant & value, int hits, QAbstractItemModel::MatchFlags flags ) - - - mimeData - mimeData - ( const QModelIndexList & indexes ) - - - mimeTypes - mimeTypes - () - - - model - model - () - - - parent - parent - ( const QModelIndex & child ) - - - revert - revert - () - - - rowCount - rowCount - ( const QModelIndex & parent ) - - - setData - setData - ( const QModelIndex & index, const QVariant & value, int role ) - - - setHeaderData - setHeaderData - ( int section, Qt::Orientation orientation, const QVariant & value, int role ) - - - setModel - setModel - ( QAbstractItemModel * model ) - - - sort - sort - ( int column, Qt::SortOrder order ) - - - span - span - ( const QModelIndex & index ) - - - submit - submit - () - - - DropActions - supportedDropActions - QProxyModel::supportedDropActions() - - - QPushButton - QPushButton-4 - ( QWidget * parent, const char * name ) - - - QPushButton - QPushButton-5 - ( const QString & text, QWidget * parent, const char * name ) - - - QPushButton - QPushButton-6 - ( const QIcon & icon, const QString & text, QWidget * parent, const char * name ) - - - isMenuButton - isMenuButton - () - - - openPopup - openPopup - () - - - popup - popup - () - - - setPopup - setPopup - ( QMenu * popup ) - - - - QPushButton - qpushbutton.html - - QPushButton - QPushButton - ( QWidget * parent = 0 ) - - - QPushButton - QPushButton-2 - ( const QString & text, QWidget * parent = 0 ) - - - QPushButton - QPushButton-3 - ( const QIcon & icon, const QString & text, QWidget * parent = 0 ) - - - menu - menu - () - - - setMenu - setMenu - ( QMenu * menu ) - - - showMenu - showMenu - () - - - - QQueue - qqueue.html - - QQueue - QQueue - () - - - dequeue - dequeue - () - - - enqueue - enqueue - ( const T & t ) - - - head - head - () - - - head - head-2 - () - - - - QRadialGradient - qradialgradient.html - - QRadialGradient - QRadialGradient - ( const QPointF & center, qreal radius, const QPointF & focalPoint = QPointF() - - - QRadialGradient - QRadialGradient-2 - ( qreal cx, qreal cy, qreal radius, qreal fx = 0, qreal fy = 0 ) - - - center - center - () - - - focalPoint - focalPoint - () - - - radius - radius - () - - - QRadioButton - QRadioButton-3 - ( QWidget * parent, const char * name ) - - - QRadioButton - QRadioButton-4 - ( const QString & text, QWidget * parent, const char * name ) - - - - QRadioButton - qradiobutton.html - - QRadioButton - QRadioButton - ( QWidget * parent = 0 ) - - - QRadioButton - QRadioButton-2 - ( const QString & text, QWidget * parent = 0 ) - - - - QReadLocker - qreadlocker.html - - QReadLocker - QReadLocker - ( QReadWriteLock * lock ) - - - readWriteLock - readWriteLock - () - - - relock - relock - () - - - unlock - unlock - () - - - - QReadWriteLock - qreadwritelock.html - - QReadWriteLock - QReadWriteLock - () - - - lockForRead - lockForRead - () - - - lockForWrite - lockForWrite - () - - - tryLockForRead - tryLockForRead - () - - - tryLockForWrite - tryLockForWrite - () - - - unlock - unlock - () - - - addCoords - addCoords - ( int xp1, int yp1, int xp2, int yp2 ) - - - coords - coords - ( int * xp1, int * yp1, int * xp2, int * yp2 ) - - - moveBy - moveBy - ( int dx, int dy ) - - - moveBy - moveBy-2 - ( const QPoint & p ) - - - normalize - normalize - () - - - normalized - normalized - () - - - rBottom - rBottom - () - - - rLeft - rLeft - () - - - rRight - rRight - () - - - rTop - rTop - () - - - rect - rect - ( int * x, int * y, int * w, int * h ) - - - - QRect - qrect.html - - QRect - QRect - () - - - QRect - QRect-2 - ( const QPoint & topLeft, const QPoint & bottomRight ) - - - QRect - QRect-3 - ( const QPoint & topLeft, const QSize & size ) - - - QRect - QRect-4 - ( int left, int top, int width, int height ) - - - adjust - adjust - ( int xp1, int yp1, int xp2, int yp2 ) - - - adjusted - adjusted - ( int xp1, int yp1, int xp2, int yp2 ) - - - bottom - bottom - () - - - bottomLeft - bottomLeft - () - - - bottomRight - bottomRight - () - - - center - center - () - - - contains - contains - ( const QPoint & p, bool proper = false ) - - - contains - contains-2 - ( int x, int y, bool proper ) - - - contains - contains-3 - ( int x, int y ) - - - contains - contains-4 - ( const QRect & r, bool proper = false ) - - - getCoords - getCoords - ( int * xp1, int * yp1, int * xp2, int * yp2 ) - - - getRect - getRect - ( int * x, int * y, int * w, int * h ) - - - height - height - () - - - intersect - intersect - ( const QRect & r ) - - - intersects - intersects - ( const QRect & r ) - - - isEmpty - isEmpty - () - - - isNull - isNull - () - - - isValid - isValid - () - - - left - left - () - - - moveBottom - moveBottom - ( int pos ) - - - moveBottomLeft - moveBottomLeft - ( const QPoint & p ) - - - moveBottomRight - moveBottomRight - ( const QPoint & p ) - - - moveCenter - moveCenter - ( const QPoint & p ) - - - moveLeft - moveLeft - ( int pos ) - - - moveRight - moveRight - ( int pos ) - - - moveTo - moveTo - ( int x, int y ) - - - moveTo - moveTo-2 - ( const QPoint & pt ) - - - moveTop - moveTop - ( int pos ) - - - moveTopLeft - moveTopLeft - ( const QPoint & p ) - - - moveTopRight - moveTopRight - ( const QPoint & p ) - - - right - right - () - - - setBottom - setBottom - ( int pos ) - - - setBottomLeft - setBottomLeft - ( const QPoint & p ) - - - setBottomRight - setBottomRight - ( const QPoint & p ) - - - setCoords - setCoords - ( int xp1, int yp1, int xp2, int yp2 ) - - - setHeight - setHeight - ( int h ) - - - setLeft - setLeft - ( int pos ) - - - setRect - setRect - ( int x, int y, int w, int h ) - - - setRight - setRight - ( int pos ) - - - setSize - setSize - ( const QSize & s ) - - - setTop - setTop - ( int pos ) - - - setTopLeft - setTopLeft - ( const QPoint & p ) - - - setTopRight - setTopRight - ( const QPoint & p ) - - - setWidth - setWidth - ( int w ) - - - setX - setX - ( int x ) - - - setY - setY - ( int y ) - - - size - size - () - - - top - top - () - - - topLeft - topLeft - () - - - topRight - topRight - () - - - translate - translate - ( int dx, int dy ) - - - translate - translate-2 - ( const QPoint & p ) - - - translated - translated - ( int dx, int dy ) - - - translated - translated-2 - ( const QPoint & p ) - - - unite - unite - ( const QRect & r ) - - - width - width - () - - - x - x - () - - - y - y - () - - - operator& - operator-and - amp;( const QRect & r ) - - - operator& - operator-and-eq - amp;=( const QRect & r ) - - - operator| - operator-7c - ( const QRect & r ) - - - operator|= - operator-7c-eq - ( const QRect & r ) - - - - QRectF - qrectf.html - - QRectF - QRectF - () - - - QRectF - QRectF-2 - ( const QPointF & topLeft, const QSizeF & size ) - - - QRectF - QRectF-3 - ( qreal x, qreal y, qreal width, qreal height ) - - - QRectF - QRectF-4 - ( const QRect & rect ) - - - adjust - adjust - ( qreal xp1, qreal yp1, qreal xp2, qreal yp2 ) - - - adjusted - adjusted - ( qreal xp1, qreal yp1, qreal xp2, qreal yp2 ) - - - bottom - bottom - () - - - bottomLeft - bottomLeft - () - - - bottomRight - bottomRight - () - - - center - center - () - - - contains - contains - ( const QPointF & point ) - - - contains - contains-2 - ( qreal x, qreal y ) - - - contains - contains-3 - ( const QRectF & rectangle ) - - - getCoords - getCoords - ( qreal * xp1, qreal * yp1, qreal * xp2, qreal * yp2 ) - - - getRect - getRect - ( qreal * x, qreal * y, qreal * w, qreal * h ) - - - height - height - () - - - intersect - intersect - ( const QRectF & other ) - - - intersects - intersects - ( const QRectF & rectangle ) - - - isEmpty - isEmpty - () - - - isNull - isNull - () - - - isValid - isValid - () - - - left - left - () - - - moveBottom - moveBottom - ( qreal pos ) - - - moveBottomLeft - moveBottomLeft - ( const QPointF & p ) - - - moveBottomRight - moveBottomRight - ( const QPointF & p ) - - - moveCenter - moveCenter - ( const QPointF & p ) - - - moveLeft - moveLeft - ( qreal pos ) - - - moveRight - moveRight - ( qreal pos ) - - - moveTo - moveTo - ( qreal x, qreal y ) - - - moveTo - moveTo-2 - ( const QPointF & pt ) - - - moveTop - moveTop - ( qreal pos ) - - - moveTopLeft - moveTopLeft - ( const QPointF & p ) - - - moveTopRight - moveTopRight - ( const QPointF & p ) - - - normalized - normalized - () - - - right - right - () - - - setBottom - setBottom - ( qreal pos ) - - - setBottomLeft - setBottomLeft - ( const QPointF & p ) - - - setBottomRight - setBottomRight - ( const QPointF & p ) - - - setCoords - setCoords - ( qreal xp1, qreal yp1, qreal xp2, qreal yp2 ) - - - setHeight - setHeight - ( qreal height ) - - - setLeft - setLeft - ( qreal pos ) - - - setRect - setRect - ( qreal x, qreal y, qreal width, qreal height ) - - - setRight - setRight - ( qreal pos ) - - - setSize - setSize - ( const QSizeF & size ) - - - setTop - setTop - ( qreal pos ) - - - setTopLeft - setTopLeft - ( const QPointF & p ) - - - setTopRight - setTopRight - ( const QPointF & p ) - - - setWidth - setWidth - ( qreal width ) - - - setX - setX - ( qreal x ) - - - setY - setY - ( qreal y ) - - - size - size - () - - - toRect - toRect - () - - - top - top - () - - - topLeft - topLeft - () - - - topRight - topRight - () - - - translate - translate - ( qreal dx, qreal dy ) - - - translate - translate-2 - ( const QPointF & p ) - - - translated - translated - ( qreal dx, qreal dy ) - - - translated - translated-2 - ( const QPointF & p ) - - - unite - unite - ( const QRectF & other ) - - - width - width - () - - - x - x - () - - - y - y - () - - - operator& - operator-and - amp;( const QRectF & other ) - - - operator& - operator-and-eq - amp;=( const QRectF & other ) - - - operator| - operator-7c - ( const QRectF & other ) - - - operator|= - operator-7c-eq - ( const QRectF & other ) - - - QRegExp - QRegExp-4 - ( const QString & pattern, bool cs, bool wildcard = false ) - - - caseSensitive - caseSensitive - () - - - minimal - minimal - () - - - search - search - ( const QString & str, int from = 0, CaretMode caretMode = CaretAtZero ) - - - searchRev - searchRev - ( const QString & str, int from = -1, CaretMode caretMode = CaretAtZero ) - - - setCaseSensitive - setCaseSensitive - ( bool sensitive ) - - - setWildcard - setWildcard - ( bool wildcard ) - - - wildcard - wildcard - () - - - - QRegExp - qregexp.html - - CaretMode - CaretMode-enum - - - - PatternSyntax - PatternSyntax-enum - - - - QRegExp - QRegExp - () - - - QRegExp - QRegExp-2 - ( const QString & pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive, PatternSyntax syntax = RegExp ) - - - QRegExp - QRegExp-3 - ( const QRegExp & rx ) - - - cap - cap - ( int nth = 0 ) - - - capturedTexts - capturedTexts - () - - - CaseSensitivity - caseSensitivity - QRegExp::caseSensitivity() - - - errorString - errorString - () - - - escape - escape - ( const QString & str ) - - - exactMatch - exactMatch - ( const QString & str ) - - - indexIn - indexIn - ( const QString & str, int offset = 0, CaretMode caretMode = CaretAtZero ) - - - isEmpty - isEmpty - () - - - isMinimal - isMinimal - () - - - isValid - isValid - () - - - lastIndexIn - lastIndexIn - ( const QString & str, int offset = -1, CaretMode caretMode = CaretAtZero ) - - - matchedLength - matchedLength - () - - - numCaptures - numCaptures - () - - - pattern - pattern - () - - - patternSyntax - patternSyntax - () - - - pos - pos - ( int nth = 0 ) - - - setCaseSensitivity - setCaseSensitivity - ( Qt::CaseSensitivity cs ) - - - setMinimal - setMinimal - ( bool minimal ) - - - setPattern - setPattern - ( const QString & pattern ) - - - setPatternSyntax - setPatternSyntax - ( PatternSyntax syntax ) - - - operator!= - operator-not-eq - ( const QRegExp & rx ) - - - operator= - operator-eq - ( const QRegExp & rx ) - - - operator== - operator-eq-eq - ( const QRegExp & rx ) - - - QRegExpValidator - QRegExpValidator-3 - ( QObject * parent, const char * name ) - - - QRegExpValidator - QRegExpValidator-4 - ( const QRegExp & rx, QObject * parent, const char * name ) - - - - QRegExpValidator - qregexpvalidator.html - - QRegExpValidator - QRegExpValidator - ( QObject * parent ) - - - QRegExpValidator - QRegExpValidator-2 - ( const QRegExp & rx, QObject * parent ) - - - regExp - regExp - () - - - setRegExp - setRegExp - ( const QRegExp & rx ) - - - State - validate - QRegExpValidator::validate( QString & input, int & pos ) - - - QRegion - QRegion-5 - ( const QPolygon & pa, bool winding ) - - - isNull - isNull - () - - - - QRegion - qregion.html - - RegionType - RegionType-enum - - - - QRegion - QRegion - () - - - QRegion - QRegion-2 - ( int x, int y, int w, int h, RegionType t = Rectangle ) - - - QRegion - QRegion-3 - ( const QRect & r, RegionType t = Rectangle ) - - - QRegion - QRegion-4 - ( const QPolygon & a, Qt::FillRule fillRule = Qt::OddEvenFill ) - - - QRegion - QRegion-6 - ( const QRegion & r ) - - - QRegion - QRegion-7 - ( const QBitmap & bm ) - - - boundingRect - boundingRect - () - - - contains - contains - ( const QPoint & p ) - - - contains - contains-2 - ( const QRect & r ) - - - eor - eor - ( const QRegion & r ) - - - handle - handle - () - - - handle - handle-2 - () - - - intersect - intersect - ( const QRegion & r ) - - - isEmpty - isEmpty - () - - - rects - rects - () - - - subtract - subtract - ( const QRegion & r ) - - - translate - translate - ( int dx, int dy ) - - - translate - translate-2 - ( const QPoint & point ) - - - unite - unite - ( const QRegion & r ) - - - operator - operator-QVariant - QVariant() - - - operator!= - operator-not-eq - ( const QRegion & other ) - - - operator& - operator-and - amp;( const QRegion & r ) - - - operator& - operator-and-eq - amp;=( const QRegion & r ) - - - operator+ - operator-2b - ( const QRegion & r ) - - - operator+= - operator-2b-eq - ( const QRegion & r ) - - - operator- - operator- - ( const QRegion & r ) - - - operator-= - operator--eq - ( const QRegion & r ) - - - operator= - operator-eq - ( const QRegion & r ) - - - operator== - operator-eq-eq - ( const QRegion & r ) - - - operator^ - operator-5e - ( const QRegion & r ) - - - operator^= - operator-5e-eq - ( const QRegion & r ) - - - operator| - operator-7c - ( const QRegion & r ) - - - operator|= - operator-7c-eq - ( const QRegion & r ) - - - - QResizeEvent - qresizeevent.html - - QResizeEvent - QResizeEvent - ( const QSize & size, const QSize & oldSize ) - - - oldSize - oldSize - () - - - size - size - () - - - - QRubberBand - qrubberband.html - - Shape - Shape-enum - - - - QRubberBand - QRubberBand - ( Shape s, QWidget * p = 0 ) - - - move - move - ( int x, int y ) - - - move - move-2 - ( const QPoint & p ) - - - resize - resize - ( int width, int height ) - - - resize - resize-2 - ( const QSize & size ) - - - setGeometry - setGeometry - ( const QRect & rect ) - - - setGeometry - setGeometry-2 - ( int x, int y, int w, int h ) - - - shape - shape - () - - - - QScreen - qscreen.html - - PixelType - PixelType-enum - - - - QScreen - QScreen - ( int display_id ) - - - alloc - alloc - ( unsigned int r, unsigned int g, unsigned int b ) - - - base - base - () - - - blank - blank - ( bool on ) - - - cache - cache - ( int ) - - - clut - clut - () - - - connect - connect - ( const QString & displaySpec ) - - - createGfx - createGfx - ( unsigned char * bytes, int w, int h, int d, int linestep ) - - - depth - depth - () - - - deviceHeight - deviceHeight - () - - - deviceWidth - deviceWidth - () - - - disconnect - disconnect - () - - - height - height - () - - - initCursor - initCursor - ( void * end_of_location, bool init = false ) - - - initDevice - initDevice - () - - - isInterlaced - isInterlaced - () - - - isTransformed - isTransformed - () - - - lastOp - lastOp - () - - - linestep - linestepx - () - - - mapFromDevice - mapFromDevice - ( const QSize & s ) - - - mapFromDevice - mapFromDevice-2 - ( const QPoint & point, const QSize & size ) - - - mapFromDevice - mapFromDevice-3 - ( const QRect & rect, const QSize & size ) - - - mapFromDevice - mapFromDevice-4 - ( const QImage & i ) - - - mapFromDevice - mapFromDevice-5 - ( const QRegion & region, const QSize & size ) - - - mapToDevice - mapToDevice - ( const QSize & s ) - - - mapToDevice - mapToDevice-2 - ( const QPoint & point, const QSize & size ) - - - mapToDevice - mapToDevice-3 - ( const QRect & rect, const QSize & size ) - - - mapToDevice - mapToDevice-4 - ( const QImage & i ) - - - mapToDevice - mapToDevice-5 - ( const QRegion & region, const QSize & size ) - - - numCols - numCols - () - - - onCard - onCard - ( const unsigned char * p ) - - - onCard - onCard-2 - ( const unsigned char * p, ulong & offset ) - - - opType - opType - () - - - pixelType - pixelType - () - - - pixmapDepth - pixmapDepth - () - - - pixmapLinestepAlignment - pixmapLinestepAlignment - () - - - pixmapOffsetAlignment - pixmapOffsetAlignment - () - - - restore - restore - () - - - save - save - () - - - screenGfx - screenGfx - () - - - screenSize - screenSize - () - - - setDirty - setDirty - ( const QRect & rect ) - - - setMode - setMode - ( int width, int height, int depth ) - - - shutdownDevice - shutdownDevice - () - - - supportsDepth - supportsDepth - ( int d ) - - - totalSize - totalSize - () - - - transformOrientation - transformOrientation - () - - - width - width - () - - - - QScrollArea - qscrollarea.html - - QScrollArea - QScrollArea - ( QWidget * parent = 0 ) - - - setWidget - setWidget - ( QWidget * w ) - - - takeWidget - takeWidget - () - - - widget - widget - () - - - QScrollBar - QScrollBar-3 - ( QWidget * parent, const char * name ) - - - QScrollBar - QScrollBar-4 - ( Qt::Orientation orientation, QWidget * parent, const char * name ) - - - QScrollBar - QScrollBar-5 - ( int minimum, int maximum, int lineStep, int pageStep, int value, Qt::Orientation orientation, QWidget * parent = 0, const char * name = 0 ) - - - draggingSlider - draggingSlider - () - - - - QScrollBar - qscrollbar.html - - QScrollBar - QScrollBar - ( QWidget * parent = 0 ) - - - QScrollBar - QScrollBar-2 - ( Qt::Orientation orientation, QWidget * parent = 0 ) - - - - QSemaphore - qsemaphore.html - - QSemaphore - QSemaphore - ( int n = 0 ) - - - acquire - acquire - ( int n = 1 ) - - - available - available - () - - - release - release - ( int n = 1 ) - - - tryAcquire - tryAcquire - ( int n = 1 ) - - - - QSessionManager - qsessionmanager.html - - RestartHint - RestartHint-enum - - - - allowsErrorInteraction - allowsErrorInteraction - () - - - allowsInteraction - allowsInteraction - () - - - cancel - cancel - () - - - discardCommand - discardCommand - () - - - isPhase2 - isPhase2 - () - - - release - release - () - - - requestPhase2 - requestPhase2 - () - - - restartCommand - restartCommand - () - - - restartHint - restartHint - () - - - sessionId - sessionId - () - - - sessionKey - sessionKey - () - - - setDiscardCommand - setDiscardCommand - ( const QStringList & list ) - - - setManagerProperty - setManagerProperty - ( const QString & name, const QStringList & value ) - - - setManagerProperty - setManagerProperty-2 - ( const QString & name, const QString & value ) - - - setRestartCommand - setRestartCommand - ( const QStringList & command ) - - - setRestartHint - setRestartHint - ( RestartHint hint ) - - - - QSet::const_iterator - qset-const-iterator.html - - const_iterator - const_iterator - () - - - const_iterator - const_iterator-3 - ( const const_iterator & other ) - - - operator!= - operator-not-eq - ( const const_iterator & other ) - - - operator* - operator-2a - () - - - operator+ - operator-2b - ( int j ) - - - operator++ - operator-2b-2b - () - - - operator++ - operator-2b-2b-2 - ( int ) - - - operator+= - operator-2b-eq - ( int j ) - - - operator- - operator- - ( int j ) - - - operator-- - operator-- - () - - - operator-- - operator---2 - ( int ) - - - operator-= - operator--eq - ( int j ) - - - operator-& - operator--gt - gt;() - - - operator= - operator-eq - ( const const_iterator & other ) - - - operator== - operator-eq-eq - ( const const_iterator & other ) - - - - QSet - qset.html - - ConstIterator - ConstIterator-typedef - - - - QSet - QSet - () - - - QSet - QSet-2 - ( const QSet<T> & other ) - - - begin - begin - () - - - capacity - capacity - () - - - clear - clear - () - - - constBegin - constBegin - () - - - constEnd - constEnd - () - - - contains - contains - ( const T & value ) - - - count - count - () - - - empty - empty - () - - - end - end - () - - - fromList - fromList - ( const QList<T> & list ) - - - insert - insert - ( const T & value ) - - - intersect - intersect - ( const QSet<T> & other ) - - - isEmpty - isEmpty - () - - - remove - remove - ( const T & value ) - - - reserve - reserve - ( int size ) - - - size - size - () - - - squeeze - squeeze - () - - - subtract - subtract - ( const QSet<T> & other ) - - - toList - toList - () - - - unite - unite - ( const QSet<T> & other ) - - - values - values - () - - - operator!= - operator-not-eq - ( const QSet<T> & other ) - - - operator& - operator-and - amp;( const QSet<T> & other ) - - - operator& - operator-and-eq - amp;=( const QSet<T> & other ) - - - operator+ - operator-2b - ( const QSet<T> & other ) - - - operator+= - operator-2b-eq - ( const QSet<T> & other ) - - - operator- - operator- - ( const QSet<T> & other ) - - - operator-= - operator--eq - ( const QSet<T> & other ) - - - operator<< - operator-lt-lt - ( const T & value ) - - - operator= - operator-eq - ( const QSet<T> & other ) - - - operator== - operator-eq-eq - ( const QSet<T> & other ) - - - operator| - operator-7c - ( const QSet<T> & other ) - - - operator|= - operator-7c-eq - ( const QSet<T> & other ) - - - - QSetIterator - qsetiterator.html - - QSetIterator - QSetIterator - ( const QSet<T> & set ) - - - findNext - findNext - ( const T & value ) - - - findPrevious - findPrevious - ( const T & value ) - - - hasNext - hasNext - () - - - hasPrevious - hasPrevious - () - - - next - next - () - - - peekNext - peekNext - () - - - peekPrevious - peekPrevious - () - - - previous - previous - () - - - toBack - toBack - () - - - toFront - toFront - () - - - operator= - operator-eq - ( const QSet<T> & set ) - - - System - System-enum - - - - entryList - entryList - ( const QString & key ) - - - insertSearchPath - insertSearchPath - ( System system, const QString & path ) - - - readBoolEntry - readBoolEntry - ( const QString & key, bool defaultValue = false, bool * ok = 0 ) - - - readDoubleEntry - readDoubleEntry - ( const QString & key, double defaultValue = 0, bool * ok = 0 ) - - - readEntry - readEntry - ( const QString & key, const QString & defaultValue = QString() - - - readListEntry - readListEntry - ( const QString & key, bool * ok = 0 ) - - - readListEntry - readListEntry-2 - ( const QString & key, QChar separator, bool * ok = 0 ) - - - readNumEntry - readNumEntry - ( const QString & key, int defaultValue = 0, bool * ok = 0 ) - - - removeEntry - removeEntry - ( const QString & key ) - - - removeSearchPath - removeSearchPath - ( System system, const QString & path ) - - - resetGroup - resetGroup - () - - - setPath - setPath - ( const QString & organization, const QString & application, Scope scope = Global ) - - - subkeyList - subkeyList - ( const QString & key ) - - - writeEntry - writeEntry - ( const QString & key, bool value ) - - - writeEntry - writeEntry-2 - ( const QString & key, double value ) - - - writeEntry - writeEntry-3 - ( const QString & key, int value ) - - - writeEntry - writeEntry-4 - ( const QString & key, const char * value ) - - - writeEntry - writeEntry-5 - ( const QString & key, const QString & value ) - - - writeEntry - writeEntry-6 - ( const QString & key, const QStringList & value ) - - - writeEntry - writeEntry-7 - ( const QString & key, const QStringList & value, QChar separator ) - - - - QSettings - qsettings.html - - Format - Format-enum - - - - Scope - Scope-enum - - - - Status - Status-enum - - - - QSettings - QSettings - ( const QString & organization, const QString & application = QString() - - - QSettings - QSettings-2 - ( Scope scope, const QString & organization, const QString & application = QString() - - - QSettings - QSettings-3 - ( Format format, Scope scope, const QString & organization, const QString & application = QString() - - - QSettings - QSettings-4 - ( const QString & fileName, Format format, QObject * parent = 0 ) - - - QSettings - QSettings-5 - ( QObject * parent = 0 ) - - - allKeys - allKeys - () - - - beginGroup - beginGroup - ( const QString & prefix ) - - - beginReadArray - beginReadArray - ( const QString & prefix ) - - - beginWriteArray - beginWriteArray - ( const QString & prefix, int size = -1 ) - - - childGroups - childGroups - () - - - childKeys - childKeys - () - - - clear - clear - () - - - contains - contains - ( const QString & key ) - - - endArray - endArray - () - - - endGroup - endGroup - () - - - fallbacksEnabled - fallbacksEnabled - () - - - fileName - fileName - () - - - group - group - () - - - isWritable - isWritable - () - - - remove - remove - ( const QString & key ) - - - setArrayIndex - setArrayIndex - ( int i ) - - - setFallbacksEnabled - setFallbacksEnabled - ( bool b ) - - - setSystemIniPath - setSystemIniPath - ( const QString & dir ) - - - setUserIniPath - setUserIniPath - ( const QString & dir ) - - - setValue - setValue - ( const QString & key, const QVariant & value ) - - - status - status - () - - - sync - sync - () - - - value - value - ( const QString & key, const QVariant & defaultValue = QVariant() - - - - QSharedData - qshareddata.html - - QSharedData - QSharedData - () - - - QSharedData - QSharedData-2 - ( const QSharedData & other ) - - - - QSharedDataPointer - qshareddatapointer.html - - QSharedDataPointer - QSharedDataPointer - () - - - QSharedDataPointer - QSharedDataPointer-2 - ( T * sharedData ) - - - QSharedDataPointer - QSharedDataPointer-3 - ( const QSharedDataPointer & other ) - - - constData - constData - () - - - data - data - () - - - data - data-2 - () - - - detach - detach - () - - - operator - operator-T--2a - T *() - - - operator - operator-const-T--2a - const T *() - - - operator! - operator-not - () - - - operator!= - operator-not-eq - ( const QSharedDataPointer<T> & other ) - - - operator* - operator-2a - () - - - operator* - operator-2a-2 - () - - - operator-& - operator--gt - gt;() - - - operator-& - operator--gt-2 - gt;() - - - operator= - operator-eq - ( const QSharedDataPointer & other ) - - - operator= - operator-eq-2 - ( T * sharedData ) - - - operator== - operator-eq-eq - ( const QSharedDataPointer<T> & other ) - - - - QShortcut - qshortcut.html - - ShortcutContext - context - - - - QShortcut - QShortcut - ( QWidget * parent ) - - - QShortcut - QShortcut-2 - ( const QKeySequence & key, QWidget * parent, const char * member = 0, const char * ambiguousMember = 0, Qt::ShortcutContext context = Qt::WindowShortcut ) - - - activated - activated - () - - - activatedAmbiguously - activatedAmbiguously - () - - - id - id - () - - - parentWidget - parentWidget - () - - - - QShowEvent - qshowevent.html - - QShowEvent - QShowEvent - () - - - QSignalMapper - QSignalMapper-3 - ( QObject * parent, const char * name ) - - - - QSignalMapper - qsignalmapper.html - - QSignalMapper - QSignalMapper - ( QObject * parent = 0 ) - - - QSignalMapper - QSignalMapper-2 - ( QSignalMapperPrivate & dd, QObject * parent = 0 ) - - - map - map - () - - - map - map-2 - ( QObject * sender ) - - - mapped - mapped - ( int i ) - - - mapped - mapped-2 - ( const QString & text ) - - - mapped - mapped-3 - ( QWidget * widget ) - - - mapping - mapping - ( int id ) - - - mapping - mapping-2 - ( const QString & id ) - - - mapping - mapping-3 - ( QWidget * widget ) - - - removeMappings - removeMappings - ( QObject * sender ) - - - setMapping - setMapping - ( QObject * sender, int id ) - - - setMapping - setMapping-2 - ( QObject * sender, const QString & text ) - - - setMapping - setMapping-3 - ( QObject * sender, QWidget * widget ) - - - - QSize - qsize.html - - QSize - QSize - () - - - QSize - QSize-2 - ( int w, int h ) - - - boundedTo - boundedTo - ( const QSize & otherSize ) - - - expandedTo - expandedTo - ( const QSize & otherSize ) - - - height - height - () - - - isEmpty - isEmpty - () - - - isNull - isNull - () - - - isValid - isValid - () - - - rheight - rheight - () - - - rwidth - rwidth - () - - - scale - scale - ( int w, int h, Qt::AspectRatioMode mode ) - - - scale - scale-2 - ( const QSize & s, Qt::AspectRatioMode mode ) - - - setHeight - setHeight - ( int h ) - - - setWidth - setWidth - ( int w ) - - - transpose - transpose - () - - - width - width - () - - - operator*= - operator-2a-eq - ( qreal coeff ) - - - operator+= - operator-2b-eq - ( const QSize & s ) - - - operator-= - operator--eq - ( const QSize & s ) - - - operator/= - operator-2f-eq - ( qreal coeff ) - - - - QSizeF - qsizef.html - - QSizeF - QSizeF - () - - - QSizeF - QSizeF-2 - ( const QSize & size ) - - - QSizeF - QSizeF-3 - ( qreal width, qreal height ) - - - boundedTo - boundedTo - ( const QSizeF & otherSize ) - - - expandedTo - expandedTo - ( const QSizeF & otherSize ) - - - height - height - () - - - isEmpty - isEmpty - () - - - isNull - isNull - () - - - isValid - isValid - () - - - rheight - rheight - () - - - rwidth - rwidth - () - - - scale - scale - ( qreal w, qreal h, Qt::AspectRatioMode mode ) - - - scale - scale-2 - ( const QSizeF & s, Qt::AspectRatioMode mode ) - - - setHeight - setHeight - ( qreal height ) - - - setWidth - setWidth - ( qreal width ) - - - toSize - toSize - () - - - transpose - transpose - () - - - width - width - () - - - operator*= - operator-2a-eq - ( qreal coeff ) - - - operator+= - operator-2b-eq - ( const QSizeF & s ) - - - operator-= - operator--eq - ( const QSizeF & s ) - - - operator/= - operator-2f-eq - ( qreal divisor ) - - - QSizeGrip - QSizeGrip-2 - ( QWidget * parent, const char * name ) - - - - QSizeGrip - qsizegrip.html - - QSizeGrip - QSizeGrip - ( QWidget * parent ) - - - mouseMoveEvent - mouseMoveEvent - ( QMouseEvent * e ) - - - mousePressEvent - mousePressEvent - ( QMouseEvent * e ) - - - paintEvent - paintEvent - ( QPaintEvent * ) - - - sizeHint - sizeHint - () - - - ExpandData - ExpandData-enum - - - - SizeType - SizeType-typedef - - - - QSizePolicy - QSizePolicy-3 - ( Policy horizontal, Policy vertical, bool hfw ) - - - QSizePolicy - QSizePolicy-4 - ( Policy hPolicy, Policy vPolicy, uchar hStretch, uchar vStretch, bool hfw = false ) - - - Orientations - expanding - QSizePolicy::expanding() - - - horData - horData - () - - - horStretch - horStretch - () - - - mayGrowHorizontally - mayGrowHorizontally - () - - - mayGrowVertically - mayGrowVertically - () - - - mayShrinkHorizontally - mayShrinkHorizontally - () - - - mayShrinkVertically - mayShrinkVertically - () - - - setHorData - setHorData - ( Policy policy ) - - - setHorStretch - setHorStretch - ( uchar stretch ) - - - setVerData - setVerData - ( Policy policy ) - - - setVerStretch - setVerStretch - ( uchar stretch ) - - - verData - verData - () - - - verStretch - verStretch - () - - - - QSizePolicy - qsizepolicy.html - - Policy - Policy-enum - - - - PolicyFlag - PolicyFlag-enum - - - - QSizePolicy - QSizePolicy - () - - - QSizePolicy - QSizePolicy-2 - ( Policy horizontal, Policy vertical ) - - - Orientations - expandingDirections - QSizePolicy::expandingDirections() - - - hasHeightForWidth - hasHeightForWidth - () - - - horizontalPolicy - horizontalPolicy - () - - - horizontalStretch - horizontalStretch - () - - - setHeightForWidth - setHeightForWidth - ( bool hfw ) - - - setHorizontalPolicy - setHorizontalPolicy - ( Policy policy ) - - - setHorizontalStretch - setHorizontalStretch - ( uchar stretch ) - - - setVerticalPolicy - setVerticalPolicy - ( Policy policy ) - - - setVerticalStretch - setVerticalStretch - ( uchar stretch ) - - - transpose - transpose - () - - - verticalPolicy - verticalPolicy - () - - - verticalStretch - verticalStretch - () - - - operator - operator-QVariant - QVariant() - - - operator!= - operator-not-eq - ( const QSizePolicy & other ) - - - operator== - operator-eq-eq - ( const QSizePolicy & other ) - - - QSlider - QSlider-3 - ( QWidget * parent, const char * name ) - - - QSlider - QSlider-4 - ( Qt::Orientation orientation, QWidget * parent, const char * name ) - - - QSlider - QSlider-5 - ( int minValue, int maxValue, int pageStep, int value, Qt::Orientation orientation, QWidget * parent = 0, const char * name = 0 ) - - - addStep - addStep - () - - - setTickmarks - setTickmarks - ( TickPosition position ) - - - subtractStep - subtractStep - () - - - tickmarks - tickmarks - () - - - - QSlider - qslider.html - - TickPosition - TickPosition-enum - - - - QSlider - QSlider - ( QWidget * parent = 0 ) - - - QSlider - QSlider-2 - ( Qt::Orientation orientation, QWidget * parent = 0 ) - - - QSocketNotifier - QSocketNotifier-2 - ( int socket, Type type, QObject * parent, const char * name ) - - - - QSocketNotifier - qsocketnotifier.html - - Type - Type-enum - - - - QSocketNotifier - QSocketNotifier - ( int socket, Type type, QObject * parent = 0 ) - - - activated - activated - ( int socket ) - - - isEnabled - isEnabled - () - - - setEnabled - setEnabled - ( bool enable ) - - - socket - socket - () - - - type - type - () - - - QSound - QSound-2 - ( const QString & filename, QObject * parent, const char * name ) - - - available - available - () - - - - QSound - qsound.html - - QSound - QSound - ( const QString & filename, QObject * parent = 0 ) - - - fileName - fileName - () - - - isAvailable - isAvailable - () - - - isFinished - isFinished - () - - - loops - loops - () - - - loopsRemaining - loopsRemaining - () - - - play - play - ( const QString & filename ) - - - play - play-2 - () - - - setLoops - setLoops - ( int n ) - - - stop - stop - () - - - - QSpacerItem - qspaceritem.html - - QSpacerItem - QSpacerItem - ( int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum ) - - - changeSize - changeSize - ( int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum ) - - - isEmpty - isEmpty - () - - - maximumSize - maximumSize - () - - - minimumSize - minimumSize - () - - - setGeometry - setGeometry - ( const QRect & r ) - - - sizeHint - sizeHint - () - - - QSpinBox - QSpinBox-2 - ( QWidget * parent, const char * name ) - - - QSpinBox - QSpinBox-3 - ( int min, int max, int step, QWidget * parent, const char * name = 0 ) - - - maxValue - maxValue - () - - - minValue - minValue - () - - - setLineStep - setLineStep - ( int step ) - - - setMaxValue - setMaxValue - ( int val ) - - - setMinValue - setMinValue - ( int val ) - - - - QSpinBox - qspinbox.html - - QSpinBox - QSpinBox - ( QWidget * parent = 0 ) - - - setRange - setRange - ( int min, int max ) - - - textFromValue - textFromValue - ( int v ) - - - valueChanged - valueChanged - ( int i ) - - - valueChanged - valueChanged-2 - ( const QString & text ) - - - valueFromText - valueFromText - ( const QString & text ) - - - clear - clear - () - - - message - message - ( const QString & message, int alignment = Qt::AlignLeft, const QColor & color = Qt::black ) - - - - QSplashScreen - qsplashscreen.html - - QSplashScreen - QSplashScreen - ( const QPixmap & pixmap = QPixmap() - - - QSplashScreen - QSplashScreen-2 - ( QWidget * parent, const QPixmap & pixmap = QPixmap() - - - clearMessage - clearMessage - () - - - drawContents - drawContents - ( QPainter * painter ) - - - finish - finish - ( QWidget * mainWin ) - - - messageChanged - messageChanged - ( const QString & message ) - - - pixmap - pixmap - () - - - repaint - repaint - () - - - setPixmap - setPixmap - ( const QPixmap & pixmap ) - - - showMessage - showMessage - ( const QString & message, int alignment = Qt::AlignLeft, const QColor & color = Qt::black ) - - - ResizeMode - ResizeMode-enum - - - - QSplitter - QSplitter-3 - ( QWidget * parent, const char * name ) - - - QSplitter - QSplitter-4 - ( Qt::Orientation orientation, QWidget * parent, const char * name ) - - - moveToFirst - moveToFirst - ( QWidget * widget ) - - - moveToLast - moveToLast - ( QWidget * widget ) - - - setCollapsible - setCollapsible-2 - ( QWidget * widget, bool collapsible ) - - - setResizeMode - setResizeMode - ( QWidget * widget, ResizeMode mode ) - - - - QSplitter - qsplitter.html - - Orientation - orientation - - - - QSplitter - QSplitter - ( QWidget * parent = 0 ) - - - QSplitter - QSplitter-2 - ( Qt::Orientation orientation, QWidget * parent = 0 ) - - - addWidget - addWidget - ( QWidget * widget ) - - - closestLegalPosition - closestLegalPosition - ( int pos, int index ) - - - count - count - () - - - createHandle - createHandle - () - - - getRange - getRange - ( int index, int * min, int * max ) - - - handle - handle - ( int index ) - - - indexOf - indexOf - ( QWidget * widget ) - - - insertWidget - insertWidget - ( int index, QWidget * widget ) - - - isCollapsible - isCollapsible - ( int index ) - - - moveSplitter - moveSplitter - ( int pos, int index ) - - - refresh - refresh - () - - - restoreState - restoreState - ( const QByteArray & state ) - - - saveState - saveState - () - - - setCollapsible - setCollapsible - ( int index, bool collapse ) - - - setRubberBand - setRubberBand - ( int pos ) - - - setSizes - setSizes - ( const QList<int> & list ) - - - setStretchFactor - setStretchFactor - ( int index, int stretch ) - - - sizes - sizes - () - - - splitterMoved - splitterMoved - ( int pos, int index ) - - - widget - widget - ( int index ) - - - - QSplitterHandle - qsplitterhandle.html - - QSplitterHandle - QSplitterHandle - ( Qt::Orientation orientation, QSplitter * parent ) - - - closestLegalPosition - closestLegalPosition - ( int pos ) - - - moveSplitter - moveSplitter - ( int pos ) - - - opaqueResize - opaqueResize - () - - - Orientation - orientation - QSplitterHandle::orientation() - - - setOrientation - setOrientation - ( Qt::Orientation orientation ) - - - splitter - splitter - () - - - Confirm - Confirm-enum - - - - Op - Op-enum - - - - Location - Location-enum - - - - TableType - TableType-enum - - - - record - record-2 - ( const QSqlQuery & query ) - - - recordInfo - recordInfo - ( const QString & tablename ) - - - recordInfo - recordInfo-2 - ( const QSqlQuery & query ) - - - - QSqlDatabase - qsqldatabase.html - - QSqlDatabase - QSqlDatabase - () - - - QSqlDatabase - QSqlDatabase-2 - ( const QSqlDatabase & other ) - - - QSqlDatabase - QSqlDatabase-3 - ( const QString & type ) - - - QSqlDatabase - QSqlDatabase-4 - ( QSqlDriver * driver ) - - - addDatabase - addDatabase - ( const QString & type, const QString & connectionName = QLatin1String( defaultConnection ) - - - addDatabase - addDatabase-2 - ( QSqlDriver * driver, const QString & connectionName = QLatin1String( defaultConnection ) - - - cloneDatabase - cloneDatabase - ( const QSqlDatabase & other, const QString & connectionName ) - - - close - close - () - - - commit - commit - () - - - connectOptions - connectOptions - () - - - connectionNames - connectionNames - () - - - contains - contains - ( const QString & connectionName = QLatin1String( defaultConnection ) - - - database - database - ( const QString & connectionName = QLatin1String( defaultConnection ) - - - databaseName - databaseName - () - - - driver - driver - () - - - driverName - driverName - () - - - drivers - drivers - () - - - exec - exec - ( const QString & query = QString() - - - hostName - hostName - () - - - isDriverAvailable - isDriverAvailable - ( const QString & name ) - - - isOpen - isOpen - () - - - isOpenError - isOpenError - () - - - isValid - isValid - () - - - lastError - lastError - () - - - open - open - () - - - open - open-2 - ( const QString & user, const QString & password ) - - - password - password - () - - - port - port - () - - - primaryIndex - primaryIndex - ( const QString & tablename ) - - - record - record - ( const QString & tablename ) - - - registerSqlDriver - registerSqlDriver - ( const QString & name, QSqlDriverCreatorBase * creator ) - - - removeDatabase - removeDatabase - ( const QString & connectionName ) - - - rollback - rollback - () - - - setConnectOptions - setConnectOptions - ( const QString & options = QString() - - - setDatabaseName - setDatabaseName - ( const QString & name ) - - - setHostName - setHostName - ( const QString & host ) - - - setPassword - setPassword - ( const QString & password ) - - - setPort - setPort - ( int port ) - - - setUserName - setUserName - ( const QString & name ) - - - tables - tables - ( QSql::TableType type = QSql::Tables ) - - - transaction - transaction - () - - - userName - userName - () - - - operator= - operator-eq - ( const QSqlDatabase & other ) - - - formatValue - formatValue - ( const QSqlField * field, bool trimStrings = false ) - - - nullText - nullText - () - - - record - record-2 - ( const QSqlQuery & query ) - - - recordInfo - recordInfo - ( const QString & tablename ) - - - recordInfo - recordInfo-2 - ( const QSqlQuery & query ) - - - - QSqlDriver - qsqldriver.html - - DriverFeature - DriverFeature-enum - - - - IdentifierType - IdentifierType-enum - - - - StatementType - StatementType-enum - - - - QSqlDriver - QSqlDriver - ( QObject * parent = 0 ) - - - beginTransaction - beginTransaction - () - - - close - close - () - - - commitTransaction - commitTransaction - () - - - createResult - createResult - () - - - escapeIdentifier - escapeIdentifier - ( const QString & identifier, IdentifierType type ) - - - formatValue - formatValue-2 - ( const QSqlField & field, bool trimStrings = false ) - - - handle - handle - () - - - hasFeature - hasFeature - ( DriverFeature feature ) - - - isOpen - isOpen - () - - - isOpenError - isOpenError - () - - - lastError - lastError - () - - - open - open - ( const QString & db, const QString & user = QString() - - - primaryIndex - primaryIndex - ( const QString & tableName ) - - - record - record - ( const QString & tableName ) - - - rollbackTransaction - rollbackTransaction - () - - - setLastError - setLastError - ( const QSqlError & error ) - - - setOpen - setOpen - ( bool open ) - - - setOpenError - setOpenError - ( bool error ) - - - sqlStatement - sqlStatement - ( StatementType type, const QString & tableName, const QSqlRecord & rec, bool preparedStatement ) - - - tables - tables - ( QSql::TableType tableType ) - - - - QSqlDriverCreator - qsqldrivercreator.html - - - QSqlDriverCreatorBase - qsqldrivercreatorbase.html - - createObject - createObject - () - - - - QSqlDriverPlugin - qsqldriverplugin.html - - QSqlDriverPlugin - QSqlDriverPlugin - ( QObject * parent = 0 ) - - - create - create - ( const QString & key ) - - - keys - keys - () - - - - QSqlError - qsqlerror.html - - ErrorType - ErrorType-enum - - - - QSqlError - QSqlError - ( const QString & driverText = QString() - - - QSqlError - QSqlError-2 - ( const QSqlError & other ) - - - databaseText - databaseText - () - - - driverText - driverText - () - - - number - number - () - - - setDatabaseText - setDatabaseText - ( const QString & databaseText ) - - - setDriverText - setDriverText - ( const QString & driverText ) - - - setNumber - setNumber - ( int number ) - - - setType - setType - ( ErrorType type ) - - - text - text - () - - - type - type - () - - - operator= - operator-eq - ( const QSqlError & other ) - - - setNull - setNull - () - - - - QSqlField - qsqlfield.html - - RequiredStatus - RequiredStatus-enum - - - - QSqlField - QSqlField - ( const QString & fieldName = QString() - - - QSqlField - QSqlField-2 - ( const QSqlField & other ) - - - clear - clear - () - - - defaultValue - defaultValue - () - - - isAutoValue - isAutoValue - () - - - isGenerated - isGenerated - () - - - isNull - isNull - () - - - isReadOnly - isReadOnly - () - - - isValid - isValid - () - - - length - length - () - - - name - name - () - - - precision - precision - () - - - requiredStatus - requiredStatus - () - - - setAutoValue - setAutoValue - ( bool autoVal ) - - - setDefaultValue - setDefaultValue - ( const QVariant & value ) - - - setGenerated - setGenerated - ( bool gen ) - - - setLength - setLength - ( int fieldLength ) - - - setName - setName - ( const QString & name ) - - - setPrecision - setPrecision - ( int precision ) - - - setReadOnly - setReadOnly - ( bool readOnly ) - - - setRequired - setRequired - ( bool required ) - - - setRequiredStatus - setRequiredStatus - ( RequiredStatus required ) - - - setType - setType - ( QVariant::Type type ) - - - setValue - setValue - ( const QVariant & value ) - - - Type - type - QSqlField::type() - - - value - value - () - - - operator!= - operator-not-eq - ( const QSqlField & other ) - - - operator= - operator-eq - ( const QSqlField & other ) - - - operator== - operator-eq-eq - ( const QSqlField & other ) - - - toString - toString - ( const QString & prefix = QString() - - - toStringList - toStringList - ( const QString & prefix = QString() - - - - QSqlIndex - qsqlindex.html - - QSqlIndex - QSqlIndex - ( const QString & cursorname = QString() - - - QSqlIndex - QSqlIndex-2 - ( const QSqlIndex & other ) - - - append - append - ( const QSqlField & field ) - - - append - append-2 - ( const QSqlField & field, bool desc ) - - - cursorName - cursorName - () - - - isDescending - isDescending - ( int i ) - - - name - name - () - - - setCursorName - setCursorName - ( const QString & cursorName ) - - - setDescending - setDescending - ( int i, bool desc ) - - - setName - setName - ( const QString & name ) - - - operator= - operator-eq - ( const QSqlIndex & other ) - - - prev - prev - () - - - - QSqlQuery - qsqlquery.html - - QSqlQuery - QSqlQuery - ( QSqlResult * result ) - - - QSqlQuery - QSqlQuery-2 - ( const QString & query = QString() - - - QSqlQuery - QSqlQuery-3 - ( QSqlDatabase db ) - - - QSqlQuery - QSqlQuery-4 - ( const QSqlQuery & other ) - - - addBindValue - addBindValue - ( const QVariant & val, QSql::ParamType paramType = QSql::In ) - - - at - at - () - - - bindValue - bindValue - ( const QString & placeholder, const QVariant & val, QSql::ParamType paramType = QSql::In ) - - - bindValue - bindValue-2 - ( int pos, const QVariant & val, QSql::ParamType paramType = QSql::In ) - - - boundValue - boundValue - ( const QString & placeholder ) - - - boundValue - boundValue-2 - ( int pos ) - - - boundValues - boundValues - () - - - clear - clear - () - - - driver - driver - () - - - exec - exec - ( const QString & query ) - - - exec - exec-2 - () - - - executedQuery - executedQuery - () - - - first - first - () - - - isActive - isActive - () - - - isForwardOnly - isForwardOnly - () - - - isNull - isNull - ( int field ) - - - isSelect - isSelect - () - - - isValid - isValid - () - - - last - last - () - - - lastError - lastError - () - - - lastInsertId - lastInsertId - () - - - lastQuery - lastQuery - () - - - next - next - () - - - numRowsAffected - numRowsAffected - () - - - prepare - prepare - ( const QString & query ) - - - previous - previous - () - - - record - record - () - - - result - result - () - - - seek - seek - ( int index, bool relative = false ) - - - setForwardOnly - setForwardOnly - ( bool forward ) - - - size - size - () - - - value - value - ( int index ) - - - operator= - operator-eq - ( const QSqlQuery & other ) - - - - QSqlQueryModel - qsqlquerymodel.html - - QSqlQueryModel - QSqlQueryModel - ( QObject * parent = 0 ) - - - clear - clear - () - - - data - data - ( const QModelIndex & item, int role = Qt::DisplayRole ) - - - headerData - headerData - ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) - - - indexInQuery - indexInQuery - ( const QModelIndex & item ) - - - insertColumns - insertColumns - ( int column, int count, const QModelIndex & parent = QModelIndex() - - - lastError - lastError - () - - - query - query - () - - - queryChange - queryChange - () - - - record - record - ( int row ) - - - record - record-2 - () - - - removeColumns - removeColumns - ( int column, int count, const QModelIndex & parent = QModelIndex() - - - setHeaderData - setHeaderData - ( int section, Qt::Orientation orientation, const QVariant & value, int role = Qt::EditRole ) - - - setLastError - setLastError - ( const QSqlError & error ) - - - setQuery - setQuery - ( const QSqlQuery & query ) - - - setQuery - setQuery-2 - ( const QString & query, const QSqlDatabase & db = QSqlDatabase() - - - fieldPtr - fieldPtr - ( int index ) - - - fieldPtr - fieldPtr-2 - ( const QString & name ) - - - position - position - ( const QString & name ) - - - toString - toString - ( const QString & prefix = QString() - - - toStringList - toStringList - ( const QString & prefix = QString() - - - - QSqlRecord - qsqlrecord.html - - QSqlRecord - QSqlRecord - () - - - QSqlRecord - QSqlRecord-2 - ( const QSqlRecord & other ) - - - append - append - ( const QSqlField & field ) - - - clear - clear - () - - - clearValues - clearValues - () - - - contains - contains - ( const QString & name ) - - - count - count - () - - - field - field - ( int index ) - - - field - field-2 - ( const QString & name ) - - - fieldName - fieldName - ( int index ) - - - indexOf - indexOf - ( const QString & name ) - - - insert - insert - ( int pos, const QSqlField & field ) - - - isEmpty - isEmpty - () - - - isGenerated - isGenerated - ( const QString & name ) - - - isGenerated - isGenerated-2 - ( int index ) - - - isNull - isNull - ( const QString & name ) - - - isNull - isNull-2 - ( int index ) - - - remove - remove - ( int pos ) - - - replace - replace - ( int pos, const QSqlField & field ) - - - setGenerated - setGenerated - ( const QString & name, bool generated ) - - - setGenerated - setGenerated-2 - ( int index, bool generated ) - - - setNull - setNull - ( int index ) - - - setNull - setNull-2 - ( const QString & name ) - - - setValue - setValue - ( int index, const QVariant & val ) - - - setValue - setValue-2 - ( const QString & name, const QVariant & val ) - - - value - value - ( int index ) - - - value - value-2 - ( const QString & name ) - - - operator!= - operator-not-eq - ( const QSqlRecord & other ) - - - operator= - operator-eq - ( const QSqlRecord & other ) - - - operator== - operator-eq-eq - ( const QSqlRecord & other ) - - - - QSqlRelation - qsqlrelation.html - - QSqlRelation - QSqlRelation - () - - - QSqlRelation - QSqlRelation-2 - ( const QString & tableName, const QString & indexColumn, const QString & displayColumn ) - - - displayColumn - displayColumn - () - - - indexColumn - indexColumn - () - - - isValid - isValid - () - - - tableName - tableName - () - - - - QSqlRelationalTableModel - qsqlrelationaltablemodel.html - - QSqlRelationalTableModel - QSqlRelationalTableModel - ( QObject * parent = 0, QSqlDatabase db = QSqlDatabase() - - - orderByClause - orderByClause - () - - - relation - relation - ( int column ) - - - relationModel - relationModel - ( int column ) - - - setData - setData - ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) - - - setRelation - setRelation - ( int column, const QSqlRelation & relation ) - - - - QSqlResult - qsqlresult.html - - BindingSyntax - BindingSyntax-enum - - - - QSqlResult - QSqlResult - ( const QSqlDriver * db ) - - - addBindValue - addBindValue - ( const QVariant & val, QSql::ParamType paramType ) - - - at - at - () - - - bindValue - bindValue - ( int index, const QVariant & val, QSql::ParamType paramType ) - - - bindValue - bindValue-2 - ( const QString & placeholder, const QVariant & val, QSql::ParamType paramType ) - - - ParamType - bindValueType - QSqlResult::bindValueType( int index ) - - - ParamType - bindValueType-2 - QSqlResult::bindValueType( const QString & placeholder ) - - - bindingSyntax - bindingSyntax - () - - - boundValue - boundValue - ( int index ) - - - boundValue - boundValue-2 - ( const QString & placeholder ) - - - boundValueCount - boundValueCount - () - - - boundValueName - boundValueName - ( int index ) - - - boundValues - boundValues - () - - - clear - clear - () - - - data - data - ( int index ) - - - driver - driver - () - - - exec - exec - () - - - executedQuery - executedQuery - () - - - fetch - fetch - ( int index ) - - - fetchFirst - fetchFirst - () - - - fetchLast - fetchLast - () - - - fetchNext - fetchNext - () - - - fetchPrevious - fetchPrevious - () - - - handle - handle - () - - - hasOutValues - hasOutValues - () - - - isActive - isActive - () - - - isForwardOnly - isForwardOnly - () - - - isNull - isNull - ( int index ) - - - isSelect - isSelect - () - - - isValid - isValid - () - - - lastError - lastError - () - - - lastInsertId - lastInsertId - () - - - lastQuery - lastQuery - () - - - numRowsAffected - numRowsAffected - () - - - prepare - prepare - ( const QString & query ) - - - record - record - () - - - reset - reset - ( const QString & query ) - - - savePrepare - savePrepare - ( const QString & query ) - - - setActive - setActive - ( bool active ) - - - setAt - setAt - ( int index ) - - - setForwardOnly - setForwardOnly - ( bool forward ) - - - setLastError - setLastError - ( const QSqlError & error ) - - - setQuery - setQuery - ( const QString & query ) - - - setSelect - setSelect - ( bool select ) - - - size - size - () - - - - QSqlTableModel - qsqltablemodel.html - - EditStrategy - EditStrategy-enum - - - - QSqlTableModel - QSqlTableModel - ( QObject * parent = 0, QSqlDatabase db = QSqlDatabase() - - - beforeDelete - beforeDelete - ( int row ) - - - beforeInsert - beforeInsert - ( QSqlRecord & record ) - - - beforeUpdate - beforeUpdate - ( int row, QSqlRecord & record ) - - - database - database - () - - - deleteRowFromTable - deleteRowFromTable - ( int row ) - - - editStrategy - editStrategy - () - - - fieldIndex - fieldIndex - ( const QString & fieldName ) - - - filter - filter - () - - - indexInQuery - indexInQuery - ( const QModelIndex & item ) - - - insertRecord - insertRecord - ( int row, const QSqlRecord & record ) - - - insertRowIntoTable - insertRowIntoTable - ( const QSqlRecord & values ) - - - insertRows - insertRows - ( int row, int count, const QModelIndex & parent = QModelIndex() - - - isDirty - isDirty - ( const QModelIndex & index ) - - - orderByClause - orderByClause - () - - - primaryKey - primaryKey - () - - - primeInsert - primeInsert - ( int row, QSqlRecord & record ) - - - removeColumns - removeColumns - ( int column, int count, const QModelIndex & parent = QModelIndex() - - - removeRows - removeRows - ( int row, int count, const QModelIndex & parent = QModelIndex() - - - revert - revert - () - - - revertAll - revertAll - () - - - revertRow - revertRow - ( int row ) - - - select - select - () - - - selectStatement - selectStatement - () - - - setData - setData - ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) - - - setEditStrategy - setEditStrategy - ( EditStrategy strategy ) - - - setFilter - setFilter - ( const QString & filter ) - - - setPrimaryKey - setPrimaryKey - ( const QSqlIndex & key ) - - - setQuery - setQuery - ( const QSqlQuery & query ) - - - setRecord - setRecord - ( int row, const QSqlRecord & record ) - - - setSort - setSort - ( int column, Qt::SortOrder order ) - - - setTable - setTable - ( const QString & tableName ) - - - sort - sort - ( int column, Qt::SortOrder order ) - - - submit - submit - () - - - submitAll - submitAll - () - - - tableName - tableName - () - - - updateRowInTable - updateRowInTable - ( int row, const QSqlRecord & values ) - - - - QStack - qstack.html - - QStack - QStack - () - - - pop - pop - () - - - push - push - ( const T & t ) - - - top - top - () - - - top - top-2 - () - - - - QStackedLayout - qstackedlayout.html - - QStackedLayout - QStackedLayout - () - - - QStackedLayout - QStackedLayout-2 - ( QWidget * parent ) - - - QStackedLayout - QStackedLayout-3 - ( QLayout * parentLayout ) - - - addWidget - addWidget - ( QWidget * widget ) - - - currentChanged - currentChanged - ( int index ) - - - currentWidget - currentWidget - () - - - insertWidget - insertWidget - ( int index, QWidget * widget ) - - - setCurrentWidget - setCurrentWidget - ( QWidget * widget ) - - - widget - widget - ( int index ) - - - widgetRemoved - widgetRemoved - ( int index ) - - - - QStackedWidget - qstackedwidget.html - - QStackedWidget - QStackedWidget - ( QWidget * parent = 0 ) - - - addWidget - addWidget - ( QWidget * widget ) - - - currentChanged - currentChanged - ( int index ) - - - currentWidget - currentWidget - () - - - indexOf - indexOf - ( QWidget * widget ) - - - insertWidget - insertWidget - ( int index, QWidget * widget ) - - - removeWidget - removeWidget - ( QWidget * widget ) - - - setCurrentWidget - setCurrentWidget - ( QWidget * w ) - - - widget - widget - ( int index ) - - - widgetRemoved - widgetRemoved - ( int index ) - - - - QStandardItemModel - qstandarditemmodel.html - - QStandardItemModel - QStandardItemModel - ( QObject * parent = 0 ) - - - QStandardItemModel - QStandardItemModel-2 - ( int rows, int columns, QObject * parent = 0 ) - - - columnCount - columnCount - ( const QModelIndex & parent = QModelIndex() - - - data - data - ( const QModelIndex & index, int role = Qt::DisplayRole ) - - - ItemFlags - flags - QStandardItemModel::flags( const QModelIndex & index ) - - - hasChildren - hasChildren - ( const QModelIndex & parent = QModelIndex() - - - index - index - ( int row, int column, const QModelIndex & parent = QModelIndex() - - - insertColumns - insertColumns - ( int column, int count, const QModelIndex & parent = QModelIndex() - - - insertRows - insertRows - ( int row, int count, const QModelIndex & parent = QModelIndex() - - - parent - parent - ( const QModelIndex & child ) - - - removeColumns - removeColumns - ( int column, int count, const QModelIndex & parent = QModelIndex() - - - removeRows - removeRows - ( int row, int count, const QModelIndex & parent = QModelIndex() - - - rowCount - rowCount - ( const QModelIndex & parent = QModelIndex() - - - setData - setData - ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) - - - QStatusBar - QStatusBar-2 - ( QWidget * parent, const char * name ) - - - addWidget - addWidget-2 - ( QWidget * widget, int stretch, bool permanent ) - - - clear - clear - () - - - message - message - ( const QString & message, int timeout = 0 ) - - - - QStatusBar - qstatusbar.html - - QStatusBar - QStatusBar - ( QWidget * parent = 0 ) - - - addPermanentWidget - addPermanentWidget - ( QWidget * widget, int stretch = 0 ) - - - addWidget - addWidget - ( QWidget * widget, int stretch = 0 ) - - - clearMessage - clearMessage - () - - - currentMessage - currentMessage - () - - - hideOrShow - hideOrShow - () - - - messageChanged - messageChanged - ( const QString & message ) - - - paintEvent - paintEvent - ( QPaintEvent * event ) - - - reformat - reformat - () - - - removeWidget - removeWidget - ( QWidget * widget ) - - - showMessage - showMessage - ( const QString & message, int timeout = 0 ) - - - - QString::Null - qstring-null.html - - ascii - ascii - () - - - constref - constref - ( uint i ) - - - contains - contains-2 - ( QChar c, bool cs ) - - - contains - contains-3 - ( const QString & s, bool cs ) - - - copy - copy - () - - - endsWith - endsWith-2 - ( const QString & s, bool cs ) - - - find - find - ( QChar c, int i = 0, bool cs = true ) - - - find - find-2 - ( const QString & s, int i = 0, bool cs = true ) - - - find - find-3 - ( const QRegExp & rx, int i = 0 ) - - - findRev - findRev - ( QChar c, int i = -1, bool cs = true ) - - - findRev - findRev-2 - ( const QString & s, int i = -1, bool cs = true ) - - - findRev - findRev-3 - ( const QRegExp & rx, int i = -1 ) - - - fromUcs2 - fromUcs2 - ( const ushort * unicode, int size = -1 ) - - - latin1 - latin1 - () - - - leftJustify - leftJustify - ( int width, QChar fill = QLatin1Char( ' ' ) - - - local8Bit - local8Bit - () - - - lower - lower - () - - - ref - ref - ( uint i ) - - - remove - remove-2 - ( QChar c, bool cs ) - - - remove - remove-3 - ( const QString & s, bool cs ) - - - replace - replace-2 - ( QChar c, const QString & after, bool cs ) - - - replace - replace-3 - ( const QString & before, const QString & after, bool cs ) - - - replace - replace-4 - ( char c, const QString & after, bool cs ) - - - replace - replace-5 - ( char c, const QString & after, Qt::CaseSensitivity cs ) - - - rightJustify - rightJustify - ( int width, QChar fill = QLatin1Char( ' ' ) - - - setAscii - setAscii - ( const char * str, int len = -1 ) - - - setLatin1 - setLatin1 - ( const char * str, int len = -1 ) - - - setLength - setLength - ( int nl ) - - - setUnicodeCodes - setUnicodeCodes - ( const ushort * unicode_as_ushorts, int size ) - - - simplifyWhiteSpace - simplifyWhiteSpace - () - - - startsWith - startsWith-2 - ( const QString & s, bool cs ) - - - stripWhiteSpace - stripWhiteSpace - () - - - ucs2 - ucs2 - () - - - upper - upper - () - - - utf8 - utf8 - () - - - operator - operator-const-char--2a - const char *() - - - - QString - qstring.html - - NormalizationForm - NormalizationForm-enum - - - - SplitBehavior - SplitBehavior-enum - - - - QString - QString - () - - - QString - QString-2 - ( const QChar * unicode, int size ) - - - QString - QString-3 - ( QChar ch ) - - - QString - QString-4 - ( int size, QChar ch ) - - - QString - QString-5 - ( const QLatin1String & str ) - - - QString - QString-6 - ( const QString & other ) - - - QString - QString-7 - ( const char * str ) - - - QString - QString-8 - ( const QByteArray & ba ) - - - append - append - ( const QString & str ) - - - append - append-2 - ( const QLatin1String & str ) - - - append - append-3 - ( const QByteArray & ba ) - - - append - append-4 - ( const char * str ) - - - append - append-5 - ( QChar ch ) - - - arg - arg - ( const QString & a, int fieldWidth = 0, const QChar & fillChar = QLatin1Char( ' ' ) - - - arg - arg-2 - ( const QString & a1, const QString & a2 ) - - - arg - arg-3 - ( const QString & a1, const QString & a2, const QString & a3 ) - - - arg - arg-4 - ( const QString & a1, const QString & a2, const QString & a3, const QString & a4 ) - - - arg - arg-5 - ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) - - - arg - arg-6 - ( uint a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) - - - arg - arg-7 - ( long a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) - - - arg - arg-8 - ( ulong a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) - - - arg - arg-9 - ( qlonglong a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) - - - arg - arg-10 - ( qulonglong a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) - - - arg - arg-11 - ( short a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) - - - arg - arg-12 - ( ushort a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) - - - arg - arg-13 - ( QChar a, int fieldWidth = 0, const QChar & fillChar = QLatin1Char( ' ' ) - - - arg - arg-14 - ( char a, int fieldWidth = 0, const QChar & fillChar = QLatin1Char( ' ' ) - - - arg - arg-15 - ( double a, int fieldWidth = 0, char fmt = 'g', int prec = -1, const QChar & fillChar = QLatin1Char( ' ' ) - - - at - at - ( int i ) - - - capacity - capacity - () - - - chop - chop - ( int n ) - - - clear - clear - () - - - compare - compare - ( const QString & s1, const QString & s2 ) - - - compare - compare-2 - ( const QString & other ) - - - constData - constData - () - - - contains - contains - ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - contains - contains-4 - ( QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - contains - contains-5 - ( const QRegExp & rx ) - - - count - count - ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - count - count-2 - ( QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - count - count-3 - ( const QRegExp & rx ) - - - count - count-4 - () - - - data - data - () - - - data - data-2 - () - - - endsWith - endsWith - ( const QString & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - endsWith - endsWith-3 - ( const QLatin1String & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - fill - fill - ( QChar ch, int size = -1 ) - - - fromAscii - fromAscii - ( const char * str, int size = -1 ) - - - fromLatin1 - fromLatin1 - ( const char * str, int size = -1 ) - - - fromLocal8Bit - fromLocal8Bit - ( const char * str, int size = -1 ) - - - fromRawData - fromRawData - ( const QChar * unicode, int size ) - - - fromStdString - fromStdString - ( const std::string & str ) - - - fromStdWString - fromStdWString - ( const std::wstring & str ) - - - fromUtf16 - fromUtf16 - ( const ushort * unicode, int size = -1 ) - - - fromUtf8 - fromUtf8 - ( const char * str, int size = -1 ) - - - indexOf - indexOf - ( const QString & str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - indexOf - indexOf-2 - ( QChar ch, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - indexOf - indexOf-3 - ( const QRegExp & rx, int from = 0 ) - - - insert - insert - ( int i, const QString & str ) - - - insert - insert-2 - ( int i, const QLatin1String & str ) - - - insert - insert-3 - ( int i, const QChar * unicode, int size ) - - - insert - insert-4 - ( int i, QChar ch ) - - - isEmpty - isEmpty - () - - - isNull - isNull - () - - - lastIndexOf - lastIndexOf - ( const QString & str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - lastIndexOf - lastIndexOf-2 - ( QChar ch, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - lastIndexOf - lastIndexOf-3 - ( const QRegExp & rx, int from = -1 ) - - - left - left - ( int len ) - - - leftJustified - leftJustified - ( int width, QChar fill = QLatin1Char( ' ' ) - - - length - length - () - - - localeAwareCompare - localeAwareCompare - ( const QString & s1, const QString & s2 ) - - - localeAwareCompare - localeAwareCompare-2 - ( const QString & other ) - - - mid - mid - ( int i, int len = -1 ) - - - normalized - normalized - ( NormalizationForm form ) - - - normalized - normalized-2 - ( NormalizationForm form, QChar::UnicodeVersion version ) - - - number - number - ( long n, int base = 10 ) - - - number - number-2 - ( ulong n, int base = 10 ) - - - number - number-3 - ( int n, int base = 10 ) - - - number - number-4 - ( uint n, int base = 10 ) - - - number - number-5 - ( qlonglong n, int base = 10 ) - - - number - number-6 - ( qulonglong n, int base = 10 ) - - - number - number-7 - ( double n, char f = 'g', int prec = 6 ) - - - prepend - prepend - ( const QString & str ) - - - prepend - prepend-2 - ( const QLatin1String & str ) - - - prepend - prepend-3 - ( const QByteArray & ba ) - - - prepend - prepend-4 - ( const char * str ) - - - prepend - prepend-5 - ( QChar ch ) - - - push_back - push_back - ( const QString & other ) - - - push_back - push_back-2 - ( QChar ch ) - - - push_front - push_front - ( const QString & other ) - - - push_front - push_front-2 - ( QChar ch ) - - - remove - remove - ( int pos, int len ) - - - remove - remove-4 - ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - remove - remove-5 - ( QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - remove - remove-6 - ( const QRegExp & rx ) - - - replace - replace - ( int pos, int len, const QString & after ) - - - replace - replace-6 - ( int pos, int len, const QChar * unicode, int size ) - - - replace - replace-7 - ( int pos, int len, QChar after ) - - - replace - replace-8 - ( const QString & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - replace - replace-9 - ( QChar ch, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - replace - replace-10 - ( QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - replace - replace-11 - ( const QRegExp & rx, const QString & after ) - - - reserve - reserve - ( int size ) - - - resize - resize - ( int size ) - - - right - right - ( int len ) - - - rightJustified - rightJustified - ( int width, QChar fill = QLatin1Char( ' ' ) - - - section - section - ( QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault ) - - - section - section-2 - ( const QString & sep, int start, int end = -1, SectionFlags flags = SectionDefault ) - - - section - section-3 - ( const QRegExp & reg, int start, int end = -1, SectionFlags flags = SectionDefault ) - - - setNum - setNum - ( int n, int base = 10 ) - - - setNum - setNum-2 - ( uint n, int base = 10 ) - - - setNum - setNum-3 - ( long n, int base = 10 ) - - - setNum - setNum-4 - ( ulong n, int base = 10 ) - - - setNum - setNum-5 - ( qlonglong n, int base = 10 ) - - - setNum - setNum-6 - ( qulonglong n, int base = 10 ) - - - setNum - setNum-7 - ( short n, int base = 10 ) - - - setNum - setNum-8 - ( ushort n, int base = 10 ) - - - setNum - setNum-9 - ( double n, char f = 'g', int prec = 6 ) - - - setNum - setNum-10 - ( float n, char f = 'g', int prec = 6 ) - - - setUnicode - setUnicode - ( const QChar * unicode, int size ) - - - setUtf16 - setUtf16 - ( const ushort * unicode, int size ) - - - simplified - simplified - () - - - size - size - () - - - split - split - ( const QString & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - split - split-2 - ( const QChar & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - split - split-3 - ( const QRegExp & rx, SplitBehavior behavior = KeepEmptyParts ) - - - sprintf - sprintf - ( const char * cformat, ... ) - - - squeeze - squeeze - () - - - startsWith - startsWith - ( const QString & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - startsWith - startsWith-3 - ( const QLatin1String & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - toAscii - toAscii - () - - - toDouble - toDouble - ( bool * ok = 0 ) - - - toFloat - toFloat - ( bool * ok = 0 ) - - - toInt - toInt - ( bool * ok = 0, int base = 10 ) - - - toLatin1 - toLatin1 - () - - - toLocal8Bit - toLocal8Bit - () - - - toLong - toLong - ( bool * ok = 0, int base = 10 ) - - - toLongLong - toLongLong - ( bool * ok = 0, int base = 10 ) - - - toLower - toLower - () - - - toShort - toShort - ( bool * ok = 0, int base = 10 ) - - - string - toStdString - QString::toStdString() - - - wstring - toStdWString - QString::toStdWString() - - - toUInt - toUInt - ( bool * ok = 0, int base = 10 ) - - - toULong - toULong - ( bool * ok = 0, int base = 10 ) - - - toULongLong - toULongLong - ( bool * ok = 0, int base = 10 ) - - - toUShort - toUShort - ( bool * ok = 0, int base = 10 ) - - - toUpper - toUpper - () - - - toUtf8 - toUtf8 - () - - - trimmed - trimmed - () - - - truncate - truncate - ( int pos ) - - - unicode - unicode - () - - - utf16 - utf16 - () - - - vsprintf - vsprintf - ( const char * cformat, va_list ap ) - - - operator!= - operator-not-eq - ( const QString & other ) - - - operator!= - operator-not-eq-2 - ( const QLatin1String & other ) - - - operator!= - operator-not-eq-3 - ( const QByteArray & other ) - - - operator!= - operator-not-eq-4 - ( const char * other ) - - - operator+= - operator-2b-eq - ( const QString & other ) - - - operator+= - operator-2b-eq-2 - ( const QLatin1String & str ) - - - operator+= - operator-2b-eq-3 - ( const QByteArray & ba ) - - - operator+= - operator-2b-eq-4 - ( const char * str ) - - - operator+= - operator-2b-eq-5 - ( char ch ) - - - operator+= - operator-2b-eq-6 - ( QChar ch ) - - - operator< - operator-lt - ( const QString & other ) - - - operator< - operator-lt-2 - ( const QLatin1String & other ) - - - operator< - operator-lt-3 - ( const QByteArray & other ) - - - operator< - operator-lt-4 - ( const char * other ) - - - operator<= - operator-lt-eq - ( const QString & other ) - - - operator<= - operator-lt-eq-2 - ( const QLatin1String & other ) - - - operator<= - operator-lt-eq-3 - ( const QByteArray & other ) - - - operator<= - operator-lt-eq-4 - ( const char * other ) - - - operator= - operator-eq - ( const QString & other ) - - - operator= - operator-eq-3 - ( const QLatin1String & str ) - - - operator= - operator-eq-4 - ( const QByteArray & ba ) - - - operator= - operator-eq-5 - ( const char * str ) - - - operator= - operator-eq-6 - ( char ch ) - - - operator= - operator-eq-7 - ( QChar ch ) - - - operator== - operator-eq-eq - ( const QString & other ) - - - operator== - operator-eq-eq-2 - ( const QLatin1String & other ) - - - operator== - operator-eq-eq-3 - ( const QByteArray & other ) - - - operator== - operator-eq-eq-4 - ( const char * other ) - - - operator> - operator-gt - ( const QString & other ) - - - operator> - operator-gt-2 - ( const QLatin1String & other ) - - - operator> - operator-gt-3 - ( const QByteArray & other ) - - - operator> - operator-gt-4 - ( const char * other ) - - - operator>= - operator-gt-eq - ( const QString & other ) - - - operator>= - operator-gt-eq-2 - ( const QLatin1String & other ) - - - operator>= - operator-gt-eq-3 - ( const QByteArray & other ) - - - operator>= - operator-gt-eq-4 - ( const char * other ) - - - operator[] - operator-5b-5d - ( int i ) - - - operator[] - operator-5b-5d-2 - ( int i ) - - - operator[] - operator-5b-5d-3 - ( uint i ) - - - operator[] - operator-5b-5d-4 - ( uint i ) - - - fromLast - fromLast - () - - - fromLast - fromLast-2 - () - - - grep - grep - ( const QString & str, bool cs = true ) - - - grep - grep-2 - ( const QRegExp & rx ) - - - gres - gres - ( const QString & before, const QString & after, bool cs = true ) - - - gres - gres-2 - ( const QRegExp & rx, const QString & after ) - - - split - split - ( const QRegExp & sep, const QString & str, bool allowEmptyEntries = false ) - - - split - split-2 - ( const QChar & sep, const QString & str, bool allowEmptyEntries = false ) - - - split - split-3 - ( const QString & sep, const QString & str, bool allowEmptyEntries = false ) - - - - QStringList - qstringlist.html - - QStringList - QStringList - () - - - QStringList - QStringList-2 - ( const QString & str ) - - - QStringList - QStringList-3 - ( const QStringList & other ) - - - QStringList - QStringList-4 - ( const QList<QString> & other ) - - - contains - contains - ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - filter - filter - ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - filter - filter-2 - ( const QRegExp & rx ) - - - indexOf - indexOf - ( const QRegExp & rx, int from = 0 ) - - - join - join - ( const QString & sep ) - - - lastIndexOf - lastIndexOf - ( const QRegExp & rx, int from = -1 ) - - - replaceInStrings - replaceInStrings - ( const QString & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive ) - - - replaceInStrings - replaceInStrings-2 - ( const QRegExp & rx, const QString & after ) - - - sort - sort - () - - - operator+ - operator-2b - ( const QStringList & other ) - - - operator<< - operator-lt-lt - ( const QString & str ) - - - operator<< - operator-lt-lt-2 - ( const QStringList & l ) - - - - QStringListModel - qstringlistmodel.html - - QStringListModel - QStringListModel - ( QObject * parent = 0 ) - - - QStringListModel - QStringListModel-2 - ( const QStringList & strings, QObject * parent = 0 ) - - - data - data - ( const QModelIndex & index, int role ) - - - ItemFlags - flags - QStringListModel::flags( const QModelIndex & index ) - - - insertRows - insertRows - ( int row, int count, const QModelIndex & parent = QModelIndex() - - - removeRows - removeRows - ( int row, int count, const QModelIndex & parent = QModelIndex() - - - rowCount - rowCount - ( const QModelIndex & parent = QModelIndex() - - - setData - setData - ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) - - - setStringList - setStringList - ( const QStringList & strings ) - - - stringList - stringList - () - - - - QStyle - qstyle.html - - ComplexControl - ComplexControl-enum - - - - ContentsType - ContentsType-enum - - - - ControlElement - ControlElement-enum - - - - PixelMetric - PixelMetric-enum - - - - PrimitiveElement - PrimitiveElement-enum - - - - StandardPixmap - StandardPixmap-enum - - - - StyleHint - StyleHint-enum - - - - SubElement - SubElement-enum - - - - QStyle - QStyle - () - - - alignedRect - alignedRect - ( Qt::LayoutDirection direction, Qt::Alignment alignment, const QSize & size, const QRect & rectangle ) - - - drawComplexControl - drawComplexControl - ( ComplexControl control, const QStyleOptionComplex * option, QPainter * painter, const QWidget * widget = 0 ) - - - drawControl - drawControl - ( ControlElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0 ) - - - drawItemPixmap - drawItemPixmap - ( QPainter * painter, const QRect & rect, int alignment, const QPixmap & pixmap ) - - - drawItemText - drawItemText - ( QPainter * painter, const QRect & rect, int alignment, const QPalette & pal, bool enabled, const QString & text, QPalette::ColorRole textRole = QPalette::NoRole ) - - - drawPrimitive - drawPrimitive - ( PrimitiveElement elem, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0 ) - - - generatedIconPixmap - generatedIconPixmap - ( QIcon::Mode iconMode, const QPixmap & pixmap, const QStyleOption * option ) - - - hitTestComplexControl - hitTestComplexControl - ( ComplexControl control, const QStyleOptionComplex * option, const QPoint & pos, const QWidget * widget = 0 ) - - - itemPixmapRect - itemPixmapRect - ( const QRect & rect, int alignment, const QPixmap & pixmap ) - - - itemTextRect - itemTextRect - ( const QFontMetrics & metrics, const QRect & rect, int alignment, bool enabled, const QString & text ) - - - pixelMetric - pixelMetric - ( PixelMetric metric, const QStyleOption * option = 0, const QWidget * widget = 0 ) - - - polish - polish - ( QWidget * widget ) - - - polish - polish-2 - ( QApplication * app ) - - - polish - polish-3 - ( QPalette & pal ) - - - sizeFromContents - sizeFromContents - ( ContentsType type, const QStyleOption * option, const QSize & contentsSize, const QWidget * widget = 0 ) - - - sliderPositionFromValue - sliderPositionFromValue - ( int min, int max, int logicalValue, int span, bool upsideDown = false ) - - - sliderValueFromPosition - sliderValueFromPosition - ( int min, int max, int pos, int span, bool upsideDown = false ) - - - standardPalette - standardPalette - () - - - standardPixmap - standardPixmap - ( StandardPixmap standardPixmap, const QStyleOption * option = 0, const QWidget * widget = 0 ) - - - styleHint - styleHint - ( StyleHint hint, const QStyleOption * option = 0, const QWidget * widget = 0, QStyleHintReturn * returnData = 0 ) - - - subControlRect - subControlRect - ( ComplexControl control, const QStyleOptionComplex * option, SubControl subControl, const QWidget * widget = 0 ) - - - subElementRect - subElementRect - ( SubElement element, const QStyleOption * option, const QWidget * widget = 0 ) - - - unpolish - unpolish - ( QWidget * widget ) - - - unpolish - unpolish-2 - ( QApplication * app ) - - - Alignment - visualAlignment - QStyle::visualAlignment( Qt::LayoutDirection direction, Qt::Alignment alignment ) - - - visualPos - visualPos - ( Qt::LayoutDirection direction, const QRect & boundingRect, const QPoint & logicalPos ) - - - visualRect - visualRect - ( Qt::LayoutDirection direction, const QRect & boundingRect, const QRect & logicalRect ) - - - - QStyleFactory - qstylefactory.html - - create - create - ( const QString & key ) - - - keys - keys - () - - - - QStyleHintReturn - qstylehintreturn.html - - HintReturnType - HintReturnType-enum - - - - QStyleHintReturn - QStyleHintReturn - ( int version = QStyleOption::Version, int type = SH_Default ) - - - - QStyleOption - qstyleoption.html - - OptionType - OptionType-enum - - - - LayoutDirection - direction - - - - State - state - - - - QStyleOption - QStyleOption - ( int version = QStyleOption::Version, int type = SO_Default ) - - - QStyleOption - QStyleOption-2 - ( const QStyleOption & other ) - - - init - init - ( const QWidget * widget ) - - - operator= - operator-eq - ( const QStyleOption & other ) - - - - QStyleOptionButton - qstyleoptionbutton.html - - QStyleOptionButton - QStyleOptionButton - () - - - QStyleOptionButton - QStyleOptionButton-2 - ( const QStyleOptionButton & other ) - - - - QStyleOptionComboBox - qstyleoptioncombobox.html - - QStyleOptionComboBox - QStyleOptionComboBox - () - - - QStyleOptionComboBox - QStyleOptionComboBox-2 - ( const QStyleOptionComboBox & other ) - - - - QStyleOptionComplex - qstyleoptioncomplex.html - - SubControls - activeSubControls - - - - SubControls - subControls - - - - QStyleOptionComplex - QStyleOptionComplex - ( int version = QStyleOptionComplex::Version, int type = SO_Complex ) - - - QStyleOptionComplex - QStyleOptionComplex-2 - ( const QStyleOptionComplex & other ) - - - - QStyleOptionDockWidget - qstyleoptiondockwidget.html - - QStyleOptionDockWidget - QStyleOptionDockWidget - () - - - QStyleOptionDockWidget - QStyleOptionDockWidget-2 - ( const QStyleOptionDockWidget & other ) - - - - QStyleOptionFocusRect - qstyleoptionfocusrect.html - - QStyleOptionFocusRect - QStyleOptionFocusRect - () - - - QStyleOptionFocusRect - QStyleOptionFocusRect-2 - ( const QStyleOptionFocusRect & other ) - - - - QStyleOptionFrame - qstyleoptionframe.html - - QStyleOptionFrame - QStyleOptionFrame - () - - - QStyleOptionFrame - QStyleOptionFrame-2 - ( const QStyleOptionFrame & other ) - - - - QStyleOptionHeader - qstyleoptionheader.html - - SectionPosition - SectionPosition-enum - - - - SelectedPosition - SelectedPosition-enum - - - - SortIndicator - SortIndicator-enum - - - - Alignment - iconAlignment - - - - Orientation - orientation - - - - Alignment - textAlignment - - - - QStyleOptionHeader - QStyleOptionHeader - () - - - QStyleOptionHeader - QStyleOptionHeader-2 - ( const QStyleOptionHeader & other ) - - - - QStyleOptionMenuItem - qstyleoptionmenuitem.html - - CheckType - CheckType-enum - - - - MenuItemType - MenuItemType-enum - - - - QStyleOptionMenuItem - QStyleOptionMenuItem - () - - - QStyleOptionMenuItem - QStyleOptionMenuItem-2 - ( const QStyleOptionMenuItem & other ) - - - - QStyleOptionProgressBar - qstyleoptionprogressbar.html - - Alignment - textAlignment - - - - QStyleOptionProgressBar - QStyleOptionProgressBar - () - - - QStyleOptionProgressBar - QStyleOptionProgressBar-2 - ( const QStyleOptionProgressBar & other ) - - - - QStyleOptionQ3DockWindow - qstyleoptionq3dockwindow.html - - QStyleOptionQ3DockWindow - QStyleOptionQ3DockWindow - () - - - QStyleOptionQ3DockWindow - QStyleOptionQ3DockWindow-2 - ( const QStyleOptionQ3DockWindow & other ) - - - - QStyleOptionQ3ListView - qstyleoptionq3listview.html - - ColorRole - viewportBGRole - - - - QStyleOptionQ3ListView - QStyleOptionQ3ListView - () - - - QStyleOptionQ3ListView - QStyleOptionQ3ListView-2 - ( const QStyleOptionQ3ListView & other ) - - - - QStyleOptionQ3ListViewItem - qstyleoptionq3listviewitem.html - - QStyleOptionQ3ListViewItem - QStyleOptionQ3ListViewItem - () - - - QStyleOptionQ3ListViewItem - QStyleOptionQ3ListViewItem-2 - ( const QStyleOptionQ3ListViewItem & other ) - - - - QStyleOptionRubberBand - qstyleoptionrubberband.html - - Shape - shape - - - - QStyleOptionRubberBand - QStyleOptionRubberBand - () - - - QStyleOptionRubberBand - QStyleOptionRubberBand-2 - ( const QStyleOptionRubberBand & other ) - - - - QStyleOptionSlider - qstyleoptionslider.html - - Orientation - orientation - - - - TickPosition - tickPosition - - - - QStyleOptionSlider - QStyleOptionSlider - () - - - QStyleOptionSlider - QStyleOptionSlider-2 - ( const QStyleOptionSlider & other ) - - - - QStyleOptionSpinBox - qstyleoptionspinbox.html - - ButtonSymbols - buttonSymbols - - - - StepEnabled - stepEnabled - - - - QStyleOptionSpinBox - QStyleOptionSpinBox - () - - - QStyleOptionSpinBox - QStyleOptionSpinBox-2 - ( const QStyleOptionSpinBox & other ) - - - - QStyleOptionTab - qstyleoptiontab.html - - SelectedPosition - SelectedPosition-enum - - - - TabPosition - TabPosition-enum - - - - Shape - shape - - - - QStyleOptionTab - QStyleOptionTab - () - - - QStyleOptionTab - QStyleOptionTab-2 - ( const QStyleOptionTab & other ) - - - - QStyleOptionTitleBar - qstyleoptiontitlebar.html - - WFlags - titleBarFlags - - - - QStyleOptionTitleBar - QStyleOptionTitleBar - () - - - QStyleOptionTitleBar - QStyleOptionTitleBar-2 - ( const QStyleOptionTitleBar & other ) - - - - QStyleOptionToolBox - qstyleoptiontoolbox.html - - QStyleOptionToolBox - QStyleOptionToolBox - () - - - QStyleOptionToolBox - QStyleOptionToolBox-2 - ( const QStyleOptionToolBox & other ) - - - - QStyleOptionToolButton - qstyleoptiontoolbutton.html - - ArrowType - arrowType - - - - ToolButtonStyle - toolButtonStyle - - - - QStyleOptionToolButton - QStyleOptionToolButton - () - - - QStyleOptionToolButton - QStyleOptionToolButton-2 - ( const QStyleOptionToolButton & other ) - - - - QStyleOptionViewItem - qstyleoptionviewitem.html - - Position - Position-enum - - - - Alignment - decorationAlignment - - - - Alignment - displayAlignment - - - - TextElideMode - textElideMode - - - - QStyleOptionViewItem - QStyleOptionViewItem - () - - - QStyleOptionViewItem - QStyleOptionViewItem-2 - ( const QStyleOptionViewItem & other ) - - - - QStylePainter - qstylepainter.html - - QStylePainter - QStylePainter - () - - - QStylePainter - QStylePainter-2 - ( QWidget * widget ) - - - QStylePainter - QStylePainter-3 - ( QPaintDevice * pd, QWidget * widget ) - - - begin - begin - ( QWidget * widget ) - - - begin - begin-2 - ( QPaintDevice * pd, QWidget * widget ) - - - drawComplexControl - drawComplexControl - ( QStyle::ComplexControl cc, const QStyleOptionComplex & option ) - - - drawControl - drawControl - ( QStyle::ControlElement ce, const QStyleOption & option ) - - - drawItemPixmap - drawItemPixmap - ( const QRect & rect, int flags, const QPixmap & pixmap ) - - - drawItemText - drawItemText - ( const QRect & r, int flags, const QPalette & pal, bool enabled, const QString & text, QPalette::ColorRole textRole = QPalette::NoRole ) - - - drawPrimitive - drawPrimitive - ( QStyle::PrimitiveElement pe, const QStyleOption & option ) - - - style - style - () - - - - QStylePlugin - qstyleplugin.html - - QStylePlugin - QStylePlugin - ( QObject * parent = 0 ) - - - create - create - ( const QString & key ) - - - keys - keys - () - - - - QSysInfo - qsysinfo.html - - Endian - Endian-enum - - - - MacVersion - MacVersion-enum - - - - WinVersion - WinVersion-enum - - - - WFlags - WFlags-typedef - - - - BackgroundMode - BackgroundMode-enum - - - - ButtonState - ButtonState-typedef - - - - ButtonState_enum - ButtonState_enum-enum - - - - GUIStyle - GUIStyle-enum - - - - MacintoshVersion - MacintoshVersion-enum - - - - PaintUnit - PaintUnit-enum - - - - ScaleMode - ScaleMode-typedef - - - - TextFlags - TextFlags-typedef - - - - ToolBarDock - ToolBarDock-typedef - - - - WindowsVersion - WindowsVersion-enum - - - - AnchorAttribute - AnchorAttribute-enum - - - - ArrowType - ArrowType-enum - - - - AspectRatioMode - AspectRatioMode-enum - - - - BGMode - BGMode-enum - - - - BrushStyle - BrushStyle-enum - - - - CaseSensitivity - CaseSensitivity-enum - - - - CheckState - CheckState-enum - - - - ClipOperation - ClipOperation-enum - - - - ConnectionType - ConnectionType-enum - - - - ContextMenuPolicy - ContextMenuPolicy-enum - - - - Corner - Corner-enum - - - - CursorShape - CursorShape-enum - - - - DayOfWeek - DayOfWeek-enum - - - - Dock - Dock-enum - - - - FillRule - FillRule-enum - - - - FocusPolicy - FocusPolicy-enum - - - - FocusReason - FocusReason-enum - - - - GlobalColor - GlobalColor-enum - - - - HANDLE - HANDLE-typedef - - - - HitTestAccuracy - HitTestAccuracy-enum - - - - InputMethodQuery - InputMethodQuery-enum - - - - ItemDataRole - ItemDataRole-enum - - - - Key - Key-enum - - - - LayoutDirection - LayoutDirection-enum - - - - Modifier - Modifier-enum - - - - PenCapStyle - PenCapStyle-enum - - - - PenJoinStyle - PenJoinStyle-enum - - - - PenStyle - PenStyle-enum - - - - ScrollBarPolicy - ScrollBarPolicy-enum - - - - ShortcutContext - ShortcutContext-enum - - - - SortOrder - SortOrder-enum - - - - TextElideMode - TextElideMode-enum - - - - TextFlag - TextFlag-enum - - - - TextFormat - TextFormat-enum - - - - TimeSpec - TimeSpec-enum - - - - ToolButtonStyle - ToolButtonStyle-enum - - - - TransformationMode - TransformationMode-enum - - - - UIEffect - UIEffect-enum - - - - WhiteSpaceMode - WhiteSpaceMode-enum - - - - WidgetAttribute - WidgetAttribute-enum - - - - convertFromPlainText - convertFromPlainText - ( const QString & plain, WhiteSpaceMode mode = WhiteSpacePre ) - - - escape - escape - ( const QString & plain ) - - - mightBeRichText - mightBeRichText - ( const QString & text ) - - - selected - selected - ( int index ) - - - setCurrentTab - setCurrentTab - ( int index ) - - - - QTabBar - qtabbar.html - - Shape - Shape-enum - - - - QTabBar - QTabBar - ( QWidget * parent = 0 ) - - - addTab - addTab - ( const QString & text ) - - - addTab - addTab-2 - ( const QIcon & icon, const QString & text ) - - - currentChanged - currentChanged - ( int index ) - - - insertTab - insertTab - ( int index, const QString & text ) - - - insertTab - insertTab-2 - ( int index, const QIcon & icon, const QString & text ) - - - isTabEnabled - isTabEnabled - ( int index ) - - - removeTab - removeTab - ( int index ) - - - setTabData - setTabData - ( int index, const QVariant & data ) - - - setTabEnabled - setTabEnabled - ( int index, bool enabled ) - - - setTabIcon - setTabIcon - ( int index, const QIcon & icon ) - - - setTabText - setTabText - ( int index, const QString & text ) - - - setTabToolTip - setTabToolTip - ( int index, const QString & tip ) - - - tabData - tabData - ( int index ) - - - tabIcon - tabIcon - ( int index ) - - - tabInserted - tabInserted - ( int index ) - - - tabLayoutChange - tabLayoutChange - () - - - tabRect - tabRect - ( int index ) - - - tabRemoved - tabRemoved - ( int index ) - - - tabSizeHint - tabSizeHint - ( int index ) - - - tabText - tabText - ( int index ) - - - tabToolTip - tabToolTip - ( int index ) - - - - QTabletEvent - qtabletevent.html - - PointerType - PointerType-enum - - - - TabletDevice - TabletDevice-enum - - - - QTabletEvent - QTabletEvent - ( Type type, const QPoint & pos, const QPoint & globalPos, const QPointF & hiResGlobalPos, int device, int pointerType, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, Qt::KeyboardModifiers keyState, qint64 uniqueID ) - - - device - device - () - - - globalPos - globalPos - () - - - globalX - globalX - () - - - globalY - globalY - () - - - hiResGlobalPos - hiResGlobalPos - () - - - hiResGlobalX - hiResGlobalX - () - - - hiResGlobalY - hiResGlobalY - () - - - pointerType - pointerType - () - - - pos - pos - () - - - pressure - pressure - () - - - rotation - rotation - () - - - tangentialPressure - tangentialPressure - () - - - uniqueId - uniqueId - () - - - x - x - () - - - xTilt - xTilt - () - - - y - y - () - - - yTilt - yTilt - () - - - z - z - () - - - - QTableView - qtableview.html - - PenStyle - gridStyle - - - - QTableView - QTableView - ( QWidget * parent = 0 ) - - - columnAt - columnAt - ( int x ) - - - columnCountChanged - columnCountChanged - ( int oldCount, int newCount ) - - - columnMoved - columnMoved - ( int column, int oldIndex, int newIndex ) - - - columnResized - columnResized - ( int column, int oldWidth, int newWidth ) - - - columnViewportPosition - columnViewportPosition - ( int column ) - - - columnWidth - columnWidth - ( int column ) - - - hideColumn - hideColumn - ( int column ) - - - hideRow - hideRow - ( int row ) - - - horizontalHeader - horizontalHeader - () - - - horizontalOffset - horizontalOffset - () - - - indexAt - indexAt - ( const QPoint & p ) - - - isColumnHidden - isColumnHidden - ( int column ) - - - isRowHidden - isRowHidden - ( int row ) - - - moveCursor - moveCursor - ( CursorAction cursorAction, Qt::KeyboardModifiers modifiers ) - - - paintEvent - paintEvent - ( QPaintEvent * e ) - - - rowAt - rowAt - ( int y ) - - - rowCountChanged - rowCountChanged - ( int oldCount, int newCount ) - - - rowHeight - rowHeight - ( int row ) - - - rowMoved - rowMoved - ( int row, int oldIndex, int newIndex ) - - - rowResized - rowResized - ( int row, int oldHeight, int newHeight ) - - - rowViewportPosition - rowViewportPosition - ( int row ) - - - selectColumn - selectColumn - ( int column ) - - - selectRow - selectRow - ( int row ) - - - setColumnHidden - setColumnHidden - ( int column, bool hide ) - - - setHorizontalHeader - setHorizontalHeader - ( QHeaderView * header ) - - - setRowHidden - setRowHidden - ( int row, bool hide ) - - - setSelection - setSelection - ( const QRect & rect, QItemSelectionModel::SelectionFlags flags ) - - - setVerticalHeader - setVerticalHeader - ( QHeaderView * header ) - - - showColumn - showColumn - ( int column ) - - - showRow - showRow - ( int row ) - - - sizeHintForColumn - sizeHintForColumn - ( int column ) - - - sizeHintForRow - sizeHintForRow - ( int row ) - - - sortByColumn - sortByColumn - ( int column ) - - - verticalHeader - verticalHeader - () - - - verticalOffset - verticalOffset - () - - - - QTableWidget - qtablewidget.html - - QTableWidget - QTableWidget - ( QWidget * parent = 0 ) - - - QTableWidget - QTableWidget-2 - ( int rows, int columns, QWidget * parent = 0 ) - - - clear - clear - () - - - closePersistentEditor - closePersistentEditor - ( QTableWidgetItem * item ) - - - column - column - ( const QTableWidgetItem * item ) - - - currentColumn - currentColumn - () - - - currentItem - currentItem - () - - - currentItemChanged - currentItemChanged - ( QTableWidgetItem * current, QTableWidgetItem * previous ) - - - currentRow - currentRow - () - - - dropMimeData - dropMimeData - ( int row, int column, const QMimeData * data, Qt::DropAction action ) - - - editItem - editItem - ( QTableWidgetItem * item ) - - - findItems - findItems - ( const QRegExp & rx ) - - - horizontalHeaderItem - horizontalHeaderItem - ( int column ) - - - indexFromItem - indexFromItem - ( QTableWidgetItem * item ) - - - insertColumn - insertColumn - ( int column ) - - - insertRow - insertRow - ( int row ) - - - isItemSelected - isItemSelected - ( const QTableWidgetItem * item ) - - - item - item - ( int row, int column ) - - - itemActivated - itemActivated - ( QTableWidgetItem * item ) - - - itemAt - itemAt - ( const QPoint & p ) - - - itemAt - itemAt-2 - ( int ax, int ay ) - - - itemChanged - itemChanged - ( QTableWidgetItem * item ) - - - itemClicked - itemClicked - ( QTableWidgetItem * item ) - - - itemDoubleClicked - itemDoubleClicked - ( QTableWidgetItem * item ) - - - itemEntered - itemEntered - ( QTableWidgetItem * item ) - - - itemFromIndex - itemFromIndex - ( const QModelIndex & index ) - - - itemPressed - itemPressed - ( QTableWidgetItem * item ) - - - itemPrototype - itemPrototype - () - - - itemSelectionChanged - itemSelectionChanged - () - - - items - items - ( const QMimeData * data ) - - - mimeData - mimeData - ( const QList<QTableWidgetItem *> items ) - - - mimeTypes - mimeTypes - () - - - openPersistentEditor - openPersistentEditor - ( QTableWidgetItem * item ) - - - removeColumn - removeColumn - ( int column ) - - - removeRow - removeRow - ( int row ) - - - row - row - ( const QTableWidgetItem * item ) - - - scrollToItem - scrollToItem - ( const QTableWidgetItem * item, ScrollHint hint = EnsureVisible ) - - - selectedItems - selectedItems - () - - - selectedRanges - selectedRanges - () - - - setCurrentItem - setCurrentItem - ( QTableWidgetItem * item ) - - - setHorizontalHeaderItem - setHorizontalHeaderItem - ( int column, QTableWidgetItem * item ) - - - setHorizontalHeaderLabels - setHorizontalHeaderLabels - ( const QStringList & labels ) - - - setItem - setItem - ( int row, int column, QTableWidgetItem * item ) - - - setItemPrototype - setItemPrototype - ( const QTableWidgetItem * item ) - - - setItemSelected - setItemSelected - ( const QTableWidgetItem * item, bool select ) - - - setRangeSelected - setRangeSelected - ( const QTableWidgetSelectionRange & range, bool select ) - - - setVerticalHeaderItem - setVerticalHeaderItem - ( int row, QTableWidgetItem * item ) - - - setVerticalHeaderLabels - setVerticalHeaderLabels - ( const QStringList & labels ) - - - sortItems - sortItems - ( int column, Qt::SortOrder order = Qt::AscendingOrder ) - - - DropActions - supportedDropActions - QTableWidget::supportedDropActions() - - - takeItem - takeItem - ( int row, int column ) - - - verticalHeaderItem - verticalHeaderItem - ( int row ) - - - visualColumn - visualColumn - ( int logicalColumn ) - - - visualItemRect - visualItemRect - ( const QTableWidgetItem * item ) - - - visualRow - visualRow - ( int logicalRow ) - - - - QTableWidgetItem - qtablewidgetitem.html - - QTableWidgetItem - QTableWidgetItem - ( int type = Type ) - - - QTableWidgetItem - QTableWidgetItem-2 - ( const QString & text, int type = Type ) - - - backgroundColor - backgroundColor - () - - - CheckState - checkState - QTableWidgetItem::checkState() - - - clone - clone - () - - - data - data - ( int role ) - - - ItemFlags - flags - QTableWidgetItem::flags() - - - font - font - () - - - icon - icon - () - - - read - read - ( QDataStream & in ) - - - setBackgroundColor - setBackgroundColor - ( const QColor & color ) - - - setCheckState - setCheckState - ( Qt::CheckState state ) - - - setData - setData - ( int role, const QVariant & value ) - - - setFlags - setFlags - ( Qt::ItemFlags flags ) - - - setFont - setFont - ( const QFont & font ) - - - setIcon - setIcon - ( const QIcon & icon ) - - - setStatusTip - setStatusTip - ( const QString & statusTip ) - - - setText - setText - ( const QString & text ) - - - setTextAlignment - setTextAlignment - ( int alignment ) - - - setTextColor - setTextColor - ( const QColor & color ) - - - setToolTip - setToolTip - ( const QString & toolTip ) - - - setWhatsThis - setWhatsThis - ( const QString & whatsThis ) - - - statusTip - statusTip - () - - - tableWidget - tableWidget - () - - - text - text - () - - - textAlignment - textAlignment - () - - - textColor - textColor - () - - - toolTip - toolTip - () - - - type - type - () - - - whatsThis - whatsThis - () - - - write - write - ( QDataStream & out ) - - - operator< - operator-lt - ( const QTableWidgetItem & other ) - - - - QTableWidgetSelectionRange - qtablewidgetselectionrange.html - - QTableWidgetSelectionRange - QTableWidgetSelectionRange - () - - - QTableWidgetSelectionRange - QTableWidgetSelectionRange-2 - ( int top, int left, int bottom, int right ) - - - QTableWidgetSelectionRange - QTableWidgetSelectionRange-3 - ( const QTableWidgetSelectionRange & other ) - - - bottomRow - bottomRow - () - - - leftColumn - leftColumn - () - - - rightColumn - rightColumn - () - - - topRow - topRow - () - - - QTabWidget - QTabWidget-2 - ( QWidget * parent, const char * name, Qt::WFlags f = 0 ) - - - changeTab - changeTab - ( QWidget * widget, const QString & label ) - - - changeTab - changeTab-2 - ( QWidget * widget, const QIcon & icon, const QString & label ) - - - currentChanged - currentChanged-2 - ( QWidget * widget ) - - - currentPage - currentPage - () - - - currentPageIndex - currentPageIndex - () - - - insertTab - insertTab-2 - ( QWidget * widget, const QString & label, int index = -1 ) - - - insertTab - insertTab-3 - ( QWidget * widget, const QIcon & icon, const QString & label, int index = -1 ) - - - isTabEnabled - isTabEnabled-2 - ( QWidget * widget ) - - - label - label - ( int index ) - - - margin - margin - () - - - page - page - ( int index ) - - - removePage - removePage - ( QWidget * widget ) - - - removeTabToolTip - removeTabToolTip - ( QWidget * widget ) - - - setCurrentPage - setCurrentPage - ( int index ) - - - setMargin - setMargin - ( int margin ) - - - setTabEnabled - setTabEnabled-2 - ( QWidget * widget, bool b ) - - - setTabIconSet - setTabIconSet - ( QWidget * widget, const QIcon & icon ) - - - setTabLabel - setTabLabel - ( QWidget * widget, const QString & label ) - - - setTabToolTip - setTabToolTip-2 - ( QWidget * widget, const QString & tip ) - - - showPage - showPage - ( QWidget * widget ) - - - tabIconSet - tabIconSet - ( QWidget * widget ) - - - tabLabel - tabLabel - ( QWidget * widget ) - - - tabToolTip - tabToolTip-2 - ( QWidget * widget ) - - - - QTabWidget - qtabwidget.html - - TabPosition - TabPosition-enum - - - - TabShape - TabShape-enum - - - - QTabWidget - QTabWidget - ( QWidget * parent = 0 ) - - - addTab - addTab - ( QWidget * child, const QString & label ) - - - addTab - addTab-2 - ( QWidget * child, const QIcon & icon, const QString & label ) - - - cornerWidget - cornerWidget - ( Qt::Corner corner = Qt::TopRightCorner ) - - - currentChanged - currentChanged - ( int index ) - - - currentWidget - currentWidget - () - - - indexOf - indexOf - ( QWidget * w ) - - - insertTab - insertTab - ( int index, QWidget * w, const QString & label ) - - - insertTab - insertTab-4 - ( int index, QWidget * w, const QIcon & icon, const QString & label ) - - - isTabEnabled - isTabEnabled - ( int index ) - - - paintEvent - paintEvent - ( QPaintEvent * event ) - - - removeTab - removeTab - ( int index ) - - - setCornerWidget - setCornerWidget - ( QWidget * w, Qt::Corner corner = Qt::TopRightCorner ) - - - setCurrentWidget - setCurrentWidget - ( QWidget * widget ) - - - setTabBar - setTabBar - ( QTabBar * tb ) - - - setTabEnabled - setTabEnabled - ( int index, bool enable ) - - - setTabIcon - setTabIcon - ( int index, const QIcon & icon ) - - - setTabText - setTabText - ( int index, const QString & label ) - - - setTabToolTip - setTabToolTip - ( int index, const QString & tip ) - - - tabBar - tabBar - () - - - tabIcon - tabIcon - ( int index ) - - - tabInserted - tabInserted - ( int index ) - - - tabRemoved - tabRemoved - ( int index ) - - - tabText - tabText - ( int index ) - - - tabToolTip - tabToolTip - ( int index ) - - - widget - widget - ( int index ) - - - - QTcpServer - qtcpserver.html - - QTcpServer - QTcpServer - ( QObject * parent = 0 ) - - - close - close - () - - - errorString - errorString - () - - - hasPendingConnections - hasPendingConnections - () - - - incomingConnection - incomingConnection - ( int socketDescriptor ) - - - isListening - isListening - () - - - listen - listen - ( const QHostAddress & address = QHostAddress::Any, quint16 port = 0 ) - - - maxPendingConnections - maxPendingConnections - () - - - newConnection - newConnection - () - - - nextPendingConnection - nextPendingConnection - () - - - serverAddress - serverAddress - () - - - SocketError - serverError - QTcpServer::serverError() - - - serverPort - serverPort - () - - - setMaxPendingConnections - setMaxPendingConnections - ( int numConnections ) - - - setSocketDescriptor - setSocketDescriptor - ( int socketDescriptor ) - - - socketDescriptor - socketDescriptor - () - - - waitForNewConnection - waitForNewConnection - ( int msec = 0, bool * timedOut = 0 ) - - - - QTcpSocket - qtcpsocket.html - - QTcpSocket - QTcpSocket - ( QObject * parent = 0 ) - - - - QTemporaryFile - qtemporaryfile.html - - QTemporaryFile - QTemporaryFile - () - - - QTemporaryFile - QTemporaryFile-2 - ( const QString & templateName ) - - - QTemporaryFile - QTemporaryFile-3 - ( QObject * parent ) - - - QTemporaryFile - QTemporaryFile-4 - ( const QString & templateName, QObject * parent ) - - - autoRemove - autoRemove - () - - - createLocalFile - createLocalFile - ( const QString & fileName ) - - - createLocalFile - createLocalFile-2 - ( QFile & file ) - - - fileName - fileName - () - - - fileTemplate - fileTemplate - () - - - open - open - () - - - setAutoRemove - setAutoRemove - ( bool b ) - - - setFileTemplate - setFileTemplate - ( const QString & name ) - - - - QTextBlock::iterator - qtextblock-iterator.html - - iterator - iterator-2 - () - - - iterator - iterator-3 - ( const iterator & other ) - - - atEnd - atEnd - () - - - fragment - fragment - () - - - operator!= - operator-not-eq - ( const iterator & other ) - - - operator++ - operator-2b-2b - () - - - operator++ - operator-2b-2b-2 - ( int ) - - - operator-- - operator-- - () - - - operator-- - operator---2 - ( int ) - - - operator== - operator-eq-eq - ( const iterator & other ) - - - - QTextBlock - qtextblock.html - - Iterator - Iterator-typedef - - - - QTextBlock - QTextBlock-3 - ( const QTextBlock & other ) - - - begin - begin - () - - - blockFormat - blockFormat - () - - - blockFormatIndex - blockFormatIndex - () - - - charFormat - charFormat - () - - - charFormatIndex - charFormatIndex - () - - - contains - contains - ( int position ) - - - document - document - () - - - end - end - () - - - isValid - isValid - () - - - layout - layout - () - - - length - length - () - - - next - next - () - - - position - position - () - - - previous - previous - () - - - text - text - () - - - textList - textList - () - - - operator!= - operator-not-eq - ( const QTextBlock & other ) - - - operator< - operator-lt - ( const QTextBlock & other ) - - - operator= - operator-eq - ( const QTextBlock & other ) - - - operator== - operator-eq-eq - ( const QTextBlock & other ) - - - - QTextBlockFormat - qtextblockformat.html - - QTextBlockFormat - QTextBlockFormat - () - - - Alignment - alignment - QTextBlockFormat::alignment() - - - bottomMargin - bottomMargin - () - - - indent - indent - () - - - isValid - isValid - () - - - leftMargin - leftMargin - () - - - nonBreakableLines - nonBreakableLines - () - - - rightMargin - rightMargin - () - - - setAlignment - setAlignment - ( Qt::Alignment alignment ) - - - setBottomMargin - setBottomMargin - ( qreal margin ) - - - setIndent - setIndent - ( qreal indentation ) - - - setLeftMargin - setLeftMargin - ( qreal margin ) - - - setNonBreakableLines - setNonBreakableLines - ( bool b ) - - - setRightMargin - setRightMargin - ( qreal margin ) - - - setTextIndent - setTextIndent - ( qreal indent ) - - - setTopMargin - setTopMargin - ( qreal margin ) - - - textIndent - textIndent - () - - - topMargin - topMargin - () - - - - QTextBlockGroup - qtextblockgroup.html - - QTextBlockGroup - QTextBlockGroup - ( QTextDocument * document ) - - - blockFormatChanged - blockFormatChanged - ( const QTextBlock & block ) - - - blockInserted - blockInserted - ( const QTextBlock & block ) - - - blockList - blockList - () - - - blockRemoved - blockRemoved - ( const QTextBlock & block ) - - - QTextBrowser - QTextBrowser-2 - ( QWidget * parent, const char * name ) - - - - QTextBrowser - qtextbrowser.html - - QTextBrowser - QTextBrowser - ( QWidget * parent = 0 ) - - - anchorClicked - anchorClicked - ( const QUrl & link ) - - - backward - backward - () - - - backwardAvailable - backwardAvailable - ( bool available ) - - - forward - forward - () - - - forwardAvailable - forwardAvailable - ( bool available ) - - - highlighted - highlighted - ( const QUrl & link ) - - - highlighted - highlighted-2 - ( const QString & link ) - - - home - home - () - - - keyPressEvent - keyPressEvent - ( QKeyEvent * ev ) - - - loadResource - loadResource - ( int type, const QUrl & name ) - - - reload - reload - () - - - sourceChanged - sourceChanged - ( const QUrl & src ) - - - - QTextCharFormat - qtextcharformat.html - - VerticalAlignment - VerticalAlignment-enum - - - - QTextCharFormat - QTextCharFormat - () - - - anchorHref - anchorHref - () - - - anchorName - anchorName - () - - - font - font - () - - - fontFamily - fontFamily - () - - - fontFixedPitch - fontFixedPitch - () - - - fontItalic - fontItalic - () - - - fontOverline - fontOverline - () - - - fontPointSize - fontPointSize - () - - - fontStrikeOut - fontStrikeOut - () - - - fontUnderline - fontUnderline - () - - - fontWeight - fontWeight - () - - - isAnchor - isAnchor - () - - - isValid - isValid - () - - - setAnchor - setAnchor - ( bool anchor ) - - - setAnchorHref - setAnchorHref - ( const QString & value ) - - - setAnchorName - setAnchorName - ( const QString & name ) - - - setFont - setFont - ( const QFont & font ) - - - setFontFamily - setFontFamily - ( const QString & family ) - - - setFontFixedPitch - setFontFixedPitch - ( bool fixedPitch ) - - - setFontItalic - setFontItalic - ( bool italic ) - - - setFontOverline - setFontOverline - ( bool overline ) - - - setFontPointSize - setFontPointSize - ( qreal size ) - - - setFontStrikeOut - setFontStrikeOut - ( bool strikeOut ) - - - setFontUnderline - setFontUnderline - ( bool underline ) - - - setFontWeight - setFontWeight - ( int weight ) - - - setTableCellColumnSpan - setTableCellColumnSpan - ( int tableCellColumnSpan ) - - - setTableCellRowSpan - setTableCellRowSpan - ( int tableCellRowSpan ) - - - setUnderlineColor - setUnderlineColor - ( const QColor & color ) - - - setVerticalAlignment - setVerticalAlignment - ( VerticalAlignment alignment ) - - - tableCellColumnSpan - tableCellColumnSpan - () - - - tableCellRowSpan - tableCellRowSpan - () - - - underlineColor - underlineColor - () - - - verticalAlignment - verticalAlignment - () - - - - QTextCodec::ConverterState - qtextcodec-converterstate.html - - ConverterState - ConverterState - ( ConversionFlags flags = DefaultConversion ) - - - codecForContent - codecForContent - ( const char * str, int size ) - - - codecForIndex - codecForIndex - ( int i ) - - - codecForName - codecForName-3 - ( const char * hint, int accuracy ) - - - fromUnicode - fromUnicode-3 - ( const QString & uc, int & lenInOut ) - - - locale - locale - () - - - mimeName - mimeName - () - - - toUnicode - toUnicode-3 - ( const QByteArray & a, int len ) - - - - QTextCodec - qtextcodec.html - - QTextCodec - QTextCodec - () - - - aliases - aliases - () - - - availableCodecs - availableCodecs - () - - - availableMibs - availableMibs - () - - - canEncode - canEncode - ( QChar ch ) - - - canEncode - canEncode-2 - ( const QString & s ) - - - codecForCStrings - codecForCStrings - () - - - codecForLocale - codecForLocale - () - - - codecForMib - codecForMib - ( int mib ) - - - codecForName - codecForName - ( const QByteArray & name ) - - - codecForName - codecForName-2 - ( const char * name ) - - - codecForTr - codecForTr - () - - - convertFromUnicode - convertFromUnicode - ( const QChar * input, int number, ConverterState * state ) - - - convertToUnicode - convertToUnicode - ( const char * chars, int len, ConverterState * state ) - - - fromUnicode - fromUnicode - ( const QString & str ) - - - fromUnicode - fromUnicode-2 - ( const QChar * input, int number, ConverterState * state = 0 ) - - - makeDecoder - makeDecoder - () - - - makeEncoder - makeEncoder - () - - - mibEnum - mibEnum - () - - - name - name - () - - - setCodecForCStrings - setCodecForCStrings - ( QTextCodec * c ) - - - setCodecForLocale - setCodecForLocale - ( QTextCodec * c ) - - - setCodecForTr - setCodecForTr - ( QTextCodec * c ) - - - toUnicode - toUnicode - ( const QByteArray & a ) - - - toUnicode - toUnicode-2 - ( const char * in, int length, ConverterState * state = 0 ) - - - toUnicode - toUnicode-4 - ( const char * chars ) - - - - QTextCodecPlugin - qtextcodecplugin.html - - QTextCodecPlugin - QTextCodecPlugin - ( QObject * parent = 0 ) - - - aliases - aliases - () - - - createForMib - createForMib - ( int mib ) - - - createForName - createForName - ( const QByteArray & name ) - - - mibEnums - mibEnums - () - - - names - names - () - - - - QTextCursor - qtextcursor.html - - MoveMode - MoveMode-enum - - - - MoveOperation - MoveOperation-enum - - - - SelectionType - SelectionType-enum - - - - QTextCursor - QTextCursor - () - - - QTextCursor - QTextCursor-2 - ( QTextDocument * document ) - - - QTextCursor - QTextCursor-4 - ( QTextFrame * frame ) - - - QTextCursor - QTextCursor-5 - ( const QTextBlock & block ) - - - QTextCursor - QTextCursor-7 - ( const QTextCursor & cursor ) - - - anchor - anchor - () - - - atBlockEnd - atBlockEnd - () - - - atBlockStart - atBlockStart - () - - - atEnd - atEnd - () - - - atStart - atStart - () - - - beginEditBlock - beginEditBlock - () - - - block - block - () - - - blockCharFormat - blockCharFormat - () - - - blockFormat - blockFormat - () - - - charFormat - charFormat - () - - - clearSelection - clearSelection - () - - - createList - createList - ( const QTextListFormat & format ) - - - createList - createList-2 - ( QTextListFormat::Style style ) - - - currentFrame - currentFrame - () - - - currentList - currentList - () - - - currentTable - currentTable - () - - - deleteChar - deleteChar - () - - - deletePreviousChar - deletePreviousChar - () - - - endEditBlock - endEditBlock - () - - - hasComplexSelection - hasComplexSelection - () - - - hasSelection - hasSelection - () - - - insertBlock - insertBlock - () - - - insertBlock - insertBlock-2 - ( const QTextBlockFormat & format ) - - - insertBlock - insertBlock-3 - ( const QTextBlockFormat & format, const QTextCharFormat & charFormat ) - - - insertFragment - insertFragment - ( const QTextDocumentFragment & fragment ) - - - insertFrame - insertFrame - ( const QTextFrameFormat & format ) - - - insertImage - insertImage - ( const QTextImageFormat & format ) - - - insertImage - insertImage-2 - ( const QString & name ) - - - insertList - insertList - ( const QTextListFormat & format ) - - - insertList - insertList-2 - ( QTextListFormat::Style style ) - - - insertTable - insertTable - ( int rows, int columns, const QTextTableFormat & format ) - - - insertTable - insertTable-2 - ( int rows, int columns ) - - - insertText - insertText - ( const QString & text ) - - - insertText - insertText-2 - ( const QString & text, const QTextCharFormat & format ) - - - isCopyOf - isCopyOf - ( const QTextCursor & other ) - - - isNull - isNull - () - - - joinPreviousEditBlock - joinPreviousEditBlock - () - - - mergeBlockCharFormat - mergeBlockCharFormat - ( const QTextCharFormat & modifier ) - - - mergeBlockFormat - mergeBlockFormat - ( const QTextBlockFormat & modifier ) - - - mergeCharFormat - mergeCharFormat - ( const QTextCharFormat & modifier ) - - - movePosition - movePosition - ( MoveOperation op, MoveMode mode = MoveAnchor, int n = 1 ) - - - position - position - () - - - removeSelectedText - removeSelectedText - () - - - select - select - ( SelectionType selection ) - - - selectedTableCells - selectedTableCells - ( int * firstRow, int * numRows, int * firstColumn, int * numColumns ) - - - selectedText - selectedText - () - - - selection - selection - () - - - selectionEnd - selectionEnd - () - - - selectionStart - selectionStart - () - - - setBlockCharFormat - setBlockCharFormat - ( const QTextCharFormat & format ) - - - setBlockFormat - setBlockFormat - ( const QTextBlockFormat & format ) - - - setCharFormat - setCharFormat - ( const QTextCharFormat & format ) - - - setPosition - setPosition - ( int pos, MoveMode m = MoveAnchor ) - - - operator!= - operator-not-eq - ( const QTextCursor & other ) - - - operator< - operator-lt - ( const QTextCursor & other ) - - - operator<= - operator-lt-eq - ( const QTextCursor & other ) - - - operator= - operator-eq - ( const QTextCursor & cursor ) - - - operator== - operator-eq-eq - ( const QTextCursor & other ) - - - operator> - operator-gt - ( const QTextCursor & other ) - - - operator>= - operator-gt-eq - ( const QTextCursor & other ) - - - - QTextDecoder - qtextdecoder.html - - QTextDecoder - QTextDecoder - ( const QTextCodec * codec ) - - - toUnicode - toUnicode - ( const char * chars, int len ) - - - toUnicode - toUnicode-2 - ( const QByteArray & ba ) - - - - QTextDocument - qtextdocument.html - - MetaInformation - MetaInformation-enum - - - - ResourceType - ResourceType-enum - - - - QTextDocument - QTextDocument - ( QObject * parent = 0 ) - - - QTextDocument - QTextDocument-2 - ( const QString & text, QObject * parent = 0 ) - - - addResource - addResource - ( int type, const QUrl & name, const QVariant & resource ) - - - allFormats - allFormats - () - - - begin - begin - () - - - clear - clear - () - - - clone - clone - ( QObject * parent = 0 ) - - - contentsChange - contentsChange - ( int position, int charsRemoved, int charsAdded ) - - - contentsChanged - contentsChanged - () - - - createObject - createObject - ( const QTextFormat & format ) - - - cursorPositionChanged - cursorPositionChanged - ( const QTextCursor & cursor ) - - - documentLayout - documentLayout - () - - - end - end - () - - - find - find - ( const QString & expr, const QTextCursor & cursor, FindFlags options = 0 ) - - - find - find-2 - ( const QString & expr, int position = 0, FindFlags options = 0 ) - - - findBlock - findBlock - ( int pos ) - - - isEmpty - isEmpty - () - - - isRedoAvailable - isRedoAvailable - () - - - isUndoAvailable - isUndoAvailable - () - - - loadResource - loadResource - ( int type, const QUrl & name ) - - - markContentsDirty - markContentsDirty - ( int position, int length ) - - - metaInformation - metaInformation - ( MetaInformation info ) - - - modificationChanged - modificationChanged - ( bool changed ) - - - object - object - ( int objectIndex ) - - - objectForFormat - objectForFormat - ( const QTextFormat & f ) - - - pageCount - pageCount - () - - - print - print - ( QPrinter * printer ) - - - redo - redo - () - - - redoAvailable - redoAvailable - ( bool available ) - - - resource - resource - ( int type, const QUrl & name ) - - - rootFrame - rootFrame - () - - - setDocumentLayout - setDocumentLayout - ( QAbstractTextDocumentLayout * layout ) - - - setHtml - setHtml - ( const QString & html ) - - - setMetaInformation - setMetaInformation - ( MetaInformation info, const QString & string ) - - - setPlainText - setPlainText - ( const QString & text ) - - - toHtml - toHtml - ( const QByteArray & encoding = QByteArray() - - - toPlainText - toPlainText - () - - - undo - undo - () - - - undoAvailable - undoAvailable - ( bool available ) - - - - QTextDocumentFragment - qtextdocumentfragment.html - - QTextDocumentFragment - QTextDocumentFragment - () - - - QTextDocumentFragment - QTextDocumentFragment-2 - ( const QTextDocument * document ) - - - QTextDocumentFragment - QTextDocumentFragment-3 - ( const QTextCursor & cursor ) - - - QTextDocumentFragment - QTextDocumentFragment-4 - ( const QTextDocumentFragment & other ) - - - fromHtml - fromHtml - ( const QString & text ) - - - fromPlainText - fromPlainText - ( const QString & plainText ) - - - isEmpty - isEmpty - () - - - toHtml - toHtml - () - - - toPlainText - toPlainText - () - - - operator= - operator-eq - ( const QTextDocumentFragment & other ) - - - KeyboardAction - KeyboardAction-enum - - - - QTextEdit - QTextEdit-4 - ( QWidget * parent, const char * name ) - - - bold - bold - () - - - color - color - () - - - currentColorChanged - currentColorChanged - ( const QColor & color ) - - - currentFontChanged - currentFontChanged - ( const QFont & font ) - - - doKeyboardAction - doKeyboardAction - ( KeyboardAction action ) - - - family - family - () - - - find - find-2 - ( const QString & exp, bool cs, bool wo ) - - - hasSelectedText - hasSelectedText - () - - - insert - insert - ( const QString & text ) - - - isModified - isModified - () - - - isRedoAvailable - isRedoAvailable - () - - - isUndoAvailable - isUndoAvailable - () - - - italic - italic - () - - - moveCursor - moveCursor - ( CursorAction action, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor ) - - - pointSize - pointSize - () - - - redo - redo - () - - - redoAvailable - redoAvailable - ( bool b ) - - - selectedText - selectedText - () - - - setBold - setBold - ( bool b ) - - - setColor - setColor - ( const QColor & color ) - - - setFamily - setFamily - ( const QString & family ) - - - setItalic - setItalic - ( bool i ) - - - setModified - setModified - ( bool m = true ) - - - setPointSize - setPointSize - ( int size ) - - - setText - setText - ( const QString & text ) - - - setTextFormat - setTextFormat - ( Qt::TextFormat f ) - - - setUnderline - setUnderline - ( bool b ) - - - sync - sync - () - - - text - text - () - - - textChanged - textChanged - () - - - TextFormat - textFormat - QTextEdit::textFormat() - - - underline - underline - () - - - undo - undo - () - - - undoAvailable - undoAvailable - ( bool b ) - - - - QTextEdit - qtextedit.html - - CursorAction - CursorAction-enum - - - - LineWrapMode - LineWrapMode-enum - - - - WrapMode - wordWrapMode - - - - QTextEdit - QTextEdit - ( QWidget * parent = 0 ) - - - QTextEdit - QTextEdit-2 - ( const QString & text, QWidget * parent = 0 ) - - - Alignment - alignment - QTextEdit::alignment() - - - anchorAt - anchorAt - ( const QPoint & pos ) - - - append - append - ( const QString & text ) - - - clear - clear - () - - - contextMenuEvent - contextMenuEvent - ( QContextMenuEvent * e ) - - - copy - copy - () - - - copyAvailable - copyAvailable - ( bool yes ) - - - createMimeDataFromSelection - createMimeDataFromSelection - () - - - createStandardContextMenu - createStandardContextMenu - () - - - currentCharFormat - currentCharFormat - () - - - currentCharFormatChanged - currentCharFormatChanged - ( const QTextCharFormat & f ) - - - currentFont - currentFont - () - - - cursorForPosition - cursorForPosition - ( const QPoint & pos ) - - - cursorPositionChanged - cursorPositionChanged - () - - - cursorRect - cursorRect - ( const QTextCursor & cursor ) - - - cursorRect - cursorRect-2 - () - - - cut - cut - () - - - document - document - () - - - ensureCursorVisible - ensureCursorVisible - () - - - find - find - ( const QString & exp, QTextDocument::FindFlags options = 0 ) - - - fontFamily - fontFamily - () - - - fontItalic - fontItalic - () - - - fontPointSize - fontPointSize - () - - - fontUnderline - fontUnderline - () - - - fontWeight - fontWeight - () - - - insertFromMimeData - insertFromMimeData - ( const QMimeData * source ) - - - insertHtml - insertHtml - ( const QString & text ) - - - insertPlainText - insertPlainText - ( const QString & text ) - - - loadResource - loadResource - ( int type, const QUrl & name ) - - - mergeCurrentCharFormat - mergeCurrentCharFormat - ( const QTextCharFormat & modifier ) - - - paste - paste - () - - - scrollToAnchor - scrollToAnchor - ( const QString & name ) - - - selectAll - selectAll - () - - - selectionChanged - selectionChanged - () - - - setAlignment - setAlignment - ( Qt::Alignment a ) - - - setCurrentCharFormat - setCurrentCharFormat - ( const QTextCharFormat & format ) - - - setCurrentFont - setCurrentFont - ( const QFont & f ) - - - setDocument - setDocument - ( QTextDocument * document ) - - - setFontFamily - setFontFamily - ( const QString & fontFamily ) - - - setFontItalic - setFontItalic - ( bool b ) - - - setFontPointSize - setFontPointSize - ( qreal s ) - - - setFontUnderline - setFontUnderline - ( bool b ) - - - setFontWeight - setFontWeight - ( int w ) - - - setPlainText - setPlainText - ( const QString & text ) - - - setTextColor - setTextColor - ( const QColor & c ) - - - setTextCursor - setTextCursor - ( const QTextCursor & cursor ) - - - textColor - textColor - () - - - textCursor - textCursor - () - - - toPlainText - toPlainText - () - - - zoomIn - zoomIn - ( int range = 1 ) - - - zoomOut - zoomOut - ( int range = 1 ) - - - - QTextEncoder - qtextencoder.html - - QTextEncoder - QTextEncoder - ( const QTextCodec * codec ) - - - fromUnicode - fromUnicode - ( const QString & str ) - - - fromUnicode - fromUnicode-2 - ( const QChar * uc, int len ) - - - fromUnicode - fromUnicode-3 - ( const QString & uc, int & lenInOut ) - - - - QTextFormat - qtextformat.html - - FormatType - FormatType-enum - - - - ObjectTypes - ObjectTypes-enum - - - - Property - Property-enum - - - - QTextFormat - QTextFormat - () - - - QTextFormat - QTextFormat-2 - ( int type ) - - - QTextFormat - QTextFormat-3 - ( const QTextFormat & other ) - - - background - background - () - - - boolProperty - boolProperty - ( int propertyId ) - - - brushProperty - brushProperty - ( int propertyId ) - - - clearBackground - clearBackground - () - - - clearForeground - clearForeground - () - - - clearProperty - clearProperty - ( int propertyId ) - - - colorProperty - colorProperty - ( int propertyId ) - - - doubleProperty - doubleProperty - ( int propertyId ) - - - foreground - foreground - () - - - hasProperty - hasProperty - ( int propertyId ) - - - intProperty - intProperty - ( int propertyId ) - - - isBlockFormat - isBlockFormat - () - - - isCharFormat - isCharFormat - () - - - isFrameFormat - isFrameFormat - () - - - isImageFormat - isImageFormat - () - - - isListFormat - isListFormat - () - - - isTableFormat - isTableFormat - () - - - isValid - isValid - () - - - LayoutDirection - layoutDirection - QTextFormat::layoutDirection() - - - lengthProperty - lengthProperty - ( int propertyId ) - - - lengthVectorProperty - lengthVectorProperty - ( int propertyId ) - - - merge - merge - ( const QTextFormat & other ) - - - objectIndex - objectIndex - () - - - objectType - objectType - () - - - penProperty - penProperty - ( int propertyId ) - - - properties - properties - () - - - property - property - ( int propertyId ) - - - setBackground - setBackground - ( const QBrush & brush ) - - - setForeground - setForeground - ( const QBrush & brush ) - - - setLayoutDirection - setLayoutDirection - ( Qt::LayoutDirection direction ) - - - setObjectIndex - setObjectIndex - ( int index ) - - - setObjectType - setObjectType - ( int type ) - - - setProperty - setProperty - ( int propertyId, const QVariant & value ) - - - setProperty - setProperty-2 - ( int propertyId, const QVector<QTextLength> & value ) - - - stringProperty - stringProperty - ( int propertyId ) - - - toBlockFormat - toBlockFormat - () - - - toCharFormat - toCharFormat - () - - - toFrameFormat - toFrameFormat - () - - - toImageFormat - toImageFormat - () - - - toListFormat - toListFormat - () - - - toTableFormat - toTableFormat - () - - - type - type - () - - - operator - operator-QVariant - QVariant() - - - operator!= - operator-not-eq - ( const QTextFormat & other ) - - - operator= - operator-eq - ( const QTextFormat & other ) - - - operator== - operator-eq-eq - ( const QTextFormat & other ) - - - - QTextFragment - qtextfragment.html - - QTextFragment - QTextFragment-2 - () - - - QTextFragment - QTextFragment-3 - ( const QTextFragment & other ) - - - charFormat - charFormat - () - - - charFormatIndex - charFormatIndex - () - - - contains - contains - ( int position ) - - - isValid - isValid - () - - - length - length - () - - - position - position - () - - - text - text - () - - - operator!= - operator-not-eq - ( const QTextFragment & other ) - - - operator< - operator-lt - ( const QTextFragment & other ) - - - operator= - operator-eq - ( const QTextFragment & other ) - - - operator== - operator-eq-eq - ( const QTextFragment & other ) - - - - QTextFrame::iterator - qtextframe-iterator.html - - iterator - iterator-2 - () - - - iterator - iterator-3 - ( const iterator & other ) - - - atEnd - atEnd - () - - - currentBlock - currentBlock - () - - - currentFrame - currentFrame - () - - - parentFrame - parentFrame - () - - - operator!= - operator-not-eq - ( const iterator & other ) - - - operator++ - operator-2b-2b - () - - - operator++ - operator-2b-2b-2 - ( int ) - - - operator-- - operator-- - () - - - operator-- - operator---2 - ( int ) - - - operator== - operator-eq-eq - ( const iterator & other ) - - - - QTextFrame - qtextframe.html - - Iterator - Iterator-typedef - - - - QTextFrame - QTextFrame - ( QTextDocument * document ) - - - begin - begin - () - - - childFrames - childFrames - () - - - end - end - () - - - firstCursorPosition - firstCursorPosition - () - - - firstPosition - firstPosition - () - - - frameFormat - frameFormat - () - - - lastCursorPosition - lastCursorPosition - () - - - lastPosition - lastPosition - () - - - parentFrame - parentFrame - () - - - setFrameFormat - setFrameFormat - ( const QTextFrameFormat & format ) - - - - QTextFrameFormat - qtextframeformat.html - - Position - Position-enum - - - - QTextFrameFormat - QTextFrameFormat - () - - - border - border - () - - - height - height - () - - - isValid - isValid - () - - - margin - margin - () - - - padding - padding - () - - - position - position - () - - - setBorder - setBorder - ( qreal width ) - - - setHeight - setHeight - ( const QTextLength & height ) - - - setHeight - setHeight-2 - ( qreal height ) - - - setMargin - setMargin - ( qreal margin ) - - - setPadding - setPadding - ( qreal width ) - - - setPosition - setPosition - ( Position policy ) - - - setWidth - setWidth - ( const QTextLength & width ) - - - setWidth - setWidth-2 - ( qreal width ) - - - width - width - () - - - - QTextImageFormat - qtextimageformat.html - - QTextImageFormat - QTextImageFormat - () - - - height - height - () - - - isValid - isValid - () - - - name - name - () - - - setHeight - setHeight - ( qreal height ) - - - setName - setName - ( const QString & name ) - - - setWidth - setWidth - ( qreal width ) - - - width - width - () - - - - QTextInlineObject - qtextinlineobject.html - - QTextInlineObject - QTextInlineObject - ( int i, QTextEngine * e ) - - - ascent - ascent - () - - - descent - descent - () - - - format - format - () - - - formatIndex - formatIndex - () - - - height - height - () - - - isValid - isValid - () - - - rect - rect - () - - - setAscent - setAscent - ( qreal a ) - - - setDescent - setDescent - ( qreal d ) - - - setWidth - setWidth - ( qreal w ) - - - LayoutDirection - textDirection - QTextInlineObject::textDirection() - - - textPosition - textPosition - () - - - width - width - () - - - - QTextIStream - qtextistream.html - - QTextIStream - QTextIStream - ( const QString * string ) - - - QTextIStream - QTextIStream-2 - ( QByteArray * byteArray ) - - - QTextIStream - QTextIStream-3 - ( FILE * file ) - - - - QTextLayout::FormatRange - qtextlayout-formatrange.html - - - QTextLayout - qtextlayout.html - - CursorMode - CursorMode-enum - - - - QTextLayout - QTextLayout - () - - - QTextLayout - QTextLayout-2 - ( const QString & text ) - - - QTextLayout - QTextLayout-3 - ( const QString & text, const QFont & font, QPaintDevice * paintdevice = 0 ) - - - QTextLayout - QTextLayout-4 - ( const QTextBlock & block ) - - - additionalFormats - additionalFormats - () - - - beginLayout - beginLayout - () - - - boundingRect - boundingRect - () - - - cacheEnabled - cacheEnabled - () - - - clearAdditionalFormats - clearAdditionalFormats - () - - - createLine - createLine - () - - - draw - draw - ( QPainter * p, const QPointF & pos, const QVector<FormatRange> & selections = QVector<FormatRange>() - - - drawCursor - drawCursor - ( QPainter * painter, const QPointF & position, int cursorPosition ) - - - endLayout - endLayout - () - - - font - font - () - - - isValidCursorPosition - isValidCursorPosition - ( int pos ) - - - lineAt - lineAt - ( int i ) - - - lineCount - lineCount - () - - - lineForTextPosition - lineForTextPosition - ( int pos ) - - - maximumWidth - maximumWidth - () - - - minimumWidth - minimumWidth - () - - - nextCursorPosition - nextCursorPosition - ( int oldPos, CursorMode mode = SkipCharacters ) - - - position - position - () - - - preeditAreaPosition - preeditAreaPosition - () - - - preeditAreaText - preeditAreaText - () - - - previousCursorPosition - previousCursorPosition - ( int oldPos, CursorMode mode = SkipCharacters ) - - - setAdditionalFormats - setAdditionalFormats - ( const QList<FormatRange> & formatList ) - - - setCacheEnabled - setCacheEnabled - ( bool enable ) - - - setFont - setFont - ( const QFont & font ) - - - setPosition - setPosition - ( const QPointF & p ) - - - setPreeditArea - setPreeditArea - ( int position, const QString & text ) - - - setText - setText - ( const QString & string ) - - - setTextOption - setTextOption - ( const QTextOption & option ) - - - text - text - () - - - textOption - textOption - () - - - - QTextLength - qtextlength.html - - Type - Type-enum - - - - QTextLength - QTextLength - () - - - QTextLength - QTextLength-2 - ( Type type, qreal value ) - - - rawValue - rawValue - () - - - type - type - () - - - value - value - ( qreal maximumLength ) - - - operator - operator-QVariant - QVariant() - - - operator!= - operator-not-eq - ( const QTextLength & other ) - - - operator== - operator-eq-eq - ( const QTextLength & other ) - - - - QTextLine - qtextline.html - - CursorPosition - CursorPosition-enum - - - - Edge - Edge-enum - - - - QTextLine - QTextLine - () - - - ascent - ascent - () - - - cursorToX - cursorToX - ( int * cursorPos, Edge edge = Leading ) - - - cursorToX - cursorToX-2 - ( int cursorPos, Edge edge = Leading ) - - - descent - descent - () - - - draw - draw - ( QPainter * painter, const QPointF & position, const QTextLayout::FormatRange * selection = 0 ) - - - height - height - () - - - isValid - isValid - () - - - lineNumber - lineNumber - () - - - naturalTextRect - naturalTextRect - () - - - naturalTextWidth - naturalTextWidth - () - - - rect - rect - () - - - setLineWidth - setLineWidth - ( qreal width ) - - - setNumColumns - setNumColumns - ( int numColumns ) - - - setPosition - setPosition - ( const QPointF & pos ) - - - textLength - textLength - () - - - textStart - textStart - () - - - width - width - () - - - x - x - () - - - xToCursor - xToCursor - ( qreal x, CursorPosition cpos = CursorBetweenCharacters ) - - - y - y - () - - - - QTextList - qtextlist.html - - add - add - ( const QTextBlock & block ) - - - count - count - () - - - format - format - () - - - isEmpty - isEmpty - () - - - item - item - ( int i ) - - - itemNumber - itemNumber - ( const QTextBlock & block ) - - - itemText - itemText - ( const QTextBlock & block ) - - - remove - remove - ( const QTextBlock & block ) - - - removeItem - removeItem - ( int i ) - - - setFormat - setFormat - ( const QTextListFormat & format ) - - - - QTextListFormat - qtextlistformat.html - - Style - Style-enum - - - - QTextListFormat - QTextListFormat - () - - - indent - indent - () - - - isValid - isValid - () - - - setIndent - setIndent - ( qreal indentation ) - - - setStyle - setStyle - ( Style style ) - - - style - style - () - - - - QTextObject - qtextobject.html - - QTextObject - QTextObject - ( QTextDocument * document ) - - - document - document - () - - - format - format - () - - - formatIndex - formatIndex - () - - - objectIndex - objectIndex - () - - - setFormat - setFormat - ( const QTextFormat & format ) - - - - QTextOption - qtextoption.html - - WrapMode - WrapMode-enum - - - - QTextOption - QTextOption - () - - - QTextOption - QTextOption-2 - ( Qt::Alignment alignment ) - - - QTextOption - QTextOption-3 - ( const QTextOption & other ) - - - Alignment - alignment - QTextOption::alignment() - - - flags - flags - () - - - setAlignment - setAlignment - ( Qt::Alignment alignment ) - - - setFlags - setFlags - ( Flags flags ) - - - setTabArray - setTabArray - ( QList<qreal> tabStops ) - - - setTabStop - setTabStop - ( qreal tabStop ) - - - setTextDirection - setTextDirection - ( Qt::LayoutDirection direction ) - - - setUseDesignMetrics - setUseDesignMetrics - ( bool enable ) - - - setWrapMode - setWrapMode - ( WrapMode mode ) - - - tabArray - tabArray - () - - - tabStop - tabStop - () - - - LayoutDirection - textDirection - QTextOption::textDirection() - - - useDesignMetrics - useDesignMetrics - () - - - wrapMode - wrapMode - () - - - operator= - operator-eq - ( const QTextOption & other ) - - - - QTextOStream - qtextostream.html - - QTextOStream - QTextOStream - ( QString * string ) - - - QTextOStream - QTextOStream-2 - ( QByteArray * byteArray ) - - - QTextOStream - QTextOStream-3 - ( FILE * file ) - - - Encoding - Encoding-enum - - - - fill - fill - ( int f ) - - - flags - flags - () - - - flags - flags-2 - ( int f ) - - - precision - precision - ( int p ) - - - read - read - () - - - setEncoding - setEncoding - ( Encoding encoding ) - - - setf - setf - ( int bits ) - - - setf - setf-2 - ( int bits, int mask ) - - - unsetDevice - unsetDevice - () - - - unsetf - unsetf - ( int bits ) - - - width - width - ( int w ) - - - - QTextStream - qtextstream.html - - FieldAlignment - FieldAlignment-enum - - - - RealNumberNotation - RealNumberNotation-enum - - - - QTextStream - QTextStream - () - - - QTextStream - QTextStream-2 - ( QIODevice * device ) - - - QTextStream - QTextStream-3 - ( FILE * fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite ) - - - QTextStream - QTextStream-4 - ( QString * string, QIODevice::OpenMode openMode = QIODevice::ReadWrite ) - - - QTextStream - QTextStream-5 - ( QByteArray * array, QIODevice::OpenMode openMode = QIODevice::ReadWrite ) - - - QTextStream - QTextStream-6 - ( const QByteArray & array, QIODevice::OpenMode openMode = QIODevice::ReadOnly ) - - - atEnd - atEnd - () - - - autoDetectUnicode - autoDetectUnicode - () - - - codec - codec - () - - - device - device - () - - - fieldAlignment - fieldAlignment - () - - - fieldWidth - fieldWidth - () - - - flush - flush - () - - - generateByteOrderMark - generateByteOrderMark - () - - - integerBase - integerBase - () - - - numberFlags - numberFlags - () - - - padChar - padChar - () - - - readAll - readAll - () - - - readLine - readLine - ( qint64 maxlen = 0 ) - - - realNumberNotation - realNumberNotation - () - - - realNumberPrecision - realNumberPrecision - () - - - reset - reset - () - - - seek - seek - ( qint64 pos ) - - - setAutoDetectUnicode - setAutoDetectUnicode - ( bool enabled ) - - - setCodec - setCodec - ( QTextCodec * codec ) - - - setCodec - setCodec-2 - ( const char * codecName ) - - - setDevice - setDevice - ( QIODevice * device ) - - - setFieldAlignment - setFieldAlignment - ( FieldAlignment mode ) - - - setFieldWidth - setFieldWidth - ( int width ) - - - setGenerateByteOrderMark - setGenerateByteOrderMark - ( bool generate ) - - - setIntegerBase - setIntegerBase - ( int base ) - - - setNumberFlags - setNumberFlags - ( NumberFlags flags ) - - - setPadChar - setPadChar - ( QChar ch ) - - - setRealNumberNotation - setRealNumberNotation - ( RealNumberNotation notation ) - - - setRealNumberPrecision - setRealNumberPrecision - ( int precision ) - - - setString - setString - ( QString * string, QIODevice::OpenMode openMode = QIODevice::ReadWrite ) - - - skipWhiteSpace - skipWhiteSpace - () - - - string - string - () - - - operator<< - operator-lt-lt - ( QChar c ) - - - operator<< - operator-lt-lt-2 - ( signed short i ) - - - operator<< - operator-lt-lt-3 - ( float f ) - - - operator<< - operator-lt-lt-4 - ( const QString & string ) - - - operator<< - operator-lt-lt-5 - ( char c ) - - - operator<< - operator-lt-lt-6 - ( unsigned short i ) - - - operator<< - operator-lt-lt-7 - ( signed int i ) - - - operator<< - operator-lt-lt-8 - ( unsigned int i ) - - - operator<< - operator-lt-lt-9 - ( signed long i ) - - - operator<< - operator-lt-lt-10 - ( unsigned long i ) - - - operator<< - operator-lt-lt-11 - ( qlonglong i ) - - - operator<< - operator-lt-lt-12 - ( qulonglong i ) - - - operator<< - operator-lt-lt-13 - ( double f ) - - - operator<< - operator-lt-lt-14 - ( const QByteArray & array ) - - - operator<< - operator-lt-lt-15 - ( const char * string ) - - - operator<< - operator-lt-lt-16 - ( const void * ptr ) - - - operator>> - operator-gt-gt - ( QChar & c ) - - - operator>> - operator-gt-gt-2 - ( signed short & i ) - - - operator>> - operator-gt-gt-3 - ( float & f ) - - - operator>> - operator-gt-gt-4 - ( QString & str ) - - - operator>> - operator-gt-gt-5 - ( char & c ) - - - operator>> - operator-gt-gt-6 - ( unsigned short & i ) - - - operator>> - operator-gt-gt-7 - ( signed int & i ) - - - operator>> - operator-gt-gt-8 - ( unsigned int & i ) - - - operator>> - operator-gt-gt-9 - ( signed long & i ) - - - operator>> - operator-gt-gt-10 - ( unsigned long & i ) - - - operator>> - operator-gt-gt-11 - ( qlonglong & i ) - - - operator>> - operator-gt-gt-12 - ( qulonglong & i ) - - - operator>> - operator-gt-gt-13 - ( double & f ) - - - operator>> - operator-gt-gt-14 - ( QByteArray & array ) - - - operator>> - operator-gt-gt-15 - ( char * c ) - - - - QTextTable - qtexttable.html - - cellAt - cellAt - ( int row, int column ) - - - cellAt - cellAt-2 - ( int position ) - - - cellAt - cellAt-3 - ( const QTextCursor & cursor ) - - - columns - columns - () - - - format - format - () - - - insertColumns - insertColumns - ( int index, int columns ) - - - insertRows - insertRows - ( int index, int rows ) - - - removeColumns - removeColumns - ( int index, int columns ) - - - removeRows - removeRows - ( int index, int rows ) - - - resize - resize - ( int rows, int columns ) - - - rowEnd - rowEnd - ( const QTextCursor & cursor ) - - - rowStart - rowStart - ( const QTextCursor & cursor ) - - - rows - rows - () - - - setFormat - setFormat - ( const QTextTableFormat & format ) - - - - QTextTableCell - qtexttablecell.html - - QTextTableCell - QTextTableCell - () - - - QTextTableCell - QTextTableCell-2 - ( const QTextTableCell & other ) - - - iterator - begin - QTextTableCell::begin() - - - column - column - () - - - columnSpan - columnSpan - () - - - iterator - end - QTextTableCell::end() - - - firstCursorPosition - firstCursorPosition - () - - - format - format - () - - - isValid - isValid - () - - - lastCursorPosition - lastCursorPosition - () - - - row - row - () - - - rowSpan - rowSpan - () - - - operator!= - operator-not-eq - ( const QTextTableCell & other ) - - - operator= - operator-eq - ( const QTextTableCell & other ) - - - operator== - operator-eq-eq - ( const QTextTableCell & other ) - - - - QTextTableFormat - qtexttableformat.html - - QTextTableFormat - QTextTableFormat - () - - - Alignment - alignment - QTextTableFormat::alignment() - - - cellPadding - cellPadding - () - - - cellSpacing - cellSpacing - () - - - clearColumnWidthConstraints - clearColumnWidthConstraints - () - - - columnWidthConstraints - columnWidthConstraints - () - - - columns - columns - () - - - isValid - isValid - () - - - setAlignment - setAlignment - ( Qt::Alignment alignment ) - - - setCellPadding - setCellPadding - ( qreal padding ) - - - setCellSpacing - setCellSpacing - ( qreal spacing ) - - - setColumnWidthConstraints - setColumnWidthConstraints - ( const QVector<QTextLength> & constraints ) - - - setColumns - setColumns - ( int columns ) - - - finished - finished-2 - () - - - running - running - () - - - - QThread - qthread.html - - Priority - Priority-enum - - - - QThread - QThread - ( QObject * parent = 0 ) - - - currentThread - currentThread - () - - - HANDLE - currentThreadId - QThread::currentThreadId() - - - exec - exec - () - - - exit - exit - ( int returnCode = 0 ) - - - finished - finished - () - - - isFinished - isFinished - () - - - isRunning - isRunning - () - - - msleep - msleep - ( unsigned long msecs ) - - - quit - quit - () - - - run - run - () - - - setStackSize - setStackSize - ( uint stackSize ) - - - setTerminationEnabled - setTerminationEnabled - ( bool enabled = true ) - - - sleep - sleep - ( unsigned long secs ) - - - stackSize - stackSize - () - - - start - start - ( Priority priority = InheritPriority ) - - - started - started - () - - - terminate - terminate - () - - - terminated - terminated - () - - - usleep - usleep - ( unsigned long usecs ) - - - wait - wait - ( unsigned long time = ULONG_MAX ) - - - - QThreadStorage - qthreadstorage.html - - QThreadStorage - QThreadStorage - () - - - hasLocalData - hasLocalData - () - - - localData - localData - () - - - localData - localData-2 - () - - - setLocalData - setLocalData - ( T data ) - - - currentDate - currentDate - ( Qt::TimeSpec spec ) - - - currentTime - currentTime - ( Qt::TimeSpec spec ) - - - - QTime - qtime.html - - QTime - QTime - () - - - QTime - QTime-2 - ( int h, int m, int s = 0, int ms = 0 ) - - - addMSecs - addMSecs - ( int ms ) - - - addSecs - addSecs - ( int nsecs ) - - - currentTime - currentTime-2 - () - - - elapsed - elapsed - () - - - fromString - fromString - ( const QString & string, Qt::DateFormat format = Qt::TextDate ) - - - fromString - fromString-2 - ( const QString & string, const QString & format ) - - - hour - hour - () - - - isNull - isNull - () - - - isValid - isValid - () - - - isValid - isValid-2 - ( int h, int m, int s, int ms = 0 ) - - - minute - minute - () - - - msec - msec - () - - - msecsTo - msecsTo - ( const QTime & t ) - - - restart - restart - () - - - second - second - () - - - secsTo - secsTo - ( const QTime & t ) - - - setHMS - setHMS - ( int h, int m, int s, int ms = 0 ) - - - start - start - () - - - toString - toString - ( const QString & format ) - - - toString - toString-2 - ( Qt::DateFormat f = Qt::TextDate ) - - - operator!= - operator-not-eq - ( const QTime & t ) - - - operator< - operator-lt - ( const QTime & t ) - - - operator<= - operator-lt-eq - ( const QTime & t ) - - - operator== - operator-eq-eq - ( const QTime & t ) - - - operator> - operator-gt - ( const QTime & t ) - - - operator>= - operator-gt-eq - ( const QTime & t ) - - - - QTimeEdit - qtimeedit.html - - QTimeEdit - QTimeEdit - ( QWidget * parent = 0 ) - - - QTimeEdit - QTimeEdit-2 - ( const QTime & t, QWidget * parent = 0 ) - - - QTimer - QTimer-2 - ( QObject * parent, const char * name ) - - - changeInterval - changeInterval - ( int msec ) - - - start - start-3 - ( int msec, bool sshot ) - - - - QTimer - qtimer.html - - QTimer - QTimer - ( QObject * parent = 0 ) - - - isActive - isActive - () - - - singleShot - singleShot - ( int msec, QObject * receiver, const char * member ) - - - start - start - ( int msec ) - - - start - start-2 - () - - - stop - stop - () - - - timeout - timeout - () - - - timerId - timerId - () - - - - QTimerEvent - qtimerevent.html - - QTimerEvent - QTimerEvent - ( int timerId ) - - - timerId - timerId - () - - - QToolBar - QToolBar-3 - ( QWidget * parent, const char * name ) - - - label - label - () - - - setLabel - setLabel - ( const QString & label ) - - - - QToolBar - qtoolbar.html - - QToolBar - QToolBar - ( const QString & title, QWidget * parent = 0 ) - - - QToolBar - QToolBar-2 - ( QWidget * parent = 0 ) - - - actionAt - actionAt - ( const QPoint & p ) - - - actionAt - actionAt-2 - ( int x, int y ) - - - actionTriggered - actionTriggered - ( QAction * action ) - - - addAction - addAction - ( const QString & text ) - - - addAction - addAction-2 - ( const QIcon & icon, const QString & text ) - - - addAction - addAction-3 - ( const QString & text, const QObject * receiver, const char * member ) - - - addAction - addAction-4 - ( const QIcon & icon, const QString & text, const QObject * receiver, const char * member ) - - - addSeparator - addSeparator - () - - - addWidget - addWidget - ( QWidget * widget ) - - - ToolBarAreas - allowedAreas - QToolBar::allowedAreas() - - - allowedAreasChanged - allowedAreasChanged - ( Qt::ToolBarAreas allowedAreas ) - - - clear - clear - () - - - iconSize - iconSize - () - - - iconSizeChanged - iconSizeChanged - ( const QSize & iconSize ) - - - insertSeparator - insertSeparator - ( QAction * before ) - - - insertWidget - insertWidget - ( QAction * before, QWidget * widget ) - - - isAreaAllowed - isAreaAllowed - ( Qt::ToolBarArea area ) - - - movableChanged - movableChanged - ( bool movable ) - - - Orientation - orientation - QToolBar::orientation() - - - orientationChanged - orientationChanged - ( Qt::Orientation orientation ) - - - setAllowedAreas - setAllowedAreas - ( Qt::ToolBarAreas areas ) - - - setIconSize - setIconSize - ( const QSize & iconSize ) - - - setOrientation - setOrientation - ( Qt::Orientation orientation ) - - - setToolButtonStyle - setToolButtonStyle - ( Qt::ToolButtonStyle toolButtonStyle ) - - - toggleViewAction - toggleViewAction - () - - - ToolButtonStyle - toolButtonStyle - QToolBar::toolButtonStyle() - - - toolButtonStyleChanged - toolButtonStyleChanged - ( Qt::ToolButtonStyle toolButtonStyle ) - - - - QToolBarChangeEvent - qtoolbarchangeevent.html - - toggle - toggle - () - - - QToolBox - QToolBox-2 - ( QWidget * parent, const char * name, Qt::WFlags f = 0 ) - - - currentItem - currentItem - () - - - item - item - ( int index ) - - - itemIconSet - itemIconSet - ( int index ) - - - itemLabel - itemLabel - ( int index ) - - - removeItem - removeItem-2 - ( QWidget * widget ) - - - setCurrentItem - setCurrentItem - ( QWidget * widget ) - - - setItemIconSet - setItemIconSet - ( int index, const QIcon & icon ) - - - setItemLabel - setItemLabel - ( int index, const QString & text ) - - - - QToolBox - qtoolbox.html - - QToolBox - QToolBox - ( QWidget * parent = 0, Qt::WFlags f = 0 ) - - - addItem - addItem - ( QWidget * widget, const QIcon & iconSet, const QString & text ) - - - addItem - addItem-2 - ( QWidget * w, const QString & text ) - - - currentChanged - currentChanged - ( int index ) - - - currentWidget - currentWidget - () - - - indexOf - indexOf - ( QWidget * widget ) - - - insertItem - insertItem - ( int index, QWidget * widget, const QIcon & icon, const QString & text ) - - - insertItem - insertItem-2 - ( int index, QWidget * widget, const QString & text ) - - - isItemEnabled - isItemEnabled - ( int index ) - - - itemIcon - itemIcon - ( int index ) - - - itemInserted - itemInserted - ( int index ) - - - itemRemoved - itemRemoved - ( int index ) - - - itemText - itemText - ( int index ) - - - itemToolTip - itemToolTip - ( int index ) - - - removeItem - removeItem - ( int index ) - - - setCurrentWidget - setCurrentWidget - ( QWidget * widget ) - - - setItemEnabled - setItemEnabled - ( int index, bool enabled ) - - - setItemIcon - setItemIcon - ( int index, const QIcon & icon ) - - - setItemText - setItemText - ( int index, const QString & text ) - - - setItemToolTip - setItemToolTip - ( int index, const QString & toolTip ) - - - widget - widget - ( int index ) - - - TextPosition - TextPosition-enum - - - - QToolButton - QToolButton-3 - ( QWidget * parent, const char * name ) - - - QToolButton - QToolButton-4 - ( Qt::ArrowType type, QWidget * parent, const char * name ) - - - QToolButton - QToolButton-5 - ( const QIcon & iconSet, const QString & textLabel, const QString & statusTip, QObject * receiver, const char * slot, QWidget * parent, const char * name = 0 ) - - - iconSet - iconSet - () - - - iconSet - iconSet-2 - ( bool on ) - - - offIconSet - offIconSet - () - - - onIconSet - onIconSet - () - - - openPopup - openPopup - () - - - popup - popup - () - - - popupDelay - popupDelay - () - - - setIconSet - setIconSet - ( const QIcon & icon ) - - - setIconSet - setIconSet-2 - ( const QIcon & set, bool on ) - - - setOffIconSet - setOffIconSet - ( const QIcon & set ) - - - setOnIconSet - setOnIconSet - ( const QIcon & set ) - - - setPixmap - setPixmap - ( const QPixmap & pixmap ) - - - setPopup - setPopup - ( QMenu * popup ) - - - setPopupDelay - setPopupDelay - ( int delay ) - - - setTextLabel - setTextLabel - ( const QString & text, bool tooltip = true ) - - - setTextPosition - setTextPosition - ( TextPosition pos ) - - - setUsesBigPixmap - setUsesBigPixmap - ( bool enable ) - - - setUsesTextLabel - setUsesTextLabel - ( bool enable ) - - - textLabel - textLabel - () - - - textPosition - textPosition - () - - - usesBigPixmap - usesBigPixmap - () - - - usesTextLabel - usesTextLabel - () - - - - QToolButton - qtoolbutton.html - - ToolButtonPopupMode - ToolButtonPopupMode-enum - - - - ArrowType - arrowType - - - - ToolButtonStyle - toolButtonStyle - - - - QToolButton - QToolButton - ( QWidget * parent = 0 ) - - - defaultAction - defaultAction - () - - - menu - menu - () - - - paintEvent - paintEvent - ( QPaintEvent * event ) - - - setDefaultAction - setDefaultAction - ( QAction * action ) - - - setMenu - setMenu - ( QMenu * menu ) - - - showMenu - showMenu - () - - - triggered - triggered - ( QAction * action ) - - - add - add - ( QWidget * widget, const QString & text ) - - - add - add-2 - ( QWidget * widget, const QRect & rect, const QString & text ) - - - remove - remove - ( QWidget * widget ) - - - - QToolTip - qtooltip.html - - palette - palette - () - - - showText - showText - ( const QPoint & pos, const QString & text, QWidget * w = 0 ) - - - insert - insert-2 - ( const char * context, const char * sourceText, const QString & translation ) - - - remove - remove-2 - ( const char * context, const char * sourceText ) - - - QTranslator - QTranslator-2 - ( QObject * parent, const char * name ) - - - find - find - ( const char * context, const char * sourceText, const char * comment = 0 ) - - - - QTranslator - qtranslator.html - - SaveMode - SaveMode-enum - - - - QTranslator - QTranslator - ( QObject * parent = 0 ) - - - clear - clear - () - - - contains - contains - ( const char * context, const char * sourceText, const char * comment = 0 ) - - - findMessage - findMessage - ( const char * context, const char * sourceText, const char * comment = 0 ) - - - insert - insert - ( const QTranslatorMessage & message ) - - - isEmpty - isEmpty - () - - - load - load - ( const QString & filename, const QString & directory = QString() - - - load - load-2 - ( const uchar * data, int len ) - - - messages - messages - () - - - remove - remove - ( const QTranslatorMessage & message ) - - - save - save - ( const QString & filename, SaveMode mode = Everything ) - - - squeeze - squeeze - ( SaveMode mode = Everything ) - - - unsqueeze - unsqueeze - () - - - - QTranslatorMessage - qtranslatormessage.html - - Prefix - Prefix-enum - - - - QTranslatorMessage - QTranslatorMessage - () - - - QTranslatorMessage - QTranslatorMessage-2 - ( const char * context, const char * sourceText, const char * comment, const QString & translation = QString() - - - QTranslatorMessage - QTranslatorMessage-3 - ( QDataStream & stream ) - - - QTranslatorMessage - QTranslatorMessage-4 - ( const QTranslatorMessage & m ) - - - comment - comment - () - - - commonPrefix - commonPrefix - ( const QTranslatorMessage & m ) - - - context - context - () - - - hash - hash - () - - - setTranslation - setTranslation - ( const QString & translation ) - - - sourceText - sourceText - () - - - translation - translation - () - - - write - write - ( QDataStream & stream, bool strip = false, Prefix prefix = HashContextSourceTextComment ) - - - operator!= - operator-not-eq - ( const QTranslatorMessage & m ) - - - operator< - operator-lt - ( const QTranslatorMessage & m ) - - - operator<= - operator-lt-eq - ( const QTranslatorMessage & m ) - - - operator= - operator-eq - ( const QTranslatorMessage & m ) - - - operator== - operator-eq-eq - ( const QTranslatorMessage & m ) - - - operator> - operator-gt - ( const QTranslatorMessage & m ) - - - operator>= - operator-gt-eq - ( const QTranslatorMessage & m ) - - - - QTreeView - qtreeview.html - - QTreeView - QTreeView - ( QWidget * parent = 0 ) - - - collapse - collapse - ( const QModelIndex & index ) - - - collapsed - collapsed - ( const QModelIndex & index ) - - - columnAt - columnAt - ( int x ) - - - columnCountChanged - columnCountChanged - ( int oldCount, int newCount ) - - - columnMoved - columnMoved - () - - - columnResized - columnResized - ( int column, int oldSize, int newSize ) - - - columnViewportPosition - columnViewportPosition - ( int column ) - - - columnWidth - columnWidth - ( int column ) - - - doItemsLayout - doItemsLayout - () - - - drawBranches - drawBranches - ( QPainter * painter, const QRect & rect, const QModelIndex & index ) - - - drawRow - drawRow - ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) - - - expand - expand - ( const QModelIndex & index ) - - - expanded - expanded - ( const QModelIndex & index ) - - - header - header - () - - - hideColumn - hideColumn - ( int column ) - - - horizontalOffset - horizontalOffset - () - - - indexAbove - indexAbove - ( const QModelIndex & index ) - - - indexBelow - indexBelow - ( const QModelIndex & index ) - - - indexRowSizeHint - indexRowSizeHint - ( const QModelIndex & index ) - - - isColumnHidden - isColumnHidden - ( int column ) - - - isExpanded - isExpanded - ( const QModelIndex & index ) - - - isRowHidden - isRowHidden - ( int row, const QModelIndex & parent ) - - - moveCursor - moveCursor - ( CursorAction cursorAction, Qt::KeyboardModifiers modifiers ) - - - resizeColumnToContents - resizeColumnToContents - ( int column ) - - - rowsAboutToBeRemoved - rowsAboutToBeRemoved - ( const QModelIndex & parent, int start, int end ) - - - rowsInserted - rowsInserted - ( const QModelIndex & parent, int start, int end ) - - - scrollContentsBy - scrollContentsBy - ( int dx, int dy ) - - - scrollTo - scrollTo - ( const QModelIndex & index, ScrollHint hint = EnsureVisible ) - - - selectAll - selectAll - () - - - setColumnHidden - setColumnHidden - ( int column, bool hide ) - - - setExpanded - setExpanded - ( const QModelIndex & index, bool expanded ) - - - setHeader - setHeader - ( QHeaderView * header ) - - - setRowHidden - setRowHidden - ( int row, const QModelIndex & parent, bool hide ) - - - setSelection - setSelection - ( const QRect & rect, QItemSelectionModel::SelectionFlags command ) - - - showColumn - showColumn - ( int column ) - - - sizeHintForColumn - sizeHintForColumn - ( int column ) - - - sortByColumn - sortByColumn - ( int column ) - - - verticalOffset - verticalOffset - () - - - visualRect - visualRect - ( const QModelIndex & index ) - - - visualRegionForSelection - visualRegionForSelection - ( const QItemSelection & selection ) - - - - QTreeWidget - qtreewidget.html - - QTreeWidget - QTreeWidget - ( QWidget * parent = 0 ) - - - addTopLevelItem - addTopLevelItem - ( QTreeWidgetItem * item ) - - - clear - clear - () - - - closePersistentEditor - closePersistentEditor - ( QTreeWidgetItem * item, int column = 0 ) - - - collapseItem - collapseItem - ( const QTreeWidgetItem * item ) - - - currentItem - currentItem - () - - - currentItemChanged - currentItemChanged - ( QTreeWidgetItem * current, QTreeWidgetItem * previous ) - - - dropMimeData - dropMimeData - ( QTreeWidgetItem * parent, int index, const QMimeData * data, Qt::DropAction action ) - - - editItem - editItem - ( QTreeWidgetItem * item, int column = 0 ) - - - expandItem - expandItem - ( const QTreeWidgetItem * item ) - - - findItems - findItems - ( const QRegExp & rx ) - - - headerItem - headerItem - () - - - indexFromItem - indexFromItem - ( QTreeWidgetItem * item, int column = 0 ) - - - indexOfTopLevelItem - indexOfTopLevelItem - ( QTreeWidgetItem * item ) - - - insertTopLevelItem - insertTopLevelItem - ( int index, QTreeWidgetItem * item ) - - - isItemExpanded - isItemExpanded - ( const QTreeWidgetItem * item ) - - - isItemHidden - isItemHidden - ( const QTreeWidgetItem * item ) - - - isItemSelected - isItemSelected - ( const QTreeWidgetItem * item ) - - - itemActivated - itemActivated - ( QTreeWidgetItem * item, int column ) - - - itemAt - itemAt - ( const QPoint & p ) - - - itemAt - itemAt-2 - ( int x, int y ) - - - itemChanged - itemChanged - ( QTreeWidgetItem * item, int column ) - - - itemClicked - itemClicked - ( QTreeWidgetItem * item, int column ) - - - itemCollapsed - itemCollapsed - ( QTreeWidgetItem * item ) - - - itemDoubleClicked - itemDoubleClicked - ( QTreeWidgetItem * item, int column ) - - - itemEntered - itemEntered - ( QTreeWidgetItem * item, int column ) - - - itemExpanded - itemExpanded - ( QTreeWidgetItem * item ) - - - itemFromIndex - itemFromIndex - ( const QModelIndex & index ) - - - itemPressed - itemPressed - ( QTreeWidgetItem * item, int column ) - - - itemSelectionChanged - itemSelectionChanged - () - - - items - items - ( const QMimeData * data ) - - - mimeData - mimeData - ( const QList<QTreeWidgetItem *> items ) - - - mimeTypes - mimeTypes - () - - - openPersistentEditor - openPersistentEditor - ( QTreeWidgetItem * item, int column = 0 ) - - - scrollToItem - scrollToItem - ( const QTreeWidgetItem * item, ScrollHint hint = EnsureVisible ) - - - selectedItems - selectedItems - () - - - setCurrentItem - setCurrentItem - ( QTreeWidgetItem * item ) - - - setHeaderItem - setHeaderItem - ( QTreeWidgetItem * item ) - - - setHeaderLabels - setHeaderLabels - ( const QStringList & labels ) - - - setItemExpanded - setItemExpanded - ( const QTreeWidgetItem * item, bool expand ) - - - setItemHidden - setItemHidden - ( const QTreeWidgetItem * item, bool hide ) - - - setItemSelected - setItemSelected - ( const QTreeWidgetItem * item, bool select ) - - - sortItems - sortItems - ( int column, Qt::SortOrder order ) - - - DropActions - supportedDropActions - QTreeWidget::supportedDropActions() - - - takeTopLevelItem - takeTopLevelItem - ( int index ) - - - topLevelItem - topLevelItem - ( int index ) - - - visualItemRect - visualItemRect - ( const QTreeWidgetItem * item ) - - - - QTreeWidgetItem - qtreewidgetitem.html - - QTreeWidgetItem - QTreeWidgetItem - ( QTreeWidget * parent, int type = Type ) - - - QTreeWidgetItem - QTreeWidgetItem-2 - ( QTreeWidget * parent, QTreeWidgetItem * preceding, int type = Type ) - - - QTreeWidgetItem - QTreeWidgetItem-3 - ( QTreeWidgetItem * parent, int type = Type ) - - - QTreeWidgetItem - QTreeWidgetItem-4 - ( QTreeWidgetItem * parent, QTreeWidgetItem * preceding, int type = Type ) - - - addChild - addChild - ( QTreeWidgetItem * child ) - - - backgroundColor - backgroundColor - ( int column ) - - - CheckState - checkState - QTreeWidgetItem::checkState( int column ) - - - child - child - ( int index ) - - - childCount - childCount - () - - - clone - clone - () - - - columnCount - columnCount - () - - - data - data - ( int column, int role ) - - - ItemFlags - flags - QTreeWidgetItem::flags() - - - font - font - ( int column ) - - - icon - icon - ( int column ) - - - indexOfChild - indexOfChild - ( QTreeWidgetItem * child ) - - - insertChild - insertChild - ( int index, QTreeWidgetItem * child ) - - - parent - parent - () - - - read - read - ( QDataStream & in ) - - - setBackgroundColor - setBackgroundColor - ( int column, const QColor & color ) - - - setCheckState - setCheckState - ( int column, Qt::CheckState state ) - - - setData - setData - ( int column, int role, const QVariant & value ) - - - setFlags - setFlags - ( Qt::ItemFlags flags ) - - - setFont - setFont - ( int column, const QFont & font ) - - - setIcon - setIcon - ( int column, const QIcon & icon ) - - - setStatusTip - setStatusTip - ( int column, const QString & statusTip ) - - - setText - setText - ( int column, const QString & text ) - - - setTextAlignment - setTextAlignment - ( int column, int alignment ) - - - setTextColor - setTextColor - ( int column, const QColor & color ) - - - setToolTip - setToolTip - ( int column, const QString & toolTip ) - - - setWhatsThis - setWhatsThis - ( int column, const QString & whatsThis ) - - - statusTip - statusTip - ( int column ) - - - takeChild - takeChild - ( int index ) - - - text - text - ( int column ) - - - textAlignment - textAlignment - ( int column ) - - - textColor - textColor - ( int column ) - - - toolTip - toolTip - ( int column ) - - - treeWidget - treeWidget - () - - - type - type - () - - - whatsThis - whatsThis - ( int column ) - - - write - write - ( QDataStream & out ) - - - operator< - operator-lt - ( const QTreeWidgetItem & other ) - - - - QTsciiCodec - qtsciicodec.html - - convertFromUnicode - convertFromUnicode - ( const QChar * uc, int len, ConverterState * state ) - - - convertToUnicode - convertToUnicode - ( const char * chars, int len, ConverterState * state ) - - - mibEnum - mibEnum - () - - - name - name - () - - - - QUdpSocket - qudpsocket.html - - QUdpSocket - QUdpSocket - ( QObject * parent = 0 ) - - - bind - bind - ( const QHostAddress & address, quint16 port ) - - - bind - bind-2 - ( quint16 port = 0 ) - - - hasPendingDatagrams - hasPendingDatagrams - () - - - pendingDatagramSize - pendingDatagramSize - () - - - readDatagram - readDatagram - ( char * data, qint64 maxSize, QHostAddress * address = 0, quint16 * port = 0 ) - - - writeDatagram - writeDatagram - ( const char * data, qint64 size, const QHostAddress & address, quint16 port ) - - - writeDatagram - writeDatagram-2 - ( const QByteArray & datagram, const QHostAddress & host, quint16 port ) - - - addPath - addPath - ( const QString & p ) - - - cdUp - cdUp - () - - - decode - decode - ( QString & url ) - - - dirPath - dirPath - () - - - encode - encode - ( QString & url ) - - - fileName - fileName - () - - - hasHost - hasHost - () - - - hasPassword - hasPassword - () - - - hasPath - hasPath - () - - - hasPort - hasPort - () - - - hasRef - hasRef - () - - - hasUser - hasUser - () - - - isRelativeUrl - isRelativeUrl - ( const QString & url ) - - - protocol - protocol - () - - - query - query - () - - - ref - ref - () - - - reset - reset - () - - - setFileName - setFileName - ( const QString & txt ) - - - setProtocol - setProtocol - ( const QString & s ) - - - setQuery - setQuery - ( const QString & txt ) - - - setRef - setRef - ( const QString & txt ) - - - setUser - setUser - ( const QString & s ) - - - user - user - () - - - operator - operator-QString - QString() - - - - QUrl - qurl.html - - QUrl - QUrl - () - - - QUrl - QUrl-2 - ( const QString & url ) - - - QUrl - QUrl-3 - ( const QUrl & other ) - - - addQueryItem - addQueryItem - ( const QString & key, const QString & value ) - - - allQueryItemValues - allQueryItemValues - ( const QString & key ) - - - authority - authority - () - - - clear - clear - () - - - encodedQuery - encodedQuery - () - - - fragment - fragment - () - - - fromEncoded - fromEncoded - ( const QByteArray & input ) - - - fromLocalFile - fromLocalFile - ( const QString & localFile ) - - - fromPercentEncoding - fromPercentEncoding - ( const QByteArray & input ) - - - fromPunycode - fromPunycode - ( const QByteArray & pc ) - - - hasQueryItem - hasQueryItem - ( const QString & key ) - - - host - host - () - - - isEmpty - isEmpty - () - - - isParentOf - isParentOf - ( const QUrl & childUrl ) - - - isRelative - isRelative - () - - - isValid - isValid - () - - - password - password - () - - - path - path - () - - - port - port - () - - - queryItemValue - queryItemValue - ( const QString & key ) - - - queryItems - queryItems - () - - - queryPairDelimiter - queryPairDelimiter - () - - - queryValueDelimiter - queryValueDelimiter - () - - - removeAllQueryItems - removeAllQueryItems - ( const QString & key ) - - - removeQueryItem - removeQueryItem - ( const QString & key ) - - - resolved - resolved - ( const QUrl & relative ) - - - scheme - scheme - () - - - setAuthority - setAuthority - ( const QString & authority ) - - - setEncodedUrl - setEncodedUrl - ( const QByteArray & encodedUrl ) - - - setFragment - setFragment - ( const QString & fragment ) - - - setHost - setHost - ( const QString & host ) - - - setPassword - setPassword - ( const QString & password ) - - - setPath - setPath - ( const QString & path ) - - - setPort - setPort - ( int port ) - - - setQueryDelimiters - setQueryDelimiters - ( char valueDelimiter, char pairDelimiter ) - - - setQueryItems - setQueryItems - ( const QList<QPair<QString, QString> > & query ) - - - setScheme - setScheme - ( const QString & scheme ) - - - setUrl - setUrl - ( const QString & url ) - - - setUserInfo - setUserInfo - ( const QString & userInfo ) - - - setUserName - setUserName - ( const QString & userName ) - - - toEncoded - toEncoded - ( FormattingOptions options = None ) - - - toLocalFile - toLocalFile - () - - - toPercentEncoding - toPercentEncoding - ( const QString & input, const QByteArray & exclude = QByteArray() - - - toPunycode - toPunycode - ( const QString & uc ) - - - toString - toString - ( FormattingOptions options = None ) - - - userInfo - userInfo - () - - - userName - userName - () - - - operator!= - operator-not-eq - ( const QUrl & url ) - - - operator= - operator-eq - ( const QUrl & url ) - - - operator== - operator-eq-eq - ( const QUrl & url ) - - - - QUrlInfo - qurlinfo.html - - PermissionSpec - PermissionSpec-enum - - - - QUrlInfo - QUrlInfo - () - - - QUrlInfo - QUrlInfo-2 - ( const QUrlInfo & ui ) - - - QUrlInfo - QUrlInfo-3 - ( const QString & name, int permissions, const QString & owner, const QString & group, qint64 size, const QDateTime & lastModified, const QDateTime & lastRead, bool isDir, bool isFile, bool isSymLink, bool isWritable, bool isReadable, bool isExecutable ) - - - QUrlInfo - QUrlInfo-4 - ( const QUrl & url, int permissions, const QString & owner, const QString & group, qint64 size, const QDateTime & lastModified, const QDateTime & lastRead, bool isDir, bool isFile, bool isSymLink, bool isWritable, bool isReadable, bool isExecutable ) - - - equal - equal - ( const QUrlInfo & i1, const QUrlInfo & i2, int sortBy ) - - - greaterThan - greaterThan - ( const QUrlInfo & i1, const QUrlInfo & i2, int sortBy ) - - - group - group - () - - - isDir - isDir - () - - - isExecutable - isExecutable - () - - - isFile - isFile - () - - - isReadable - isReadable - () - - - isSymLink - isSymLink - () - - - isValid - isValid - () - - - isWritable - isWritable - () - - - lastModified - lastModified - () - - - lastRead - lastRead - () - - - lessThan - lessThan - ( const QUrlInfo & i1, const QUrlInfo & i2, int sortBy ) - - - name - name - () - - - owner - owner - () - - - permissions - permissions - () - - - setDir - setDir - ( bool b ) - - - setFile - setFile - ( bool b ) - - - setGroup - setGroup - ( const QString & s ) - - - setLastModified - setLastModified - ( const QDateTime & dt ) - - - setName - setName - ( const QString & name ) - - - setOwner - setOwner - ( const QString & s ) - - - setPermissions - setPermissions - ( int p ) - - - setReadable - setReadable - ( bool b ) - - - setSize - setSize - ( qint64 size ) - - - setSymLink - setSymLink - ( bool b ) - - - setWritable - setWritable - ( bool b ) - - - size - size - () - - - operator= - operator-eq - ( const QUrlInfo & ui ) - - - operator== - operator-eq-eq - ( const QUrlInfo & i ) - - - - QUuid - quuid.html - - Variant - Variant-enum - - - - Version - Version-enum - - - - QUuid - QUuid - () - - - QUuid - QUuid-2 - ( uint l, ushort w1, ushort w2, uchar b1, uchar b2, uchar b3, uchar b4, uchar b5, uchar b6, uchar b7, uchar b8 ) - - - QUuid - QUuid-3 - ( const QString & text ) - - - QUuid - QUuid-5 - ( const GUID & guid ) - - - createUuid - createUuid - () - - - isNull - isNull - () - - - toString - toString - () - - - Variant - variant - QUuid::variant() - - - Version - version - QUuid::version() - - - operator - operator-GUID - GUID() - - - operator - operator-QString - QString() - - - operator!= - operator-not-eq - ( const QUuid & other ) - - - operator!= - operator-not-eq-2 - ( const GUID & guid ) - - - operator< - operator-lt - ( const QUuid & other ) - - - operator= - operator-eq - ( const GUID & guid ) - - - operator== - operator-eq-eq - ( const QUuid & other ) - - - operator== - operator-eq-eq-2 - ( const GUID & guid ) - - - operator> - operator-gt - ( const QUuid & other ) - - - QValidator - QValidator-2 - ( QObject * parent, const char * name ) - - - - QValidator - qvalidator.html - - State - State-enum - - - - QValidator - QValidator - ( QObject * parent ) - - - fixup - fixup - ( QString & input ) - - - validate - validate - ( QString & input, int & pos ) - - - QVariant - QVariant-34 - ( bool b, int dummy ) - - - asBitArray - asBitArray - () - - - asBool - asBool - () - - - asByteArray - asByteArray - () - - - asCString - asCString - () - - - asDate - asDate - () - - - asDateTime - asDateTime - () - - - asDouble - asDouble - () - - - asInt - asInt - () - - - asList - asList - () - - - asLongLong - asLongLong - () - - - asMap - asMap - () - - - asPoint - asPoint - () - - - asRect - asRect - () - - - asSize - asSize - () - - - asString - asString - () - - - asStringList - asStringList - () - - - asTime - asTime - () - - - asUInt - asUInt - () - - - asULongLong - asULongLong - () - - - canCast - canCast - ( Type t ) - - - cast - cast - ( Type t ) - - - toCString - toCString - () - - - - QVariant - qvariant.html - - Type - Type-enum - - - - QVariant - QVariant - () - - - QVariant - QVariant-2 - ( Type type ) - - - QVariant - QVariant-3 - ( int typeOrUserType, const void * copy ) - - - QVariant - QVariant-4 - ( const QVariant & p ) - - - QVariant - QVariant-5 - ( QDataStream & s ) - - - QVariant - QVariant-6 - ( int val ) - - - QVariant - QVariant-7 - ( uint val ) - - - QVariant - QVariant-8 - ( qlonglong val ) - - - QVariant - QVariant-9 - ( qulonglong val ) - - - QVariant - QVariant-10 - ( bool val ) - - - QVariant - QVariant-11 - ( double val ) - - - QVariant - QVariant-12 - ( const char * val ) - - - QVariant - QVariant-13 - ( const QByteArray & val ) - - - QVariant - QVariant-14 - ( const QBitArray & val ) - - - QVariant - QVariant-15 - ( const QString & val ) - - - QVariant - QVariant-16 - ( const QLatin1String & val ) - - - QVariant - QVariant-17 - ( const QStringList & val ) - - - QVariant - QVariant-18 - ( const QChar & c ) - - - QVariant - QVariant-19 - ( const QDate & val ) - - - QVariant - QVariant-20 - ( const QTime & val ) - - - QVariant - QVariant-21 - ( const QDateTime & val ) - - - QVariant - QVariant-22 - ( const QList<QVariant> & val ) - - - QVariant - QVariant-23 - ( const QMap<QString, QVariant> & val ) - - - QVariant - QVariant-24 - ( const QSize & val ) - - - QVariant - QVariant-25 - ( const QSizeF & val ) - - - QVariant - QVariant-26 - ( const QPoint & val ) - - - QVariant - QVariant-27 - ( const QPointF & val ) - - - QVariant - QVariant-28 - ( const QLine & val ) - - - QVariant - QVariant-29 - ( const QLineF & val ) - - - QVariant - QVariant-30 - ( const QRect & val ) - - - QVariant - QVariant-31 - ( const QRectF & val ) - - - QVariant - QVariant-32 - ( const QUrl & val ) - - - QVariant - QVariant-33 - ( const QLocale & l ) - - - canConvert - canConvert - ( Type t ) - - - canConvert - canConvert-2 - () - - - clear - clear - () - - - convert - convert - ( Type t ) - - - fromValue - fromValue - ( const T & value ) - - - isNull - isNull - () - - - isValid - isValid - () - - - nameToType - nameToType - ( const char * name ) - - - setValue - setValue - ( const T & value ) - - - toBitArray - toBitArray - () - - - toBool - toBool - () - - - toByteArray - toByteArray - () - - - toChar - toChar - () - - - toDate - toDate - () - - - toDateTime - toDateTime - () - - - toDouble - toDouble - ( bool * ok = 0 ) - - - toInt - toInt - ( bool * ok = 0 ) - - - toLine - toLine - () - - - toLineF - toLineF - () - - - toList - toList - () - - - toLocale - toLocale - () - - - toLongLong - toLongLong - ( bool * ok = 0 ) - - - toMap - toMap - () - - - toPoint - toPoint - () - - - toPointF - toPointF - () - - - toRect - toRect - () - - - toRectF - toRectF - () - - - toSize - toSize - () - - - toSizeF - toSizeF - () - - - toString - toString - () - - - toStringList - toStringList - () - - - toTime - toTime - () - - - toUInt - toUInt - ( bool * ok = 0 ) - - - toULongLong - toULongLong - ( bool * ok = 0 ) - - - toUrl - toUrl - () - - - type - type - () - - - typeName - typeName - () - - - typeToName - typeToName - ( Type typ ) - - - userType - userType - () - - - value - value - () - - - operator!= - operator-not-eq - ( const QVariant & v ) - - - operator= - operator-eq - ( const QVariant & variant ) - - - operator== - operator-eq-eq - ( const QVariant & v ) - - - - QVarLengthArray - qvarlengtharray.html - - QVarLengthArray - QVarLengthArray - ( int size = 0 ) - - - QVarLengthArray - QVarLengthArray-2 - ( const QVarLengthArray & other ) - - - append - append - ( const T & t ) - - - append - append-2 - ( const T * buf, int size ) - - - capacity - capacity - () - - - clear - clear - () - - - constData - constData - () - - - count - count - () - - - data - data - () - - - data - data-2 - () - - - isEmpty - isEmpty - () - - - reserve - reserve - ( int size ) - - - resize - resize - ( int size ) - - - size - size - () - - - operator= - operator-eq - ( const QVarLengthArray & other ) - - - operator[] - operator-5b-5d - ( int i ) - - - operator[] - operator-5b-5d-2 - ( int i ) - - - QVBoxLayout - QVBoxLayout-3 - ( QWidget * parent, int margin, int spacing = -1, const char * name = 0 ) - - - QVBoxLayout - QVBoxLayout-4 - ( QLayout * parentLayout, int spacing = -1, const char * name = 0 ) - - - QVBoxLayout - QVBoxLayout-5 - ( int spacing, const char * name = 0 ) - - - - QVBoxLayout - qvboxlayout.html - - QVBoxLayout - QVBoxLayout - () - - - QVBoxLayout - QVBoxLayout-2 - ( QWidget * parent ) - - - - QVector - qvector.html - - ConstIterator - ConstIterator-typedef - - - - Iterator - Iterator-typedef - - - - const_iterator - const_iterator-typedef - - - - iterator - iterator-typedefx - - - - QVector - QVector - () - - - QVector - QVector-2 - ( int size ) - - - QVector - QVector-3 - ( int size, const T & value ) - - - QVector - QVector-4 - ( const QVector & other ) - - - append - append - ( const T & value ) - - - at - at - ( int i ) - - - back - back - () - - - back - back-2 - () - - - begin - begin - () - - - begin - begin-2 - () - - - capacity - capacity - () - - - clear - clear - () - - - constBegin - constBegin - () - - - constData - constData - () - - - constEnd - constEnd - () - - - contains - contains - ( const T & value ) - - - count - count - ( const T & value ) - - - count - count-2 - () - - - data - data - () - - - data - data-2 - () - - - empty - empty - () - - - end - end - () - - - end - end-2 - () - - - erase - erase - ( iterator pos ) - - - erase - erase-2 - ( iterator begin, iterator end ) - - - fill - fill - ( const T & value, int size = -1 ) - - - first - first - () - - - first - first-2 - () - - - fromList - fromList - ( const QList<T> & list ) - - - fromStdVector - fromStdVector - ( const std::vector<T> & vector ) - - - front - front - () - - - front - front-2 - () - - - indexOf - indexOf - ( const T & value, int from = 0 ) - - - insert - insert - ( int i, const T & value ) - - - insert - insert-2 - ( iterator before, int count, const T & value ) - - - insert - insert-3 - ( int i, int count, const T & value ) - - - insert - insert-4 - ( iterator before, const T & value ) - - - isEmpty - isEmpty - () - - - last - last - () - - - last - last-2 - () - - - lastIndexOf - lastIndexOf - ( const T & value, int from = -1 ) - - - mid - mid - ( int pos, int length = -1 ) - - - pop_back - pop_back - () - - - pop_front - pop_front - () - - - prepend - prepend - ( const T & value ) - - - push_back - push_back - ( const T & value ) - - - push_front - push_front - ( const T & value ) - - - remove - remove - ( int i ) - - - remove - remove-2 - ( int i, int count ) - - - replace - replace - ( int i, const T & value ) - - - reserve - reserve - ( int size ) - - - resize - resize - ( int size ) - - - size - size - () - - - squeeze - squeeze - () - - - toList - toList - () - - - vector - toStdVector - <T> QVector::toStdVector() - - - value - value - ( int i ) - - - value - value-2 - ( int i, const T & defaultValue ) - - - operator!= - operator-not-eq - ( const QVector & other ) - - - operator+ - operator-2b - ( const QVector & other ) - - - operator+= - operator-2b-eq - ( const QVector & other ) - - - operator+= - operator-2b-eq-2 - ( const T & value ) - - - operator<< - operator-lt-lt - ( const T & value ) - - - operator<< - operator-lt-lt-2 - ( const QVector & l ) - - - operator= - operator-eq - ( const QVector & other ) - - - operator== - operator-eq-eq - ( const QVector & other ) - - - operator[] - operator-5b-5d - ( int i ) - - - operator[] - operator-5b-5d-2 - ( int i ) - - - - QVectorIterator - qvectoriterator.html - - QVectorIterator - QVectorIterator - ( const QVector<T> & vector ) - - - findNext - findNext - ( const T & value ) - - - findPrevious - findPrevious - ( const T & value ) - - - hasNext - hasNext - () - - - hasPrevious - hasPrevious - () - - - next - next - () - - - peekNext - peekNext - () - - - peekPrevious - peekPrevious - () - - - previous - previous - () - - - toBack - toBack - () - - - toFront - toFront - () - - - operator= - operator-eq - ( const QVector<T> & vector ) - - - - QWaitCondition - qwaitcondition.html - - QWaitCondition - QWaitCondition - () - - - wait - wait - ( QMutex * mutex, unsigned long time = ULONG_MAX ) - - - wakeAll - wakeAll - () - - - wakeOne - wakeOne - () - - - add - add - ( QWidget * w, const QString & s ) - - - remove - remove - ( QWidget * w ) - - - whatsThisButton - whatsThisButton - ( QWidget * parent ) - - - - QWhatsThis - qwhatsthis.html - - createAction - createAction - ( QObject * parent = 0 ) - - - enterWhatsThisMode - enterWhatsThisMode - () - - - hideText - hideText - () - - - inWhatsThisMode - inWhatsThisMode - () - - - leaveWhatsThisMode - leaveWhatsThisMode - () - - - showText - showText - ( const QPoint & pos, const QString & text, QWidget * w = 0 ) - - - QWheelEvent - QWheelEvent-3 - ( const QPoint & pos, int delta, int state, Qt::Orientation orient = Qt::Vertical ) - - - QWheelEvent - QWheelEvent-4 - ( const QPoint & pos, const QPoint & globalPos, int delta, int state, Qt::Orientation orient = Qt::Vertical ) - - - ButtonState - state - QWheelEvent::state() - - - - QWheelEvent - qwheelevent.html - - QWheelEvent - QWheelEvent - ( const QPoint & pos, int delta, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::Orientation orient = Qt::Vertical ) - - - QWheelEvent - QWheelEvent-2 - ( const QPoint & pos, const QPoint & globalPos, int delta, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::Orientation orient = Qt::Vertical ) - - - MouseButtons - buttons - QWheelEvent::buttons() - - - delta - delta - () - - - globalPos - globalPos - () - - - globalX - globalX - () - - - globalY - globalY - () - - - Orientation - orientation - QWheelEvent::orientation() - - - pos - pos - () - - - x - x - () - - - y - y - () - - - isEnabledToTLW - isEnabledToTLW - () - - - isTopLevel - isTopLevel - () - - - topLevelWidget - topLevelWidget - () - - - BackgroundOrigin - BackgroundOrigin-enum - - - - QWidget - QWidget-3 - ( QWidget * parent, const char * name, Qt::WFlags f = 0 ) - - - BackgroundMode - backgroundMode - QWidget::backgroundMode() - - - backgroundOffset - backgroundOffset - () - - - backgroundOrigin - backgroundOrigin - () - - - caption - caption - () - - - childAt - childAt-2 - ( int x, int y, bool includeThis ) - - - childAt - childAt-3 - ( const QPoint & p, bool includeThis ) - - - close - close-2 - ( bool alsoDelete ) - - - colorGroup - colorGroup - () - - - constPolish - constPolish - () - - - drawText - drawText - ( const QPoint & p, const QString & s ) - - - drawText - drawText-2 - ( int x, int y, const QString & s ) - - - erase - erase - () - - - erase - erase-2 - ( int x, int y, int w, int h ) - - - erase - erase-3 - ( const QRect & rect ) - - - erase - erase-4 - ( const QRegion & rgn ) - - - hasMouse - hasMouse - () - - - icon - icon - () - - - iconText - iconText - () - - - iconify - iconify - () - - - isDesktop - isDesktop - () - - - isDialog - isDialog - () - - - isInputMethodEnabled - isInputMethodEnabled - () - - - isPopup - isPopup - () - - - isShown - isShown - () - - - isUpdatesEnabled - isUpdatesEnabled - () - - - isVisibleToTLW - isVisibleToTLW - () - - - ownCursor - ownCursor - () - - - ownFont - ownFont - () - - - ownPalette - ownPalette - () - - - parentWidget - parentWidget-2 - ( bool sameWindow ) - - - polish - polish - () - - - recreate - recreate - ( QWidget * parent, Qt::WFlags f, const QPoint & p, bool showIt = false ) - - - repaint - repaint-2 - ( bool b ) - - - repaint - repaint-3 - ( int x, int y, int w, int h, bool b ) - - - repaint - repaint-4 - ( const QRect & r, bool b ) - - - repaint - repaint-5 - ( const QRegion & rgn, bool b ) - - - reparent - reparent - ( QWidget * parent, Qt::WFlags f, const QPoint & p, bool showIt = false ) - - - reparent - reparent-2 - ( QWidget * parent, const QPoint & p, bool showIt = false ) - - - setActiveWindow - setActiveWindow - () - - - setBackgroundColor - setBackgroundColor - ( const QColor & color ) - - - setBackgroundMode - setBackgroundMode - ( Qt::BackgroundMode widgetBackground, Qt::BackgroundMode paletteBackground = Qt::PaletteBackground ) - - - setBackgroundOrigin - setBackgroundOrigin - ( BackgroundOrigin background ) - - - setBackgroundPixmap - setBackgroundPixmap - ( const QPixmap & pixmap ) - - - setCaption - setCaption - ( const QString & c ) - - - setEraseColor - setEraseColor - ( const QColor & color ) - - - setErasePixmap - setErasePixmap - ( const QPixmap & pixmap ) - - - setFont - setFont-2 - ( const QFont & f, bool b ) - - - setIcon - setIcon - ( const QPixmap & i ) - - - setIconText - setIconText - ( const QString & it ) - - - setInputMethodEnabled - setInputMethodEnabled - ( bool enabled ) - - - setKeyCompression - setKeyCompression - ( bool b ) - - - setPalette - setPalette-2 - ( const QPalette & p, bool b ) - - - setPaletteBackgroundColor - setPaletteBackgroundColor - ( const QColor & color ) - - - setPaletteBackgroundPixmap - setPaletteBackgroundPixmap - ( const QPixmap & pixmap ) - - - setPaletteForegroundColor - setPaletteForegroundColor - ( const QColor & color ) - - - setShown - setShown - ( bool shown ) - - - setSizePolicy - setSizePolicy-2 - ( QSizePolicy::Policy hor, QSizePolicy::Policy ver, bool hfw ) - - - setStyle - setStyle-2 - ( const QString & style ) - - - unsetFont - unsetFont - () - - - unsetPalette - unsetPalette - () - - - visibleRect - visibleRect - () - - - wmapper - wmapper - () - - - - QWidget - qwidget.html - - ContextMenuPolicy - contextMenuPolicy - - - - FocusPolicy - focusPolicy - - - - LayoutDirection - layoutDirection - - - - WindowFlags - windowFlags - - - - QWidget - QWidget - ( QWidget * parent = 0, Qt::WFlags f = 0 ) - - - actionEvent - actionEvent - ( QActionEvent * event ) - - - actions - actions - () - - - activateWindow - activateWindow - () - - - addAction - addAction - ( QAction * action ) - - - addActions - addActions - ( QList<QAction *> actions ) - - - adjustSize - adjustSize - () - - - ColorRole - backgroundRole - QWidget::backgroundRole() - - - changeEvent - changeEvent - ( QEvent * e ) - - - childAt - childAt - ( int x, int y ) - - - childAt - childAt-4 - ( const QPoint & p ) - - - clearFocus - clearFocus - () - - - clearMask - clearMask - () - - - close - close - () - - - closeEvent - closeEvent - ( QCloseEvent * e ) - - - contentsRect - contentsRect - () - - - contextMenuEvent - contextMenuEvent - ( QContextMenuEvent * e ) - - - create - create - ( WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true ) - - - customContextMenuRequested - customContextMenuRequested - ( const QPoint & pos ) - - - destroy - destroy - ( bool destroyWindow = true, bool destroySubWindows = true ) - - - dragEnterEvent - dragEnterEvent - ( QDragEnterEvent * event ) - - - dragLeaveEvent - dragLeaveEvent - ( QDragLeaveEvent * event ) - - - dragMoveEvent - dragMoveEvent - ( QDragMoveEvent * event ) - - - dropEvent - dropEvent - ( QDropEvent * event ) - - - ensurePolished - ensurePolished - () - - - enterEvent - enterEvent - ( QEvent * event ) - - - event - event - ( QEvent * e ) - - - find - find - ( WId id ) - - - focusInEvent - focusInEvent - ( QFocusEvent * event ) - - - focusNextChild - focusNextChild - () - - - focusNextPrevChild - focusNextPrevChild - ( bool next ) - - - focusOutEvent - focusOutEvent - ( QFocusEvent * event ) - - - focusPreviousChild - focusPreviousChild - () - - - focusProxy - focusProxy - () - - - focusWidget - focusWidget - () - - - fontInfo - fontInfo - () - - - fontMetrics - fontMetrics - () - - - ColorRole - foregroundRole - QWidget::foregroundRole() - - - getContentsMargins - getContentsMargins - ( int * left, int * top, int * right, int * bottom ) - - - getDC - getDC - () - - - grabKeyboard - grabKeyboard - () - - - grabMouse - grabMouse - () - - - grabMouse - grabMouse-2 - ( const QCursor & cursor ) - - - grabShortcut - grabShortcut - ( const QKeySequence & key, Qt::ShortcutContext context = Qt::WindowShortcut ) - - - heightForWidth - heightForWidth - ( int w ) - - - hide - hide - () - - - hideEvent - hideEvent - ( QHideEvent * event ) - - - inputContext - inputContext - () - - - inputMethodEvent - inputMethodEvent - ( QInputMethodEvent * e ) - - - inputMethodQuery - inputMethodQuery - ( Qt::InputMethodQuery query ) - - - insertAction - insertAction - ( QAction * before, QAction * action ) - - - insertActions - insertActions - ( QAction * before, QList<QAction *> actions ) - - - isAncestorOf - isAncestorOf - ( const QWidget * child ) - - - isEnabledTo - isEnabledTo - ( QWidget * ancestor ) - - - isHidden - isHidden - () - - - isVisibleTo - isVisibleTo - ( QWidget * ancestor ) - - - isWindow - isWindow - () - - - keyPressEvent - keyPressEvent - ( QKeyEvent * e ) - - - keyReleaseEvent - keyReleaseEvent - ( QKeyEvent * e ) - - - keyboardGrabber - keyboardGrabber - () - - - layout - layout - () - - - leaveEvent - leaveEvent - ( QEvent * event ) - - - lower - lower - () - - - macEvent - macEvent - ( EventHandlerCallRef caller, EventRef event ) - - - mapFrom - mapFrom - ( QWidget * parent, const QPoint & pos ) - - - mapFromGlobal - mapFromGlobal - ( const QPoint & pos ) - - - mapFromParent - mapFromParent - ( const QPoint & pos ) - - - mapTo - mapTo - ( QWidget * parent, const QPoint & pos ) - - - mapToGlobal - mapToGlobal - ( const QPoint & pos ) - - - mapToParent - mapToParent - ( const QPoint & pos ) - - - mask - mask - () - - - metric - metric - ( PaintDeviceMetric m ) - - - mouseDoubleClickEvent - mouseDoubleClickEvent - ( QMouseEvent * e ) - - - mouseGrabber - mouseGrabber - () - - - mouseMoveEvent - mouseMoveEvent - ( QMouseEvent * e ) - - - mousePressEvent - mousePressEvent - ( QMouseEvent * e ) - - - mouseReleaseEvent - mouseReleaseEvent - ( QMouseEvent * e ) - - - moveEvent - moveEvent - ( QMoveEvent * event ) - - - nextInFocusChain - nextInFocusChain - () - - - overrideWindowFlags - overrideWindowFlags - ( Qt::WindowFlags flags ) - - - paintEngine - paintEngine - () - - - paintEvent - paintEvent - ( QPaintEvent * event ) - - - parentWidget - parentWidget - () - - - qwsEvent - qwsEvent - ( QWSEvent * event ) - - - raise - raise - () - - - releaseDC - releaseDC - ( HDC hdc ) - - - releaseKeyboard - releaseKeyboard - () - - - releaseMouse - releaseMouse - () - - - releaseShortcut - releaseShortcut - ( int id ) - - - removeAction - removeAction - ( QAction * action ) - - - repaint - repaint - () - - - repaint - repaint-6 - ( int x, int y, int w, int h ) - - - repaint - repaint-7 - ( const QRect & r ) - - - repaint - repaint-8 - ( const QRegion & rgn ) - - - resetInputContext - resetInputContext - () - - - resizeEvent - resizeEvent - ( QResizeEvent * event ) - - - scroll - scroll - ( int dx, int dy ) - - - scroll - scroll-2 - ( int dx, int dy, const QRect & r ) - - - setAttribute - setAttribute - ( Qt::WidgetAttribute attribute, bool on = true ) - - - setBackgroundRole - setBackgroundRole - ( QPalette::ColorRole role ) - - - setContentsMargins - setContentsMargins - ( int left, int top, int right, int bottom ) - - - setDisabled - setDisabled - ( bool disable ) - - - setFixedHeight - setFixedHeight - ( int h ) - - - setFixedSize - setFixedSize - ( const QSize & s ) - - - setFixedSize - setFixedSize-2 - ( int w, int h ) - - - setFixedWidth - setFixedWidth - ( int w ) - - - setFocus - setFocus - ( Qt::FocusReason reason ) - - - setFocus - setFocus-2 - () - - - setFocusProxy - setFocusProxy - ( QWidget * w ) - - - setForegroundRole - setForegroundRole - ( QPalette::ColorRole role ) - - - setHidden - setHidden - ( bool hidden ) - - - setInputContext - setInputContext - ( QInputContext * context ) - - - setLayout - setLayout - ( QLayout * l ) - - - setMask - setMask - ( const QBitmap & bitmap ) - - - setMask - setMask-2 - ( const QRegion & region ) - - - setParent - setParent - ( QWidget * parent ) - - - setParent - setParent-2 - ( QWidget * parent, Qt::WFlags f ) - - - setShortcutEnabled - setShortcutEnabled - ( int id, bool enable = true ) - - - setStyle - setStyle - ( QStyle * style ) - - - setTabOrder - setTabOrder - ( QWidget * first, QWidget * second ) - - - setWindowRole - setWindowRole - ( const QString & role ) - - - setWindowState - setWindowState - ( Qt::WindowStates windowState ) - - - show - show - () - - - showEvent - showEvent - ( QShowEvent * event ) - - - showFullScreen - showFullScreen - () - - - showMaximized - showMaximized - () - - - showMinimized - showMinimized - () - - - showNormal - showNormal - () - - - stackUnder - stackUnder - ( QWidget * w ) - - - style - style - () - - - tabletEvent - tabletEvent - ( QTabletEvent * e ) - - - testAttribute - testAttribute - ( Qt::WidgetAttribute attribute ) - - - underMouse - underMouse - () - - - update - update - () - - - update - update-2 - ( int x, int y, int w, int h ) - - - update - update-3 - ( const QRect & r ) - - - update - update-4 - ( const QRegion & rgn ) - - - updateGeometry - updateGeometry - () - - - updateMicroFocus - updateMicroFocus - () - - - visibleRegion - visibleRegion - () - - - wheelEvent - wheelEvent - ( QWheelEvent * e ) - - - winEvent - winEvent - ( MSG * message, long * result ) - - - winId - winId - () - - - window - window - () - - - windowRole - windowRole - () - - - WindowStates - windowState - QWidget::windowState() - - - WindowType - windowType - QWidget::windowType() - - - x11Event - x11Event - ( XEvent * event ) - - - HANDLE - x11PictureHandle - QWidget::x11PictureHandle() - - - - QWidgetContainerPlugin - qwidgetcontainerplugin.html - - QWidgetContainerPlugin - QWidgetContainerPlugin - ( QObject * parent = 0 ) - - - addPage - addPage - ( const QString & key, QWidget * container, const QString & name, int index ) - - - containerOfWidget - containerOfWidget - ( const QString & key, QWidget * container ) - - - count - count - ( const QString & key, QWidget * container ) - - - createCode - createCode - ( const QString & key, const QString & container, const QString & page, const QString & pageName ) - - - currentIndex - currentIndex - ( const QString & key, QWidget * container ) - - - insertPage - insertPage - ( const QString & key, QWidget * container, const QString & name, int index, QWidget * page ) - - - isPassiveInteractor - isPassiveInteractor - ( const QString & key, QWidget * container ) - - - movePage - movePage - ( const QString & key, QWidget * container, int fromIndex, int toIndex ) - - - page - page - ( const QString & key, QWidget * container, int index ) - - - pageLabel - pageLabel - ( const QString & key, QWidget * container, int index ) - - - pages - pages - ( const QString & key, QWidget * container ) - - - removePage - removePage - ( const QString & key, QWidget * container, int index ) - - - renamePage - renamePage - ( const QString & key, QWidget * container, int index, const QString & newName ) - - - supportsPages - supportsPages - ( const QString & key ) - - - - QWidgetItem - qwidgetitem.html - - QWidgetItem - QWidgetItem - ( QWidget * w ) - - - isEmpty - isEmpty - () - - - maximumSize - maximumSize - () - - - minimumSize - minimumSize - () - - - setGeometry - setGeometry - ( const QRect & r ) - - - sizeHint - sizeHint - () - - - widget - widget - () - - - - QWidgetPlugin - qwidgetplugin.html - - QWidgetPlugin - QWidgetPlugin - ( QObject * parent = 0 ) - - - create - create - ( const QString & key, QWidget * parent = 0, const char * name = 0 ) - - - group - group - ( const QString & key ) - - - iconSet - iconSet - ( const QString & key ) - - - includeFile - includeFile - ( const QString & key ) - - - isContainer - isContainer - ( const QString & key ) - - - keys - keys - () - - - toolTip - toolTip - ( const QString & key ) - - - whatsThis - whatsThis - ( const QString & key ) - - - - QWindowsMime - qwindowsmime.html - - QWindowsMime - QWindowsMime - () - - - canConvertFromMime - canConvertFromMime - ( const FORMATETC & formatetc, const QMimeData * mimeData ) - - - canConvertToMime - canConvertToMime - ( const QString & mimeType, IDataObject * pDataObj ) - - - convertFromMime - convertFromMime - ( const FORMATETC & formatetc, const QMimeData * mimeData, STGMEDIUM * pmedium ) - - - convertToMime - convertToMime - ( const QString & mimeType, IDataObject * pDataObj, QVariant::Type preferredType ) - - - formatsForMime - formatsForMime - ( const QString & mimeType, const QMimeData * mimeData ) - - - mimeForFormat - mimeForFormat - ( const FORMATETC & formatetc ) - - - registerMimeType - registerMimeType - ( const QString & mime ) - - - - QWindowsStyle - qwindowsstyle.html - - QWindowsStyle - QWindowsStyle - () - - - - QWindowStateChangeEvent - qwindowstatechangeevent.html - - WindowStates - oldState - QWindowStateChangeEvent::oldState() - - - - QWindowsXPStyle - qwindowsxpstyle.html - - QWindowsXPStyle - QWindowsXPStyle - () - - - standardPalette - standardPalette - () - - - QWorkspace - QWorkspace-2 - ( QWidget * parent, const char * name ) - - - setPaletteBackgroundColor - setPaletteBackgroundColor - ( const QColor & c ) - - - setPaletteBackgroundPixmap - setPaletteBackgroundPixmap - ( const QPixmap & pm ) - - - - QWorkspace - qworkspace.html - - WindowOrder - WindowOrder-enum - - - - QWorkspace - QWorkspace - ( QWidget * parent = 0 ) - - - activateNextWindow - activateNextWindow - () - - - activatePreviousWindow - activatePreviousWindow - () - - - activeWindow - activeWindow - () - - - addWindow - addWindow - ( QWidget * w, Qt::WFlags flags = 0 ) - - - cascade - cascade - () - - - closeActiveWindow - closeActiveWindow - () - - - closeAllWindows - closeAllWindows - () - - - setActiveWindow - setActiveWindow - ( QWidget * w ) - - - tile - tile - () - - - windowActivated - windowActivated - ( QWidget * w ) - - - windowList - windowList - ( WindowOrder order = CreationOrder ) - - - - QWriteLocker - qwritelocker.html - - QWriteLocker - QWriteLocker - ( QReadWriteLock * lock ) - - - readWriteLock - readWriteLock - () - - - relock - relock - () - - - unlock - unlock - () - - - - QWSInputMethod - qwsinputmethod.html - - QWSInputMethod - QWSInputMethod - () - - - filter - filter - ( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat ) - - - mouseHandler - mouseHandler - ( int x, int state ) - - - reset - reset - () - - - responseHandler - responseHandler - ( int property, const QVariant & result ) - - - sendIMEvent - sendIMEvent - ( QWSServer::IMState state, const QString & txt, int cpos, int selLen = 0 ) - - - sendIMQuery - sendIMQuery - ( int property ) - - - updateHandler - updateHandler - ( int type ) - - - - QWSKeyboardHandler - qwskeyboardhandler.html - - QWSKeyboardHandler - QWSKeyboardHandler - () - - - beginAutoRepeat - beginAutoRepeat - ( int uni, int code, Qt::KeyboardModifiers mod ) - - - endAutoRepeat - endAutoRepeat - () - - - processKeyEvent - processKeyEvent - ( int unicode, int keycode, Qt::KeyboardModifiers modifiers, bool isPress, bool autoRepeat ) - - - transformDirKey - transformDirKey - ( int key ) - - - - QWSMouseHandler - qwsmousehandler.html - - QWSMouseHandler - QWSMouseHandler - ( const QString & driver = QString() - - - calibrate - calibrate - ( const QWSPointerCalibrationData * data ) - - - clearCalibration - clearCalibration - () - - - limitToScreen - limitToScreen - ( QPoint & pt ) - - - mouseChanged - mouseChanged - ( const QPoint & pos, int bstate, int wheel = 0 ) - - - pos - pos - () - - - resume - resume - () - - - suspend - suspend - () - - - - QWSServer::KeyboardFilter - qwsserver-keyboardfilter.html - - filter - filter - ( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat ) - - - - QWSServer::KeyMap - qwsserver-keymap.html - - - QWSServer::KeyOverride - qwsserver-keyoverride.html - - QWSServer - QWSServer-2 - ( int flags, QObject * parent, const char * name ) - - - - QWSServer - qwsserver.html - - GUIMode - GUIMode-enum - - - - ServerFlags - ServerFlags-enum - - - - WindowEvent - WindowEvent-enum - - - - QWSServer - QWSServer - ( int flags = 0, QObject * parent = 0 ) - - - addKeyboardFilter - addKeyboardFilter - ( KeyboardFilter * f ) - - - clientWindows - clientWindows - () - - - closeKeyboard - closeKeyboard - () - - - closeMouse - closeMouse - () - - - enablePainting - enablePainting - ( bool e ) - - - isCursorVisible - isCursorVisible - () - - - keyMap - keyMap - () - - - keyboardHandler - keyboardHandler - () - - - manager - manager - () - - - markedText - markedText - ( const QString & text ) - - - mouseHandler - mouseHandler - () - - - newChannel - newChannel - ( const QString & channel ) - - - openKeyboard - openKeyboard - () - - - openMouse - openMouse - () - - - refresh - refresh - () - - - refresh - refresh-2 - ( QRegion & r ) - - - removeKeyboardFilter - removeKeyboardFilter - () - - - removedChannel - removedChannel - ( const QString & channel ) - - - resumeMouse - resumeMouse - () - - - screenSaverActivate - screenSaverActivate - ( bool activate ) - - - screenSaverActive - screenSaverActive - () - - - sendIMEvent - sendIMEvent - ( IMState state, const QString & txt, int cpos, int selLen ) - - - sendIMQuery - sendIMQuery - ( int property ) - - - sendKeyEvent - sendKeyEvent - ( int unicode, int keycode, Qt::KeyboardModifiers modifiers, bool isPress, bool autoRepeat ) - - - setCursorVisible - setCursorVisible - ( bool vis ) - - - setDefaultKeyboard - setDefaultKeyboard - ( const char * k ) - - - setDefaultMouse - setDefaultMouse - ( const char * m ) - - - setDesktopBackground - setDesktopBackground - ( const QImage & img ) - - - setDesktopBackground - setDesktopBackground-2 - ( const QColor & c ) - - - setKeyboardHandler - setKeyboardHandler - ( QWSKeyboardHandler * kh ) - - - setMaxWindowRect - setMaxWindowRect - ( const QRect & r ) - - - setScreenSaverInterval - setScreenSaverInterval - ( int ms ) - - - setScreenSaverIntervals - setScreenSaverIntervals - ( int * ms ) - - - suspendMouse - suspendMouse - () - - - windowAt - windowAt - ( const QPoint & pos ) - - - windowEvent - windowEvent - ( QWSWindow * w, QWSServer::WindowEvent e ) - - - - QWSWindow - qwswindow.html - - QWSWindow - QWSWindow - ( int i, QWSClient * client ) - - - caption - caption - () - - - client - client - () - - - hide - hide - () - - - isFullyObscured - isFullyObscured - () - - - isVisible - isVisible - () - - - lower - lower - () - - - name - name - () - - - raise - raise - () - - - requestedRegion - requestedRegion - () - - - setActiveWindow - setActiveWindow - () - - - show - show - () - - - winId - winId - () - - - - QX11Info - qx11info.html - - QX11Info - QX11Info - () - - - QX11Info - QX11Info-2 - ( const QX11Info & other ) - - - appCells - appCells - ( int screen = -1 ) - - - appClass - appClass - () - - - HANDLE - appColormap - QX11Info::appColormap( int screen = -1 ) - - - appDefaultColormap - appDefaultColormap - ( int screen = -1 ) - - - appDefaultVisual - appDefaultVisual - ( int screen = -1 ) - - - appDepth - appDepth - ( int screen = -1 ) - - - appDpiX - appDpiX - ( int screen = -1 ) - - - appDpiY - appDpiY - ( int screen = -1 ) - - - HANDLE - appRootWindow - QX11Info::appRootWindow( int screen = -1 ) - - - appScreen - appScreen - () - - - appVisual - appVisual - ( int screen = -1 ) - - - cells - cells - () - - - HANDLE - colormap - QX11Info::colormap() - - - defaultColormap - defaultColormap - () - - - defaultVisual - defaultVisual - () - - - depth - depth - () - - - display - display - () - - - screen - screen - () - - - setAppDpiX - setAppDpiX - ( int screen, int xdpi ) - - - setAppDpiY - setAppDpiY - ( int screen, int ydpi ) - - - visual - visual - () - - - operator= - operator-eq - ( const QX11Info & other ) - - - - QXmlAttributes - qxmlattributes.html - - QXmlAttributes - QXmlAttributes - () - - - append - append - ( const QString & qName, const QString & uri, const QString & localPart, const QString & value ) - - - clear - clear - () - - - count - count - () - - - index - index - ( const QString & qName ) - - - index - index-2 - ( const QString & uri, const QString & localPart ) - - - length - length - () - - - localName - localName - ( int index ) - - - qName - qName - ( int index ) - - - type - type - ( int index ) - - - type - type-2 - ( const QString & qName ) - - - type - type-3 - ( const QString & uri, const QString & localName ) - - - uri - uri - ( int index ) - - - value - value - ( int index ) - - - value - value-2 - ( const QString & qName ) - - - value - value-3 - ( const QString & uri, const QString & localName ) - - - - QXmlContentHandler - qxmlcontenthandler.html - - characters - characters - ( const QString & ch ) - - - endDocument - endDocument - () - - - endElement - endElement - ( const QString & namespaceURI, const QString & localName, const QString & qName ) - - - endPrefixMapping - endPrefixMapping - ( const QString & prefix ) - - - errorString - errorString - () - - - ignorableWhitespace - ignorableWhitespace - ( const QString & ch ) - - - processingInstruction - processingInstruction - ( const QString & target, const QString & data ) - - - setDocumentLocator - setDocumentLocator - ( QXmlLocator * locator ) - - - skippedEntity - skippedEntity - ( const QString & name ) - - - startDocument - startDocument - () - - - startElement - startElement - ( const QString & namespaceURI, const QString & localName, const QString & qName, const QXmlAttributes & atts ) - - - startPrefixMapping - startPrefixMapping - ( const QString & prefix, const QString & uri ) - - - - QXmlDeclHandler - qxmldeclhandler.html - - attributeDecl - attributeDecl - ( const QString & eName, const QString & aName, const QString & type, const QString & valueDefault, const QString & value ) - - - errorString - errorString - () - - - externalEntityDecl - externalEntityDecl - ( const QString & name, const QString & publicId, const QString & systemId ) - - - internalEntityDecl - internalEntityDecl - ( const QString & name, const QString & value ) - - - - QXmlDefaultHandler - qxmldefaulthandler.html - - QXmlDefaultHandler - QXmlDefaultHandler - () - - - - QXmlDTDHandler - qxmldtdhandler.html - - errorString - errorString - () - - - notationDecl - notationDecl - ( const QString & name, const QString & publicId, const QString & systemId ) - - - unparsedEntityDecl - unparsedEntityDecl - ( const QString & name, const QString & publicId, const QString & systemId, const QString & notationName ) - - - - QXmlEntityResolver - qxmlentityresolver.html - - errorString - errorString - () - - - resolveEntity - resolveEntity - ( const QString & publicId, const QString & systemId, QXmlInputSource *& ret ) - - - - QXmlErrorHandler - qxmlerrorhandler.html - - error - error - ( const QXmlParseException & exception ) - - - errorString - errorString - () - - - fatalError - fatalError - ( const QXmlParseException & exception ) - - - warning - warning - ( const QXmlParseException & exception ) - - - QXmlInputSource - QXmlInputSource-3 - ( QFile & file ) - - - QXmlInputSource - QXmlInputSource-4 - ( QTextStream & stream ) - - - - QXmlInputSource - qxmlinputsource.html - - QXmlInputSource - QXmlInputSource - () - - - QXmlInputSource - QXmlInputSource-2 - ( QIODevice * dev ) - - - data - data - () - - - fetchData - fetchData - () - - - fromRawData - fromRawData - ( const QByteArray & data, bool beginning = false ) - - - next - next - () - - - reset - reset - () - - - setData - setData - ( const QString & dat ) - - - setData - setData-2 - ( const QByteArray & dat ) - - - - QXmlLexicalHandler - qxmllexicalhandler.html - - comment - comment - ( const QString & ch ) - - - endCDATA - endCDATA - () - - - endDTD - endDTD - () - - - endEntity - endEntity - ( const QString & name ) - - - errorString - errorString - () - - - startCDATA - startCDATA - () - - - startDTD - startDTD - ( const QString & name, const QString & publicId, const QString & systemId ) - - - startEntity - startEntity - ( const QString & name ) - - - - QXmlLocator - qxmllocator.html - - QXmlLocator - QXmlLocator - () - - - columnNumber - columnNumber - () - - - lineNumber - lineNumber - () - - - - QXmlNamespaceSupport - qxmlnamespacesupport.html - - QXmlNamespaceSupport - QXmlNamespaceSupport - () - - - popContext - popContext - () - - - prefix - prefix - ( const QString & uri ) - - - prefixes - prefixes - () - - - prefixes - prefixes-2 - ( const QString & uri ) - - - processName - processName - ( const QString & qname, bool isAttribute, QString & nsuri, QString & localname ) - - - pushContext - pushContext - () - - - reset - reset - () - - - setPrefix - setPrefix - ( const QString & pre, const QString & uri ) - - - splitName - splitName - ( const QString & qname, QString & prefix, QString & localname ) - - - uri - uri - ( const QString & prefix ) - - - - QXmlParseException - qxmlparseexception.html - - QXmlParseException - QXmlParseException - ( const QString & name = QString() - - - columnNumber - columnNumber - () - - - lineNumber - lineNumber - () - - - message - message - () - - - publicId - publicId - () - - - systemId - systemId - () - - - parse - parse - ( const QXmlInputSource & input ) - - - - QXmlReader - qxmlreader.html - - DTDHandler - DTDHandler - () - - - contentHandler - contentHandler - () - - - declHandler - declHandler - () - - - entityResolver - entityResolver - () - - - errorHandler - errorHandler - () - - - feature - feature - ( const QString & name, bool * ok = 0 ) - - - hasFeature - hasFeature - ( const QString & name ) - - - hasProperty - hasProperty - ( const QString & name ) - - - lexicalHandler - lexicalHandler - () - - - parse - parse-2 - ( const QXmlInputSource * input ) - - - property - property - ( const QString & name, bool * ok = 0 ) - - - setContentHandler - setContentHandler - ( QXmlContentHandler * handler ) - - - setDTDHandler - setDTDHandler - ( QXmlDTDHandler * handler ) - - - setDeclHandler - setDeclHandler - ( QXmlDeclHandler * handler ) - - - setEntityResolver - setEntityResolver - ( QXmlEntityResolver * handler ) - - - setErrorHandler - setErrorHandler - ( QXmlErrorHandler * handler ) - - - setFeature - setFeature - ( const QString & name, bool value ) - - - setLexicalHandler - setLexicalHandler - ( QXmlLexicalHandler * handler ) - - - setProperty - setProperty - ( const QString & name, void * value ) - - - - QXmlSimpleReader - qxmlsimplereader.html - - QXmlSimpleReader - QXmlSimpleReader - () - - - parse - parse-3 - ( const QXmlInputSource * input, bool incremental ) - - - parseContinue - parseContinue - () - - - setFeature - setFeature - ( const QString & name, bool enable ) - - - diff -Nru qca2-2.0.3/src/src.pro qca2-2.1.0/src/src.pro --- qca2-2.0.3/src/src.pro 2010-11-27 21:14:12.000000000 +0000 +++ qca2-2.1.0/src/src.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,122 +0,0 @@ -# qca qmake profile - -QCA_BASE = .. -QCA_INCBASE = ../include -QCA_SRCBASE = . - -TEMPLATE = lib -QT -= gui -TARGET = qca -DESTDIR = $$QCA_BASE/lib -windows:DLLDESTDIR = $$QCA_BASE/bin - -VERSION = 2.0.3 - -include($$QCA_BASE/conf.pri) - -CONFIG += create_prl -windows:!staticlib:DEFINES += QCA_MAKEDLL -staticlib:PRL_EXPORT_DEFINES += QCA_STATIC - -QCA_INC = $$QCA_INCBASE/QtCrypto -QCA_CPP = $$QCA_SRCBASE -INCLUDEPATH += $$QCA_INC $$QCA_CPP - -# botantools -include($$QCA_SRCBASE/botantools/botantools.pri) - -PRIVATE_HEADERS += \ - $$QCA_CPP/qca_safeobj.h \ - $$QCA_CPP/qca_plugin.h \ - $$QCA_CPP/qca_systemstore.h - -PUBLIC_HEADERS += \ - $$QCA_INC/qca_export.h \ - $$QCA_INC/qca_support.h \ - $$QCA_INC/qca_tools.h \ - $$QCA_INC/qca_core.h \ - $$QCA_INC/qca_textfilter.h \ - $$QCA_INC/qca_basic.h \ - $$QCA_INC/qca_publickey.h \ - $$QCA_INC/qca_cert.h \ - $$QCA_INC/qca_keystore.h \ - $$QCA_INC/qca_securelayer.h \ - $$QCA_INC/qca_securemessage.h \ - $$QCA_INC/qcaprovider.h \ - $$QCA_INC/qpipe.h - -HEADERS += $$PRIVATE_HEADERS $$PUBLIC_HEADERS - -# do support first -SOURCES += \ - $$QCA_CPP/support/syncthread.cpp \ - $$QCA_CPP/support/logger.cpp \ - $$QCA_CPP/support/synchronizer.cpp \ - $$QCA_CPP/support/dirwatch.cpp - -SOURCES += \ - $$QCA_CPP/qca_safeobj.cpp \ - $$QCA_CPP/qca_tools.cpp \ - $$QCA_CPP/qca_core.cpp \ - $$QCA_CPP/qca_textfilter.cpp \ - $$QCA_CPP/qca_plugin.cpp \ - $$QCA_CPP/qca_basic.cpp \ - $$QCA_CPP/qca_publickey.cpp \ - $$QCA_CPP/qca_cert.cpp \ - $$QCA_CPP/qca_keystore.cpp \ - $$QCA_CPP/qca_securelayer.cpp \ - $$QCA_CPP/qca_securemessage.cpp \ - $$QCA_CPP/qca_default.cpp \ - $$QCA_CPP/support/qpipe.cpp \ - $$QCA_CPP/support/console.cpp - -unix:!mac: { - SOURCES += $$QCA_CPP/qca_systemstore_flatfile.cpp -} -windows: { - SOURCES += $$QCA_CPP/qca_systemstore_win.cpp - LIBS += -lcrypt32 -} -mac: { - SOURCES += $$QCA_CPP/qca_systemstore_mac.cpp - LIBS += -framework Carbon -framework Security - QMAKE_LFLAGS_SONAME = -Wl,-install_name,"$$LIBDIR/" - - QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.3 -} - -mac:lib_bundle: { - QMAKE_FRAMEWORK_BUNDLE_NAME = $$TARGET - CONFIG(debug, debug|release) { - !build_pass:CONFIG += build_all - } else { #release - !debug_and_release|build_pass { - FRAMEWORK_HEADERS.version = Versions - FRAMEWORK_HEADERS.files = $$PUBLIC_HEADERS $$QCA_INC/qca.h $$QCA_INC/QtCrypto - FRAMEWORK_HEADERS.path = Headers - QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS - } - } -} - -unix: { - # install - target.path = $$LIBDIR - INSTALLS += target - - incfiles.path = $$INCDIR/QtCrypto - incfiles.files = $$PUBLIC_HEADERS - incfiles.files += $$QCA_INC/qca.h $$QCA_INC/QtCrypto - !lib_bundle:INSTALLS += incfiles - - manfiles.path = $$DATADIR/man/man1 - manfiles.files = $$QCA_BASE/man/qcatool2.1 - INSTALLS += manfiles -} - -!debug_and_release|build_pass { - CONFIG(debug, debug|release) { - mac:TARGET = $$member(TARGET, 0)_debug - windows:TARGET = $$member(TARGET, 0)d - } -} diff -Nru qca2-2.0.3/src/support/console.cpp qca2-2.1.0/src/support/console.cpp --- qca2-2.0.3/src/support/console.cpp 2010-11-27 21:14:12.000000000 +0000 +++ qca2-2.1.0/src/support/console.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -278,7 +278,11 @@ SecureArray readSecure(int bytes = -1) { +#if QT_VERSION >= 0x050000 + return mycall(worker, "readSecure", QVariantList() << bytes).value(); +#else return qVariantValue(mycall(worker, "readSecure", QVariantList() << bytes)); +#endif } void writeSecure(const SecureArray &a) @@ -449,7 +453,7 @@ if(type == Tty) { in = CreateFileA("CONIN$", GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, false, + FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); } else @@ -473,7 +477,7 @@ { out = CreateFileA("CONOUT$", GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ | FILE_SHARE_WRITE, false, + FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); } else diff -Nru qca2-2.0.3/src/support/dirwatch.cpp qca2-2.1.0/src/support/dirwatch.cpp --- qca2-2.0.3/src/support/dirwatch.cpp 2008-05-20 00:39:06.000000000 +0000 +++ qca2-2.1.0/src/support/dirwatch.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -156,16 +156,21 @@ watcher->addPath(dir.path()); - // similarly, we don't check for existence of the file. if - // the add works, then it works. however, unlike the dir, - // if the file add fails then the overall monitoring could - // still potentially work... - - watcher->addPath(filePath); + // can't watch for non-existent directory + if(!watcher->directories().contains(dir.path())) + { + stop(); + return; + } // save whether or not the file exists fileExisted = fi.exists(); + // add only if file existent + // if no it will be added on directoryChanged signal + if(fileExisted) + watcher->addPath(filePath); + // TODO: address race conditions and think about error // reporting instead of silently failing. probably this // will require a Qt API update. diff -Nru qca2-2.0.3/src/support/qpipe.cpp qca2-2.1.0/src/support/qpipe.cpp --- qca2-2.0.3/src/support/qpipe.cpp 2008-05-17 01:39:05.000000000 +0000 +++ qca2-2.1.0/src/support/qpipe.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -293,11 +293,15 @@ // peek them all rec = (INPUT_RECORD *)malloc(count * sizeof(INPUT_RECORD)); BOOL ret; +#if QT_VERSION >= 0x050000 + ret = PeekConsoleInputW(pipe, rec, count, &i); +#else QT_WA( ret = PeekConsoleInputW(pipe, rec, count, &i); , ret = PeekConsoleInputA(pipe, rec, count, &i); ) +#endif if(!ret) { free(rec); @@ -345,11 +349,15 @@ } else { +#if QT_VERSION >= 0x050000 + dec = 0; +#else QT_WA( dec = 0; , dec = QTextCodec::codecForLocale()->makeDecoder(); ) +#endif own_decoder = true; } @@ -362,12 +370,16 @@ BOOL ret; DWORD i; +#if QT_VERSION >= 0x050000 + ret = ReadConsoleW(pipe, &uni, 1, &i, NULL); +#else QT_WA( ret = ReadConsoleW(pipe, &uni, 1, &i, NULL); , ret = ReadConsoleA(pipe, &ansi, 1, &i, NULL); use_uni = false; ) +#endif if(!ret) { // if the first read is an error, then report error @@ -410,6 +422,9 @@ { DWORD i; BOOL ret; +#if QT_VERSION >= 0x050000 + ret = WriteConsoleW(pipe, data, size, &i, NULL); +#else QT_WA( ret = WriteConsoleW(pipe, data, size, &i, NULL); , @@ -425,6 +440,7 @@ return -1; } ) +#endif if(!ret) return -1; return (int)i; // safe to cast since 'size' is signed @@ -1036,11 +1052,15 @@ // console might need a decoder if(consoleMode) { +#if QT_VERSION >= 0x050000 + dec = 0; +#else QT_WA( dec = 0; , dec = QTextCodec::codecForLocale()->makeDecoder(); ) +#endif } // pipe reader diff -Nru qca2-2.0.3/src/support/synchronizer.cpp qca2-2.1.0/src/support/synchronizer.cpp --- qca2-2.0.3/src/support/synchronizer.cpp 2008-05-16 20:41:50.000000000 +0000 +++ qca2-2.1.0/src/support/synchronizer.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -19,6 +19,7 @@ */ #include "qca_support.h" +#include "qca_safetimer.h" #include #include @@ -30,6 +31,10 @@ //#define TIMERFIXER_DEBUG +#ifdef TIMERFIXER_DEBUG +#include +#endif + namespace QCA { //---------------------------------------------------------------------------- @@ -58,7 +63,7 @@ static bool haveFixer(QObject *obj) { - return (qFindChild(obj) ? true: false); + return obj->findChild() ? true : false; } TimerFixer(QObject *_target, TimerFixer *_fp = 0) : QObject(_target) @@ -167,8 +172,8 @@ void fixTimers() { - edlink(); updateTimerList(); + edlink(); for(int n = 0; n < timers.count(); ++n) { @@ -180,7 +185,11 @@ int timeLeft = qMax(info.interval - info.time.elapsed(), 0); info.fixInterval = true; ed->unregisterTimer(info.id); - ed->registerTimer(info.id, timeLeft, target); +#if QT_VERSION >= 0x050000 + info.id = ed->registerTimer(timeLeft, Qt::CoarseTimer, target); +#else + info.id = ed->registerTimer(timeLeft, target); +#endif #ifdef TIMERFIXER_DEBUG printf("TimerFixer[%p] adjusting [%d] to %d\n", this, info.id, timeLeft); @@ -192,7 +201,8 @@ void hook(QObject *obj) { // don't watch a fixer or any object that already has one - if(obj == this || qobject_cast(obj) || haveFixer(obj)) + // SafeTimer has own method to fix timers, skip it too + if(obj == this || qobject_cast(obj) || haveFixer(obj) || qobject_cast(obj)) return; new TimerFixer(obj, this); @@ -239,7 +249,11 @@ #endif info.fixInterval = false; ed->unregisterTimer(info.id); - ed->registerTimer(info.id, info.interval, target); +#if QT_VERSION >= 0x050000 + info.id = ed->registerTimer(info.interval, Qt::CoarseTimer, target); +#else + info.id = ed->registerTimer(info.interval, target); +#endif } info.time.start(); @@ -258,7 +272,11 @@ int id = timers[n].id; for(int i = 0; i < edtimers.count(); ++i) { +#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) + if(edtimers[i].timerId == id) +#else if(edtimers[i].first == id) +#endif { found = true; break; @@ -278,7 +296,11 @@ // added? for(int n = 0; n < edtimers.count(); ++n) { +#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) + int id = edtimers[n].timerId; +#else int id = edtimers[n].first; +#endif bool found = false; for(int i = 0; i < timers.count(); ++i) { @@ -293,7 +315,11 @@ { TimerInfo info; info.id = id; +#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) + info.interval = edtimers[n].interval; +#else info.interval = edtimers[n].second; +#endif info.time.start(); timers += info; #ifdef TIMERFIXER_DEBUG @@ -338,12 +364,23 @@ QWaitCondition w; QThread *orig_thread; - Private(QObject *_obj, Synchronizer *_q) : QThread(_q), q(_q) - { - active = false; - obj = _obj; - loop = 0; - fixer = new TimerFixer(obj); + Private(QObject *_obj, Synchronizer *_q) + : QThread(_q) + , q(_q) + , active(false) + , do_quit(false) + , cond_met(false) + , obj(_obj) + , loop(0) + , agent(0) + , fixer(0) + , m(QMutex::NonRecursive) + , w() + , orig_thread(0) + { + // SafeTimer has own method to fix timers, skip it too + if (!qobject_cast(obj)) + fixer = new TimerFixer(obj); } ~Private() diff -Nru qca2-2.0.3/src/support/syncthread.cpp qca2-2.1.0/src/support/syncthread.cpp --- qca2-2.0.3/src/support/syncthread.cpp 2008-05-16 20:41:50.000000000 +0000 +++ qca2-2.1.0/src/support/syncthread.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -32,7 +32,11 @@ for(int n = 0; n < obj->methodCount(); ++n) { QMetaMethod m = obj->method(n); +#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) + QByteArray sig = m.methodSignature(); +#else QByteArray sig = m.signature(); +#endif int offset = sig.indexOf('('); if(offset == -1) continue; @@ -58,12 +62,20 @@ argTypes += args[n].typeName(); // get return type - int metatype = 0; + int metatype = QMetaType::Void; QByteArray retTypeName = methodReturnType(obj->metaObject(), method, argTypes); +#if QT_VERSION >= 0x050000 + if(!retTypeName.isEmpty() && retTypeName != "void") +#else if(!retTypeName.isEmpty()) +#endif { metatype = QMetaType::type(retTypeName.data()); - if(metatype == 0) // lookup failed +#if QT_VERSION >= 0x050000 + if(metatype == QMetaType::UnknownType) // lookup failed +#else + if(metatype == QMetaType::Void) // lookup failed +#endif return false; } @@ -73,7 +85,8 @@ QGenericReturnArgument retarg; QVariant retval; - if(metatype != 0) + + if(metatype != QMetaType::Void) { retval = QVariant(metatype, (const void *)0); retarg = QGenericReturnArgument(retval.typeName(), retval.data()); @@ -173,6 +186,7 @@ { QMutexLocker locker(&d->m); bool ret; + Q_UNUSED(ret); // In really ret is used. I use this hack to suppress a compiler warning ret = QMetaObject::invokeMethod(d->agent, "call_do", Qt::QueuedConnection, Q_ARG(QObject*, obj), Q_ARG(QByteArray, method), Q_ARG(QVariantList, args)); diff -Nru qca2-2.0.3/TODO qca2-2.1.0/TODO --- qca2-2.0.3/TODO 2010-11-27 21:14:12.000000000 +0000 +++ qca2-2.1.0/TODO 2014-11-06 08:15:45.000000000 +0000 @@ -1,3 +1,15 @@ +* 2.2.0 +- New plugin qca-gpgme to replace current qca-gnupg. qca-gnupg requires + to have gpg binary which can be any 1.4.x or 2.x. Them behaviour is + different. gpg2 requires gpg-agent to ask user for passphrase. No + correct way to check that key requires passphrase. + +- Add an interface for gnupg to handle keys (create and remove, maybe + something else). + +- Add ECDSA support to qca-ossl plugin + +-- Obsoletes * 2.0.4 handle mac universal builds for arches besides x86 and ppc (e.g. x86_64) use rpath? diff -Nru qca2-2.0.3/tools/CMakeLists.txt qca2-2.1.0/tools/CMakeLists.txt --- qca2-2.0.3/tools/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/tools/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,5 @@ +if(Qt5Core_FOUND) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}") +endif() +add_subdirectory(mozcerts) +add_subdirectory(qcatool) diff -Nru qca2-2.0.3/tools/mozcerts/CMakeLists.txt qca2-2.1.0/tools/mozcerts/CMakeLists.txt --- qca2-2.0.3/tools/mozcerts/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/tools/mozcerts/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,12 @@ +project(mozcerts) + +set(mozcerts_bin_SRCS main.cpp) + +add_executable(${MOZCERTS_NAME} ${mozcerts_bin_SRCS}) + +target_link_qca_libraries(${MOZCERTS_NAME}) + +if(NOT DEVELOPER_MODE) + install(TARGETS ${MOZCERTS_NAME} DESTINATION "${QCA_BINARY_INSTALL_DIR}") + install_pdb(${MOZCERTS_NAME} ${QCA_BINARY_INSTALL_DIR}) +endif() diff -Nru qca2-2.0.3/tools/mozcerts/mozcerts.pro qca2-2.1.0/tools/mozcerts/mozcerts.pro --- qca2-2.0.3/tools/mozcerts/mozcerts.pro 2009-04-24 21:12:15.000000000 +0000 +++ qca2-2.1.0/tools/mozcerts/mozcerts.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -QT -= gui -CONFIG += console -CONFIG -= app_bundle -include(../../app.pri) - -SOURCES += main.cpp diff -Nru qca2-2.0.3/tools/qcatool/CMakeLists.txt qca2-2.1.0/tools/qcatool/CMakeLists.txt --- qca2-2.0.3/tools/qcatool/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/tools/qcatool/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,16 @@ +project(qcatool) + +set(qcatool_moc_SRCS main.cpp) + +MY_AUTOMOC( qcatool_moc_SRCS ) + +set(qcatool_bin_SRCS ${qcatool_moc_SRCS}) + +add_executable(${QCA_TOOL_NAME} ${qcatool_bin_SRCS}) + +target_link_qca_libraries(${QCA_TOOL_NAME}) + +if(NOT DEVELOPER_MODE) + install(TARGETS ${QCA_TOOL_NAME} DESTINATION "${QCA_BINARY_INSTALL_DIR}") + install_pdb(${QCA_TOOL_NAME} ${QCA_BINARY_INSTALL_DIR}) +endif() diff -Nru qca2-2.0.3/tools/qcatool/main.cpp qca2-2.1.0/tools/qcatool/main.cpp --- qca2-2.0.3/tools/qcatool/main.cpp 2010-11-27 21:14:12.000000000 +0000 +++ qca2-2.1.0/tools/qcatool/main.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -25,10 +25,15 @@ #include #include #include +#include + +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif const char *const APPNAME = "qcatool"; -const char *const EXENAME = "qcatool2"; -const char *const VERSION = "2.0.3"; +const char *const EXENAME = "qcatool"; +const char *const VERSION = QCA_VERSION_STR; static QStringList wrapstring(const QString &str, int width) { @@ -1301,14 +1306,22 @@ static bool variant_is_bool(const QVariant &in) { +#if QT_VERSION >= 0x050000 + if(in.canConvert() && string_is_bool(in.toString())) +#else if(qVariantCanConvert(in) && string_is_bool(in.toString())) +#endif return true; return false; } static bool variant_is_int(const QVariant &in) { +#if QT_VERSION >= 0x050000 + if(in.canConvert() && string_is_int(in.toString())) +#else if(qVariantCanConvert(in) && string_is_int(in.toString())) +#endif return true; return false; } @@ -1418,7 +1431,11 @@ newval = prompt_for_bool(QString("bool ") + prompt, val.toBool()); else if(variant_is_int(val)) newval = prompt_for_int(QString("int ") + prompt, val.toInt()); +#if QT_VERSION >= 0x050000 + else if(val.canConvert()) +#else else if(qVariantCanConvert(val)) +#endif newval = prompt_for_string(QString("string ") + prompt, val.toString()); else continue; // skip bogus fields @@ -2843,7 +2860,7 @@ } // help - if(args[0] == "help" || args[0] == "--help" || args[0] == "-h") + if(args.isEmpty() || args[0] == "help" || args[0] == "--help" || args[0] == "-h") { usage(); return 0; @@ -2864,13 +2881,12 @@ // show plugins if(args[0] == "plugins") { - printf("Qt Library Paths:\n"); - QStringList paths = QCoreApplication::libraryPaths(); + QStringList paths = QCA::pluginPaths(); if(!paths.isEmpty()) { for(int n = 0; n < paths.count(); ++n) { - printf(" %s\n", qPrintable(paths[n])); + printf(" %s\n", qPrintable(QDir::toNativeSeparators(paths[n]))); } } else diff -Nru qca2-2.0.3/tools/qcatool/qcatool.pro qca2-2.1.0/tools/qcatool/qcatool.pro --- qca2-2.0.3/tools/qcatool/qcatool.pro 2009-04-24 21:12:15.000000000 +0000 +++ qca2-2.1.0/tools/qcatool/qcatool.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -QT -= gui -CONFIG += console -CONFIG -= app_bundle -include(../../app.pri) -TARGET = qcatool2 -DESTDIR = ../../bin - -SOURCES += main.cpp - -unix:{ - target.path=$$BINDIR - INSTALLS += target -} diff -Nru qca2-2.0.3/tools/tools.pro qca2-2.1.0/tools/tools.pro --- qca2-2.0.3/tools/tools.pro 2005-04-21 13:26:38.000000000 +0000 +++ qca2-2.1.0/tools/tools.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -TEMPLATE = subdirs -SUBDIRS = mozcerts qcatool - diff -Nru qca2-2.0.3/unittest/base64unittest/base64unittest.cpp qca2-2.1.0/unittest/base64unittest/base64unittest.cpp --- qca2-2.0.3/unittest/base64unittest/base64unittest.cpp 2007-06-13 02:30:43.000000000 +0000 +++ qca2-2.1.0/unittest/base64unittest/base64unittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -28,6 +28,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class Base64UnitTest : public QObject { Q_OBJECT @@ -46,7 +50,6 @@ void Base64UnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void Base64UnitTest::cleanupTestCase() diff -Nru qca2-2.0.3/unittest/base64unittest/base64unittest.pro qca2-2.1.0/unittest/base64unittest/base64unittest.pro --- qca2-2.0.3/unittest/base64unittest/base64unittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/base64unittest/base64unittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = base64unittest -test.commands = ./base64unittest - -# Input -SOURCES += base64unittest.cpp diff -Nru qca2-2.0.3/unittest/base64unittest/CMakeLists.txt qca2-2.1.0/unittest/base64unittest/CMakeLists.txt --- qca2-2.0.3/unittest/base64unittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/base64unittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set(base64unittest_bin_SRCS base64unittest.cpp) + +MY_AUTOMOC( base64unittest_bin_SRCS ) + +add_executable(base64unittest ${base64unittest_bin_SRCS} ) + +target_link_qca_test_libraries(base64unittest) + +add_qca_test(base64unittest "Base64") diff -Nru qca2-2.0.3/unittest/bigintunittest/bigintunittest.cpp qca2-2.1.0/unittest/bigintunittest/bigintunittest.cpp --- qca2-2.0.3/unittest/bigintunittest/bigintunittest.cpp 2007-04-13 19:19:18.000000000 +0000 +++ qca2-2.1.0/unittest/bigintunittest/bigintunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class BigIntUnitTest : public QObject { Q_OBJECT @@ -41,7 +45,6 @@ void BigIntUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void BigIntUnitTest::cleanupTestCase() diff -Nru qca2-2.0.3/unittest/bigintunittest/bigintunittest.pro qca2-2.1.0/unittest/bigintunittest/bigintunittest.pro --- qca2-2.0.3/unittest/bigintunittest/bigintunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/bigintunittest/bigintunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = bigintunittest -test.commands = ./bigintunittest - -# Input -SOURCES += bigintunittest.cpp diff -Nru qca2-2.0.3/unittest/bigintunittest/CMakeLists.txt qca2-2.1.0/unittest/bigintunittest/CMakeLists.txt --- qca2-2.0.3/unittest/bigintunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/bigintunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set(bigintunittest_bin_SRCS bigintunittest.cpp) + +MY_AUTOMOC( bigintunittest_bin_SRCS ) + +add_executable(bigintunittest ${bigintunittest_bin_SRCS} ) + +target_link_qca_test_libraries(bigintunittest) + +add_qca_test(bigintunittest "BigInteger") diff -Nru qca2-2.0.3/unittest/certunittest/certs/QcaTestClientCert.pem qca2-2.1.0/unittest/certunittest/certs/QcaTestClientCert.pem --- qca2-2.0.3/unittest/certunittest/certs/QcaTestClientCert.pem 2007-07-22 04:22:00.000000000 +0000 +++ qca2-2.1.0/unittest/certunittest/certs/QcaTestClientCert.pem 2014-11-06 08:15:45.000000000 +0000 @@ -1,84 +1,78 @@ Certificate: Data: Version: 3 (0x2) - Serial Number: - b6:7b:e8:90:4d:70:7d:80 - Signature Algorithm: sha1WithRSAEncryption + Serial Number: 13149359243510447488 (0xb67be8904d707d80) + Signature Algorithm: sha1WithRSAEncryption Issuer: C=AU, ST=Australian Capital Territory, O=Qca Development and Test, OU=Certificate Generation Section, CN=Qca Test Root Certificate/emailAddress=testonly@test.example.com Validity - Not Before: Jul 22 03:30:29 2007 GMT - Not After : Jul 20 03:30:29 2012 GMT - Subject: C=US, ST=Kalifornia, L=QcaLand, O=Qca Development and Test, OU=Certificate Generation Section, CN=Qca Test Client Certificate/emailAddress=client@test.example.com + Not Before: Jul 31 15:14:28 2013 GMT + Not After : Jul 26 15:14:28 2033 GMT + Subject: C=US, ST=Kalifornia, O=Qca Development and Test, OU=Certificate Generation Section, CN=Qca Test Client Certificate/emailAddress=client@test.example.com, L=QcaLand Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:b0:67:99:c9:d4:42:eb:f5:a6:25:7e:99:31:4e: - d7:71:e2:15:95:8b:6a:e9:13:c6:0a:6e:cd:5d:ce: - 23:c8:b0:4a:af:d6:d3:ef:3d:09:23:97:6d:ed:49: - 0a:2c:e4:9d:a2:50:78:bc:a5:94:79:45:b1:b0:85: - 3a:02:1b:5f:f4:be:94:9e:a1:d1:a4:9c:31:02:ed: - 62:3f:b3:f1:1a:5b:7d:31:27:ae:7b:f1:67:bd:60: - 86:27:34:80:96:53:04:00:4e:d8:f2:b3:bb:6e:62: - ab:51:ee:f9:25:ad:de:3a:4f:e5:1e:d5:42:28:e8: - 73:96:4c:1f:06:42:ee:d8:8b + Public-Key: (1024 bit) + Modulus: + 00:c8:de:85:e7:c6:22:b7:9c:d3:75:15:dc:78:90: + 4f:c9:ea:dc:19:d1:fb:93:b7:56:4c:d1:19:cc:06: + a4:9c:b6:b7:a3:a5:e3:27:70:48:a1:3d:ca:c1:2e: + c8:58:88:ac:31:4f:59:f9:47:83:8a:83:c1:15:f2: + b9:cb:58:3f:15:3c:1d:5d:83:df:b0:3f:06:66:e4: + 35:96:c3:47:4b:ce:c5:8a:da:03:30:be:a7:0b:28: + 56:88:7a:b5:25:3b:5e:37:ec:57:02:69:9e:d5:ba: + c8:be:b6:71:5c:1e:c5:2c:d9:57:c7:fd:f2:ce:9a: + f8:08:68:bc:a2:6f:d6:b0:11 Exponent: 65537 (0x10001) X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE Netscape Cert Type: SSL Client, S/MIME X509v3 Key Usage: Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment X509v3 Extended Key Usage: - TLS Web Client Authentication, E-mail Protection + E-mail Protection, TLS Web Client Authentication Netscape Comment: - This certificate was issued for testing only! + OpenSSL Generated Certificate X509v3 Subject Key Identifier: - B2:7F:D3:11:39:23:BE:1D:C4:6F:53:CE:81:AF:F1:D4:80:01:F6:F6 + 1E:60:4E:03:12:7D:28:7B:A4:04:27:A9:61:B4:28:A2:D0:9B:50:D1 X509v3 Authority Key Identifier: - keyid:51:3F:F2:14:6E:49:6A:DC:41:B8:15:B5:A0:86:F4:2E:E4:F5:45:F8 - DirName:/C=AU/ST=Australian Capital Territory/O=Qca Development and Test/OU=Certificate Generation Section/CN=Qca Test Root Certificate/emailAddress=testonly@test.example.com - serial:B6:7B:E8:90:4D:70:7D:7F + keyid:F6:1C:45:1D:E1:B0:45:81:38:C6:05:68:C1:A7:CB:0F:7A:DE:03:63 X509v3 Subject Alternative Name: email:client@test.example.com X509v3 Issuer Alternative Name: email:testonly@test.example.com Signature Algorithm: sha1WithRSAEncryption - 36:9a:0e:7a:a4:d3:6b:e8:d6:1b:ba:34:89:a6:dc:26:01:28: - 71:7d:28:71:22:79:ae:3b:27:2a:d5:6c:d6:99:93:c0:01:45: - 5d:78:2a:83:05:a8:eb:41:be:62:37:92:ff:b9:41:3d:37:4c: - 25:85:4b:c8:c3:ba:cd:71:06:18:12:a3:7f:2d:17:90:b2:87: - e6:ca:86:fb:dc:d0:ef:1d:d6:b3:86:b3:28:72:45:fa:bb:dd: - 32:06:44:b1:ed:35:b6:c4:6b:54:88:49:9d:3a:2e:fa:37:3b: - 84:98:de:68:14:ac:2f:37:42:21:f5:b9:27:18:1b:5d:5e:ba: - 74:09 + 55:1e:ad:df:e4:b4:d6:43:2e:75:cd:b8:3b:07:06:62:c4:15: + 1f:f9:ac:61:a2:e7:35:66:a2:70:43:cb:2d:25:2d:10:16:6d: + 44:84:84:80:82:71:80:a3:ba:ca:9c:4d:f0:69:9b:11:0d:93: + 7b:69:e8:b9:e5:1f:b8:f1:63:32:0f:2b:0e:97:99:06:23:b3: + 8f:cb:5e:5c:5b:63:cf:e8:74:34:42:f5:50:32:4b:b0:6e:bb: + 70:fb:70:00:d3:04:2c:a9:28:c7:0b:9d:53:03:86:43:a4:8c: + 8e:27:a1:d8:eb:a6:f9:71:dc:3b:68:c9:c2:49:be:1a:56:41: + 19:85 -----BEGIN CERTIFICATE----- -MIIFDzCCBHigAwIBAgIJALZ76JBNcH2AMA0GCSqGSIb3DQEBBQUAMIHOMQswCQYD -VQQGEwJBVTElMCMGA1UECBMcQXVzdHJhbGlhbiBDYXBpdGFsIFRlcnJpdG9yeTEh -MB8GA1UEChMYUWNhIERldmVsb3BtZW50IGFuZCBUZXN0MScwJQYDVQQLEx5DZXJ0 -aWZpY2F0ZSBHZW5lcmF0aW9uIFNlY3Rpb24xIjAgBgNVBAMTGVFjYSBUZXN0IFJv +MIIEJDCCA42gAwIBAgIJALZ76JBNcH2AMA0GCSqGSIb3DQEBBQUAMIHOMQswCQYD +VQQGEwJBVTElMCMGA1UECAwcQXVzdHJhbGlhbiBDYXBpdGFsIFRlcnJpdG9yeTEh +MB8GA1UECgwYUWNhIERldmVsb3BtZW50IGFuZCBUZXN0MScwJQYDVQQLDB5DZXJ0 +aWZpY2F0ZSBHZW5lcmF0aW9uIFNlY3Rpb24xIjAgBgNVBAMMGVFjYSBUZXN0IFJv b3QgQ2VydGlmaWNhdGUxKDAmBgkqhkiG9w0BCQEWGXRlc3Rvbmx5QHRlc3QuZXhh -bXBsZS5jb20wHhcNMDcwNzIyMDMzMDI5WhcNMTIwNzIwMDMzMDI5WjCBzjELMAkG -A1UEBhMCVVMxEzARBgNVBAgTCkthbGlmb3JuaWExEDAOBgNVBAcTB1FjYUxhbmQx -ITAfBgNVBAoTGFFjYSBEZXZlbG9wbWVudCBhbmQgVGVzdDEnMCUGA1UECxMeQ2Vy -dGlmaWNhdGUgR2VuZXJhdGlvbiBTZWN0aW9uMSQwIgYDVQQDExtRY2EgVGVzdCBD -bGllbnQgQ2VydGlmaWNhdGUxJjAkBgkqhkiG9w0BCQEWF2NsaWVudEB0ZXN0LmV4 -YW1wbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwZ5nJ1ELr9aYl -fpkxTtdx4hWVi2rpE8YKbs1dziPIsEqv1tPvPQkjl23tSQos5J2iUHi8pZR5RbGw -hToCG1/0vpSeodGknDEC7WI/s/EaW30xJ6578We9YIYnNICWUwQATtjys7tuYqtR -7vklrd46T+Ue1UIo6HOWTB8GQu7YiwIDAQABo4IB8TCCAe0wEQYJYIZIAYb4QgEB -BAQDAgWgMAsGA1UdDwQEAwIE8DAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH -AwQwPAYJYIZIAYb4QgENBC8WLVRoaXMgY2VydGlmaWNhdGUgd2FzIGlzc3VlZCBm -b3IgdGVzdGluZyBvbmx5ITAdBgNVHQ4EFgQUsn/TETkjvh3Eb1POga/x1IAB9vYw -ggEDBgNVHSMEgfswgfiAFFE/8hRuSWrcQbgVtaCG9C7k9UX4oYHUpIHRMIHOMQsw -CQYDVQQGEwJBVTElMCMGA1UECBMcQXVzdHJhbGlhbiBDYXBpdGFsIFRlcnJpdG9y -eTEhMB8GA1UEChMYUWNhIERldmVsb3BtZW50IGFuZCBUZXN0MScwJQYDVQQLEx5D -ZXJ0aWZpY2F0ZSBHZW5lcmF0aW9uIFNlY3Rpb24xIjAgBgNVBAMTGVFjYSBUZXN0 -IFJvb3QgQ2VydGlmaWNhdGUxKDAmBgkqhkiG9w0BCQEWGXRlc3Rvbmx5QHRlc3Qu -ZXhhbXBsZS5jb22CCQC2e+iQTXB9fzAiBgNVHREEGzAZgRdjbGllbnRAdGVzdC5l -eGFtcGxlLmNvbTAkBgNVHRIEHTAbgRl0ZXN0b25seUB0ZXN0LmV4YW1wbGUuY29t -MA0GCSqGSIb3DQEBBQUAA4GBADaaDnqk02vo1hu6NImm3CYBKHF9KHEiea47JyrV -bNaZk8ABRV14KoMFqOtBvmI3kv+5QT03TCWFS8jDus1xBhgSo38tF5Cyh+bKhvvc -0O8d1rOGsyhyRfq73TIGRLHtNbbEa1SISZ06Lvo3O4SY3mgUrC83QiH1uScYG11e -unQJ +bXBsZS5jb20wHhcNMTMwNzMxMTUxNDI4WhcNMzMwNzI2MTUxNDI4WjCBzjELMAkG +A1UEBhMCVVMxEzARBgNVBAgMCkthbGlmb3JuaWExITAfBgNVBAoMGFFjYSBEZXZl +bG9wbWVudCBhbmQgVGVzdDEnMCUGA1UECwweQ2VydGlmaWNhdGUgR2VuZXJhdGlv +biBTZWN0aW9uMSQwIgYDVQQDDBtRY2EgVGVzdCBDbGllbnQgQ2VydGlmaWNhdGUx +JjAkBgkqhkiG9w0BCQEWF2NsaWVudEB0ZXN0LmV4YW1wbGUuY29tMRAwDgYDVQQH +DAdRY2FMYW5kMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDI3oXnxiK3nNN1 +Fdx4kE/J6twZ0fuTt1ZM0RnMBqSctrejpeMncEihPcrBLshYiKwxT1n5R4OKg8EV +8rnLWD8VPB1dg9+wPwZm5DWWw0dLzsWK2gMwvqcLKFaIerUlO1437FcCaZ7Vusi+ +tnFcHsUs2VfH/fLOmvgIaLyib9awEQIDAQABo4IBBjCCAQIwCQYDVR0TBAIwADAR +BglghkgBhvhCAQEEBAMCBaAwCwYDVR0PBAQDAgTwMB0GA1UdJQQWMBQGCCsGAQUF +BwMEBggrBgEFBQcDAjAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg +Q2VydGlmaWNhdGUwHQYDVR0OBBYEFB5gTgMSfSh7pAQnqWG0KKLQm1DRMB8GA1Ud +IwQYMBaAFPYcRR3hsEWBOMYFaMGnyw963gNjMCIGA1UdEQQbMBmBF2NsaWVudEB0 +ZXN0LmV4YW1wbGUuY29tMCQGA1UdEgQdMBuBGXRlc3Rvbmx5QHRlc3QuZXhhbXBs +ZS5jb20wDQYJKoZIhvcNAQEFBQADgYEAVR6t3+S01kMudc24OwcGYsQVH/msYaLn +NWaicEPLLSUtEBZtRISEgIJxgKO6ypxN8GmbEQ2Te2noueUfuPFjMg8rDpeZBiOz +j8teXFtjz+h0NEL1UDJLsG67cPtwANMELKkoxwudUwOGQ6SMjieh2Oum+XHcO2jJ +wkm+GlZBGYU= -----END CERTIFICATE----- diff -Nru qca2-2.0.3/unittest/certunittest/certs/QcaTestRootCert.pem qca2-2.1.0/unittest/certunittest/certs/QcaTestRootCert.pem --- qca2-2.0.3/unittest/certunittest/certs/QcaTestRootCert.pem 2007-07-22 04:22:00.000000000 +0000 +++ qca2-2.1.0/unittest/certunittest/certs/QcaTestRootCert.pem 2014-11-06 08:15:45.000000000 +0000 @@ -1,83 +1,23 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - b6:7b:e8:90:4d:70:7d:7f - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=AU, ST=Australian Capital Territory, O=Qca Development and Test, OU=Certificate Generation Section, CN=Qca Test Root Certificate/emailAddress=testonly@test.example.com - Validity - Not Before: Jul 22 01:48:15 2007 GMT - Not After : Jan 11 01:48:15 2013 GMT - Subject: C=AU, ST=Australian Capital Territory, O=Qca Development and Test, OU=Certificate Generation Section, CN=Qca Test Root Certificate/emailAddress=testonly@test.example.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:a1:a2:3e:9e:53:de:98:2c:2f:9e:fa:12:fa:54: - 6c:0a:0a:e8:23:f4:25:86:24:da:ed:6f:18:e2:6e: - 1e:ae:36:4e:45:63:0d:5b:20:aa:09:70:55:b9:a1: - 08:e3:cb:3d:e3:c3:ca:34:c3:c7:90:30:50:51:d6: - 30:b3:3f:12:70:99:ae:2d:c8:2e:ea:c6:c6:43:e5: - 9f:30:ab:e3:5b:d9:b0:91:92:c2:94:79:79:9b:87: - 05:60:01:8c:f1:0e:75:f7:82:d6:f9:e6:fb:45:b8: - 4d:53:eb:66:a0:98:93:28:d7:1e:db:43:3d:84:9b: - 2b:1f:ee:af:d8:23:b5:a1:cd - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE - X509v3 Key Usage: - Digital Signature, Non Repudiation, Key Encipherment, Certificate Sign, CRL Sign - X509v3 Subject Key Identifier: - 51:3F:F2:14:6E:49:6A:DC:41:B8:15:B5:A0:86:F4:2E:E4:F5:45:F8 - X509v3 Authority Key Identifier: - keyid:51:3F:F2:14:6E:49:6A:DC:41:B8:15:B5:A0:86:F4:2E:E4:F5:45:F8 - DirName:/C=AU/ST=Australian Capital Territory/O=Qca Development and Test/OU=Certificate Generation Section/CN=Qca Test Root Certificate/emailAddress=testonly@test.example.com - serial:B6:7B:E8:90:4D:70:7D:7F - - X509v3 Subject Alternative Name: - email:testonly@test.example.com - X509v3 Issuer Alternative Name: - email:testonly@test.example.com - Netscape Cert Type: - SSL CA, S/MIME CA, Object Signing CA - Netscape Comment: - This certificate was issued for testing only! - Signature Algorithm: sha1WithRSAEncryption - 0f:b6:d9:37:b3:d8:bb:69:1e:ce:1a:35:29:1b:ce:d5:38:3e: - 29:13:17:91:5b:1f:9c:59:52:67:d3:05:91:2a:e8:7f:b9:76: - 1a:01:f6:9f:07:74:be:e4:37:87:d0:9b:84:c6:81:3f:c4:96: - 52:46:80:52:a7:7b:14:fd:f6:4d:23:15:b6:7e:2a:a6:d7:90: - 97:4f:22:7c:3e:7d:12:84:28:a4:9a:30:67:77:16:f7:80:0f: - 6a:d0:82:fc:f6:91:39:14:d2:a5:de:18:f1:bb:38:f1:98:88: - 1c:13:63:e9:a3:d7:b5:b0:70:f2:82:58:bd:ef:3c:02:42:a0: - 7e:c9 -----BEGIN CERTIFICATE----- -MIIFAzCCBGygAwIBAgIJALZ76JBNcH1/MA0GCSqGSIb3DQEBBQUAMIHOMQswCQYD -VQQGEwJBVTElMCMGA1UECBMcQXVzdHJhbGlhbiBDYXBpdGFsIFRlcnJpdG9yeTEh -MB8GA1UEChMYUWNhIERldmVsb3BtZW50IGFuZCBUZXN0MScwJQYDVQQLEx5DZXJ0 -aWZpY2F0ZSBHZW5lcmF0aW9uIFNlY3Rpb24xIjAgBgNVBAMTGVFjYSBUZXN0IFJv +MIID3TCCA0agAwIBAgIJALZ76JBNcH1/MA0GCSqGSIb3DQEBBQUAMIHOMQswCQYD +VQQGEwJBVTElMCMGA1UECAwcQXVzdHJhbGlhbiBDYXBpdGFsIFRlcnJpdG9yeTEh +MB8GA1UECgwYUWNhIERldmVsb3BtZW50IGFuZCBUZXN0MScwJQYDVQQLDB5DZXJ0 +aWZpY2F0ZSBHZW5lcmF0aW9uIFNlY3Rpb24xIjAgBgNVBAMMGVFjYSBUZXN0IFJv b3QgQ2VydGlmaWNhdGUxKDAmBgkqhkiG9w0BCQEWGXRlc3Rvbmx5QHRlc3QuZXhh -bXBsZS5jb20wHhcNMDcwNzIyMDE0ODE1WhcNMTMwMTExMDE0ODE1WjCBzjELMAkG -A1UEBhMCQVUxJTAjBgNVBAgTHEF1c3RyYWxpYW4gQ2FwaXRhbCBUZXJyaXRvcnkx -ITAfBgNVBAoTGFFjYSBEZXZlbG9wbWVudCBhbmQgVGVzdDEnMCUGA1UECxMeQ2Vy -dGlmaWNhdGUgR2VuZXJhdGlvbiBTZWN0aW9uMSIwIAYDVQQDExlRY2EgVGVzdCBS +bXBsZS5jb20wHhcNMTMwNzMxMTM0MDIwWhcNMzMwNzI2MTM0MDIwWjCBzjELMAkG +A1UEBhMCQVUxJTAjBgNVBAgMHEF1c3RyYWxpYW4gQ2FwaXRhbCBUZXJyaXRvcnkx +ITAfBgNVBAoMGFFjYSBEZXZlbG9wbWVudCBhbmQgVGVzdDEnMCUGA1UECwweQ2Vy +dGlmaWNhdGUgR2VuZXJhdGlvbiBTZWN0aW9uMSIwIAYDVQQDDBlRY2EgVGVzdCBS b290IENlcnRpZmljYXRlMSgwJgYJKoZIhvcNAQkBFhl0ZXN0b25seUB0ZXN0LmV4 -YW1wbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQChoj6eU96YLC+e -+hL6VGwKCugj9CWGJNrtbxjibh6uNk5FYw1bIKoJcFW5oQjjyz3jw8o0w8eQMFBR -1jCzPxJwma4tyC7qxsZD5Z8wq+Nb2bCRksKUeXmbhwVgAYzxDnX3gtb55vtFuE1T -62agmJMo1x7bQz2Emysf7q/YI7WhzQIDAQABo4IB5TCCAeEwDwYDVR0TAQH/BAUw -AwEB/zALBgNVHQ8EBAMCAeYwHQYDVR0OBBYEFFE/8hRuSWrcQbgVtaCG9C7k9UX4 -MIIBAwYDVR0jBIH7MIH4gBRRP/IUbklq3EG4FbWghvQu5PVF+KGB1KSB0TCBzjEL -MAkGA1UEBhMCQVUxJTAjBgNVBAgTHEF1c3RyYWxpYW4gQ2FwaXRhbCBUZXJyaXRv -cnkxITAfBgNVBAoTGFFjYSBEZXZlbG9wbWVudCBhbmQgVGVzdDEnMCUGA1UECxMe -Q2VydGlmaWNhdGUgR2VuZXJhdGlvbiBTZWN0aW9uMSIwIAYDVQQDExlRY2EgVGVz -dCBSb290IENlcnRpZmljYXRlMSgwJgYJKoZIhvcNAQkBFhl0ZXN0b25seUB0ZXN0 -LmV4YW1wbGUuY29tggkAtnvokE1wfX8wJAYDVR0RBB0wG4EZdGVzdG9ubHlAdGVz -dC5leGFtcGxlLmNvbTAkBgNVHRIEHTAbgRl0ZXN0b25seUB0ZXN0LmV4YW1wbGUu -Y29tMBEGCWCGSAGG+EIBAQQEAwIABzA8BglghkgBhvhCAQ0ELxYtVGhpcyBjZXJ0 -aWZpY2F0ZSB3YXMgaXNzdWVkIGZvciB0ZXN0aW5nIG9ubHkhMA0GCSqGSIb3DQEB -BQUAA4GBAA+22Tez2LtpHs4aNSkbztU4PikTF5FbH5xZUmfTBZEq6H+5dhoB9p8H -dL7kN4fQm4TGgT/EllJGgFKnexT99k0jFbZ+KqbXkJdPInw+fRKEKKSaMGd3FveA -D2rQgvz2kTkU0qXeGPG7OPGYiBwTY+mj17WwcPKCWL3vPAJCoH7J +YW1wbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVfdLTilBbqSM+ +APq0Mki4feTOcgpp7GmuuyA6xGT5gPlFuqGv0dKxcNBZQBFX5/j4padEq5Yk7nnH +QfoIFJi2eqW7WRNmzWIB8w/eju43QvA9quHfg75K3c65lO/GUzVFQPjw9CQ6Abi2 +MAaFpufqmYCKpbkTXJgOxK/fa6t82wIDAQABo4HAMIG9MA8GA1UdEwEB/wQFMAMB +Af8wCwYDVR0PBAQDAgHmMB0GA1UdDgQWBBT2HEUd4bBFgTjGBWjBp8sPet4DYzAf +BgNVHSMEGDAWgBT2HEUd4bBFgTjGBWjBp8sPet4DYzARBglghkgBhvhCAQEEBAMC +AQYwJAYDVR0RBB0wG4EZdGVzdG9ubHlAdGVzdC5leGFtcGxlLmNvbTAkBgNVHRIE +HTAbgRl0ZXN0b25seUB0ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBBQUAA4GB +AKmYXyuCv2VfRjeQzy2RxbfAM9oF8bP1mkkM9SfkxZp7UHKlp3tH2HRGZ4SdR67b +DLH7Rb6zxAq//K8wrE5NTQqMRu6uIwkO1yM2+iawPE8soCDyISQeAQX7lQnRSJ94 +prpJmD4R+i9/RY7TlpvhI6TeYZcgt7QC5cDZIgd0rdtY -----END CERTIFICATE----- diff -Nru qca2-2.0.3/unittest/certunittest/certs/QcaTestServerCert.pem qca2-2.1.0/unittest/certunittest/certs/QcaTestServerCert.pem --- qca2-2.0.3/unittest/certunittest/certs/QcaTestServerCert.pem 2007-07-22 04:22:00.000000000 +0000 +++ qca2-2.1.0/unittest/certunittest/certs/QcaTestServerCert.pem 2014-11-06 08:15:45.000000000 +0000 @@ -1,84 +1,75 @@ Certificate: Data: Version: 3 (0x2) - Serial Number: - b6:7b:e8:90:4d:70:7d:81 - Signature Algorithm: sha1WithRSAEncryption + Serial Number: 13149359243510447489 (0xb67be8904d707d81) + Signature Algorithm: sha1WithRSAEncryption Issuer: C=AU, ST=Australian Capital Territory, O=Qca Development and Test, OU=Certificate Generation Section, CN=Qca Test Root Certificate/emailAddress=testonly@test.example.com Validity - Not Before: Jul 22 06:05:39 2007 GMT - Not After : Jul 20 06:05:39 2012 GMT - Subject: C=IL, ST=Qca Province, L=TLS City, O=Qca Development and Test, OU=Server Management Section, CN=Qca Server Test certificate/emailAddress=server@test.example.com + Not Before: Jul 31 15:23:25 2013 GMT + Not After : Jul 26 15:23:25 2033 GMT + Subject: C=IL, ST=Qca Province, O=Qca Development and Test, OU=Server Management Section, CN=Qca Server Test certificate/emailAddress=server@test.example.com, L=TLS City Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:c1:59:ff:39:1d:96:af:d8:55:cd:89:a1:19:14: - a0:63:33:2a:1c:09:92:07:ea:8e:64:91:17:19:3a: - ca:6d:a8:2a:81:7d:a6:48:6a:8c:04:d5:dc:9b:b0: - 86:44:8c:65:27:9c:a6:63:ec:f0:f6:f2:03:76:4e: - 46:72:20:3c:eb:ac:c5:a7:4d:fa:36:84:a7:a1:45: - c2:54:43:b9:5d:88:17:b6:b2:6c:af:ce:9c:e2:2e: - 65:e2:82:4c:02:a4:4d:91:58:7d:16:14:dc:29:1c: - 1c:bc:c5:89:ac:e0:ea:f7:2d:9a:fe:d8:ca:53:98: - ce:ab:3a:c2:60:ad:91:e9:4f + Public-Key: (1024 bit) + Modulus: + 00:aa:8a:7c:bd:45:52:83:ef:2b:51:51:a5:f1:ee: + ed:21:1c:2d:a5:5d:4b:af:fa:15:ed:b6:95:ba:59: + d5:d6:53:ab:b1:ee:98:41:fa:e2:30:cd:b6:e0:1e: + 60:35:e9:fc:63:16:18:5e:d9:9f:32:45:74:6a:b3: + a2:69:df:ea:88:4a:62:54:3b:8f:e8:76:de:9e:94: + 32:12:7e:67:08:a8:98:a1:3e:64:ab:6b:80:5b:be: + 51:69:6d:dd:77:80:f1:3c:9d:c9:06:ff:5d:5a:7f: + fd:06:14:db:32:29:cf:46:77:ef:3c:ae:43:d8:0e: + 90:93:df:85:74:bc:e3:bf:fd Exponent: 65537 (0x10001) X509v3 extensions: - Netscape Cert Type: - SSL Server + X509v3 Basic Constraints: + CA:FALSE X509v3 Key Usage: Digital Signature, Non Repudiation, Key Encipherment X509v3 Extended Key Usage: TLS Web Server Authentication Netscape Comment: - This certificate was issued for qca server testing only! + OpenSSL Generated Certificate X509v3 Subject Key Identifier: - 3C:AA:B3:B7:59:75:DB:2C:95:AF:B4:81:FA:56:40:D8:98:6B:27:CB + 81:98:70:C8:B8:1E:AB:53:E7:2D:04:46:B6:57:90:AA:0D:3E:AB:1A X509v3 Authority Key Identifier: - keyid:51:3F:F2:14:6E:49:6A:DC:41:B8:15:B5:A0:86:F4:2E:E4:F5:45:F8 - DirName:/C=AU/ST=Australian Capital Territory/O=Qca Development and Test/OU=Certificate Generation Section/CN=Qca Test Root Certificate/emailAddress=testonly@test.example.com - serial:B6:7B:E8:90:4D:70:7D:7F + keyid:F6:1C:45:1D:E1:B0:45:81:38:C6:05:68:C1:A7:CB:0F:7A:DE:03:63 X509v3 Subject Alternative Name: email:server@test.example.com X509v3 Issuer Alternative Name: email:testonly@test.example.com Signature Algorithm: sha1WithRSAEncryption - 0f:0b:9f:d9:38:62:20:40:a5:ff:0c:7b:d5:21:82:dd:9a:74: - 94:81:72:aa:94:fc:1b:e0:53:56:e1:65:67:ed:a5:97:94:87: - fc:ee:37:66:e5:bf:7e:92:1b:b9:a4:e8:96:4a:5e:67:64:de: - f8:43:47:de:50:85:f6:a6:47:df:b4:ff:e3:93:ef:8e:b1:7c: - 38:52:e4:e4:90:45:d1:85:db:c2:db:91:81:44:5a:41:a8:9b: - 68:f6:dd:4b:c0:88:f0:fb:f0:73:17:9d:c4:9e:2b:1d:ba:6c: - 43:bd:38:a3:f7:3f:55:cb:1a:7b:c4:5e:4a:39:fc:a2:86:ed: - d9:ba + 41:74:7c:68:71:03:0a:64:94:f2:80:9d:0c:31:3a:68:c4:12: + 7f:b1:6f:de:76:a5:b3:0d:07:f4:06:65:34:69:64:73:9d:66: + 7d:f5:49:87:df:77:46:77:41:96:73:48:a0:bd:9c:bd:74:ea: + 74:68:34:5f:80:03:3e:4c:d1:0b:5b:be:29:d4:43:75:8c:4b: + a2:bf:18:d0:41:60:2c:3c:76:a1:2d:75:76:22:b4:a5:8d:17: + 7a:43:e6:c0:95:23:7f:cd:ad:78:66:81:66:59:a8:06:c2:c1: + 22:19:da:98:8f:bc:f7:e6:cc:87:87:b4:a7:41:96:de:09:b1: + d9:bc -----BEGIN CERTIFICATE----- -MIIFDjCCBHegAwIBAgIJALZ76JBNcH2BMA0GCSqGSIb3DQEBBQUAMIHOMQswCQYD -VQQGEwJBVTElMCMGA1UECBMcQXVzdHJhbGlhbiBDYXBpdGFsIFRlcnJpdG9yeTEh -MB8GA1UEChMYUWNhIERldmVsb3BtZW50IGFuZCBUZXN0MScwJQYDVQQLEx5DZXJ0 -aWZpY2F0ZSBHZW5lcmF0aW9uIFNlY3Rpb24xIjAgBgNVBAMTGVFjYSBUZXN0IFJv +MIIEAzCCA2ygAwIBAgIJALZ76JBNcH2BMA0GCSqGSIb3DQEBBQUAMIHOMQswCQYD +VQQGEwJBVTElMCMGA1UECAwcQXVzdHJhbGlhbiBDYXBpdGFsIFRlcnJpdG9yeTEh +MB8GA1UECgwYUWNhIERldmVsb3BtZW50IGFuZCBUZXN0MScwJQYDVQQLDB5DZXJ0 +aWZpY2F0ZSBHZW5lcmF0aW9uIFNlY3Rpb24xIjAgBgNVBAMMGVFjYSBUZXN0IFJv b3QgQ2VydGlmaWNhdGUxKDAmBgkqhkiG9w0BCQEWGXRlc3Rvbmx5QHRlc3QuZXhh -bXBsZS5jb20wHhcNMDcwNzIyMDYwNTM5WhcNMTIwNzIwMDYwNTM5WjCBzDELMAkG -A1UEBhMCSUwxFTATBgNVBAgTDFFjYSBQcm92aW5jZTERMA8GA1UEBxMIVExTIENp -dHkxITAfBgNVBAoTGFFjYSBEZXZlbG9wbWVudCBhbmQgVGVzdDEiMCAGA1UECxMZ -U2VydmVyIE1hbmFnZW1lbnQgU2VjdGlvbjEkMCIGA1UEAxMbUWNhIFNlcnZlciBU -ZXN0IGNlcnRpZmljYXRlMSYwJAYJKoZIhvcNAQkBFhdzZXJ2ZXJAdGVzdC5leGFt -cGxlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwVn/OR2Wr9hVzYmh -GRSgYzMqHAmSB+qOZJEXGTrKbagqgX2mSGqMBNXcm7CGRIxlJ5ymY+zw9vIDdk5G -ciA866zFp036NoSnoUXCVEO5XYgXtrJsr86c4i5l4oJMAqRNkVh9FhTcKRwcvMWJ -rODq9y2a/tjKU5jOqzrCYK2R6U8CAwEAAaOCAfIwggHuMBEGCWCGSAGG+EIBAQQE -AwIGQDALBgNVHQ8EBAMCBeAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwRwYJYIZIAYb4 -QgENBDoWOFRoaXMgY2VydGlmaWNhdGUgd2FzIGlzc3VlZCBmb3IgcWNhIHNlcnZl -ciB0ZXN0aW5nIG9ubHkhMB0GA1UdDgQWBBQ8qrO3WXXbLJWvtIH6VkDYmGsnyzCC -AQMGA1UdIwSB+zCB+IAUUT/yFG5JatxBuBW1oIb0LuT1RfihgdSkgdEwgc4xCzAJ -BgNVBAYTAkFVMSUwIwYDVQQIExxBdXN0cmFsaWFuIENhcGl0YWwgVGVycml0b3J5 -MSEwHwYDVQQKExhRY2EgRGV2ZWxvcG1lbnQgYW5kIFRlc3QxJzAlBgNVBAsTHkNl -cnRpZmljYXRlIEdlbmVyYXRpb24gU2VjdGlvbjEiMCAGA1UEAxMZUWNhIFRlc3Qg -Um9vdCBDZXJ0aWZpY2F0ZTEoMCYGCSqGSIb3DQEJARYZdGVzdG9ubHlAdGVzdC5l -eGFtcGxlLmNvbYIJALZ76JBNcH1/MCIGA1UdEQQbMBmBF3NlcnZlckB0ZXN0LmV4 -YW1wbGUuY29tMCQGA1UdEgQdMBuBGXRlc3Rvbmx5QHRlc3QuZXhhbXBsZS5jb20w -DQYJKoZIhvcNAQEFBQADgYEADwuf2ThiIECl/wx71SGC3Zp0lIFyqpT8G+BTVuFl -Z+2ll5SH/O43ZuW/fpIbuaTolkpeZ2Te+ENH3lCF9qZH37T/45PvjrF8OFLk5JBF -0YXbwtuRgURaQaibaPbdS8CI8PvwcxedxJ4rHbpsQ704o/c/Vcsae8ReSjn8oobt -2bo= +bXBsZS5jb20wHhcNMTMwNzMxMTUyMzI1WhcNMzMwNzI2MTUyMzI1WjCBzDELMAkG +A1UEBhMCSUwxFTATBgNVBAgMDFFjYSBQcm92aW5jZTEhMB8GA1UECgwYUWNhIERl +dmVsb3BtZW50IGFuZCBUZXN0MSIwIAYDVQQLDBlTZXJ2ZXIgTWFuYWdlbWVudCBT +ZWN0aW9uMSQwIgYDVQQDDBtRY2EgU2VydmVyIFRlc3QgY2VydGlmaWNhdGUxJjAk +BgkqhkiG9w0BCQEWF3NlcnZlckB0ZXN0LmV4YW1wbGUuY29tMREwDwYDVQQHDAhU +TFMgQ2l0eTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAqop8vUVSg+8rUVGl +8e7tIRwtpV1Lr/oV7baVulnV1lOrse6YQfriMM224B5gNen8YxYYXtmfMkV0arOi +ad/qiEpiVDuP6HbenpQyEn5nCKiYoT5kq2uAW75RaW3dd4DxPJ3JBv9dWn/9BhTb +MinPRnfvPK5D2A6Qk9+FdLzjv/0CAwEAAaOB6DCB5TAJBgNVHRMEAjAAMAsGA1Ud +DwQEAwIF4DATBgNVHSUEDDAKBggrBgEFBQcDATAsBglghkgBhvhCAQ0EHxYdT3Bl +blNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFIGYcMi4HqtT5y0E +RrZXkKoNPqsaMB8GA1UdIwQYMBaAFPYcRR3hsEWBOMYFaMGnyw963gNjMCIGA1Ud +EQQbMBmBF3NlcnZlckB0ZXN0LmV4YW1wbGUuY29tMCQGA1UdEgQdMBuBGXRlc3Rv +bmx5QHRlc3QuZXhhbXBsZS5jb20wDQYJKoZIhvcNAQEFBQADgYEAQXR8aHEDCmSU +8oCdDDE6aMQSf7Fv3nalsw0H9AZlNGlkc51mffVJh993RndBlnNIoL2cvXTqdGg0 +X4ADPkzRC1u+KdRDdYxLor8Y0EFgLDx2oS11diK0pY0XekPmwJUjf82teGaBZlmo +BsLBIhnamI+89+bMh4e0p0GW3gmx2bw= -----END CERTIFICATE----- Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/certunittest/certs/RAIZ2007_CERTIFICATE_AND_CRL_SIGNING_SHA256.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/certunittest/certs/RAIZ2007_CERTIFICATE_AND_CRL_SIGNING_SHA256.crt differ diff -Nru qca2-2.0.3/unittest/certunittest/certs/servergood2cert.txt qca2-2.1.0/unittest/certunittest/certs/servergood2cert.txt --- qca2-2.0.3/unittest/certunittest/certs/servergood2cert.txt 2006-10-12 00:05:20.000000000 +0000 +++ qca2-2.1.0/unittest/certunittest/certs/servergood2cert.txt 2014-11-06 08:15:45.000000000 +0000 @@ -1,60 +1,60 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 6 (0x6) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=de, O=InsecureTestCertificate, CN=For Tests Only next generation/Email=insecure@test.insecure - Validity - Not Before: Jul 1 10:21:49 2002 GMT - Not After : Jun 30 10:21:49 2007 GMT - Subject: C=de, O=InsecureTestCertificate, CN=Insecure Server Cert/Email=insecure@test.insecure - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:bd:45:c9:dc:e9:70:4d:90:95:ff:07:09:24:8e: - 08:8c:d2:64:ce:16:02:00:3d:8a:15:fe:e2:9a:eb: - 81:3c:67:55:7e:5c:e1:75:ea:09:b4:76:84:c3:04: - 3e:fc:8e:49:77:ad:97:db:44:5b:3e:44:32:b3:70: - c0:fe:4e:0f:82:bb:97:4b:11:34:0d:06:64:c6:8f: - 60:85:3c:b9:a2:7c:fa:ce:28:ab:3c:3b:2d:72:d8: - e9:e4:c1:44:f3:83:00:5c:9c:51:78:6c:08:6d:a7: - 97:19:ce:9a:81:4b:7d:fc:13:f7:30:94:20:19:b2: - 60:16:77:68:a9:c4:3b:42:21 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Key Usage: - Digital Signature, Key Encipherment, Key Agreement - X509v3 Extended Key Usage: - TLS Web Server Authentication - X509v3 Subject Key Identifier: - F5:F1:29:8A:CD:31:98:96:2B:00:5B:78:55:F6:CC:69:55:EE:F3:18 - X509v3 Authority Key Identifier: - keyid:8F:08:4F:9C:53:C1:5C:C8:E6:0C:D7:13:2E:CB:52:3C:23:96:02:14 - DirName:/C=de/O=InsecureTestCertificate/CN=For Tests Only next generation/Email=insecure@test.insecure - serial:00 - - X509v3 Subject Alternative Name: - email:insecure@test.insecure - X509v3 Issuer Alternative Name: - email:insecure@test.insecure - Netscape Cert Type: - SSL Server - Netscape Comment: - This certificate was issued for testing only! - Signature Algorithm: md5WithRSAEncryption - 87:48:82:2d:5d:dc:e0:0a:a1:b9:11:3a:bf:37:40:cc:c3:42: - b1:9a:a7:62:3d:8d:0f:7e:bc:da:a9:cc:8f:2c:4b:66:c8:42: - 69:fc:a9:66:8b:f0:51:84:40:23:01:30:98:10:d8:76:01:b0: - c0:bd:ae:68:42:a7:33:c9:48:e5:30:be:4b:4e:8b:e7:f2:56: - 3f:11:2b:2b:10:1d:1e:51:98:39:62:c0:e1:cf:dc:ef:1b:c2: - 2c:1c:cf:94:87:d7:a0:32:c6:50:b2:f4:00:49:61:a5:80:11: - 9e:59:99:3e:d5:59:69:83:47:05:ae:08:bb:2c:0b:53:90:53: - a0:86:0d:9a:6c:d4:ce:c9:d2:fd:fb:b0:a8:24:64:70:0f:9f: - 2b:64:3b:11:40:fa:b7:30:ea:82:e1:4b:32:14:bd:d4:72:e0: - 3f:3e:27:26:b6:d1:80:8a:ad:d4:eb:b3:cf:fc:ab:0b:b6:2d: - 25:5b:0f:be:d5:f1:73:5a:2f:70:c3:fd:9f:3a:db:bc:ab:a7: - 5f:3c:aa:54:b3:c8:9d:a6:12:62:dc:7b:4b:8f:62:d7:fd:f7: - f4:f8:3e:be:ef:26:2b:b9:4b:40:a5:36:c2:e7:0b:7e:41:ba: - 00:88:41:de:0d:ef:fb:0c:e9:df:a0:92:b2:29:1d:ab:d3:45: - c8:16:37:52 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 6 (0x6) + Signature Algorithm: md5WithRSAEncryption + Issuer: C=de, O=InsecureTestCertificate, CN=For Tests Only next generation/Email=insecure@test.insecure + Validity + Not Before: Jul 1 10:21:49 2002 GMT + Not After : Jun 30 10:21:49 2007 GMT + Subject: C=de, O=InsecureTestCertificate, CN=Insecure Server Cert/Email=insecure@test.insecure + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (1024 bit) + Modulus (1024 bit): + 00:bd:45:c9:dc:e9:70:4d:90:95:ff:07:09:24:8e: + 08:8c:d2:64:ce:16:02:00:3d:8a:15:fe:e2:9a:eb: + 81:3c:67:55:7e:5c:e1:75:ea:09:b4:76:84:c3:04: + 3e:fc:8e:49:77:ad:97:db:44:5b:3e:44:32:b3:70: + c0:fe:4e:0f:82:bb:97:4b:11:34:0d:06:64:c6:8f: + 60:85:3c:b9:a2:7c:fa:ce:28:ab:3c:3b:2d:72:d8: + e9:e4:c1:44:f3:83:00:5c:9c:51:78:6c:08:6d:a7: + 97:19:ce:9a:81:4b:7d:fc:13:f7:30:94:20:19:b2: + 60:16:77:68:a9:c4:3b:42:21 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: + Digital Signature, Key Encipherment, Key Agreement + X509v3 Extended Key Usage: + TLS Web Server Authentication + X509v3 Subject Key Identifier: + F5:F1:29:8A:CD:31:98:96:2B:00:5B:78:55:F6:CC:69:55:EE:F3:18 + X509v3 Authority Key Identifier: + keyid:8F:08:4F:9C:53:C1:5C:C8:E6:0C:D7:13:2E:CB:52:3C:23:96:02:14 + DirName:/C=de/O=InsecureTestCertificate/CN=For Tests Only next generation/Email=insecure@test.insecure + serial:00 + + X509v3 Subject Alternative Name: + email:insecure@test.insecure + X509v3 Issuer Alternative Name: + email:insecure@test.insecure + Netscape Cert Type: + SSL Server + Netscape Comment: + This certificate was issued for testing only! + Signature Algorithm: md5WithRSAEncryption + 87:48:82:2d:5d:dc:e0:0a:a1:b9:11:3a:bf:37:40:cc:c3:42: + b1:9a:a7:62:3d:8d:0f:7e:bc:da:a9:cc:8f:2c:4b:66:c8:42: + 69:fc:a9:66:8b:f0:51:84:40:23:01:30:98:10:d8:76:01:b0: + c0:bd:ae:68:42:a7:33:c9:48:e5:30:be:4b:4e:8b:e7:f2:56: + 3f:11:2b:2b:10:1d:1e:51:98:39:62:c0:e1:cf:dc:ef:1b:c2: + 2c:1c:cf:94:87:d7:a0:32:c6:50:b2:f4:00:49:61:a5:80:11: + 9e:59:99:3e:d5:59:69:83:47:05:ae:08:bb:2c:0b:53:90:53: + a0:86:0d:9a:6c:d4:ce:c9:d2:fd:fb:b0:a8:24:64:70:0f:9f: + 2b:64:3b:11:40:fa:b7:30:ea:82:e1:4b:32:14:bd:d4:72:e0: + 3f:3e:27:26:b6:d1:80:8a:ad:d4:eb:b3:cf:fc:ab:0b:b6:2d: + 25:5b:0f:be:d5:f1:73:5a:2f:70:c3:fd:9f:3a:db:bc:ab:a7: + 5f:3c:aa:54:b3:c8:9d:a6:12:62:dc:7b:4b:8f:62:d7:fd:f7: + f4:f8:3e:be:ef:26:2b:b9:4b:40:a5:36:c2:e7:0b:7e:41:ba: + 00:88:41:de:0d:ef:fb:0c:e9:df:a0:92:b2:29:1d:ab:d3:45: + c8:16:37:52 diff -Nru qca2-2.0.3/unittest/certunittest/certs/user2goodcert.txt qca2-2.1.0/unittest/certunittest/certs/user2goodcert.txt --- qca2-2.0.3/unittest/certunittest/certs/user2goodcert.txt 2006-10-12 00:05:20.000000000 +0000 +++ qca2-2.1.0/unittest/certunittest/certs/user2goodcert.txt 2014-11-06 08:15:45.000000000 +0000 @@ -1,60 +1,60 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 4 (0x4) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=de, O=InsecureTestCertificate, CN=For Tests Only next generation/Email=insecure@test.insecure - Validity - Not Before: Jul 1 09:58:50 2002 GMT - Not After : Jun 30 09:58:50 2007 GMT - Subject: C=de, O=InsecureTestCertificate, CN=Insecure User Test Cert/Email=insecure@test.insecure - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:f1:79:30:51:bb:49:33:97:ef:e8:03:91:df:f6: - 9d:3b:7e:c7:13:90:7f:60:16:fe:67:8d:b3:58:20: - 6e:09:21:89:f3:25:f3:0d:df:69:b0:33:71:72:70: - 67:af:52:4f:14:3a:6e:f6:6d:fd:b9:c3:8e:71:63: - 31:f7:f4:3a:6e:0b:54:88:ef:d0:57:87:9a:d6:e9: - d5:7d:78:a6:03:a4:54:77:04:f4:27:a3:04:ad:b1: - 12:4d:13:12:b5:e3:32:2e:03:be:b8:d7:8d:5a:c0: - 39:89:33:20:19:3c:32:43:69:5c:31:f2:5c:39:a9: - 54:15:26:ce:3b:bd:f1:92:d9 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Key Usage: - Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment - X509v3 Extended Key Usage: - TLS Web Client Authentication, E-mail Protection - X509v3 Subject Key Identifier: - 7B:5C:26:F0:14:E4:7D:3C:5C:9D:5C:B4:86:A5:E7:6C:BE:8E:77:FB - X509v3 Authority Key Identifier: - keyid:8F:08:4F:9C:53:C1:5C:C8:E6:0C:D7:13:2E:CB:52:3C:23:96:02:14 - DirName:/C=de/O=InsecureTestCertificate/CN=For Tests Only next generation/Email=insecure@test.insecure - serial:00 - - X509v3 Subject Alternative Name: - email:insecure@test.insecure - X509v3 Issuer Alternative Name: - email:insecure@test.insecure - Netscape Cert Type: - SSL Client, S/MIME - Netscape Comment: - This certificate was issued for testing only! - Signature Algorithm: md5WithRSAEncryption - 46:1e:57:24:97:95:da:b9:c3:7e:66:ac:19:ba:08:6d:5e:2e: - 19:e7:bc:c7:78:c9:0d:e6:4a:76:18:b5:ef:d9:2c:6d:a8:3c: - 10:6e:d4:ce:7a:91:70:2a:19:13:2f:8a:60:82:14:57:8c:b0: - bd:ae:0d:0b:44:0d:ba:c7:e7:96:02:61:81:c7:07:c6:cc:73: - c6:a0:15:1c:a2:b4:5c:a5:28:21:6a:d6:c2:cd:84:52:05:36: - 8f:06:97:29:c0:fe:c6:05:32:03:10:cc:fd:1c:56:ce:80:40: - 1e:c2:19:96:8c:cf:27:5d:b5:88:e9:a0:9e:b7:ad:d0:73:c0: - d4:0f:37:09:63:64:57:3d:92:fc:2f:b8:c6:fa:3b:dd:91:f3: - 66:d0:5e:50:d3:1d:10:a5:56:03:c4:7a:dc:b4:5f:0d:a7:34: - c5:47:67:ee:c2:8e:1a:87:30:1f:60:bb:30:25:ce:cc:56:1b: - 22:1f:b2:ca:1e:17:65:92:15:16:ce:f9:09:21:e0:9f:45:dd: - 76:67:ba:f6:7e:98:e0:cf:fe:3c:b0:75:af:34:61:c9:9c:cf: - 42:99:01:cf:05:22:8f:c9:38:87:3f:85:11:8c:68:41:a9:97: - 95:62:56:7f:57:8e:ed:ef:cb:f9:29:7f:d9:9a:ee:3f:d5:c1: - 80:9e:85:05 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 4 (0x4) + Signature Algorithm: md5WithRSAEncryption + Issuer: C=de, O=InsecureTestCertificate, CN=For Tests Only next generation/Email=insecure@test.insecure + Validity + Not Before: Jul 1 09:58:50 2002 GMT + Not After : Jun 30 09:58:50 2007 GMT + Subject: C=de, O=InsecureTestCertificate, CN=Insecure User Test Cert/Email=insecure@test.insecure + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (1024 bit) + Modulus (1024 bit): + 00:f1:79:30:51:bb:49:33:97:ef:e8:03:91:df:f6: + 9d:3b:7e:c7:13:90:7f:60:16:fe:67:8d:b3:58:20: + 6e:09:21:89:f3:25:f3:0d:df:69:b0:33:71:72:70: + 67:af:52:4f:14:3a:6e:f6:6d:fd:b9:c3:8e:71:63: + 31:f7:f4:3a:6e:0b:54:88:ef:d0:57:87:9a:d6:e9: + d5:7d:78:a6:03:a4:54:77:04:f4:27:a3:04:ad:b1: + 12:4d:13:12:b5:e3:32:2e:03:be:b8:d7:8d:5a:c0: + 39:89:33:20:19:3c:32:43:69:5c:31:f2:5c:39:a9: + 54:15:26:ce:3b:bd:f1:92:d9 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: + Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment + X509v3 Extended Key Usage: + TLS Web Client Authentication, E-mail Protection + X509v3 Subject Key Identifier: + 7B:5C:26:F0:14:E4:7D:3C:5C:9D:5C:B4:86:A5:E7:6C:BE:8E:77:FB + X509v3 Authority Key Identifier: + keyid:8F:08:4F:9C:53:C1:5C:C8:E6:0C:D7:13:2E:CB:52:3C:23:96:02:14 + DirName:/C=de/O=InsecureTestCertificate/CN=For Tests Only next generation/Email=insecure@test.insecure + serial:00 + + X509v3 Subject Alternative Name: + email:insecure@test.insecure + X509v3 Issuer Alternative Name: + email:insecure@test.insecure + Netscape Cert Type: + SSL Client, S/MIME + Netscape Comment: + This certificate was issued for testing only! + Signature Algorithm: md5WithRSAEncryption + 46:1e:57:24:97:95:da:b9:c3:7e:66:ac:19:ba:08:6d:5e:2e: + 19:e7:bc:c7:78:c9:0d:e6:4a:76:18:b5:ef:d9:2c:6d:a8:3c: + 10:6e:d4:ce:7a:91:70:2a:19:13:2f:8a:60:82:14:57:8c:b0: + bd:ae:0d:0b:44:0d:ba:c7:e7:96:02:61:81:c7:07:c6:cc:73: + c6:a0:15:1c:a2:b4:5c:a5:28:21:6a:d6:c2:cd:84:52:05:36: + 8f:06:97:29:c0:fe:c6:05:32:03:10:cc:fd:1c:56:ce:80:40: + 1e:c2:19:96:8c:cf:27:5d:b5:88:e9:a0:9e:b7:ad:d0:73:c0: + d4:0f:37:09:63:64:57:3d:92:fc:2f:b8:c6:fa:3b:dd:91:f3: + 66:d0:5e:50:d3:1d:10:a5:56:03:c4:7a:dc:b4:5f:0d:a7:34: + c5:47:67:ee:c2:8e:1a:87:30:1f:60:bb:30:25:ce:cc:56:1b: + 22:1f:b2:ca:1e:17:65:92:15:16:ce:f9:09:21:e0:9f:45:dd: + 76:67:ba:f6:7e:98:e0:cf:fe:3c:b0:75:af:34:61:c9:9c:cf: + 42:99:01:cf:05:22:8f:c9:38:87:3f:85:11:8c:68:41:a9:97: + 95:62:56:7f:57:8e:ed:ef:cb:f9:29:7f:d9:9a:ee:3f:d5:c1: + 80:9e:85:05 diff -Nru qca2-2.0.3/unittest/certunittest/certunittest.cpp qca2-2.1.0/unittest/certunittest/certunittest.cpp --- qca2-2.0.3/unittest/certunittest/certunittest.cpp 2007-07-22 04:22:00.000000000 +0000 +++ qca2-2.1.0/unittest/certunittest/certunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class CertUnitTest : public QObject { Q_OBJECT @@ -45,6 +49,7 @@ void checkExpiredServerCerts(); void checkServerCerts(); void altNames76(); + void sha256cert(); void crl(); void crl2(); void csr(); @@ -57,7 +62,6 @@ void CertUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void CertUnitTest::cleanupTestCase() @@ -128,24 +132,24 @@ QCOMPARE( ca1.notValidBefore().toString(), QDateTime( QDate( 2001, 8, 17 ), QTime( 8, 30, 39 ), Qt::UTC ).toString() ); QCOMPARE( ca1.notValidAfter().toString(), QDateTime( QDate( 2011, 8, 15 ), QTime( 8, 30, 39 ), Qt::UTC ).toString() ); - QCOMPARE( ca1.constraints().contains(QCA::DigitalSignature), (QBool)true ); - QCOMPARE( ca1.constraints().contains(QCA::NonRepudiation), (QBool)true ); - QCOMPARE( ca1.constraints().contains(QCA::KeyEncipherment), (QBool)true ); - QCOMPARE( ca1.constraints().contains(QCA::DataEncipherment), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::KeyAgreement), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::KeyCertificateSign), (QBool)true ); - QCOMPARE( ca1.constraints().contains(QCA::CRLSign), (QBool)true ); - QCOMPARE( ca1.constraints().contains(QCA::EncipherOnly), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::DecipherOnly), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::ServerAuth), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::ClientAuth), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::CodeSigning), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::EmailProtection), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::IPSecEndSystem), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::IPSecTunnel), (QBool)false); - QCOMPARE( ca1.constraints().contains(QCA::IPSecUser), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::TimeStamping), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::OCSPSigning), (QBool)false ); + QCOMPARE( ca1.constraints().contains(QCA::DigitalSignature) == true, true ); + QCOMPARE( ca1.constraints().contains(QCA::NonRepudiation) == true, true ); + QCOMPARE( ca1.constraints().contains(QCA::KeyEncipherment) == true, true ); + QCOMPARE( ca1.constraints().contains(QCA::DataEncipherment) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::KeyAgreement) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::KeyCertificateSign) == true, true ); + QCOMPARE( ca1.constraints().contains(QCA::CRLSign) == true, true ); + QCOMPARE( ca1.constraints().contains(QCA::EncipherOnly) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::DecipherOnly) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::ServerAuth) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::ClientAuth) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::CodeSigning) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::EmailProtection) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::IPSecEndSystem) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::IPSecTunnel) == true, false); + QCOMPARE( ca1.constraints().contains(QCA::IPSecUser) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::TimeStamping) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::OCSPSigning) == true, false ); // no policies on this cert QCOMPARE( ca1.policies().count(), 0 ); @@ -183,24 +187,24 @@ QCOMPARE( ca1.pathLimit(), 0 ); - QCOMPARE( ca1.constraints().contains(QCA::DigitalSignature), (QBool)true ); - QCOMPARE( ca1.constraints().contains(QCA::NonRepudiation), (QBool)true ); - QCOMPARE( ca1.constraints().contains(QCA::KeyEncipherment), (QBool)true ); - QCOMPARE( ca1.constraints().contains(QCA::DataEncipherment), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::KeyAgreement), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::KeyCertificateSign), (QBool)true ); - QCOMPARE( ca1.constraints().contains(QCA::CRLSign), (QBool)true ); - QCOMPARE( ca1.constraints().contains(QCA::EncipherOnly), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::DecipherOnly), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::ServerAuth), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::ClientAuth), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::CodeSigning), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::EmailProtection), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::IPSecEndSystem), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::IPSecTunnel), (QBool)false); - QCOMPARE( ca1.constraints().contains(QCA::IPSecUser), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::TimeStamping), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::OCSPSigning), (QBool)false ); + QCOMPARE( ca1.constraints().contains(QCA::DigitalSignature) == true, true ); + QCOMPARE( ca1.constraints().contains(QCA::NonRepudiation) == true, true ); + QCOMPARE( ca1.constraints().contains(QCA::KeyEncipherment) == true, true ); + QCOMPARE( ca1.constraints().contains(QCA::DataEncipherment) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::KeyAgreement) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::KeyCertificateSign) == true, true ); + QCOMPARE( ca1.constraints().contains(QCA::CRLSign) == true, true ); + QCOMPARE( ca1.constraints().contains(QCA::EncipherOnly) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::DecipherOnly) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::ServerAuth) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::ClientAuth) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::CodeSigning) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::EmailProtection) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::IPSecEndSystem) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::IPSecTunnel) == true, false); + QCOMPARE( ca1.constraints().contains(QCA::IPSecUser) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::TimeStamping) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::OCSPSigning) == true, false ); } } } @@ -229,39 +233,39 @@ QCOMPARE( client1.notValidBefore().toString(), QDateTime( QDate( 2001, 8, 17 ), QTime( 8, 32, 38 ), Qt::UTC ).toString() ); QCOMPARE( client1.notValidAfter().toString(), QDateTime( QDate( 2006, 8, 16 ), QTime( 8, 32, 38 ), Qt::UTC ).toString() ); - QCOMPARE( client1.constraints().contains(QCA::DigitalSignature), (QBool)true ); - QCOMPARE( client1.constraints().contains(QCA::NonRepudiation), (QBool)true ); - QCOMPARE( client1.constraints().contains(QCA::KeyEncipherment), (QBool)true ); - QCOMPARE( client1.constraints().contains(QCA::DataEncipherment), (QBool)true ); - QCOMPARE( client1.constraints().contains(QCA::KeyAgreement), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::KeyCertificateSign), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::CRLSign), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::EncipherOnly), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::DecipherOnly), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::ServerAuth), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::ClientAuth), (QBool)true ); - QCOMPARE( client1.constraints().contains(QCA::CodeSigning), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::EmailProtection), (QBool)true ); - QCOMPARE( client1.constraints().contains(QCA::IPSecEndSystem), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::IPSecTunnel), (QBool)false); - QCOMPARE( client1.constraints().contains(QCA::IPSecUser), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::TimeStamping), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::OCSPSigning), (QBool)false ); + QCOMPARE( client1.constraints().contains(QCA::DigitalSignature) == true, true ); + QCOMPARE( client1.constraints().contains(QCA::NonRepudiation) == true, true ); + QCOMPARE( client1.constraints().contains(QCA::KeyEncipherment) == true, true ); + QCOMPARE( client1.constraints().contains(QCA::DataEncipherment) == true, true ); + QCOMPARE( client1.constraints().contains(QCA::KeyAgreement) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::KeyCertificateSign) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::CRLSign) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::EncipherOnly) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::DecipherOnly) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::ServerAuth) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::ClientAuth) == true, true ); + QCOMPARE( client1.constraints().contains(QCA::CodeSigning) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::EmailProtection) == true, true ); + QCOMPARE( client1.constraints().contains(QCA::IPSecEndSystem) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::IPSecTunnel) == true, false); + QCOMPARE( client1.constraints().contains(QCA::IPSecUser) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::TimeStamping) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::OCSPSigning) == true, false ); // no policies on this cert QCOMPARE( client1.policies().count(), 0 ); QCA::CertificateInfo subject1 = client1.subjectInfo(); QCOMPARE( subject1.isEmpty(), false ); - QCOMPARE( subject1.values(QCA::Country).contains("de"), (QBool)true ); - QCOMPARE( subject1.values(QCA::Organization).contains("InsecureTestCertificate"), (QBool)true ); - QCOMPARE( subject1.values(QCA::CommonName).contains("Insecure User Test Cert"), (QBool)true ); + QCOMPARE( subject1.values(QCA::Country).contains("de") == true, true ); + QCOMPARE( subject1.values(QCA::Organization).contains("InsecureTestCertificate") == true, true ); + QCOMPARE( subject1.values(QCA::CommonName).contains("Insecure User Test Cert") == true, true ); QCA::CertificateInfo issuer1 = client1.issuerInfo(); QCOMPARE( issuer1.isEmpty(), false ); - QCOMPARE( issuer1.values(QCA::Country).contains("de"), (QBool)true ); - QCOMPARE( issuer1.values(QCA::Organization).contains("InsecureTestCertificate"), (QBool)true ); - QCOMPARE( issuer1.values(QCA::CommonName).contains("For Tests Only"), (QBool)true ); + QCOMPARE( issuer1.values(QCA::Country).contains("de") == true, true ); + QCOMPARE( issuer1.values(QCA::Organization).contains("InsecureTestCertificate") == true, true ); + QCOMPARE( issuer1.values(QCA::CommonName).contains("For Tests Only") == true, true ); QByteArray subjectKeyID = QCA::Hex().stringToArray("889E7EF729719D7B280F361AAE6D00D39DE1AADB").toByteArray(); QCOMPARE( client1.subjectKeyId(), subjectKeyID ); @@ -334,27 +338,27 @@ QCOMPARE( client2.commonName(), QString("Qca Test Client Certificate") ); - QCOMPARE( client2.notValidBefore().toString(), QDateTime( QDate( 2007, 7, 22 ), QTime( 3, 30, 29 ), Qt::UTC ).toString() ); - QCOMPARE( client2.notValidAfter().toString(), QDateTime( QDate( 2012, 7, 20 ), QTime( 3, 30, 29 ), Qt::UTC ).toString() ); + QCOMPARE( client2.notValidBefore().toString(), QDateTime( QDate( 2013, 7, 31 ), QTime( 15, 14, 28 ), Qt::UTC ).toString() ); + QCOMPARE( client2.notValidAfter().toString(), QDateTime( QDate( 2033, 7, 26 ), QTime( 15, 14, 28 ), Qt::UTC ).toString() ); - QCOMPARE( client2.constraints().contains(QCA::DigitalSignature), (QBool)true ); - QCOMPARE( client2.constraints().contains(QCA::NonRepudiation), (QBool)true ); - QCOMPARE( client2.constraints().contains(QCA::KeyEncipherment), (QBool)true ); - QCOMPARE( client2.constraints().contains(QCA::DataEncipherment), (QBool)true ); - QCOMPARE( client2.constraints().contains(QCA::KeyAgreement), (QBool)false ); - QCOMPARE( client2.constraints().contains(QCA::KeyCertificateSign), (QBool)false ); - QCOMPARE( client2.constraints().contains(QCA::CRLSign), (QBool)false ); - QCOMPARE( client2.constraints().contains(QCA::EncipherOnly), (QBool)false ); - QCOMPARE( client2.constraints().contains(QCA::DecipherOnly), (QBool)false ); - QCOMPARE( client2.constraints().contains(QCA::ServerAuth), (QBool)false ); - QCOMPARE( client2.constraints().contains(QCA::ClientAuth), (QBool)true ); - QCOMPARE( client2.constraints().contains(QCA::CodeSigning), (QBool)false ); - QCOMPARE( client2.constraints().contains(QCA::EmailProtection), (QBool)true ); - QCOMPARE( client2.constraints().contains(QCA::IPSecEndSystem), (QBool)false ); - QCOMPARE( client2.constraints().contains(QCA::IPSecTunnel), (QBool)false); - QCOMPARE( client2.constraints().contains(QCA::IPSecUser), (QBool)false ); - QCOMPARE( client2.constraints().contains(QCA::TimeStamping), (QBool)false ); - QCOMPARE( client2.constraints().contains(QCA::OCSPSigning), (QBool)false ); + QCOMPARE( client2.constraints().contains(QCA::DigitalSignature) == true, true ); + QCOMPARE( client2.constraints().contains(QCA::NonRepudiation) == true, true ); + QCOMPARE( client2.constraints().contains(QCA::KeyEncipherment) == true, true ); + QCOMPARE( client2.constraints().contains(QCA::DataEncipherment) == true, true ); + QCOMPARE( client2.constraints().contains(QCA::KeyAgreement) == true, false ); + QCOMPARE( client2.constraints().contains(QCA::KeyCertificateSign) == true, false ); + QCOMPARE( client2.constraints().contains(QCA::CRLSign) == true, false ); + QCOMPARE( client2.constraints().contains(QCA::EncipherOnly) == true, false ); + QCOMPARE( client2.constraints().contains(QCA::DecipherOnly) == true, false ); + QCOMPARE( client2.constraints().contains(QCA::ServerAuth) == true, false ); + QCOMPARE( client2.constraints().contains(QCA::ClientAuth) == true, true ); + QCOMPARE( client2.constraints().contains(QCA::CodeSigning) == true, false ); + QCOMPARE( client2.constraints().contains(QCA::EmailProtection) == true, true ); + QCOMPARE( client2.constraints().contains(QCA::IPSecEndSystem) == true, false ); + QCOMPARE( client2.constraints().contains(QCA::IPSecTunnel) == true, false); + QCOMPARE( client2.constraints().contains(QCA::IPSecUser) == true, false ); + QCOMPARE( client2.constraints().contains(QCA::TimeStamping) == true, false ); + QCOMPARE( client2.constraints().contains(QCA::OCSPSigning) == true, false ); // no policies on this cert QCOMPARE( client2.policies().count(), 0 ); @@ -372,9 +376,9 @@ QVERIFY( issuer2.values(QCA::Organization).contains("Qca Development and Test") ); QVERIFY( issuer2.values(QCA::CommonName).contains("Qca Test Root Certificate") ); - QByteArray subjectKeyID = QCA::Hex().stringToArray("B27FD3113923BE1DC46F53CE81AFF1D48001F6F6").toByteArray(); + QByteArray subjectKeyID = QCA::Hex().stringToArray("1e604e03127d287ba40427a961b428a2d09b50d1").toByteArray(); QCOMPARE( client2.subjectKeyId(), subjectKeyID ); - QCOMPARE( QCA::Hex().arrayToString(client2.issuerKeyId()), QString("513ff2146e496adc41b815b5a086f42ee4f545f8") ); + QCOMPARE( QCA::Hex().arrayToString(client2.issuerKeyId()), QString("f61c451de1b0458138c60568c1a7cb0f7ade0363") ); QCA::PublicKey pubkey2 = client2.subjectPublicKey(); QCOMPARE( pubkey2.isNull(), false ); @@ -469,24 +473,24 @@ QCOMPARE( ca1.notValidBefore().toString(), QDateTime( QDate( 2001, 8, 17 ), QTime( 8, 30, 39 ), Qt::UTC ).toString() ); QCOMPARE( ca1.notValidAfter().toString(), QDateTime( QDate( 2011, 8, 15 ), QTime( 8, 30, 39 ), Qt::UTC ).toString() ); - QCOMPARE( ca1.constraints().contains(QCA::DigitalSignature), (QBool)true ); - QCOMPARE( ca1.constraints().contains(QCA::NonRepudiation), (QBool)true ); - QCOMPARE( ca1.constraints().contains(QCA::KeyEncipherment), (QBool)true ); - QCOMPARE( ca1.constraints().contains(QCA::DataEncipherment), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::KeyAgreement), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::KeyCertificateSign), (QBool)true ); - QCOMPARE( ca1.constraints().contains(QCA::CRLSign), (QBool)true ); - QCOMPARE( ca1.constraints().contains(QCA::EncipherOnly), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::DecipherOnly), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::ServerAuth), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::ClientAuth), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::CodeSigning), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::EmailProtection), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::IPSecEndSystem), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::IPSecTunnel), (QBool)false); - QCOMPARE( ca1.constraints().contains(QCA::IPSecUser), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::TimeStamping), (QBool)false ); - QCOMPARE( ca1.constraints().contains(QCA::OCSPSigning), (QBool)false ); + QCOMPARE( ca1.constraints().contains(QCA::DigitalSignature) == true, true ); + QCOMPARE( ca1.constraints().contains(QCA::NonRepudiation) == true, true ); + QCOMPARE( ca1.constraints().contains(QCA::KeyEncipherment) == true, true ); + QCOMPARE( ca1.constraints().contains(QCA::DataEncipherment) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::KeyAgreement) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::KeyCertificateSign) == true, true ); + QCOMPARE( ca1.constraints().contains(QCA::CRLSign) == true, true ); + QCOMPARE( ca1.constraints().contains(QCA::EncipherOnly) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::DecipherOnly) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::ServerAuth) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::ClientAuth) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::CodeSigning) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::EmailProtection) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::IPSecEndSystem) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::IPSecTunnel) == true, false); + QCOMPARE( ca1.constraints().contains(QCA::IPSecUser) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::TimeStamping) == true, false ); + QCOMPARE( ca1.constraints().contains(QCA::OCSPSigning) == true, false ); // no policies on this cert QCOMPARE( ca1.policies().count(), 0 ); @@ -517,24 +521,24 @@ QCOMPARE( client1.commonName(), QString("Valid RFC822 nameConstraints EE Certificate Test21") ); - QCOMPARE( client1.constraints().contains(QCA::DigitalSignature), (QBool)true ); - QCOMPARE( client1.constraints().contains(QCA::NonRepudiation), (QBool)true ); - QCOMPARE( client1.constraints().contains(QCA::KeyEncipherment), (QBool)true ); - QCOMPARE( client1.constraints().contains(QCA::DataEncipherment), (QBool)true ); - QCOMPARE( client1.constraints().contains(QCA::KeyAgreement), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::KeyCertificateSign), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::CRLSign), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::EncipherOnly), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::DecipherOnly), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::ServerAuth), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::ClientAuth), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::CodeSigning), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::EmailProtection), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::IPSecEndSystem), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::IPSecTunnel), (QBool)false); - QCOMPARE( client1.constraints().contains(QCA::IPSecUser), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::TimeStamping), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::OCSPSigning), (QBool)false ); + QCOMPARE( client1.constraints().contains(QCA::DigitalSignature) == true, true ); + QCOMPARE( client1.constraints().contains(QCA::NonRepudiation) == true, true ); + QCOMPARE( client1.constraints().contains(QCA::KeyEncipherment) == true, true ); + QCOMPARE( client1.constraints().contains(QCA::DataEncipherment) == true, true ); + QCOMPARE( client1.constraints().contains(QCA::KeyAgreement) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::KeyCertificateSign) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::CRLSign) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::EncipherOnly) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::DecipherOnly) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::ServerAuth) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::ClientAuth) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::CodeSigning) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::EmailProtection) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::IPSecEndSystem) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::IPSecTunnel) == true, false); + QCOMPARE( client1.constraints().contains(QCA::IPSecUser) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::TimeStamping) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::OCSPSigning) == true, false ); QCOMPARE( client1.policies().count(), 1 ); QCOMPARE( client1.policies().at(0), QString("2.16.840.1.101.3.2.1.48.1") ); @@ -635,24 +639,24 @@ QCOMPARE( client1.commonName(), QString("sip1.su.se") ); - QCOMPARE( client1.constraints().contains(QCA::DigitalSignature), (QBool)true ); - QCOMPARE( client1.constraints().contains(QCA::NonRepudiation), (QBool)true ); - QCOMPARE( client1.constraints().contains(QCA::KeyEncipherment), (QBool)true ); - QCOMPARE( client1.constraints().contains(QCA::DataEncipherment), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::KeyAgreement), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::KeyCertificateSign), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::CRLSign), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::EncipherOnly), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::DecipherOnly), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::ServerAuth), (QBool)true ); - QCOMPARE( client1.constraints().contains(QCA::ClientAuth), (QBool)true ); - QCOMPARE( client1.constraints().contains(QCA::CodeSigning), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::EmailProtection), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::IPSecEndSystem), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::IPSecTunnel), (QBool)false); - QCOMPARE( client1.constraints().contains(QCA::IPSecUser), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::TimeStamping), (QBool)false ); - QCOMPARE( client1.constraints().contains(QCA::OCSPSigning), (QBool)false ); + QCOMPARE( client1.constraints().contains(QCA::DigitalSignature) == true, true ); + QCOMPARE( client1.constraints().contains(QCA::NonRepudiation) == true, true ); + QCOMPARE( client1.constraints().contains(QCA::KeyEncipherment) == true, true ); + QCOMPARE( client1.constraints().contains(QCA::DataEncipherment) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::KeyAgreement) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::KeyCertificateSign) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::CRLSign) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::EncipherOnly) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::DecipherOnly) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::ServerAuth) == true, true ); + QCOMPARE( client1.constraints().contains(QCA::ClientAuth) == true, true ); + QCOMPARE( client1.constraints().contains(QCA::CodeSigning) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::EmailProtection) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::IPSecEndSystem) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::IPSecTunnel) == true, false); + QCOMPARE( client1.constraints().contains(QCA::IPSecUser) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::TimeStamping) == true, false ); + QCOMPARE( client1.constraints().contains(QCA::OCSPSigning) == true, false ); QCOMPARE( client1.policies().count(), 1 ); @@ -709,6 +713,45 @@ } } +void CertUnitTest::sha256cert() +{ + QStringList providersToTest; + providersToTest.append("qca-ossl"); + // providersToTest.append("qca-botan"); + + foreach(const QString provider, providersToTest) { + if( !QCA::isSupported( "cert", provider ) ) + QWARN( QString( "Certificate handling not supported for "+provider).toLocal8Bit() ); + else { + QFile f("certs/RAIZ2007_CERTIFICATE_AND_CRL_SIGNING_SHA256.crt"); + QVERIFY(f.open(QFile::ReadOnly)); + QByteArray der = f.readAll(); + QCA::ConvertResult resultcert; + QCA::Certificate cert = QCA::Certificate::fromDER(der, + &resultcert, + provider); + + QCOMPARE( resultcert, QCA::ConvertGood ); + QCOMPARE( cert.isNull(), false ); + QCOMPARE( cert.isCA(), true ); + QCOMPARE( cert.isSelfSigned(), true ); + + QCA::PublicKey pubkey = cert.subjectPublicKey(); + QCOMPARE( pubkey.isNull(), false ); + QCOMPARE( pubkey.isRSA(), true ); + QCOMPARE( pubkey.isDSA(), false ); + QCOMPARE( pubkey.isDH(), false ); + QCOMPARE( pubkey.isPublic(), true ); + QCOMPARE( pubkey.isPrivate(), false ); + QCOMPARE( pubkey.bitSize(), 4096 ); + + QCOMPARE( cert.pathLimit(), 0 ); + + QCOMPARE( cert.signatureAlgorithm(), QCA::EMSA3_SHA256 ); + } + } +} + void CertUnitTest::checkExpiredServerCerts() { QStringList providersToTest; @@ -733,39 +776,39 @@ QCOMPARE( server1.notValidBefore().toString(), QDateTime( QDate( 2001, 8, 17 ), QTime( 8, 46, 24 ), Qt::UTC ).toString() ); QCOMPARE( server1.notValidAfter().toString(), QDateTime( QDate( 2006, 8, 16 ), QTime( 8, 46, 24 ), Qt::UTC ).toString() ); - QCOMPARE( server1.constraints().contains(QCA::DigitalSignature), (QBool)true ); - QCOMPARE( server1.constraints().contains(QCA::NonRepudiation), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::KeyEncipherment), (QBool)true ); - QCOMPARE( server1.constraints().contains(QCA::DataEncipherment), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::KeyAgreement), (QBool)true ); - QCOMPARE( server1.constraints().contains(QCA::KeyCertificateSign), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::CRLSign), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::EncipherOnly), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::DecipherOnly), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::ServerAuth), (QBool)true ); - QCOMPARE( server1.constraints().contains(QCA::ClientAuth), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::CodeSigning), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::EmailProtection), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::IPSecEndSystem), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::IPSecTunnel), (QBool)false); - QCOMPARE( server1.constraints().contains(QCA::IPSecUser), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::TimeStamping), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::OCSPSigning), (QBool)false ); + QCOMPARE( server1.constraints().contains(QCA::DigitalSignature) == true, true ); + QCOMPARE( server1.constraints().contains(QCA::NonRepudiation) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::KeyEncipherment) == true, true ); + QCOMPARE( server1.constraints().contains(QCA::DataEncipherment) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::KeyAgreement) == true, true ); + QCOMPARE( server1.constraints().contains(QCA::KeyCertificateSign) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::CRLSign) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::EncipherOnly) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::DecipherOnly) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::ServerAuth) == true, true ); + QCOMPARE( server1.constraints().contains(QCA::ClientAuth) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::CodeSigning) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::EmailProtection) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::IPSecEndSystem) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::IPSecTunnel) == true, false); + QCOMPARE( server1.constraints().contains(QCA::IPSecUser) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::TimeStamping) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::OCSPSigning) == true, false ); // no policies on this cert QCOMPARE( server1.policies().count(), 0 ); QCA::CertificateInfo subject1 = server1.subjectInfo(); QCOMPARE( subject1.isEmpty(), false ); - QCOMPARE( subject1.values(QCA::Country).contains("de"), (QBool)true ); - QCOMPARE( subject1.values(QCA::Organization).contains("InsecureTestCertificate"), (QBool)true ); - QCOMPARE( subject1.values(QCA::CommonName).contains("Insecure Server Cert"), (QBool)true ); + QCOMPARE( subject1.values(QCA::Country).contains("de") == true, true ); + QCOMPARE( subject1.values(QCA::Organization).contains("InsecureTestCertificate") == true, true ); + QCOMPARE( subject1.values(QCA::CommonName).contains("Insecure Server Cert") == true, true ); QCA::CertificateInfo issuer1 = server1.issuerInfo(); QCOMPARE( issuer1.isEmpty(), false ); - QCOMPARE( issuer1.values(QCA::Country).contains("de"), (QBool)true ); - QCOMPARE( issuer1.values(QCA::Organization).contains("InsecureTestCertificate"), (QBool)true ); - QCOMPARE( issuer1.values(QCA::CommonName).contains("For Tests Only"), (QBool)true ); + QCOMPARE( issuer1.values(QCA::Country).contains("de") == true, true ); + QCOMPARE( issuer1.values(QCA::Organization).contains("InsecureTestCertificate") == true, true ); + QCOMPARE( issuer1.values(QCA::CommonName).contains("For Tests Only") == true, true ); QByteArray subjectKeyID = QCA::Hex().stringToArray("0234E2C906F6E0B44253BE04C0CBA7823A6DB509").toByteArray(); QCOMPARE( server1.subjectKeyId(), subjectKeyID ); @@ -833,27 +876,27 @@ QCOMPARE( server1.commonName(), QString("Qca Server Test certificate") ); - QCOMPARE( server1.notValidBefore().toString(), QDateTime( QDate( 2007, 7, 22 ), QTime( 6, 5, 39 ), Qt::UTC ).toString() ); - QCOMPARE( server1.notValidAfter().toString(), QDateTime( QDate( 2012, 7, 20 ), QTime( 6, 5, 39 ), Qt::UTC ).toString() ); + QCOMPARE( server1.notValidBefore().toString(), QDateTime( QDate( 2013, 7, 31 ), QTime( 15, 23, 25 ), Qt::UTC ).toString() ); + QCOMPARE( server1.notValidAfter().toString(), QDateTime( QDate( 2033, 7, 26 ), QTime( 15, 23, 25 ), Qt::UTC ).toString() ); - QCOMPARE( server1.constraints().contains(QCA::DigitalSignature), (QBool)true ); - QCOMPARE( server1.constraints().contains(QCA::NonRepudiation), (QBool)true ); - QCOMPARE( server1.constraints().contains(QCA::KeyEncipherment), (QBool)true ); - QCOMPARE( server1.constraints().contains(QCA::DataEncipherment), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::KeyAgreement), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::KeyCertificateSign), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::CRLSign), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::EncipherOnly), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::DecipherOnly), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::ServerAuth), (QBool)true ); - QCOMPARE( server1.constraints().contains(QCA::ClientAuth), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::CodeSigning), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::EmailProtection), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::IPSecEndSystem), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::IPSecTunnel), (QBool)false); - QCOMPARE( server1.constraints().contains(QCA::IPSecUser), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::TimeStamping), (QBool)false ); - QCOMPARE( server1.constraints().contains(QCA::OCSPSigning), (QBool)false ); + QCOMPARE( server1.constraints().contains(QCA::DigitalSignature) == true, true ); + QCOMPARE( server1.constraints().contains(QCA::NonRepudiation) == true, true ); + QCOMPARE( server1.constraints().contains(QCA::KeyEncipherment) == true, true ); + QCOMPARE( server1.constraints().contains(QCA::DataEncipherment) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::KeyAgreement) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::KeyCertificateSign) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::CRLSign) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::EncipherOnly) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::DecipherOnly) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::ServerAuth) == true, true ); + QCOMPARE( server1.constraints().contains(QCA::ClientAuth) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::CodeSigning) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::EmailProtection) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::IPSecEndSystem) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::IPSecTunnel) == true, false); + QCOMPARE( server1.constraints().contains(QCA::IPSecUser) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::TimeStamping) == true, false ); + QCOMPARE( server1.constraints().contains(QCA::OCSPSigning) == true, false ); // no policies on this cert QCOMPARE( server1.policies().count(), 0 ); @@ -872,9 +915,9 @@ QVERIFY( issuer1.values(QCA::OrganizationalUnit).contains("Certificate Generation Section") ); QVERIFY( issuer1.values(QCA::CommonName).contains("Qca Test Root Certificate") ); - QByteArray subjectKeyID = QCA::Hex().stringToArray("3CAAB3B75975DB2C95AFB481FA5640D8986B27CB").toByteArray(); + QByteArray subjectKeyID = QCA::Hex().stringToArray("819870c8b81eab53e72d0446b65790aa0d3eab1a").toByteArray(); QCOMPARE( server1.subjectKeyId(), subjectKeyID ); - QByteArray authorityKeyID = QCA::Hex().stringToArray("513ff2146e496adc41b815b5a086f42ee4f545f8").toByteArray(); + QByteArray authorityKeyID = QCA::Hex().stringToArray("f61c451de1b0458138c60568c1a7cb0f7ade0363").toByteArray(); QCOMPARE( server1.issuerKeyId(), authorityKeyID ); QCA::PublicKey pubkey1 = server1.subjectPublicKey(); @@ -958,8 +1001,8 @@ // No keyid extension on this crl QCOMPARE( QCA::arrayToHex( crl1.issuerKeyId() ), QString("") ); - QCOMPARE( crl1.thisUpdate(), QDateTime(QDate(2001, 8, 17), QTime(11, 12, 03)) ); - QCOMPARE( crl1.nextUpdate(), QDateTime(QDate(2006, 8, 16), QTime(11, 12, 03)) ); + QCOMPARE( crl1.thisUpdate(), QDateTime(QDate(2001, 8, 17), QTime(11, 12, 03), Qt::UTC) ); + QCOMPARE( crl1.nextUpdate(), QDateTime(QDate(2006, 8, 16), QTime(11, 12, 03), Qt::UTC) ); QCOMPARE( crl1.signatureAlgorithm(), QCA::EMSA3_MD5 ); @@ -975,8 +1018,8 @@ QCOMPARE( revokedList[1].serialNumber(), QCA::BigInteger("5") ); QCOMPARE( revokedList[0].reason(), QCA::CRLEntry::Unspecified ); QCOMPARE( revokedList[1].reason(), QCA::CRLEntry::Unspecified ); - QCOMPARE( revokedList[0].time(), QDateTime(QDate(2001, 8, 17), QTime(11, 10, 39)) ); - QCOMPARE( revokedList[1].time(), QDateTime(QDate(2001, 8, 17), QTime(11, 11, 59)) ); + QCOMPARE( revokedList[0].time(), QDateTime(QDate(2001, 8, 17), QTime(11, 10, 39), Qt::UTC) ); + QCOMPARE( revokedList[1].time(), QDateTime(QDate(2001, 8, 17), QTime(11, 11, 59), Qt::UTC) ); // convert to DER QByteArray derCRL1 = crl1.toDER(); @@ -1014,8 +1057,8 @@ QVERIFY( issuer.values(QCA::Organization).contains("Test Certificates") ); QVERIFY( issuer.values(QCA::CommonName).contains("Good CA") ); - QCOMPARE( crl1.thisUpdate(), QDateTime(QDate(2001, 4, 19), QTime(14, 57, 20)) ); - QCOMPARE( crl1.nextUpdate(), QDateTime(QDate(2011, 4, 19), QTime(14, 57, 20)) ); + QCOMPARE( crl1.thisUpdate(), QDateTime(QDate(2001, 4, 19), QTime(14, 57, 20), Qt::UTC) ); + QCOMPARE( crl1.nextUpdate(), QDateTime(QDate(2011, 4, 19), QTime(14, 57, 20), Qt::UTC) ); QCOMPARE( crl1.signatureAlgorithm(), QCA::EMSA3_SHA1 ); @@ -1031,8 +1074,8 @@ QCOMPARE( revokedList[1].serialNumber(), QCA::BigInteger("15") ); QCOMPARE( revokedList[0].reason(), QCA::CRLEntry::KeyCompromise ); QCOMPARE( revokedList[1].reason(), QCA::CRLEntry::KeyCompromise ); - QCOMPARE( revokedList[0].time(), QDateTime(QDate(2001, 4, 19), QTime(14, 57, 20)) ); - QCOMPARE( revokedList[1].time(), QDateTime(QDate(2001, 4, 19), QTime(14, 57, 20)) ); + QCOMPARE( revokedList[0].time(), QDateTime(QDate(2001, 4, 19), QTime(14, 57, 20), Qt::UTC) ); + QCOMPARE( revokedList[1].time(), QDateTime(QDate(2001, 4, 19), QTime(14, 57, 20), Qt::UTC) ); // convert to DER QByteArray derCRL1 = crl1.toDER(); diff -Nru qca2-2.0.3/unittest/certunittest/certunittest.pro qca2-2.1.0/unittest/certunittest/certunittest.pro --- qca2-2.0.3/unittest/certunittest/certunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/certunittest/certunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = certunittest -test.commands = ./certunittest - -# Input -SOURCES += certunittest.cpp diff -Nru qca2-2.0.3/unittest/certunittest/CMakeLists.txt qca2-2.1.0/unittest/certunittest/CMakeLists.txt --- qca2-2.0.3/unittest/certunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/certunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,20 @@ +ENABLE_TESTING() + +set(certunittest_bin_SRCS certunittest.cpp) + +MY_AUTOMOC( certunittest_bin_SRCS ) + +add_executable(certunittest ${certunittest_bin_SRCS} ) + +target_link_qca_test_libraries(certunittest) + + +FOREACH( testFileName RootCAcert.pem 76.pem altname.pem csr1.pem + GoodCACRL.pem ov-root-ca-cert.crt User.pem QcaTestClientCert.pem xmppcert.pem + Server.pem QcaTestServerCert.pem xmppcert.pem newreq.pem + QualitySSLIntermediateCA.crt QcaTestRootCert.pem Test_CRL.crl + RAIZ2007_CERTIFICATE_AND_CRL_SIGNING_SHA256.crt ) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/certs/${testFileName} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/certs/${testFileName} COPYONLY) +ENDFOREACH( testFileName ) + +add_qca_test(certunittest "Certificate") diff -Nru qca2-2.0.3/unittest/checkall qca2-2.1.0/unittest/checkall --- qca2-2.0.3/unittest/checkall 2008-05-22 00:54:13.000000000 +0000 +++ qca2-2.1.0/unittest/checkall 2014-11-06 08:15:45.000000000 +0000 @@ -20,7 +20,6 @@ cd pgpunittest && make test && cd .. && \ cd pipeunittest && make test && cd .. && \ cd pkits && make test && cd .. && \ -cd randomunittest && make test && cd .. && \ cd rsaunittest && make test && cd .. && \ cd securearrayunittest && make test && cd .. && \ cd staticunittest && make test && cd .. && \ diff -Nru qca2-2.0.3/unittest/cipherunittest/cipherunittest.cpp qca2-2.1.0/unittest/cipherunittest/cipherunittest.cpp --- qca2-2.0.3/unittest/cipherunittest/cipherunittest.cpp 2007-09-02 18:50:34.000000000 +0000 +++ qca2-2.1.0/unittest/cipherunittest/cipherunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class CipherUnitTest : public QObject { @@ -44,6 +48,8 @@ void aes128_cfb(); void aes128_ofb_data(); void aes128_ofb(); + void aes128_ctr_data(); + void aes128_ctr(); void aes192_data(); void aes192(); @@ -55,6 +61,8 @@ void aes192_cfb(); void aes192_ofb_data(); void aes192_ofb(); + void aes192_ctr_data(); + void aes192_ctr(); void aes256_data(); void aes256(); @@ -66,6 +74,8 @@ void aes256_cfb(); void aes256_ofb_data(); void aes256_ofb(); + void aes256_ctr_data(); + void aes256_ctr(); void tripleDES_data(); void tripleDES(); @@ -105,7 +115,6 @@ void CipherUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void CipherUnitTest::cleanupTestCase() @@ -180,7 +189,7 @@ { QStringList providersToTest; providersToTest.append("qca-ossl"); - providersToTest.append("qca-gcrypt"); + // providersToTest.append("qca-gcrypt"); providersToTest.append("qca-botan"); providersToTest.append("qca-nss"); @@ -193,7 +202,7 @@ QFETCH( QString, keyText ); QCA::SymmetricKey key( QCA::hexToArray( keyText ) ); - QCA::Cipher forwardCipher( QString( "aes128" ), + QCA::Cipher forwardCipher( QString( "aes128" ), QCA::Cipher::ECB, QCA::Cipher::NoPadding, QCA::Encode, @@ -205,12 +214,14 @@ QCOMPARE( forwardCipher.keyLength().minimum(), 16 ); QCOMPARE( forwardCipher.keyLength().maximum(), 16 ); - QCOMPARE( QCA::arrayToHex( forwardCipher.update( QCA::hexToArray( plainText ) ).toByteArray() ), - cipherText ); + QString afterEncodeText = QCA::arrayToHex( forwardCipher.update( QCA::hexToArray( plainText ) ).toByteArray() ); QVERIFY( forwardCipher.ok() ); - QCOMPARE( QCA::arrayToHex( forwardCipher.final().toByteArray() ), QString( "" ) ); + + afterEncodeText += QCA::arrayToHex( forwardCipher.final().toByteArray() ); QVERIFY( forwardCipher.ok() ); + QCOMPARE( afterEncodeText, cipherText ); + QCA::Cipher reverseCipher( QString( "aes128" ), QCA::Cipher::ECB, QCA::Cipher::NoPadding, @@ -223,12 +234,13 @@ QCOMPARE( reverseCipher.keyLength().minimum(), 16 ); QCOMPARE( reverseCipher.keyLength().maximum(), 16 ); - QString update = QCA::arrayToHex( reverseCipher.update( QCA::hexToArray( cipherText ) ).toByteArray() ); + QString afterDecodeText = QCA::arrayToHex( reverseCipher.update( QCA::hexToArray( cipherText ) ).toByteArray() ); QVERIFY( reverseCipher.ok() ); - QCOMPARE( update, plainText.left(update.size() ) ); - QCOMPARE( update + QCA::arrayToHex( reverseCipher.final().toByteArray() ), plainText ); + + afterDecodeText += QCA::arrayToHex( reverseCipher.final().toByteArray() ); QVERIFY( reverseCipher.ok() ); + QCOMPARE( afterDecodeText, plainText ); } } } @@ -505,6 +517,66 @@ } } +void CipherUnitTest::aes128_ctr_data() +{ + QTest::addColumn("plainText"); + QTest::addColumn("cipherText"); + QTest::addColumn("keyText"); + QTest::addColumn("ivText"); + + QTest::newRow("1") << QString("6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710") + << QString("3b3fd92eb72dad20333449f8e83cfb4a010c041999e03f36448624483e582d0ea62293cfa6df74535c354181168774df2d55a54706273c50d7b4f8a8cddc6ed7") + << QString("2b7e151628aed2a6abf7158809cf4f3c") + << QString("000102030405060708090a0b0c0d0e0f"); +} + +void CipherUnitTest::aes128_ctr() +{ + QStringList providersToTest; + providersToTest.append("qca-ossl"); + providersToTest.append("qca-gcrypt"); + providersToTest.append("qca-botan"); + providersToTest.append("qca-nss"); + + foreach(const QString provider, providersToTest) { + if( !QCA::isSupported( "aes128-ctr", provider ) ) + QWARN( QString( "AES128 CTR not supported for "+provider).toLocal8Bit() ); + else { + QFETCH( QString, plainText ); + QFETCH( QString, cipherText ); + QFETCH( QString, keyText ); + QFETCH( QString, ivText ); + + QCA::SymmetricKey key( QCA::hexToArray( keyText ) ); + QCA::InitializationVector iv( QCA::hexToArray( ivText ) ); + QCA::Cipher forwardCipher( QString( "aes128" ), + QCA::Cipher::CTR, + QCA::Cipher::NoPadding, + QCA::Encode, + key, + iv, + provider); + QString update = QCA::arrayToHex( forwardCipher.update( QCA::hexToArray( plainText ) ).toByteArray() ); + QVERIFY( forwardCipher.ok() ); + QCOMPARE( update + QCA::arrayToHex( forwardCipher.final().toByteArray() ), cipherText ); + QVERIFY( forwardCipher.ok() ); + + QCA::Cipher reverseCipher( QString( "aes128" ), + QCA::Cipher::CTR, + QCA::Cipher::NoPadding, + QCA::Decode, + key, + iv, + provider); + update = QCA::arrayToHex( reverseCipher.update( QCA::hexToArray( cipherText ) ).toByteArray() ); + QVERIFY( reverseCipher.ok() ); + QCOMPARE( update, plainText.left(update.size() ) ); + QCOMPARE( update + QCA::arrayToHex( reverseCipher.final().toByteArray() ), plainText ); + QVERIFY( reverseCipher.ok() ); + } + } +} + void CipherUnitTest::aes192_data() { @@ -571,7 +643,7 @@ { QStringList providersToTest; providersToTest.append("qca-ossl"); - providersToTest.append("qca-gcrypt"); + // providersToTest.append("qca-gcrypt"); providersToTest.append("qca-botan"); providersToTest.append("qca-nss"); @@ -596,12 +668,14 @@ QCOMPARE( forwardCipher.keyLength().minimum(), 24 ); QCOMPARE( forwardCipher.keyLength().maximum(), 24 ); - QCOMPARE( QCA::arrayToHex( forwardCipher.update( QCA::hexToArray( plainText ) ).toByteArray() ), - cipherText ); + QString afterEncodeText = QCA::arrayToHex( forwardCipher.update( QCA::hexToArray( plainText ) ).toByteArray() ); QVERIFY( forwardCipher.ok() ); - QCOMPARE( QCA::arrayToHex( forwardCipher.final().toByteArray() ), QString( "" ) ); + + afterEncodeText += QCA::arrayToHex( forwardCipher.final().toByteArray() ); QVERIFY( forwardCipher.ok() ); + QCOMPARE( afterEncodeText, cipherText ); + QCA::Cipher reverseCipher( QString( "aes192" ), QCA::Cipher::ECB, QCA::Cipher::NoPadding, @@ -614,12 +688,13 @@ QCOMPARE( reverseCipher.keyLength().minimum(), 24 ); QCOMPARE( reverseCipher.keyLength().maximum(), 24 ); - QString update = QCA::arrayToHex( reverseCipher.update( QCA::hexToArray( cipherText ) ).toByteArray() ); + QString afterDecodeText = QCA::arrayToHex( reverseCipher.update( QCA::hexToArray( cipherText ) ).toByteArray() ); QVERIFY( reverseCipher.ok() ); - QCOMPARE( update, plainText.left(update.size() ) ); - QCOMPARE( update + QCA::arrayToHex( reverseCipher.final().toByteArray() ), plainText ); + + afterDecodeText += QCA::arrayToHex( reverseCipher.final().toByteArray() ); QVERIFY( reverseCipher.ok() ); + QCOMPARE( afterDecodeText, plainText ); } } } @@ -897,6 +972,66 @@ } } +void CipherUnitTest::aes192_ctr_data() +{ + QTest::addColumn("plainText"); + QTest::addColumn("cipherText"); + QTest::addColumn("keyText"); + QTest::addColumn("ivText"); + + QTest::newRow("1") << QString("6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710") + << QString("cdc80d6fddf18cab34c25909c99a417437d8a639171fdcca63ebd17ce2d7321a79a0c96b53c7eeecd9ed7157c444fc7a845c37b2f511697b0e89d5ed60c4d49e") + << QString("8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b") + << QString("000102030405060708090a0b0c0d0e0f"); +} + +void CipherUnitTest::aes192_ctr() +{ + QStringList providersToTest; + providersToTest.append("qca-ossl"); + providersToTest.append("qca-gcrypt"); + providersToTest.append("qca-botan"); + providersToTest.append("qca-nss"); + + foreach(const QString provider, providersToTest) { + if( !QCA::isSupported( "aes192-ctr", provider ) ) + QWARN( QString( "AES192 CTR not supported for "+provider).toLocal8Bit() ); + else { + QFETCH( QString, plainText ); + QFETCH( QString, cipherText ); + QFETCH( QString, keyText ); + QFETCH( QString, ivText ); + + QCA::SymmetricKey key( QCA::hexToArray( keyText ) ); + QCA::InitializationVector iv( QCA::hexToArray( ivText ) ); + QCA::Cipher forwardCipher( QString( "aes192" ), + QCA::Cipher::CTR, + QCA::Cipher::NoPadding, + QCA::Encode, + key, + iv, + provider); + QString update = QCA::arrayToHex( forwardCipher.update( QCA::hexToArray( plainText ) ).toByteArray() ); + QVERIFY( forwardCipher.ok() ); + QCOMPARE( update + QCA::arrayToHex( forwardCipher.final().toByteArray() ), cipherText ); + QVERIFY( forwardCipher.ok() ); + + QCA::Cipher reverseCipher( QString( "aes192" ), + QCA::Cipher::CTR, + QCA::Cipher::NoPadding, + QCA::Decode, + key, + iv, + provider); + update = QCA::arrayToHex( reverseCipher.update( QCA::hexToArray( cipherText ) ).toByteArray() ); + QVERIFY( reverseCipher.ok() ); + QCOMPARE( update, plainText.left(update.size() ) ); + QCOMPARE( update + QCA::arrayToHex( reverseCipher.final().toByteArray() ), plainText ); + QVERIFY( reverseCipher.ok() ); + } + } +} + void CipherUnitTest::aes256_data() { QTest::addColumn("plainText"); @@ -1001,7 +1136,7 @@ { QStringList providersToTest; providersToTest.append("qca-ossl"); - providersToTest.append("qca-gcrypt"); + // providersToTest.append("qca-gcrypt"); providersToTest.append("qca-botan"); providersToTest.append("qca-nss"); @@ -1026,12 +1161,14 @@ QCOMPARE( forwardCipher.keyLength().minimum(), 32 ); QCOMPARE( forwardCipher.keyLength().maximum(), 32 ); - QCOMPARE( QCA::arrayToHex( forwardCipher.update( QCA::hexToArray( plainText ) ).toByteArray() ), - cipherText ); + QString afterEncodeText = QCA::arrayToHex( forwardCipher.update( QCA::hexToArray( plainText ) ).toByteArray() ); QVERIFY( forwardCipher.ok() ); - QCOMPARE( QCA::arrayToHex( forwardCipher.final().toByteArray() ), QString( "" ) ); + + afterEncodeText += QCA::arrayToHex( forwardCipher.final().toByteArray() ); QVERIFY( forwardCipher.ok() ); + QCOMPARE( afterEncodeText, cipherText ); + QCA::Cipher reverseCipher( QString( "aes256" ), QCA::Cipher::ECB, QCA::Cipher::NoPadding, @@ -1044,12 +1181,13 @@ QCOMPARE( reverseCipher.keyLength().minimum(), 32 ); QCOMPARE( reverseCipher.keyLength().maximum(), 32 ); - QString update = QCA::arrayToHex( reverseCipher.update( QCA::hexToArray( cipherText ) ).toByteArray() ); + QString afterDecodeText = QCA::arrayToHex( reverseCipher.update( QCA::hexToArray( cipherText ) ).toByteArray() ); QVERIFY( reverseCipher.ok() ); - QCOMPARE( update, plainText.left(update.size() ) ); - QCOMPARE( update + QCA::arrayToHex( reverseCipher.final().toByteArray() ), plainText ); + + afterDecodeText += QCA::arrayToHex( reverseCipher.final().toByteArray() ); QVERIFY( reverseCipher.ok() ); + QCOMPARE( afterDecodeText, plainText ); } } } @@ -1326,6 +1464,66 @@ } } +void CipherUnitTest::aes256_ctr_data() +{ + QTest::addColumn("plainText"); + QTest::addColumn("cipherText"); + QTest::addColumn("keyText"); + QTest::addColumn("ivText"); + + QTest::newRow("1") << QString("6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710") + << QString("dc7e84bfda79164b7ecd8486985d3860d577788b8d8a85745513a5d50f821f30ffe96d5cf54b238dcc8d6783a87f3beae9af546344cb9ca4d1e553ffc06bc73e") + << QString("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4") + << QString("000102030405060708090a0b0c0d0e0f"); +} + +void CipherUnitTest::aes256_ctr() +{ + QStringList providersToTest; + providersToTest.append("qca-ossl"); + providersToTest.append("qca-gcrypt"); + providersToTest.append("qca-botan"); + providersToTest.append("qca-nss"); + + foreach(const QString provider, providersToTest) { + if( !QCA::isSupported( "aes256-ctr", provider ) ) + QWARN( QString( "AES256 CTR not supported for "+provider).toLocal8Bit() ); + else { + QFETCH( QString, plainText ); + QFETCH( QString, cipherText ); + QFETCH( QString, keyText ); + QFETCH( QString, ivText ); + + QCA::SymmetricKey key( QCA::hexToArray( keyText ) ); + QCA::InitializationVector iv( QCA::hexToArray( ivText ) ); + QCA::Cipher forwardCipher( QString( "aes256" ), + QCA::Cipher::CTR, + QCA::Cipher::NoPadding, + QCA::Encode, + key, + iv, + provider); + QString update = QCA::arrayToHex( forwardCipher.update( QCA::hexToArray( plainText ) ).toByteArray() ); + QVERIFY( forwardCipher.ok() ); + QCOMPARE( update + QCA::arrayToHex( forwardCipher.final().toByteArray() ), cipherText ); + QVERIFY( forwardCipher.ok() ); + + QCA::Cipher reverseCipher( QString( "aes256" ), + QCA::Cipher::CTR, + QCA::Cipher::NoPadding, + QCA::Decode, + key, + iv, + provider); + + QCOMPARE( QCA::arrayToHex( reverseCipher.update( QCA::hexToArray( cipherText ) ).toByteArray() ), plainText ); + QVERIFY( reverseCipher.ok() ); + QCOMPARE( QCA::arrayToHex( reverseCipher.final().toByteArray() ), QString( "" ) ); + QVERIFY( reverseCipher.ok() ); + } + } +} + void CipherUnitTest::tripleDES_data() { QTest::addColumn("plainText"); @@ -1442,7 +1640,7 @@ { QStringList providersToTest; providersToTest.append("qca-ossl"); - // providersToTest.append("qca-gcrypt"); + // providersToTest.append("qca-gcrypt"); providersToTest.append("qca-botan"); providersToTest.append("qca-nss"); @@ -1475,12 +1673,15 @@ key, QCA::InitializationVector(), provider ); - QCOMPARE( QCA::arrayToHex( forwardCipher.update( QCA::hexToArray( plainText ) ).toByteArray() ), - QString( cipherText ) ); + + QString afterEncodeText = QCA::arrayToHex( forwardCipher.update( QCA::hexToArray( plainText ) ).toByteArray() ); QVERIFY( forwardCipher.ok() ); - QCOMPARE( QCA::arrayToHex( forwardCipher.final().toByteArray() ), QString( "" ) ); + + afterEncodeText += QCA::arrayToHex( forwardCipher.final().toByteArray() ); QVERIFY( forwardCipher.ok() ); + QCOMPARE( afterEncodeText, cipherText ); + QCA::Cipher reverseCipher( QString( "tripledes" ), QCA::Cipher::ECB, QCA::Cipher::NoPadding, @@ -1488,11 +1689,14 @@ key, QCA::InitializationVector(), provider ); - QString update = QCA::arrayToHex( reverseCipher.update( QCA::hexToArray( cipherText ) ).toByteArray() ); + + QString afterDecodeText = QCA::arrayToHex( reverseCipher.update( QCA::hexToArray( cipherText ) ).toByteArray() ); QVERIFY( reverseCipher.ok() ); - QCOMPARE( update, plainText.left(update.size() ) ); - QCOMPARE( update + QCA::arrayToHex( reverseCipher.final().toByteArray() ), plainText ); + + afterDecodeText += QCA::arrayToHex( reverseCipher.final().toByteArray() ); QVERIFY( reverseCipher.ok() ); + + QCOMPARE( afterDecodeText, plainText ); } } } @@ -1721,7 +1925,7 @@ { QStringList providersToTest; providersToTest.append("qca-ossl"); - providersToTest.append("qca-gcrypt"); + // providersToTest.append("qca-gcrypt"); providersToTest.append("qca-botan"); providersToTest.append("qca-nss"); @@ -1746,12 +1950,14 @@ QCOMPARE( forwardCipher.keyLength().minimum(), 8 ); QCOMPARE( forwardCipher.keyLength().maximum(), 8 ); - QCOMPARE( QCA::arrayToHex( forwardCipher.update( QCA::hexToArray( plainText ) ).toByteArray() ), - cipherText ); + QString afterEncodeText = QCA::arrayToHex( forwardCipher.update( QCA::hexToArray( plainText ) ).toByteArray() ); QVERIFY( forwardCipher.ok() ); - QCOMPARE( QCA::arrayToHex( forwardCipher.final().toByteArray() ), QString( "" ) ); + + afterEncodeText += QCA::arrayToHex( forwardCipher.final().toByteArray() ); QVERIFY( forwardCipher.ok() ); + QCOMPARE( afterEncodeText, cipherText ); + QCA::Cipher reverseCipher( QString( "des" ), QCA::Cipher::ECB, QCA::Cipher::NoPadding, @@ -1764,12 +1970,13 @@ QCOMPARE( reverseCipher.keyLength().minimum(), 8 ); QCOMPARE( reverseCipher.keyLength().maximum(), 8 ); - QString update = QCA::arrayToHex( reverseCipher.update( QCA::hexToArray( cipherText ) ).toByteArray() ); + QString afterDecodeText = QCA::arrayToHex( reverseCipher.update( QCA::hexToArray( cipherText ) ).toByteArray() ); QVERIFY( reverseCipher.ok() ); - QCOMPARE( update, plainText.left(update.size() ) ); - QCOMPARE( update + QCA::arrayToHex( reverseCipher.final().toByteArray() ), plainText ); + + afterDecodeText += QCA::arrayToHex( reverseCipher.final().toByteArray() ); QVERIFY( reverseCipher.ok() ); + QCOMPARE( afterDecodeText, plainText ); } } } @@ -2400,7 +2607,7 @@ { QStringList providersToTest; providersToTest.append("qca-ossl"); - providersToTest.append("qca-gcrypt"); + // providersToTest.append("qca-gcrypt"); providersToTest.append("qca-botan"); providersToTest.append("qca-nss"); @@ -2430,12 +2637,15 @@ key, QCA::InitializationVector(), provider ); - QCOMPARE( QCA::arrayToHex( forwardCipher.update( QCA::hexToArray( plainText ) ).toByteArray() ), - QString( cipherText ) ); + + QString afterEncodeText = QCA::arrayToHex( forwardCipher.update( QCA::hexToArray( plainText ) ).toByteArray() ); QVERIFY( forwardCipher.ok() ); - QCOMPARE( QCA::arrayToHex( forwardCipher.final().toByteArray() ), QString( "" ) ); + + afterEncodeText += QCA::arrayToHex( forwardCipher.final().toByteArray() ); QVERIFY( forwardCipher.ok() ); + QCOMPARE( afterEncodeText, cipherText ); + QCA::Cipher reverseCipher( QString( "blowfish" ), QCA::Cipher::ECB, QCA::Cipher::NoPadding, @@ -2443,11 +2653,13 @@ key, QCA::InitializationVector(), provider ); - QString update = QCA::arrayToHex( reverseCipher.update( QCA::hexToArray( cipherText ) ).toByteArray() ); + QString afterDecodeText = QCA::arrayToHex( reverseCipher.update( QCA::hexToArray( cipherText ) ).toByteArray() ); QVERIFY( reverseCipher.ok() ); - QCOMPARE( update, plainText.left(update.size() ) ); - QCOMPARE( update + QCA::arrayToHex( reverseCipher.final().toByteArray() ), plainText ); + + afterDecodeText += QCA::arrayToHex( reverseCipher.final().toByteArray() ); QVERIFY( reverseCipher.ok() ); + + QCOMPARE( afterDecodeText, plainText ); } } } diff -Nru qca2-2.0.3/unittest/cipherunittest/cipherunittest.pro qca2-2.1.0/unittest/cipherunittest/cipherunittest.pro --- qca2-2.0.3/unittest/cipherunittest/cipherunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/cipherunittest/cipherunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = cipherunittest -test.commands = ./cipherunittest - -# Input -SOURCES += cipherunittest.cpp diff -Nru qca2-2.0.3/unittest/cipherunittest/CMakeLists.txt qca2-2.1.0/unittest/cipherunittest/CMakeLists.txt --- qca2-2.0.3/unittest/cipherunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/cipherunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set( cipherunittest_bin_SRCS cipherunittest.cpp ) + +MY_AUTOMOC( cipherunittest_bin_SRCS ) + +add_executable(cipherunittest ${cipherunittest_bin_SRCS} ) + +target_link_qca_test_libraries(cipherunittest) + +add_qca_test(cipherunittest "SymmetricCipher") diff -Nru qca2-2.0.3/unittest/clientplugin/clientplugin.cpp qca2-2.1.0/unittest/clientplugin/clientplugin.cpp --- qca2-2.0.3/unittest/clientplugin/clientplugin.cpp 2007-06-08 20:05:04.000000000 +0000 +++ qca2-2.1.0/unittest/clientplugin/clientplugin.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -24,8 +24,13 @@ */ #include +#include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class ClientPlugin : public QObject { Q_OBJECT @@ -33,7 +38,7 @@ private slots: void initTestCase(); void cleanupTestCase(); - void testInsertPlugin(); + void testInsertRemovePlugin(); private: QCA::Initializer* m_init; @@ -43,7 +48,6 @@ void ClientPlugin::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void ClientPlugin::cleanupTestCase() @@ -51,8 +55,12 @@ delete m_init; } -class TestClientProvider : public QCA::Provider +const QString providerName = "testClientSideProvider"; + +class TestClientProvider : public QObject, public QCA::Provider { + Q_OBJECT + public: int qcaVersion() const { @@ -61,7 +69,7 @@ QString name() const { - return "testClientSideProvider"; + return providerName; } QStringList features() const @@ -85,9 +93,17 @@ } }; -void ClientPlugin::testInsertPlugin() +void ClientPlugin::testInsertRemovePlugin() { - QCA::insertProvider(new TestClientProvider, 0); + QPointer provider = new TestClientProvider; + + QVERIFY(QCA::insertProvider(provider, 10)); + QCOMPARE(QCA::findProvider(providerName), provider.data()); + QCOMPARE(QCA::providerPriority(providerName), 10); + + QVERIFY(QCA::unloadProvider(providerName)); + QCOMPARE(QCA::findProvider(providerName), static_cast(0)); + QVERIFY(provider.isNull()); } QTEST_MAIN(ClientPlugin) diff -Nru qca2-2.0.3/unittest/clientplugin/clientplugin.pro qca2-2.1.0/unittest/clientplugin/clientplugin.pro --- qca2-2.0.3/unittest/clientplugin/clientplugin.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/clientplugin/clientplugin.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = clientplugin -test.commands = ./clientplugin - -# Input -SOURCES += clientplugin.cpp diff -Nru qca2-2.0.3/unittest/clientplugin/CMakeLists.txt qca2-2.1.0/unittest/clientplugin/CMakeLists.txt --- qca2-2.0.3/unittest/clientplugin/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/clientplugin/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set( clientplugin_bin_SRCS clientplugin.cpp ) + +MY_AUTOMOC( clientplugin_bin_SRCS ) + +add_executable(clientplugin ${clientplugin_bin_SRCS} ) + +target_link_qca_test_libraries(clientplugin) + +add_qca_test(clientplugin "ClientSidePlugin") diff -Nru qca2-2.0.3/unittest/CMakeLists.txt qca2-2.1.0/unittest/CMakeLists.txt --- qca2-2.0.3/unittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,34 @@ +ENABLE_TESTING() +# QTEST_MAIN is using QApplication when QT_GUI_LIB is defined +remove_definitions(-DQT_GUI_LIB) +if(Qt5Core_FOUND) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}") + find_package(Qt5Transitional REQUIRED Test) +endif(Qt5Core_FOUND) + +add_subdirectory(base64unittest) +add_subdirectory(bigintunittest) +add_subdirectory(certunittest) +add_subdirectory(cipherunittest) +add_subdirectory(clientplugin) +add_subdirectory(cms) +add_subdirectory(dsaunittest) +add_subdirectory(filewatchunittest) +add_subdirectory(hashunittest) +add_subdirectory(hexunittest) +add_subdirectory(kdfunittest) +add_subdirectory(keybundle) +add_subdirectory(keygenunittest) +add_subdirectory(keylengthunittest) +add_subdirectory(keystore) +add_subdirectory(macunittest) +add_subdirectory(metatype) +add_subdirectory(pgpunittest) +add_subdirectory(pipeunittest) +add_subdirectory(pkits) +add_subdirectory(rsaunittest) +add_subdirectory(securearrayunittest) +add_subdirectory(staticunittest) +add_subdirectory(symmetrickeyunittest) +add_subdirectory(tls) +add_subdirectory(velox) diff -Nru qca2-2.0.3/unittest/cms/CMakeLists.txt qca2-2.1.0/unittest/cms/CMakeLists.txt --- qca2-2.0.3/unittest/cms/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/cms/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,15 @@ +ENABLE_TESTING() + +set(cms_bin_SRCS cms.cpp) + +MY_AUTOMOC( cms_bin_SRCS ) + +add_executable(cms ${cms_bin_SRCS} ) + +target_link_qca_test_libraries(cms) + +FOREACH( testFileName QcaTestRootCert.pem QcaTestClientCert.pem QcaTestClientKey.pem ) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${testFileName} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${testFileName} COPYONLY) +ENDFOREACH( testFileName ) + +add_qca_test(cms "CryptographicMessageSyntax") diff -Nru qca2-2.0.3/unittest/cms/cms.cpp qca2-2.1.0/unittest/cms/cms.cpp --- qca2-2.0.3/unittest/cms/cms.cpp 2007-07-22 04:18:42.000000000 +0000 +++ qca2-2.1.0/unittest/cms/cms.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class CMSut : public QObject { @@ -51,7 +55,6 @@ void CMSut::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void CMSut::cleanupTestCase() diff -Nru qca2-2.0.3/unittest/cms/cms.pro qca2-2.1.0/unittest/cms/cms.pro --- qca2-2.0.3/unittest/cms/cms.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/cms/cms.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = cms -test.commands = ./cms - -# Input -SOURCES += cms.cpp diff -Nru qca2-2.0.3/unittest/cms/QcaTestClientCert.pem qca2-2.1.0/unittest/cms/QcaTestClientCert.pem --- qca2-2.0.3/unittest/cms/QcaTestClientCert.pem 2007-07-22 04:18:42.000000000 +0000 +++ qca2-2.1.0/unittest/cms/QcaTestClientCert.pem 2014-11-06 08:15:45.000000000 +0000 @@ -1,84 +1,72 @@ Certificate: Data: Version: 3 (0x2) - Serial Number: - b6:7b:e8:90:4d:70:7d:80 - Signature Algorithm: sha1WithRSAEncryption + Serial Number: 5 (0x5) + Signature Algorithm: sha1WithRSAEncryption Issuer: C=AU, ST=Australian Capital Territory, O=Qca Development and Test, OU=Certificate Generation Section, CN=Qca Test Root Certificate/emailAddress=testonly@test.example.com Validity - Not Before: Jul 22 03:30:29 2007 GMT - Not After : Jul 20 03:30:29 2012 GMT - Subject: C=US, ST=Kalifornia, L=QcaLand, O=Qca Development and Test, OU=Certificate Generation Section, CN=Qca Test Client Certificate/emailAddress=client@test.example.com + Not Before: Aug 7 12:26:00 2013 GMT + Not After : Aug 2 12:26:00 2033 GMT + Subject: C=US, ST=Kalifornia, O=Qca Development and Test, OU=Certificate Generation Section, CN=Qca Test Client Certificate/emailAddress=client@test.example.com, L=QcaLand Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:b0:67:99:c9:d4:42:eb:f5:a6:25:7e:99:31:4e: - d7:71:e2:15:95:8b:6a:e9:13:c6:0a:6e:cd:5d:ce: - 23:c8:b0:4a:af:d6:d3:ef:3d:09:23:97:6d:ed:49: - 0a:2c:e4:9d:a2:50:78:bc:a5:94:79:45:b1:b0:85: - 3a:02:1b:5f:f4:be:94:9e:a1:d1:a4:9c:31:02:ed: - 62:3f:b3:f1:1a:5b:7d:31:27:ae:7b:f1:67:bd:60: - 86:27:34:80:96:53:04:00:4e:d8:f2:b3:bb:6e:62: - ab:51:ee:f9:25:ad:de:3a:4f:e5:1e:d5:42:28:e8: - 73:96:4c:1f:06:42:ee:d8:8b + Public-Key: (1024 bit) + Modulus: + 00:bf:38:f0:71:72:32:8a:f7:31:07:79:d1:35:31: + fe:04:51:10:8c:ca:6d:d0:83:5d:04:05:24:6e:6e: + 24:fe:95:fe:c2:f8:4b:92:39:2c:e8:c3:c8:0d:b3: + c6:a2:76:33:66:13:38:29:11:fb:62:92:71:b8:08: + 2b:6c:43:32:de:67:4e:46:7d:b6:0b:d4:f7:8c:26: + 29:7d:96:71:a5:8d:ca:01:b4:63:bd:eb:70:62:02: + 3a:3c:e0:e6:81:f1:2b:d3:a5:7d:aa:72:7f:3c:9e: + 1f:df:9c:4e:5e:d7:09:fe:f6:9e:9f:8f:4a:25:f2: + 27:b9:c8:90:76:b0:f1:e2:9d Exponent: 65537 (0x10001) X509v3 extensions: - Netscape Cert Type: - SSL Client, S/MIME + X509v3 Basic Constraints: + CA:FALSE X509v3 Key Usage: Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment X509v3 Extended Key Usage: TLS Web Client Authentication, E-mail Protection - Netscape Comment: - This certificate was issued for testing only! X509v3 Subject Key Identifier: - B2:7F:D3:11:39:23:BE:1D:C4:6F:53:CE:81:AF:F1:D4:80:01:F6:F6 + 99:1B:6A:FD:E7:CF:B3:A1:B8:7C:8B:E7:21:75:65:74:31:62:A8:F5 X509v3 Authority Key Identifier: - keyid:51:3F:F2:14:6E:49:6A:DC:41:B8:15:B5:A0:86:F4:2E:E4:F5:45:F8 - DirName:/C=AU/ST=Australian Capital Territory/O=Qca Development and Test/OU=Certificate Generation Section/CN=Qca Test Root Certificate/emailAddress=testonly@test.example.com - serial:B6:7B:E8:90:4D:70:7D:7F + keyid:C5:B1:01:67:2C:CE:84:23:BD:7C:6B:29:38:D5:47:25:AD:09:DF:67 X509v3 Subject Alternative Name: email:client@test.example.com X509v3 Issuer Alternative Name: email:testonly@test.example.com Signature Algorithm: sha1WithRSAEncryption - 36:9a:0e:7a:a4:d3:6b:e8:d6:1b:ba:34:89:a6:dc:26:01:28: - 71:7d:28:71:22:79:ae:3b:27:2a:d5:6c:d6:99:93:c0:01:45: - 5d:78:2a:83:05:a8:eb:41:be:62:37:92:ff:b9:41:3d:37:4c: - 25:85:4b:c8:c3:ba:cd:71:06:18:12:a3:7f:2d:17:90:b2:87: - e6:ca:86:fb:dc:d0:ef:1d:d6:b3:86:b3:28:72:45:fa:bb:dd: - 32:06:44:b1:ed:35:b6:c4:6b:54:88:49:9d:3a:2e:fa:37:3b: - 84:98:de:68:14:ac:2f:37:42:21:f5:b9:27:18:1b:5d:5e:ba: - 74:09 + d1:8d:8a:30:9b:d6:a4:5b:85:be:8d:12:ab:6e:ec:69:66:0a: + cc:3b:df:4f:35:5a:b1:d0:a8:5d:12:3a:de:0d:e5:47:7c:d3: + 7f:65:0a:7e:93:8a:a9:82:4a:74:04:e8:f6:30:67:e8:7b:41: + 7b:bd:b6:41:7f:bc:ff:f0:57:77:10:2e:20:5c:d4:9e:04:03: + a4:78:cb:df:90:da:51:bc:d7:9f:be:12:62:d7:bd:ea:98:af: + a1:6b:64:9d:da:57:de:d3:18:fa:cd:a0:7f:70:e1:c6:7b:f2: + d5:b4:ce:0d:1f:fe:d7:52:bd:df:22:87:32:ea:d9:5b:a8:71: + db:bb -----BEGIN CERTIFICATE----- -MIIFDzCCBHigAwIBAgIJALZ76JBNcH2AMA0GCSqGSIb3DQEBBQUAMIHOMQswCQYD -VQQGEwJBVTElMCMGA1UECBMcQXVzdHJhbGlhbiBDYXBpdGFsIFRlcnJpdG9yeTEh -MB8GA1UEChMYUWNhIERldmVsb3BtZW50IGFuZCBUZXN0MScwJQYDVQQLEx5DZXJ0 -aWZpY2F0ZSBHZW5lcmF0aW9uIFNlY3Rpb24xIjAgBgNVBAMTGVFjYSBUZXN0IFJv -b3QgQ2VydGlmaWNhdGUxKDAmBgkqhkiG9w0BCQEWGXRlc3Rvbmx5QHRlc3QuZXhh -bXBsZS5jb20wHhcNMDcwNzIyMDMzMDI5WhcNMTIwNzIwMDMzMDI5WjCBzjELMAkG -A1UEBhMCVVMxEzARBgNVBAgTCkthbGlmb3JuaWExEDAOBgNVBAcTB1FjYUxhbmQx -ITAfBgNVBAoTGFFjYSBEZXZlbG9wbWVudCBhbmQgVGVzdDEnMCUGA1UECxMeQ2Vy -dGlmaWNhdGUgR2VuZXJhdGlvbiBTZWN0aW9uMSQwIgYDVQQDExtRY2EgVGVzdCBD -bGllbnQgQ2VydGlmaWNhdGUxJjAkBgkqhkiG9w0BCQEWF2NsaWVudEB0ZXN0LmV4 -YW1wbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwZ5nJ1ELr9aYl -fpkxTtdx4hWVi2rpE8YKbs1dziPIsEqv1tPvPQkjl23tSQos5J2iUHi8pZR5RbGw -hToCG1/0vpSeodGknDEC7WI/s/EaW30xJ6578We9YIYnNICWUwQATtjys7tuYqtR -7vklrd46T+Ue1UIo6HOWTB8GQu7YiwIDAQABo4IB8TCCAe0wEQYJYIZIAYb4QgEB -BAQDAgWgMAsGA1UdDwQEAwIE8DAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH -AwQwPAYJYIZIAYb4QgENBC8WLVRoaXMgY2VydGlmaWNhdGUgd2FzIGlzc3VlZCBm -b3IgdGVzdGluZyBvbmx5ITAdBgNVHQ4EFgQUsn/TETkjvh3Eb1POga/x1IAB9vYw -ggEDBgNVHSMEgfswgfiAFFE/8hRuSWrcQbgVtaCG9C7k9UX4oYHUpIHRMIHOMQsw -CQYDVQQGEwJBVTElMCMGA1UECBMcQXVzdHJhbGlhbiBDYXBpdGFsIFRlcnJpdG9y -eTEhMB8GA1UEChMYUWNhIERldmVsb3BtZW50IGFuZCBUZXN0MScwJQYDVQQLEx5D -ZXJ0aWZpY2F0ZSBHZW5lcmF0aW9uIFNlY3Rpb24xIjAgBgNVBAMTGVFjYSBUZXN0 -IFJvb3QgQ2VydGlmaWNhdGUxKDAmBgkqhkiG9w0BCQEWGXRlc3Rvbmx5QHRlc3Qu -ZXhhbXBsZS5jb22CCQC2e+iQTXB9fzAiBgNVHREEGzAZgRdjbGllbnRAdGVzdC5l -eGFtcGxlLmNvbTAkBgNVHRIEHTAbgRl0ZXN0b25seUB0ZXN0LmV4YW1wbGUuY29t -MA0GCSqGSIb3DQEBBQUAA4GBADaaDnqk02vo1hu6NImm3CYBKHF9KHEiea47JyrV -bNaZk8ABRV14KoMFqOtBvmI3kv+5QT03TCWFS8jDus1xBhgSo38tF5Cyh+bKhvvc -0O8d1rOGsyhyRfq73TIGRLHtNbbEa1SISZ06Lvo3O4SY3mgUrC83QiH1uScYG11e -unQJ +MIID2TCCA0KgAwIBAgIBBTANBgkqhkiG9w0BAQUFADCBzjELMAkGA1UEBhMCQVUx +JTAjBgNVBAgMHEF1c3RyYWxpYW4gQ2FwaXRhbCBUZXJyaXRvcnkxITAfBgNVBAoM +GFFjYSBEZXZlbG9wbWVudCBhbmQgVGVzdDEnMCUGA1UECwweQ2VydGlmaWNhdGUg +R2VuZXJhdGlvbiBTZWN0aW9uMSIwIAYDVQQDDBlRY2EgVGVzdCBSb290IENlcnRp +ZmljYXRlMSgwJgYJKoZIhvcNAQkBFhl0ZXN0b25seUB0ZXN0LmV4YW1wbGUuY29t +MB4XDTEzMDgwNzEyMjYwMFoXDTMzMDgwMjEyMjYwMFowgc4xCzAJBgNVBAYTAlVT +MRMwEQYDVQQIDApLYWxpZm9ybmlhMSEwHwYDVQQKDBhRY2EgRGV2ZWxvcG1lbnQg +YW5kIFRlc3QxJzAlBgNVBAsMHkNlcnRpZmljYXRlIEdlbmVyYXRpb24gU2VjdGlv +bjEkMCIGA1UEAwwbUWNhIFRlc3QgQ2xpZW50IENlcnRpZmljYXRlMSYwJAYJKoZI +hvcNAQkBFhdjbGllbnRAdGVzdC5leGFtcGxlLmNvbTEQMA4GA1UEBwwHUWNhTGFu +ZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvzjwcXIyivcxB3nRNTH+BFEQ +jMpt0INdBAUkbm4k/pX+wvhLkjks6MPIDbPGonYzZhM4KRH7YpJxuAgrbEMy3mdO +Rn22C9T3jCYpfZZxpY3KAbRjvetwYgI6PODmgfEr06V9qnJ/PJ4f35xOXtcJ/vae +n49KJfInuciQdrDx4p0CAwEAAaOBxDCBwTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE +8DAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwHQYDVR0OBBYEFJkbav3n +z7OhuHyL5yF1ZXQxYqj1MB8GA1UdIwQYMBaAFMWxAWcszoQjvXxrKTjVRyWtCd9n +MCIGA1UdEQQbMBmBF2NsaWVudEB0ZXN0LmV4YW1wbGUuY29tMCQGA1UdEgQdMBuB +GXRlc3Rvbmx5QHRlc3QuZXhhbXBsZS5jb20wDQYJKoZIhvcNAQEFBQADgYEA0Y2K +MJvWpFuFvo0Sq27saWYKzDvfTzVasdCoXRI63g3lR3zTf2UKfpOKqYJKdATo9jBn +6HtBe722QX+8//BXdxAuIFzUngQDpHjL35DaUbzXn74SYte96pivoWtkndpX3tMY ++s2gf3Dhxnvy1bTODR/+11K93yKHMurZW6hx27s= -----END CERTIFICATE----- diff -Nru qca2-2.0.3/unittest/cms/QcaTestClientKey.pem qca2-2.1.0/unittest/cms/QcaTestClientKey.pem --- qca2-2.0.3/unittest/cms/QcaTestClientKey.pem 2007-07-22 04:18:42.000000000 +0000 +++ qca2-2.1.0/unittest/cms/QcaTestClientKey.pem 2014-11-06 08:15:45.000000000 +0000 @@ -1,18 +1,18 @@ -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED -DEK-Info: DES-EDE3-CBC,01D7BE24BC393F67 +DEK-Info: DES-EDE3-CBC,40932B6AC97B24F3 -YD+Cd+6k827fCA9vltY+GETCkcBbOX1uZoqcr5hqeQrJsdXZuh012j+sc4B3i6UM -UQURYOOlIxegmLrL2rngBLdh1z+xzX3swURMOYwLSNv3vUFi8XFPjslURdaEbbNU -PqnemoKJHJf/xOahTB9JJcCmGtg7gt1JlUaQSo2ytZibgdwhdKwHtWnB9xw9lDoN -3GQJDTQ6v0CveTHxnTSxSpPscgXKsMPJ/KJ0qgunO4IEivSPo2yTdiUIxUy5ytPC -joPAjq/3MgWksabyphFcZbh4awQLwsR6uzOHOkhyOl7J4OLQiUuGdtw//48SXgH7 -P7ZnJhECZd2zeWPEVrBYMTajon4BssjZfpoWkE+towxEWixD721gTtxm1R4EoUki -8/d1KAF6U1JWPK9bFmZ6kxgrn4uSlCWeOAoCrQaD0lRLziuc0sqN7pg+fWZuSQcl -jYBcusqq/8lrOG5eXZka/T5FGD/ue00YXLzwdTh441kEkSsU/vgZbOP9yl9c+ZsH -RQPwTQFvia1HtnZgBg+GrHPcNOFtM/rBPbZt5uJ3nCKIZtu/AqgEBlyxrSWxT4jG -P/Oa53HkS7SuweK2oMp/NVY6lf9KV4GrWuVHW5kSzYUhELX28zf9lgiB8sZWsfgI -aaB9INU66B8D/AP3wPgwkOsiHk2/3AVY/J/uxMfxd7nON8w8Cgxduf6jkHqWqPCp -d6sPvweJW1gpnm0e9vPqihj/4dIRvPFNJ2DQZryDiFjJjgxvVm+t/8p+eMRYAfdZ -/ebC7LtadoRJHWI2UkNHNIcf3VlP88cgZLGOakQPq15/axMXAwpPLQ== +X134DPKLmgy2u5HzlHFIpr1fxx40jW1EmvFABIe/VKcdTywmLcGTVCVoPuv305x7 +IfnnhTPkwM1v5rgm7zyq/KHkYp1Jens81/zBlUUd6ixxq//AzaEUC/42ZF+2l8/+ +KMVHm3NCtJjBXXx6yOFH6ov7A+OYZnK/4rFLYW3cUo4spRr31tDSBiNaEuI/zhgU +8V5ag9LuvIC+qmtWMSeLWUjPZknEPWi06/Uw2D9Ahi0WL1vaDOf5zsEIbnNupzoe +pAVqnWX5TtUFcRUXkXhKmdfq9V7yI4VdPEB8BP9yxGU919az30EQnoenaSVK8zDs +6g/rroy2nhSZE0Ni3eOCyeLBQoR/oFe6DP/Jgis0ITSTRmstB4nE86GJh1AcnUTM +MsBwcdXg6yYXn8qDTC2O0/KMKNaUC0/M0Aco+4M/bRWuc7FTjF6JmW6zlbG0IL0t +Oi/3xbFMJFX0hkfC3EKm1KYRHGOTeA9523UVHuxO0tQ5g8648DimXxEkwaFxTn87 +A0rCIb+XDFuARXVoA7NJs88kg6hYA2+DCmmN5TLmaoTYyMx08UvQJhhV7cDPmjyB +N2f6tDVzVBhzs3x/gnvdnMF3eGgElhmJhXy4T61a+UEHpjc8EXx1daI5ahcUw0vS +gyl9spsMVZ6UOIkbFPm6jwe5csaz9OPQ5leWfKv8mkxdZHxWadSLOAPzoytvBarl +DYFaeScsw0aaBNlZ0mIH3GYa4pw3xEl8QNGtgqacZEytP4ZGxhv8/bES4IaXCALF +ZUxcWAW3EqF4skTkE5rwmirNJQeSFHhBZPwUHrEQuD8opCwCsWVovQ== -----END RSA PRIVATE KEY----- diff -Nru qca2-2.0.3/unittest/cms/QcaTestRootCert.pem qca2-2.1.0/unittest/cms/QcaTestRootCert.pem --- qca2-2.0.3/unittest/cms/QcaTestRootCert.pem 2007-07-22 04:18:42.000000000 +0000 +++ qca2-2.1.0/unittest/cms/QcaTestRootCert.pem 2014-11-06 08:15:45.000000000 +0000 @@ -1,83 +1,23 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - b6:7b:e8:90:4d:70:7d:7f - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=AU, ST=Australian Capital Territory, O=Qca Development and Test, OU=Certificate Generation Section, CN=Qca Test Root Certificate/emailAddress=testonly@test.example.com - Validity - Not Before: Jul 22 01:48:15 2007 GMT - Not After : Jan 11 01:48:15 2013 GMT - Subject: C=AU, ST=Australian Capital Territory, O=Qca Development and Test, OU=Certificate Generation Section, CN=Qca Test Root Certificate/emailAddress=testonly@test.example.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:a1:a2:3e:9e:53:de:98:2c:2f:9e:fa:12:fa:54: - 6c:0a:0a:e8:23:f4:25:86:24:da:ed:6f:18:e2:6e: - 1e:ae:36:4e:45:63:0d:5b:20:aa:09:70:55:b9:a1: - 08:e3:cb:3d:e3:c3:ca:34:c3:c7:90:30:50:51:d6: - 30:b3:3f:12:70:99:ae:2d:c8:2e:ea:c6:c6:43:e5: - 9f:30:ab:e3:5b:d9:b0:91:92:c2:94:79:79:9b:87: - 05:60:01:8c:f1:0e:75:f7:82:d6:f9:e6:fb:45:b8: - 4d:53:eb:66:a0:98:93:28:d7:1e:db:43:3d:84:9b: - 2b:1f:ee:af:d8:23:b5:a1:cd - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE - X509v3 Key Usage: - Digital Signature, Non Repudiation, Key Encipherment, Certificate Sign, CRL Sign - X509v3 Subject Key Identifier: - 51:3F:F2:14:6E:49:6A:DC:41:B8:15:B5:A0:86:F4:2E:E4:F5:45:F8 - X509v3 Authority Key Identifier: - keyid:51:3F:F2:14:6E:49:6A:DC:41:B8:15:B5:A0:86:F4:2E:E4:F5:45:F8 - DirName:/C=AU/ST=Australian Capital Territory/O=Qca Development and Test/OU=Certificate Generation Section/CN=Qca Test Root Certificate/emailAddress=testonly@test.example.com - serial:B6:7B:E8:90:4D:70:7D:7F - - X509v3 Subject Alternative Name: - email:testonly@test.example.com - X509v3 Issuer Alternative Name: - email:testonly@test.example.com - Netscape Cert Type: - SSL CA, S/MIME CA, Object Signing CA - Netscape Comment: - This certificate was issued for testing only! - Signature Algorithm: sha1WithRSAEncryption - 0f:b6:d9:37:b3:d8:bb:69:1e:ce:1a:35:29:1b:ce:d5:38:3e: - 29:13:17:91:5b:1f:9c:59:52:67:d3:05:91:2a:e8:7f:b9:76: - 1a:01:f6:9f:07:74:be:e4:37:87:d0:9b:84:c6:81:3f:c4:96: - 52:46:80:52:a7:7b:14:fd:f6:4d:23:15:b6:7e:2a:a6:d7:90: - 97:4f:22:7c:3e:7d:12:84:28:a4:9a:30:67:77:16:f7:80:0f: - 6a:d0:82:fc:f6:91:39:14:d2:a5:de:18:f1:bb:38:f1:98:88: - 1c:13:63:e9:a3:d7:b5:b0:70:f2:82:58:bd:ef:3c:02:42:a0: - 7e:c9 -----BEGIN CERTIFICATE----- -MIIFAzCCBGygAwIBAgIJALZ76JBNcH1/MA0GCSqGSIb3DQEBBQUAMIHOMQswCQYD -VQQGEwJBVTElMCMGA1UECBMcQXVzdHJhbGlhbiBDYXBpdGFsIFRlcnJpdG9yeTEh -MB8GA1UEChMYUWNhIERldmVsb3BtZW50IGFuZCBUZXN0MScwJQYDVQQLEx5DZXJ0 -aWZpY2F0ZSBHZW5lcmF0aW9uIFNlY3Rpb24xIjAgBgNVBAMTGVFjYSBUZXN0IFJv +MIIDyjCCAzOgAwIBAgIJANsTWPQabIWbMA0GCSqGSIb3DQEBBQUAMIHOMQswCQYD +VQQGEwJBVTElMCMGA1UECAwcQXVzdHJhbGlhbiBDYXBpdGFsIFRlcnJpdG9yeTEh +MB8GA1UECgwYUWNhIERldmVsb3BtZW50IGFuZCBUZXN0MScwJQYDVQQLDB5DZXJ0 +aWZpY2F0ZSBHZW5lcmF0aW9uIFNlY3Rpb24xIjAgBgNVBAMMGVFjYSBUZXN0IFJv b3QgQ2VydGlmaWNhdGUxKDAmBgkqhkiG9w0BCQEWGXRlc3Rvbmx5QHRlc3QuZXhh -bXBsZS5jb20wHhcNMDcwNzIyMDE0ODE1WhcNMTMwMTExMDE0ODE1WjCBzjELMAkG -A1UEBhMCQVUxJTAjBgNVBAgTHEF1c3RyYWxpYW4gQ2FwaXRhbCBUZXJyaXRvcnkx -ITAfBgNVBAoTGFFjYSBEZXZlbG9wbWVudCBhbmQgVGVzdDEnMCUGA1UECxMeQ2Vy -dGlmaWNhdGUgR2VuZXJhdGlvbiBTZWN0aW9uMSIwIAYDVQQDExlRY2EgVGVzdCBS +bXBsZS5jb20wHhcNMTMwODA3MTIxOTM5WhcNMzMwODAyMTIxOTM5WjCBzjELMAkG +A1UEBhMCQVUxJTAjBgNVBAgMHEF1c3RyYWxpYW4gQ2FwaXRhbCBUZXJyaXRvcnkx +ITAfBgNVBAoMGFFjYSBEZXZlbG9wbWVudCBhbmQgVGVzdDEnMCUGA1UECwweQ2Vy +dGlmaWNhdGUgR2VuZXJhdGlvbiBTZWN0aW9uMSIwIAYDVQQDDBlRY2EgVGVzdCBS b290IENlcnRpZmljYXRlMSgwJgYJKoZIhvcNAQkBFhl0ZXN0b25seUB0ZXN0LmV4 -YW1wbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQChoj6eU96YLC+e -+hL6VGwKCugj9CWGJNrtbxjibh6uNk5FYw1bIKoJcFW5oQjjyz3jw8o0w8eQMFBR -1jCzPxJwma4tyC7qxsZD5Z8wq+Nb2bCRksKUeXmbhwVgAYzxDnX3gtb55vtFuE1T -62agmJMo1x7bQz2Emysf7q/YI7WhzQIDAQABo4IB5TCCAeEwDwYDVR0TAQH/BAUw -AwEB/zALBgNVHQ8EBAMCAeYwHQYDVR0OBBYEFFE/8hRuSWrcQbgVtaCG9C7k9UX4 -MIIBAwYDVR0jBIH7MIH4gBRRP/IUbklq3EG4FbWghvQu5PVF+KGB1KSB0TCBzjEL -MAkGA1UEBhMCQVUxJTAjBgNVBAgTHEF1c3RyYWxpYW4gQ2FwaXRhbCBUZXJyaXRv -cnkxITAfBgNVBAoTGFFjYSBEZXZlbG9wbWVudCBhbmQgVGVzdDEnMCUGA1UECxMe -Q2VydGlmaWNhdGUgR2VuZXJhdGlvbiBTZWN0aW9uMSIwIAYDVQQDExlRY2EgVGVz -dCBSb290IENlcnRpZmljYXRlMSgwJgYJKoZIhvcNAQkBFhl0ZXN0b25seUB0ZXN0 -LmV4YW1wbGUuY29tggkAtnvokE1wfX8wJAYDVR0RBB0wG4EZdGVzdG9ubHlAdGVz -dC5leGFtcGxlLmNvbTAkBgNVHRIEHTAbgRl0ZXN0b25seUB0ZXN0LmV4YW1wbGUu -Y29tMBEGCWCGSAGG+EIBAQQEAwIABzA8BglghkgBhvhCAQ0ELxYtVGhpcyBjZXJ0 -aWZpY2F0ZSB3YXMgaXNzdWVkIGZvciB0ZXN0aW5nIG9ubHkhMA0GCSqGSIb3DQEB -BQUAA4GBAA+22Tez2LtpHs4aNSkbztU4PikTF5FbH5xZUmfTBZEq6H+5dhoB9p8H -dL7kN4fQm4TGgT/EllJGgFKnexT99k0jFbZ+KqbXkJdPInw+fRKEKKSaMGd3FveA -D2rQgvz2kTkU0qXeGPG7OPGYiBwTY+mj17WwcPKCWL3vPAJCoH7J +YW1wbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlHuDm+lmgdoPj +4SvWJ12o9ZXliYVQwaEPgkuSrNrBqnoHjF6c3MdmG5snKaB8quiuyENtmOVz8a/h +Tmb/9TWqnxUsJbdwDgQRWQj88RYgRflna3xZnoSrqDuGAgGOg4B78qw3TEhhiall +bIw4xzsZ6n1nX0IMQP9u0SSOPD1mzwIDAQABo4GtMIGqMB0GA1UdDgQWBBTFsQFn +LM6EI718ayk41UclrQnfZzAfBgNVHSMEGDAWgBTFsQFnLM6EI718ayk41UclrQnf +ZzAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB5jAkBgNVHREEHTAbgRl0ZXN0 +b25seUB0ZXN0LmV4YW1wbGUuY29tMCQGA1UdEgQdMBuBGXRlc3Rvbmx5QHRlc3Qu +ZXhhbXBsZS5jb20wDQYJKoZIhvcNAQEFBQADgYEAyb7uwIvotXTIulHZRwobG2W5 +uzL3Cvdp24cJ2c7R2QyTappJCgpUzb7PcGb7SE/sseiaALiBsRBdIRvgXlXv1BtJ +hcLlpIUxRSx14pfzto+AVYcyT3ZJL5qXN4tvy5OhzZWdkdzchcgnT8Wq1fS9MsZU +pWaSYVphpjxjddnHWyo= -----END CERTIFICATE----- diff -Nru qca2-2.0.3/unittest/dsaunittest/CMakeLists.txt qca2-2.1.0/unittest/dsaunittest/CMakeLists.txt --- qca2-2.0.3/unittest/dsaunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/dsaunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set( dsaunittest_bin_SRCS dsaunittest.cpp) + +MY_AUTOMOC( dsaunittest_bin_SRCS ) + +add_executable( dsaunittest ${dsaunittest_bin_SRCS} ) + +target_link_qca_test_libraries(dsaunittest) + +add_qca_test(dsaunittest "DigitalSignatureAlgorithm") diff -Nru qca2-2.0.3/unittest/dsaunittest/dsaunittest.cpp qca2-2.1.0/unittest/dsaunittest/dsaunittest.cpp --- qca2-2.0.3/unittest/dsaunittest/dsaunittest.cpp 2007-06-08 20:31:50.000000000 +0000 +++ qca2-2.1.0/unittest/dsaunittest/dsaunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class DSAUnitTest : public QObject { Q_OBJECT @@ -43,7 +47,6 @@ void DSAUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void DSAUnitTest::cleanupTestCase() @@ -53,11 +56,26 @@ void DSAUnitTest::testdsa() { - if(!QCA::isSupported("pkey") || - !QCA::PKey::supportedTypes().contains(QCA::PKey::DSA) || - !QCA::PKey::supportedIOTypes().contains(QCA::PKey::DSA)) - QWARN("DSA not supported"); - else { + if(!QCA::isSupported("pkey") || + !QCA::PKey::supportedTypes().contains(QCA::PKey::DSA) || + !QCA::PKey::supportedIOTypes().contains(QCA::PKey::DSA)) + { +#if QT_VERSION >= 0x050000 + QSKIP("DSA not supported!"); +#else + QSKIP("DSA not supported!", SkipAll); +#endif + } + + if (!QCA::DLGroup::supportedGroupSets().contains(QCA::DSA_1024)) + { +#if QT_VERSION >= 0x050000 + QSKIP("DSA_1024 discrete logarithm group sets not supported!"); +#else + QSKIP("DSA_1024 discrete logarithm group sets not supported!", SkipAll); +#endif + } + QCA::KeyGenerator keygen; QCOMPARE( keygen.isBusy(), false ); QCOMPARE( keygen.blockingEnabled(), true ); @@ -104,7 +122,6 @@ QCOMPARE( fromDERkey.isPrivate(), true ); QCOMPARE( fromDERkey.isPublic(), false ); QVERIFY( dsaKey == fromDERkey ); - } } QTEST_MAIN(DSAUnitTest) diff -Nru qca2-2.0.3/unittest/dsaunittest/dsaunittest.pro qca2-2.1.0/unittest/dsaunittest/dsaunittest.pro --- qca2-2.0.3/unittest/dsaunittest/dsaunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/dsaunittest/dsaunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = dsaunittest -test.commands = ./dsaunittest - -# Input -SOURCES += dsaunittest.cpp diff -Nru qca2-2.0.3/unittest/filewatchunittest/CMakeLists.txt qca2-2.1.0/unittest/filewatchunittest/CMakeLists.txt --- qca2-2.0.3/unittest/filewatchunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/filewatchunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,10 @@ +ENABLE_TESTING() + +set(SOURCES "filewatchunittest.cpp") +qt4_wrap_cpp(SOURCES "filewatchunittest.h") + +add_executable( filewatchunittest ${SOURCES}) + +target_link_qca_test_libraries(filewatchunittest) + +add_qca_test(filewatchunittest "FileWatch") diff -Nru qca2-2.0.3/unittest/filewatchunittest/filewatchunittest.cpp qca2-2.1.0/unittest/filewatchunittest/filewatchunittest.cpp --- qca2-2.0.3/unittest/filewatchunittest/filewatchunittest.cpp 2008-05-20 00:40:51.000000000 +0000 +++ qca2-2.1.0/unittest/filewatchunittest/filewatchunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -24,10 +24,13 @@ */ #include "filewatchunittest.h" +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + void FileWatchUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void FileWatchUnitTest::cleanupTestCase() @@ -37,6 +40,8 @@ void FileWatchUnitTest::filewatchTest() { + QWARN("Unittest will take about 1 minute. Please wait."); + QCA::FileWatch watcher; QCOMPARE( watcher.fileName(), QString() ); diff -Nru qca2-2.0.3/unittest/filewatchunittest/filewatchunittest.pro qca2-2.1.0/unittest/filewatchunittest/filewatchunittest.pro --- qca2-2.0.3/unittest/filewatchunittest/filewatchunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/filewatchunittest/filewatchunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = filewatchunittest -test.commands = ./filewatchunittest - -# Input -HEADERS += filewatchunittest.h -SOURCES += filewatchunittest.cpp diff -Nru qca2-2.0.3/unittest/fixpaths.include qca2-2.1.0/unittest/fixpaths.include --- qca2-2.0.3/unittest/fixpaths.include 2007-08-28 20:26:26.000000000 +0000 +++ qca2-2.1.0/unittest/fixpaths.include 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -// This is some boilerplate to ensure that we can load -// plugins from (a slightly hacked) build directory -// -// It is intended that this be #include'd from an init -// routine of some kind. - - QStringList libpaths = QCoreApplication::libraryPaths(); - - // we prepend, because we prefer the uninstalled version - libpaths.prepend(QString("../../plugins/qca-ossl")); - libpaths.prepend(QString("../../plugins/qca-botan")); - libpaths.prepend(QString("../../plugins/qca-gcrypt")); - // you can add more paths here... - - QCoreApplication::setLibraryPaths(libpaths); diff -Nru qca2-2.0.3/unittest/hashunittest/CMakeLists.txt qca2-2.1.0/unittest/hashunittest/CMakeLists.txt --- qca2-2.0.3/unittest/hashunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/hashunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,16 @@ +ENABLE_TESTING() + +set(hashunittest_bin_SRCS hashunittest.cpp) + +MY_AUTOMOC( hashunittest_bin_SRCS ) + +add_executable( hashunittest ${hashunittest_bin_SRCS} ) + +target_link_qca_test_libraries(hashunittest) + + +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/data/empty ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/data/empty COPYONLY) +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/data/twobytes ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/data/twobytes COPYONLY) +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/data/twohundredbytes ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/data/twohundredbytes COPYONLY) + +add_qca_test(hashunittest "Hashing") diff -Nru qca2-2.0.3/unittest/hashunittest/hashunittest.cpp qca2-2.1.0/unittest/hashunittest/hashunittest.cpp --- qca2-2.0.3/unittest/hashunittest/hashunittest.cpp 2007-09-02 18:51:21.000000000 +0000 +++ qca2-2.1.0/unittest/hashunittest/hashunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -27,6 +27,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class HashUnitTest : public QObject { Q_OBJECT @@ -72,7 +76,6 @@ void HashUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void HashUnitTest::cleanupTestCase() @@ -114,7 +117,11 @@ foreach(QString provider, providersToTest) { if(!QCA::isSupported("md2", provider)) +#if QT_VERSION >= 0x050000 + QSKIP(QString("MD2 not supported for "+provider).toLocal8Bit()); +#else QSKIP(QString("MD2 not supported for "+provider).toLocal8Bit(), SkipSingle); +#endif QString hashResult = QCA::Hash("md2", provider).hashToString(input); QCOMPARE( hashResult, expectedHash ); } diff -Nru qca2-2.0.3/unittest/hashunittest/hashunittest.pro qca2-2.1.0/unittest/hashunittest/hashunittest.pro --- qca2-2.0.3/unittest/hashunittest/hashunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/hashunittest/hashunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = hashunittest -test.commands = ./hashunittest - -# Input -SOURCES += hashunittest.cpp diff -Nru qca2-2.0.3/unittest/hexunittest/CMakeLists.txt qca2-2.1.0/unittest/hexunittest/CMakeLists.txt --- qca2-2.0.3/unittest/hexunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/hexunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set(hexunittest_bin_SRCS hexunittest.cpp) + +MY_AUTOMOC( hexunittest_bin_SRCS ) + +add_executable( hexunittest ${hexunittest_bin_SRCS} ) + +target_link_qca_test_libraries(hexunittest) + +add_qca_test(hexunittest "HexadecimalConversion") diff -Nru qca2-2.0.3/unittest/hexunittest/hexunittest.cpp qca2-2.1.0/unittest/hexunittest/hexunittest.cpp --- qca2-2.0.3/unittest/hexunittest/hexunittest.cpp 2007-06-18 21:31:14.000000000 +0000 +++ qca2-2.1.0/unittest/hexunittest/hexunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class HexUnitTest : public QObject { Q_OBJECT @@ -44,7 +48,6 @@ void HexUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void HexUnitTest::cleanupTestCase() diff -Nru qca2-2.0.3/unittest/hexunittest/hexunittest.pro qca2-2.1.0/unittest/hexunittest/hexunittest.pro --- qca2-2.0.3/unittest/hexunittest/hexunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/hexunittest/hexunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = hexunittest -test.commands = ./hexunittest - -# Input -SOURCES += hexunittest.cpp diff -Nru qca2-2.0.3/unittest/kdfunittest/CMakeLists.txt qca2-2.1.0/unittest/kdfunittest/CMakeLists.txt --- qca2-2.0.3/unittest/kdfunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/kdfunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set( kdfunittest_bin_SRCS kdfunittest.cpp) + +MY_AUTOMOC( kdfunittest_bin_SRCS ) + +add_executable( kdfunittest ${kdfunittest_bin_SRCS} ) + +target_link_qca_test_libraries(kdfunittest) + +add_qca_test(kdfunittest "KeyDerivationFunction") diff -Nru qca2-2.0.3/unittest/kdfunittest/kdfunittest.cpp qca2-2.1.0/unittest/kdfunittest/kdfunittest.cpp --- qca2-2.0.3/unittest/kdfunittest/kdfunittest.cpp 2007-12-11 06:34:57.000000000 +0000 +++ qca2-2.1.0/unittest/kdfunittest/kdfunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class KDFUnitTest : public QObject { Q_OBJECT @@ -37,8 +41,10 @@ void pbkdf1md2Tests(); void pbkdf1sha1Tests_data(); void pbkdf1sha1Tests(); + void pbkdf1sha1TimeTest(); void pbkdf2Tests_data(); void pbkdf2Tests(); + void pbkdf2TimeTest(); void pbkdf2extraTests(); private: QCA::Initializer* m_init; @@ -48,7 +54,6 @@ void KDFUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void KDFUnitTest::cleanupTestCase() @@ -190,6 +195,40 @@ } } +void KDFUnitTest::pbkdf1sha1TimeTest() +{ + QStringList providersToTest; + providersToTest.append("qca-ossl"); + providersToTest.append("qca-botan"); + providersToTest.append("qca-gcrypt"); + + QCA::SecureArray password("secret"); + QCA::InitializationVector iv(QByteArray("salt")); + unsigned int outputLength = 20; + int timeInterval = 200; + unsigned int iterationCount; + + foreach(QString provider, providersToTest) { + if(!QCA::isSupported("pbkdf1(sha1)", provider)) { + QString warning("PBKDF version 1 with SHA1 not supported for %1"); + QWARN(warning.arg(provider).toStdString().c_str()); + } else { + QCA::SymmetricKey key1(QCA::PBKDF1("sha1", provider).makeKey(password, + iv, + outputLength, + timeInterval, + &iterationCount)); + + QCA::SymmetricKey key2(QCA::PBKDF1("sha1", provider).makeKey(password, + iv, + outputLength, + iterationCount)); + + QCOMPARE( key1, key2 ); + } + } +} + void KDFUnitTest::pbkdf2Tests_data() { QTest::addColumn("secret"); // usually a password or passphrase @@ -285,6 +324,39 @@ } } +void KDFUnitTest::pbkdf2TimeTest() +{ + QStringList providersToTest; + providersToTest.append("qca-ossl"); + providersToTest.append("qca-botan"); + providersToTest.append("qca-gcrypt"); + + QCA::SecureArray password("secret"); + QCA::InitializationVector iv(QByteArray("salt")); + unsigned int outputLength = 20; + int timeInterval = 200; + unsigned int iterationCount; + + foreach(QString provider, providersToTest) { + if(!QCA::isSupported("pbkdf2(sha1)", provider)) { + QString warning("PBKDF version 2 with SHA1 not supported for %1"); + QWARN(warning.arg(provider).toStdString().c_str()); + } else { + QCA::SymmetricKey key1(QCA::PBKDF2("sha1", provider).makeKey(password, + iv, + outputLength, + timeInterval, + &iterationCount)); + + QCA::SymmetricKey key2(QCA::PBKDF2("sha1", provider).makeKey(password, + iv, + outputLength, + iterationCount)); + + QCOMPARE( key1, key2 ); + } + } +} void KDFUnitTest::pbkdf2extraTests() { diff -Nru qca2-2.0.3/unittest/kdfunittest/kdfunittest.pro qca2-2.1.0/unittest/kdfunittest/kdfunittest.pro --- qca2-2.0.3/unittest/kdfunittest/kdfunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/kdfunittest/kdfunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = kdfunittest -test.commands = ./kdfunittest - -# Input -SOURCES += kdfunittest.cpp diff -Nru qca2-2.0.3/unittest/keybundle/CMakeLists.txt qca2-2.1.0/unittest/keybundle/CMakeLists.txt --- qca2-2.0.3/unittest/keybundle/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/keybundle/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,16 @@ +ENABLE_TESTING() + +set(keybundleunittest_bin_SRCS keybundle.cpp) + +MY_AUTOMOC( keybundleunittest_bin_SRCS ) + +add_executable( keybundle ${keybundleunittest_bin_SRCS} ) + +target_link_qca_test_libraries(keybundle) + +FOREACH( testFileName RootCA2cert.pem servergood2.p12 + user2goodcert.pem user2goodkey.pem user2good.p12 ) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${testFileName} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${testFileName} COPYONLY) +ENDFOREACH( testFileName ) + +add_qca_test(keybundle "KeyBundle") diff -Nru qca2-2.0.3/unittest/keybundle/keybundle.cpp qca2-2.1.0/unittest/keybundle/keybundle.cpp --- qca2-2.0.3/unittest/keybundle/keybundle.cpp 2007-04-18 11:21:04.000000000 +0000 +++ qca2-2.1.0/unittest/keybundle/keybundle.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class KeyBundleTest : public QObject { Q_OBJECT @@ -46,7 +50,6 @@ void KeyBundleTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void KeyBundleTest::cleanupTestCase() diff -Nru qca2-2.0.3/unittest/keybundle/keybundle.pro qca2-2.1.0/unittest/keybundle/keybundle.pro --- qca2-2.0.3/unittest/keybundle/keybundle.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/keybundle/keybundle.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = keybundle -test.commands = ./keybundle - -# Input -SOURCES += keybundle.cpp diff -Nru qca2-2.0.3/unittest/keygenunittest/CMakeLists.txt qca2-2.1.0/unittest/keygenunittest/CMakeLists.txt --- qca2-2.0.3/unittest/keygenunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/keygenunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set( keygenunittest_bin_SRCS keygenunittest.cpp) + +MY_AUTOMOC( keygenunittest_bin_SRCS ) + +add_executable( keygenunittest ${keygenunittest_bin_SRCS} ) + +target_link_qca_test_libraries(keygenunittest) + +add_qca_test(keygenunittest "KeyGeneration") diff -Nru qca2-2.0.3/unittest/keygenunittest/keygenunittest.cpp qca2-2.1.0/unittest/keygenunittest/keygenunittest.cpp --- qca2-2.0.3/unittest/keygenunittest/keygenunittest.cpp 2007-06-08 20:31:50.000000000 +0000 +++ qca2-2.1.0/unittest/keygenunittest/keygenunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class KeyGenUnitTest : public QObject { Q_OBJECT @@ -43,7 +47,6 @@ void KeyGenUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void KeyGenUnitTest::cleanupTestCase() @@ -61,7 +64,11 @@ if(!QCA::isSupported("pkey") || !QCA::PKey::supportedTypes().contains(QCA::PKey::RSA) || !QCA::PKey::supportedIOTypes().contains(QCA::PKey::RSA)) +#if QT_VERSION >= 0x050000 + QSKIP("RSA not supported!"); +#else QSKIP("RSA not supported!", SkipAll); +#endif QCA::PrivateKey priv1 = keygen.createRSA( 1024, 65537 ); QCA::RSAPrivateKey rsa1 = priv1.toRSA(); @@ -91,25 +98,42 @@ if(!QCA::isSupported("pkey") || !QCA::PKey::supportedTypes().contains(QCA::PKey::DSA) || !QCA::PKey::supportedIOTypes().contains(QCA::PKey::DSA)) +#if QT_VERSION >= 0x050000 + QSKIP("DSA not supported!"); +#else QSKIP("DSA not supported!", SkipAll); +#endif - QCA::DLGroup group = keygen.createDLGroup( QCA::DSA_512 ); - QCA::PrivateKey priv2 = keygen.createDSA( group ); - QCA::DSAPrivateKey dsa1 = priv2.toDSA(); - QCOMPARE( dsa1.isNull(), false ); - QCOMPARE( dsa1.bitSize(), 512 ); - - group = keygen.createDLGroup( QCA::DSA_768 ); - priv2 = keygen.createDSA( group ); - dsa1 = priv2.toDSA(); - QCOMPARE( dsa1.isNull(), false ); - QCOMPARE( dsa1.bitSize(), 768 ); - - group = keygen.createDLGroup( QCA::DSA_1024 ); - priv2 = keygen.createDSA( group ); - dsa1 = priv2.toDSA(); - QCOMPARE( dsa1.isNull(), false ); - QCOMPARE( dsa1.bitSize(), 1024 ); + QCA::DLGroup group; + QCA::PrivateKey priv2; + QCA::DSAPrivateKey dsa1; + + if (QCA::DLGroup::supportedGroupSets().contains(QCA::DSA_512)) + { + group = keygen.createDLGroup( QCA::DSA_512 ); + priv2 = keygen.createDSA( group ); + dsa1 = priv2.toDSA(); + QCOMPARE( dsa1.isNull(), false ); + QCOMPARE( dsa1.bitSize(), 512 ); + } + + if (QCA::DLGroup::supportedGroupSets().contains(QCA::DSA_768)) + { + group = keygen.createDLGroup( QCA::DSA_768 ); + priv2 = keygen.createDSA( group ); + dsa1 = priv2.toDSA(); + QCOMPARE( dsa1.isNull(), false ); + QCOMPARE( dsa1.bitSize(), 768 ); + } + + if (QCA::DLGroup::supportedGroupSets().contains(QCA::DSA_1024)) + { + group = keygen.createDLGroup( QCA::DSA_1024 ); + priv2 = keygen.createDSA( group ); + dsa1 = priv2.toDSA(); + QCOMPARE( dsa1.isNull(), false ); + QCOMPARE( dsa1.bitSize(), 1024 ); + } } void KeyGenUnitTest::testDH() @@ -121,7 +145,11 @@ if(!QCA::isSupported("pkey") || !QCA::PKey::supportedTypes().contains(QCA::PKey::DH) || !QCA::PKey::supportedIOTypes().contains(QCA::PKey::DH)) - QSKIP("DH not supported!", SkipAll); +#if QT_VERSION >= 0x050000 + QSKIP("DH not supported!"); +#else + QSKIP("DH not supported!", SkipAll); +#endif QCA::DLGroup group = keygen.createDLGroup( QCA::IETF_1024 ); QCA::PrivateKey priv3 = keygen.createDH( group ); diff -Nru qca2-2.0.3/unittest/keygenunittest/keygenunittest.pro qca2-2.1.0/unittest/keygenunittest/keygenunittest.pro --- qca2-2.0.3/unittest/keygenunittest/keygenunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/keygenunittest/keygenunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = keygenunittest -test.commands = ./keygenunittest - -# Input -SOURCES += keygenunittest.cpp diff -Nru qca2-2.0.3/unittest/keylengthunittest/CMakeLists.txt qca2-2.1.0/unittest/keylengthunittest/CMakeLists.txt --- qca2-2.0.3/unittest/keylengthunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/keylengthunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set(keylengthunittest_bin_SRCS keylengthunittest.cpp) + +MY_AUTOMOC( keylengthunittest_bin_SRCS ) + +add_executable( keylengthunittest ${keylengthunittest_bin_SRCS} ) + +target_link_qca_test_libraries(keylengthunittest) + +add_qca_test(keylengthunittest "KeyLength") diff -Nru qca2-2.0.3/unittest/keylengthunittest/keylengthunittest.cpp qca2-2.1.0/unittest/keylengthunittest/keylengthunittest.cpp --- qca2-2.0.3/unittest/keylengthunittest/keylengthunittest.cpp 2006-10-12 05:10:06.000000000 +0000 +++ qca2-2.1.0/unittest/keylengthunittest/keylengthunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -28,6 +28,10 @@ #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class KeyLengthUnitTest : public QObject { Q_OBJECT @@ -43,7 +47,6 @@ void KeyLengthUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void KeyLengthUnitTest::cleanupTestCase() diff -Nru qca2-2.0.3/unittest/keylengthunittest/keylengthunittest.pro qca2-2.1.0/unittest/keylengthunittest/keylengthunittest.pro --- qca2-2.0.3/unittest/keylengthunittest/keylengthunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/keylengthunittest/keylengthunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = keylengthunittest -test.commands = ./keylengthunittest - -# Input -SOURCES += keylengthunittest.cpp diff -Nru qca2-2.0.3/unittest/keystore/CMakeLists.txt qca2-2.1.0/unittest/keystore/CMakeLists.txt --- qca2-2.0.3/unittest/keystore/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/keystore/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set(keystoreunittest_bin_SRCS keystore.cpp) + +MY_AUTOMOC( keystoreunittest_bin_SRCS ) + +add_executable( keystore ${keystoreunittest_bin_SRCS} ) + +target_link_qca_test_libraries(keystore) + +add_qca_test(keystore "KeyStore") diff -Nru qca2-2.0.3/unittest/keystore/keystore.cpp qca2-2.1.0/unittest/keystore/keystore.cpp --- qca2-2.0.3/unittest/keystore/keystore.cpp 2007-03-26 15:40:55.000000000 +0000 +++ qca2-2.1.0/unittest/keystore/keystore.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class KeyStore : public QObject { Q_OBJECT @@ -41,7 +45,6 @@ void KeyStore::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void KeyStore::cleanupTestCase() diff -Nru qca2-2.0.3/unittest/keystore/keystore.pro qca2-2.1.0/unittest/keystore/keystore.pro --- qca2-2.0.3/unittest/keystore/keystore.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/keystore/keystore.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = keystore -test.commands = ./keystore - -# Input -SOURCES += keystore.cpp diff -Nru qca2-2.0.3/unittest/logger/CMakeLists.txt qca2-2.1.0/unittest/logger/CMakeLists.txt --- qca2-2.0.3/unittest/logger/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/logger/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set(loggerunittest_bin_SRCS loggerunittest.cpp) + +MY_AUTOMOC( loggerunittest_bin_SRCS ) + +add_executable(loggerunittest ${loggerunittest_bin_SRCS} ) + +target_link_qca_test_libraries(loggerunittest) + +add_qca_test(loggerunittest "Logger") diff -Nru qca2-2.0.3/unittest/logger/logger.pro qca2-2.1.0/unittest/logger/logger.pro --- qca2-2.0.3/unittest/logger/logger.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/logger/logger.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = loggerunittest -test.commands = ./loggerunittest - -# Input -SOURCES += loggerunittest.cpp diff -Nru qca2-2.0.3/unittest/logger/loggerunittest.cpp qca2-2.1.0/unittest/logger/loggerunittest.cpp --- qca2-2.0.3/unittest/logger/loggerunittest.cpp 2007-04-08 12:29:44.000000000 +0000 +++ qca2-2.1.0/unittest/logger/loggerunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class LoggerUnitTest : public QObject { Q_OBJECT @@ -103,7 +107,6 @@ void LoggerUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void LoggerUnitTest::cleanupTestCase() diff -Nru qca2-2.0.3/unittest/macunittest/CMakeLists.txt qca2-2.1.0/unittest/macunittest/CMakeLists.txt --- qca2-2.0.3/unittest/macunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/macunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set(macunittest_bin_SRCS macunittest.cpp) + +MY_AUTOMOC( macunittest_bin_SRCS ) + +add_executable( macunittest ${macunittest_bin_SRCS} ) + +target_link_qca_test_libraries(macunittest) + +add_qca_test(macunittest "MessageAuthenticationCode") diff -Nru qca2-2.0.3/unittest/macunittest/macunittest.cpp qca2-2.1.0/unittest/macunittest/macunittest.cpp --- qca2-2.0.3/unittest/macunittest/macunittest.cpp 2007-06-29 21:30:22.000000000 +0000 +++ qca2-2.1.0/unittest/macunittest/macunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class MACUnitTest : public QObject { Q_OBJECT @@ -48,7 +52,6 @@ void MACUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void MACUnitTest::cleanupTestCase() diff -Nru qca2-2.0.3/unittest/macunittest/macunittest.pro qca2-2.1.0/unittest/macunittest/macunittest.pro --- qca2-2.0.3/unittest/macunittest/macunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/macunittest/macunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = macunittest -test.commands = ./macunittest - -# Input -SOURCES += macunittest.cpp diff -Nru qca2-2.0.3/unittest/metatype/CMakeLists.txt qca2-2.1.0/unittest/metatype/CMakeLists.txt --- qca2-2.0.3/unittest/metatype/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/metatype/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set(metatype_bin_SRCS metatype.cpp) + +MY_AUTOMOC( metatype_bin_SRCS ) + +add_executable( metatypeunittest ${metatype_bin_SRCS} ) + +target_link_qca_test_libraries(metatypeunittest) + +add_qca_test(metatypeunittest "MetaTypeUnittest") diff -Nru qca2-2.0.3/unittest/metatype/metatype.cpp qca2-2.1.0/unittest/metatype/metatype.cpp --- qca2-2.0.3/unittest/metatype/metatype.cpp 2007-06-03 10:17:23.000000000 +0000 +++ qca2-2.1.0/unittest/metatype/metatype.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -28,6 +28,10 @@ #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class TestClass1 : public QObject { Q_OBJECT @@ -72,7 +76,6 @@ void MetaTypeUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void MetaTypeUnitTest::cleanupTestCase() @@ -87,8 +90,11 @@ QList args; // returns a null type name because that is what void does... +#if QT_VERSION >= 0x050000 + QCOMPARE( QByteArray( "void" ), QCA::methodReturnType( testClass1.metaObject(), QByteArray( "voidMethod" ), args ) ); +#else QCOMPARE( QByteArray(), QCA::methodReturnType( testClass1.metaObject(), QByteArray( "voidMethod" ), args ) ); - +#endif QCOMPARE( QByteArray( "QString" ), QCA::methodReturnType( testClass1.metaObject(), QByteArray( "qstringMethod" ), args ) ); // returns a null type, because args don't match diff -Nru qca2-2.0.3/unittest/metatype/metatype.pro qca2-2.1.0/unittest/metatype/metatype.pro --- qca2-2.0.3/unittest/metatype/metatype.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/metatype/metatype.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib -TARGET = metatypeunittest - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = metatypeunittest -test.commands = ./metatypeunittest - -# Input -SOURCES += metatype.cpp diff -Nru qca2-2.0.3/unittest/pgpunittest/CMakeLists.txt qca2-2.1.0/unittest/pgpunittest/CMakeLists.txt --- qca2-2.0.3/unittest/pgpunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/pgpunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,33 @@ +ENABLE_TESTING() + +set(pgpunittest_bin_SRCS pgpunittest.cpp) + +MY_AUTOMOC( pgpunittest_bin_SRCS ) + +add_executable(pgpunittest ${pgpunittest_bin_SRCS} ) + +target_link_qca_test_libraries(pgpunittest) + +file(MAKE_DIRECTORY + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/keys1_work + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/keys2_work + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/keys3_work + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/keys4_expired_subkeys_work) + +FOREACH( testFileName pubring.gpg secring.gpg trustdb.gpg ) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/keys1/${testFileName} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/keys1_work/${testFileName} COPYONLY) +ENDFOREACH( testFileName ) + +FOREACH( testFileName pubring.gpg trustdb.gpg ) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/keys2/${testFileName} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/keys2_work/${testFileName} COPYONLY) +ENDFOREACH( testFileName ) + +FOREACH( testFileName pubring.gpg secring.gpg trustdb.gpg ) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/keys3/${testFileName} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/keys3_work/${testFileName} COPYONLY) +ENDFOREACH( testFileName ) + +FOREACH( testFileName pubring.gpg secring.gpg trustdb.gpg ) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/keys4_expired_subkeys/${testFileName} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/keys4_expired_subkeys_work/${testFileName} COPYONLY) +ENDFOREACH( testFileName ) + +add_qca_test(pgpunittest "PGP") Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pgpunittest/keys4_expired_subkeys/pubring.gpg and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pgpunittest/keys4_expired_subkeys/pubring.gpg differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pgpunittest/keys4_expired_subkeys/secring.gpg and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pgpunittest/keys4_expired_subkeys/secring.gpg differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pgpunittest/keys4_expired_subkeys/trustdb.gpg and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pgpunittest/keys4_expired_subkeys/trustdb.gpg differ diff -Nru qca2-2.0.3/unittest/pgpunittest/pgpunittest.cpp qca2-2.1.0/unittest/pgpunittest/pgpunittest.cpp --- qca2-2.0.3/unittest/pgpunittest/pgpunittest.cpp 2008-07-21 01:11:59.000000000 +0000 +++ qca2-2.1.0/unittest/pgpunittest/pgpunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -28,6 +28,10 @@ #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + // qt did not introduce qputenv until 4.4, so we'll keep a copy here for 4.2 // compat bool my_qputenv(const char *varName, const QByteArray& value) @@ -121,6 +125,8 @@ void testMessageSign(); void testClearsign(); void testDetachedSign(); + void testSignaturesWithExpiredSubkeys(); + void testEncryptionWithExpiredSubkeys(); private: QCA::Initializer* m_init; }; @@ -132,7 +138,11 @@ // to reload, which we need to do if we want qca-gnupg to respect // changes to $GNUPGHOME. //m_init = new QCA::Initializer; -#include "../fixpaths.include" + + // Change current directory to executable directory + // it is need to find keys*_work directories + if (!QCoreApplication::applicationDirPath().isEmpty()) + QDir::setCurrent(QCoreApplication::applicationDirPath()); } void PgpUnitTest::cleanupTestCase() @@ -147,7 +157,7 @@ // We test a small keyring - I downloaded a publically available one from QByteArray oldGNUPGHOME = qgetenv( "GNUPGHOME" ); // the Amsterdam Internet Exchange. - if ( qca_setenv( "GNUPGHOME", "./keys1", 1 ) != 0 ) + if ( qca_setenv( "GNUPGHOME", "./keys1_work", 1 ) != 0 ) { QFAIL( "Expected to be able to set the GNUPGHOME environment variable, but couldn't" ); } @@ -168,7 +178,6 @@ QCOMPARE( pgpStore.name(), QString( "GnuPG Keyring" ) ); QCOMPARE( pgpStore.type(), QCA::KeyStore::PGPKeyring ); QCOMPARE( pgpStore.id(), QString( "qca-gnupg" ) ); - QEXPECT_FAIL( "", "Write support not yet implemented", Continue ); QCOMPARE( pgpStore.isReadOnly(), false ); QCOMPARE( pgpStore.holdsTrustedCertificates(), false ); QCOMPARE( pgpStore.holdsIdentities(), true ); @@ -204,7 +213,7 @@ qcaInit = new QCA::Initializer; // We now test an empty keyring - if ( qca_setenv( "GNUPGHOME", "./keys2", 1 ) != 0 ) + if ( qca_setenv( "GNUPGHOME", "./keys2_work", 1 ) != 0 ) { QFAIL( "Expected to be able to set the GNUPGHOME environment variable, but couldn't" ); } @@ -246,7 +255,7 @@ // This keyring has a private / public key pair QByteArray oldGNUPGHOME = qgetenv( "GNUPGHOME" ); - if ( 0 != qca_setenv( "GNUPGHOME", "./keys3", 1 ) ) { + if ( 0 != qca_setenv( "GNUPGHOME", "./keys3_work", 1 ) ) { QFAIL( "Expected to be able to set the GNUPGHOME environment variable, but couldn't" ); } @@ -295,7 +304,7 @@ msg.startSign(QCA::SecureMessage::Message); msg.update(plain); msg.end(); - msg.waitForFinished(2000); + msg.waitForFinished(5000); #if 0 QString str = QCA::KeyStoreManager::diagnosticText(); @@ -326,7 +335,7 @@ msg2.startVerify(); msg2.update(messageData); msg2.end(); - msg2.waitForFinished(2000); + msg2.waitForFinished(5000); QVERIFY(msg2.verifySuccess()); @@ -351,7 +360,7 @@ msg3.startVerify(); msg3.update(messageData); msg3.end(); - msg3.waitForFinished(2000); + msg3.waitForFinished(5000); QCOMPARE(msg3.verifySuccess(), false); QCOMPARE(msg3.errorCode(), QCA::SecureMessage::ErrorUnknown); @@ -376,7 +385,7 @@ // This keyring has a private / public key pair QByteArray oldGNUPGHOME = qgetenv( "GNUPGHOME" ); - if ( 0 != qca_setenv( "GNUPGHOME", "./keys3", 1 ) ) { + if ( 0 != qca_setenv( "GNUPGHOME", "./keys3_work", 1 ) ) { QFAIL( "Expected to be able to set the GNUPGHOME environment variable, but couldn't" ); } @@ -425,7 +434,7 @@ msg.startSign(QCA::SecureMessage::Clearsign); msg.update(plain); msg.end(); - msg.waitForFinished(2000); + msg.waitForFinished(5000); #if 0 QString str = QCA::KeyStoreManager::diagnosticText(); @@ -456,7 +465,7 @@ msg2.startVerify(); msg2.update(clearsignedData); msg2.end(); - msg2.waitForFinished(2000); + msg2.waitForFinished(5000); QVERIFY(msg2.verifySuccess()); @@ -488,7 +497,7 @@ // This keyring has a private / public key pair QByteArray oldGNUPGHOME = qgetenv( "GNUPGHOME" ); - if ( 0 != qca_setenv( "GNUPGHOME", "./keys3", 1 ) ) { + if ( 0 != qca_setenv( "GNUPGHOME", "./keys3_work", 1 ) ) { QFAIL( "Expected to be able to set the GNUPGHOME environment variable, but couldn't" ); } @@ -537,7 +546,7 @@ msg.startSign(QCA::SecureMessage::Detached); msg.update(plain); msg.end(); - msg.waitForFinished(2000); + msg.waitForFinished(5000); #if 0 QString str = QCA::KeyStoreManager::diagnosticText(); @@ -596,6 +605,324 @@ } +void PgpUnitTest::testSignaturesWithExpiredSubkeys() +{ + // This previously failing test tests signatures from + // keys with expired subkeys, while assuring no loss + // of functionality. + + QCA::Initializer qcaInit; + + PGPPassphraseProviderThread thread; + thread.start(); + + QByteArray oldGNUPGHOME = qgetenv("GNUPGHOME"); + if (qca_setenv("GNUPGHOME", "./keys4_expired_subkeys_work", 1) != 0) { + QFAIL("Expected to be able to set the GNUPGHOME environment variable, but couldn't" ); + } + + QCA::KeyStoreManager::start(); + + QCA::KeyStoreManager keyManager(this); + keyManager.waitForBusyFinished(); + + if (QCA::isSupported(QStringList(QString("openpgp")), QString("qca-gnupg")) || + QCA::isSupported(QStringList(QString("keystorelist")), QString( "qca-gnupg"))) { + + QStringList storeIds = keyManager.keyStores(); + QVERIFY(storeIds.contains("qca-gnupg")); + + QCA::KeyStore pgpStore(QString("qca-gnupg"), &keyManager); + QVERIFY(pgpStore.isValid()); + + QList keylist = pgpStore.entryList(); + + QCA::KeyStoreEntry validKey; + foreach(const QCA::KeyStoreEntry key, keylist) { + if (key.id() == "DD773CA7E4E22769") { + validKey = key; + } + } + + QCOMPARE(validKey.isNull(), false); + QCOMPARE(validKey.name(), QString("QCA Test Key (Unit test key for expired subkeys) ")); + QCOMPARE(validKey.type(), QCA::KeyStoreEntry::TypePGPSecretKey); + QCOMPARE(validKey.id(), QString("DD773CA7E4E22769")); + QCOMPARE(validKey.pgpSecretKey().isNull(), false); + QCOMPARE(validKey.pgpPublicKey().isNull(), false); + + // Create a signature with the non-expired primary key first + QByteArray validMessage("Non-expired key signature"); + + QCA::SecureMessageKey secKey; + secKey.setPGPSecretKey(validKey.pgpSecretKey()); + QVERIFY(secKey.havePrivate()); + + QCA::OpenPGP pgp; + QCA::SecureMessage msg(&pgp); + msg.setSigner(secKey); + msg.setFormat(QCA::SecureMessage::Ascii); + msg.startSign(QCA::SecureMessage::Clearsign); + msg.update(validMessage); + msg.end(); + msg.waitForFinished(5000); + + QVERIFY(msg.success()); + + QByteArray nonExpiredKeySignature = msg.read(); + + // Verify it + QCA::OpenPGP pgp1; + QCA::SecureMessage msg1(&pgp1); + msg1.setFormat(QCA::SecureMessage::Ascii); + msg1.startVerify(); + msg1.update(nonExpiredKeySignature); + msg1.end(); + msg1.waitForFinished(5000); + + QByteArray signedResult = msg1.read(); + + QVERIFY(msg1.verifySuccess()); + QCOMPARE(QString(signedResult).trimmed(), QString(validMessage).trimmed()); + + // Test signature made by the expired subkey + QByteArray expiredKeySignature("-----BEGIN PGP SIGNED MESSAGE-----\n" + "Hash: SHA1\n" + "\n" + "Expired signature\n" + "-----BEGIN PGP SIGNATURE-----\n" + "Version: GnuPG v1\n" + "\n" + "iQEcBAEBAgAGBQJTaI2VAAoJEPddwMGvBiCrA18H/RMJxnEnyNERd19ffTdSLvHH\n" + "iwsfTEPmFQSpmCUnmjK2IIMXWTi6ofinGTWEsXKHSTqgytz715Q16OICwnFoeHin\n" + "0SnsTgi5lH5QcJPJ5PqoRwgAy8vhy73EpYrv7zqLom1Qm/9NeGtNZsohjp0ECFEk\n" + "4UmZiJF7u5Yn6hBl9btIPRTjI2FrXjr3Zy8jZijRaZMutnz5VveBHCLu00NvJQkG\n" + "PC/ZvvfGOk9SeaApnrnntfdKJ4geKxoT0+r+Yz1kQ1VKG5Af3JziBwwNID6g/FYv\n" + "cDK2no5KD7lyASAt6veCDXBdUmNatBO5Au9eE0jJwsSV6LZCpEYEcgBsnfDwxls=\n" + "=UM6K\n" + "-----END PGP SIGNATURE-----\n"); + + QCA::OpenPGP pgp2; + QCA::SecureMessage msg2(&pgp2); + msg2.setFormat(QCA::SecureMessage::Ascii); + msg2.startVerify(); + msg2.update(expiredKeySignature); + msg2.end(); + msg2.waitForFinished(5000); + + QCOMPARE(msg2.verifySuccess(), false); + QCOMPARE(msg2.errorCode(), QCA::SecureMessage::ErrorSignerExpired); + + // Test signature made by the revoked subkey + QByteArray revokedKeySignature("-----BEGIN PGP SIGNED MESSAGE-----\n" + "Hash: SHA1\n" + "\n" + "Revoked signature\n" + "-----BEGIN PGP SIGNATURE-----\n" + "Version: GnuPG v1\n" + "\n" + "iQEcBAEBAgAGBQJTd2AmAAoJEJwx7xWvfHTUCZMH/310hMg68H9kYWqKO12Qvyl7\n" + "SlkHBxRsD1sKIBM10qxh6262582mbdAbObVCSFlHVR5NU2tDN5B67J9NU2KnwCcq\n" + "Ny7Oj06UGEkZRmGA23BZ78w/xhPr2Xg80lckBIfGWCvezjSoAeOonk4WREpqzSUr\n" + "sXX8iioBh98ySuQp4rtzf1j0sGB2Tui/bZybiLwz+/fBzW9ITSV0OXmeT5BfBhJU\n" + "XXnOBXDwPUrJQPHxpGpX0s7iyElfZ2ws/PNqUJiWdmxqwLnndn1y5UECDC2T0FpC\n" + "erOM27tQeEthdrZTjMjV47p1ilNgNJrMI328ovehABYyobK9UlnFHcUnn/1OFRw=\n" + "=sE1o\n" + "-----END PGP SIGNATURE-----\n"); + + QCA::OpenPGP pgp3; + QCA::SecureMessage msg3(&pgp3); + msg3.setFormat(QCA::SecureMessage::Ascii); + msg3.startVerify(); + msg3.update(revokedKeySignature); + msg3.end(); + msg3.waitForFinished(5000); + + QCOMPARE(msg3.verifySuccess(), false); + QCOMPARE(msg3.errorCode(), QCA::SecureMessage::ErrorSignerRevoked); + + // Test expired signature + QByteArray expiredSignature("-----BEGIN PGP SIGNED MESSAGE-----\n" + "Hash: SHA1\n" + "\n" + "Valid key, expired signature\n" + "-----BEGIN PGP SIGNATURE-----\n" + "Version: GnuPG v1\n" + "\n" + "iQEiBAEBAgAMBQJTkjUvBYMAAVGAAAoJEN13PKfk4idpItIH/1BpFQkPm8fQV0bd\n" + "37qaXf7IWr7bsPBcb7NjR9EmB6Zl6wnmSKW9mvKvs0ZJ1HxyHx0yC5UQWsgTj3do\n" + "xGDP4nJvi0L7EDUukZApWu98nFwrnTrLEd+JMwlpYDhtaljq2qQo7u7CsqyoE2cL\n" + "nRuPkc+lRbDMlqGXk2QFPL8Wu7gW/ndJ8nQ0Dq+22q77Hh1PcyFlggTBxhLA4Svk\n" + "Hx2I4bUjaUq5P4g9kFeXx6/0n31FCa+uThSkWWjH1OeLEXrUZSH/8nBWcnJ3IGbt\n" + "W2bmHhTUx3tYt9aHc+1kje2bAT01xN974r+wS/XNT4cWw7ZSSvukEIjjieUMP4eQ\n" + "S/H6RmM=\n" + "=9pAJ\n" + "-----END PGP SIGNATURE-----\n"); + + QCA::OpenPGP pgp4; + QCA::SecureMessage msg4(&pgp4); + msg4.setFormat(QCA::SecureMessage::Ascii); + msg4.startVerify(); + msg4.update(expiredSignature); + msg4.end(); + msg4.waitForFinished(5000); + + QCOMPARE(msg4.verifySuccess(), false); + QCOMPARE(msg4.errorCode(), QCA::SecureMessage::ErrorSignatureExpired); + } + + if (!oldGNUPGHOME.isNull()) { + qca_setenv("GNUPGHOME", oldGNUPGHOME.data(), 1); + } +} + +void PgpUnitTest::testEncryptionWithExpiredSubkeys() +{ + // This previously failing test tests encrypting to + // keys with expired subkeys, while assuring no loss + // of functionality. + + QCA::Initializer qcaInit; + + PGPPassphraseProviderThread thread; + thread.start(); + + QByteArray oldGNUPGHOME = qgetenv("GNUPGHOME"); + if (qca_setenv("GNUPGHOME", "./keys4_expired_subkeys_work", 1) != 0) { + QFAIL("Expected to be able to set the GNUPGHOME environment variable, but couldn't"); + } + + QCA::KeyStoreManager::start(); + + QCA::KeyStoreManager keyManager(this); + keyManager.waitForBusyFinished(); + + if (QCA::isSupported(QStringList(QString("openpgp")), QString("qca-gnupg")) || + QCA::isSupported(QStringList(QString("keystorelist")), QString("qca-gnupg"))) { + + QStringList storeIds = keyManager.keyStores(); + QVERIFY(storeIds.contains("qca-gnupg")); + + QCA::KeyStore pgpStore(QString("qca-gnupg"), &keyManager); + QVERIFY(pgpStore.isValid()); + + QList keylist = pgpStore.entryList(); + + QCA::KeyStoreEntry validKey; + QCA::KeyStoreEntry expiredKey; + QCA::KeyStoreEntry revokedKey; + foreach(const QCA::KeyStoreEntry key, keylist) { + if (key.id() == "FEF97E4C4C870810") { + validKey = key; + } else if (key.id() == "DD773CA7E4E22769") { + expiredKey = key; + } else if (key.id() == "1D6A028CC4F444A9") { + revokedKey = key; + } + } + + QCOMPARE(validKey.isNull(), false); + QCOMPARE(validKey.name(), QString("QCA Test Key 2 (Non-expired encryption key with expired encryption subkey) ")); + QCOMPARE(validKey.type(), QCA::KeyStoreEntry::TypePGPSecretKey); + QCOMPARE(validKey.id(), QString("FEF97E4C4C870810")); + QCOMPARE(validKey.pgpSecretKey().isNull(), false); + QCOMPARE(validKey.pgpPublicKey().isNull(), false); + + QCOMPARE(expiredKey.isNull(), false); + QCOMPARE(expiredKey.name(), QString("QCA Test Key (Unit test key for expired subkeys) ")); + QCOMPARE(expiredKey.type(), QCA::KeyStoreEntry::TypePGPSecretKey); + QCOMPARE(expiredKey.id(), QString("DD773CA7E4E22769")); + QCOMPARE(expiredKey.pgpSecretKey().isNull(), false); + QCOMPARE(expiredKey.pgpPublicKey().isNull(), false); + + QCOMPARE(revokedKey.isNull(), false); + QCOMPARE(revokedKey.name(), QString("QCA Test Key (Revoked unit test key) ")); + QCOMPARE(revokedKey.type(), QCA::KeyStoreEntry::TypePGPSecretKey); + QCOMPARE(revokedKey.id(), QString("1D6A028CC4F444A9")); + QCOMPARE(revokedKey.pgpSecretKey().isNull(), false); + QCOMPARE(revokedKey.pgpPublicKey().isNull(), false); + + // Test encrypting to a non-expired key first + QByteArray nonExpiredMessage("Encrypting to non-expired subkey"); + + QCA::SecureMessageKey key; + key.setPGPPublicKey(validKey.pgpPublicKey()); + + QCA::OpenPGP pgp; + QCA::SecureMessage msg(&pgp); + msg.setFormat(QCA::SecureMessage::Ascii); + msg.setRecipient(key); + msg.startEncrypt(); + msg.update(nonExpiredMessage); + msg.end(); + msg.waitForFinished(5000); + + QVERIFY(msg.success()); + QByteArray encResult = msg.read(); + + // Decrypt and compare it + QCA::OpenPGP pgp1; + QCA::SecureMessage msg1(&pgp1); + msg1.startDecrypt(); + msg1.update(encResult); + msg1.end(); + msg1.waitForFinished(5000); + + QVERIFY(msg1.success()); + QByteArray decResult = msg1.read(); + QCOMPARE(decResult, nonExpiredMessage); + + // Test encrypting to the expired key + QByteArray expiredMessage("Encrypting to the expired key"); + + QCA::SecureMessageKey key2; + key2.setPGPPublicKey(expiredKey.pgpPublicKey()); + + QCA::OpenPGP pgp2; + QCA::SecureMessage msg2(&pgp2); + msg2.setFormat(QCA::SecureMessage::Ascii); + msg2.setRecipient(key2); + msg2.startEncrypt(); + msg2.update(expiredMessage); + msg2.end(); + msg2.waitForFinished(5000); + + QCOMPARE(msg2.success(), false); + // Note: If gpg worked as expected, msg.errorCode() should + // equal QCA::SecureMessage::ErrorEncryptExpired, but currently + // it omits the reason for failure, so we check for both values. + QVERIFY((msg2.errorCode() == QCA::SecureMessage::ErrorEncryptExpired) || + (msg2.errorCode() == QCA::SecureMessage::ErrorEncryptInvalid)); + + // Test encrypting to the revoked key + QByteArray revokedMessage("Encrypting to the revoked key"); + + QCA::SecureMessageKey key3; + key3.setPGPPublicKey(expiredKey.pgpPublicKey()); + + QCA::OpenPGP pgp3; + QCA::SecureMessage msg3(&pgp3); + msg3.setFormat(QCA::SecureMessage::Ascii); + msg3.setRecipient(key3); + msg3.startEncrypt(); + msg3.update(revokedMessage); + msg3.end(); + msg3.waitForFinished(5000); + + QCOMPARE(msg3.success(), false); + // Note: If gpg worked as expected, msg.errorCode() should + // equal QCA::SecureMessage::ErrorEncryptRevoked, but currently + // it omits the reason for failure, so we check for both values. + QVERIFY((msg3.errorCode() == QCA::SecureMessage::ErrorEncryptRevoked) || + (msg3.errorCode() == QCA::SecureMessage::ErrorEncryptInvalid)); + } + + if (!oldGNUPGHOME.isNull()) { + qca_setenv("GNUPGHOME", oldGNUPGHOME.data(), 1); + } +} + + QTEST_MAIN(PgpUnitTest) #include "pgpunittest.moc" diff -Nru qca2-2.0.3/unittest/pgpunittest/pgpunittest.pro qca2-2.1.0/unittest/pgpunittest/pgpunittest.pro --- qca2-2.0.3/unittest/pgpunittest/pgpunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/pgpunittest/pgpunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = pgpunittest -test.commands = ./pgpunittest - -# Input -SOURCES += pgpunittest.cpp diff -Nru qca2-2.0.3/unittest/pipeunittest/CMakeLists.txt qca2-2.1.0/unittest/pipeunittest/CMakeLists.txt --- qca2-2.0.3/unittest/pipeunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/pipeunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set(pipeunittest_bin_SRCS pipeunittest.cpp) + +MY_AUTOMOC( pipeunittest_bin_SRCS ) + +add_executable( pipeunittest ${pipeunittest_bin_SRCS} ) + +target_link_qca_test_libraries(pipeunittest) + +# add_qca_test(pipeunittest "QPipe") diff -Nru qca2-2.0.3/unittest/pipeunittest/pipeunittest.cpp qca2-2.1.0/unittest/pipeunittest/pipeunittest.cpp --- qca2-2.0.3/unittest/pipeunittest/pipeunittest.cpp 2007-07-16 12:14:56.000000000 +0000 +++ qca2-2.1.0/unittest/pipeunittest/pipeunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class PipeUnitTest : public QObject { Q_OBJECT @@ -46,7 +50,6 @@ void PipeUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void PipeUnitTest::cleanupTestCase() diff -Nru qca2-2.0.3/unittest/pipeunittest/pipeunittest.pro qca2-2.1.0/unittest/pipeunittest/pipeunittest.pro --- qca2-2.0.3/unittest/pipeunittest/pipeunittest.pro 2007-07-10 09:10:32.000000000 +0000 +++ qca2-2.1.0/unittest/pipeunittest/pipeunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = pipeunittest -test.commands = ./pipeunittest - -# Input -SOURCES += pipeunittest.cpp Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/BadnotAfterDateCACert.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/BadnotAfterDateCACert.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/BadnotAfterDateCACRL.crl and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/BadnotAfterDateCACRL.crl differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/BadnotBeforeDateCACert.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/BadnotBeforeDateCACert.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/BadnotBeforeDateCACRL.crl and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/BadnotBeforeDateCACRL.crl differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/BadSignedCACert.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/BadSignedCACert.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/BadSignedCACRL.crl and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/BadSignedCACRL.crl differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/DSACACert.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/DSACACert.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/DSACACRL.crl and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/DSACACRL.crl differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/DSAParametersInheritedCACert.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/DSAParametersInheritedCACert.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/DSAParametersInheritedCACRL.crl and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/DSAParametersInheritedCACRL.crl differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/GoodCACert.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/GoodCACert.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/GoodCACRL.crl and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/GoodCACRL.crl differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/InvalidCAnotAfterDateTest5EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/InvalidCAnotAfterDateTest5EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/InvalidCAnotBeforeDateTest1EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/InvalidCAnotBeforeDateTest1EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/InvalidCASignatureTest2EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/InvalidCASignatureTest2EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/InvalidDSASignatureTest6EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/InvalidDSASignatureTest6EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/InvalidEEnotAfterDateTest6EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/InvalidEEnotAfterDateTest6EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/InvalidEEnotBeforeDateTest2EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/InvalidEEnotBeforeDateTest2EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/InvalidEESignatureTest3EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/InvalidEESignatureTest3EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/InvalidMissingCRLTest1EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/InvalidMissingCRLTest1EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/InvalidNameChainingOrderTest2EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/InvalidNameChainingOrderTest2EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/InvalidNameChainingTest1EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/InvalidNameChainingTest1EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/Invalidpre2000UTCEEnotAfterDateTest7EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/Invalidpre2000UTCEEnotAfterDateTest7EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/InvalidRevokedCATest2EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/InvalidRevokedCATest2EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/InvalidRevokedEETest3EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/InvalidRevokedEETest3EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/NoCRLCACert.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/NoCRLCACert.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/RevokedsubCACert.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/RevokedsubCACert.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/RevokedsubCACRL.crl and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/RevokedsubCACRL.crl differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/RFC3280MandatoryAttributeTypesCACert.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/RFC3280MandatoryAttributeTypesCACert.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/RFC3280MandatoryAttributeTypesCACRL.crl and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/RFC3280MandatoryAttributeTypesCACRL.crl differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/RFC3280OptionalAttributeTypesCACert.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/RFC3280OptionalAttributeTypesCACert.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/RFC3280OptionalAttributeTypesCACRL.crl and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/RFC3280OptionalAttributeTypesCACRL.crl differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/RolloverfromPrintableStringtoUTF8StringCACert.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/RolloverfromPrintableStringtoUTF8StringCACert.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/RolloverfromPrintableStringtoUTF8StringCACRL.crl and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/RolloverfromPrintableStringtoUTF8StringCACRL.crl differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/TrustAnchorRootCertificate.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/TrustAnchorRootCertificate.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/TrustAnchorRootCRL.crl and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/TrustAnchorRootCRL.crl differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/UIDCACert.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/UIDCACert.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/UIDCACRL.crl and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/UIDCACRL.crl differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/UTF8StringCaseInsensitiveMatchCACert.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/UTF8StringCaseInsensitiveMatchCACert.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/UTF8StringCaseInsensitiveMatchCACRL.crl and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/UTF8StringCaseInsensitiveMatchCACRL.crl differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/UTF8StringEncodedNamesCACert.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/UTF8StringEncodedNamesCACert.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/UTF8StringEncodedNamesCACRL.crl and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/UTF8StringEncodedNamesCACRL.crl differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/ValidCertificatePathTest1EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/ValidCertificatePathTest1EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/ValidDSAParameterInheritanceTest5EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/ValidDSAParameterInheritanceTest5EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/ValidDSASignaturesTest4EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/ValidDSASignaturesTest4EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/ValidGeneralizedTimenotAfterDateTest8EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/ValidGeneralizedTimenotAfterDateTest8EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/ValidGeneralizedTimenotBeforeDateTest4EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/ValidGeneralizedTimenotBeforeDateTest4EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/ValidNameChainingCapitalizationTest5EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/ValidNameChainingCapitalizationTest5EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/ValidNameChainingWhitespaceTest3EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/ValidNameChainingWhitespaceTest3EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/ValidNameChainingWhitespaceTest4EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/ValidNameChainingWhitespaceTest4EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/ValidNameUIDsTest6EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/ValidNameUIDsTest6EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/Validpre2000UTCnotBeforeDateTest3EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/Validpre2000UTCnotBeforeDateTest3EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/ValidRFC3280MandatoryAttributeTypesTest7EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/ValidRFC3280MandatoryAttributeTypesTest7EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/ValidRFC3280OptionalAttributeTypesTest8EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/ValidRFC3280OptionalAttributeTypesTest8EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/ValidRolloverfromPrintableStringtoUTF8StringTest10EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/ValidRolloverfromPrintableStringtoUTF8StringTest10EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/ValidUTF8StringCaseInsensitiveMatchTest11EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/ValidUTF8StringCaseInsensitiveMatchTest11EE.crt differ Binary files /tmp/5eREEt0AAl/qca2-2.0.3/unittest/pkits/certs/ValidUTF8StringEncodedNamesTest9EE.crt and /tmp/TUoR4IBecB/qca2-2.1.0/unittest/pkits/certs/ValidUTF8StringEncodedNamesTest9EE.crt differ diff -Nru qca2-2.0.3/unittest/pkits/CMakeLists.txt qca2-2.1.0/unittest/pkits/CMakeLists.txt --- qca2-2.0.3/unittest/pkits/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/pkits/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,37 @@ +ENABLE_TESTING() + +set(pkits_bin_SRCS pkits.cpp) + +MY_AUTOMOC( pkits_bin_SRCS ) + +add_executable(pkits ${pkits_bin_SRCS} ) + +target_link_qca_test_libraries(pkits) + + +FOREACH( testFileName BadnotAfterDateCACert.crt RFC3280MandatoryAttributeTypesCACRL.crl BadnotAfterDateCACRL.crl + RFC3280OptionalAttributeTypesCACert.crt BadnotBeforeDateCACert.crt RFC3280OptionalAttributeTypesCACRL.crl + BadnotBeforeDateCACRL.crl RolloverfromPrintableStringtoUTF8StringCACert.crt BadSignedCACert.crt + RolloverfromPrintableStringtoUTF8StringCACRL.crl BadSignedCACRL.crl TrustAnchorRootCertificate.crt + DSACACert.crt TrustAnchorRootCRL.crl DSACACRL.crl UIDCACert.crt DSAParametersInheritedCACert.crt + UIDCACRL.crl DSAParametersInheritedCACRL.crl UTF8StringCaseInsensitiveMatchCACert.crt + GoodCACert.crt UTF8StringCaseInsensitiveMatchCACRL.crl GoodCACRL.crl UTF8StringEncodedNamesCACert.crt + InvalidCAnotAfterDateTest5EE.crt UTF8StringEncodedNamesCACRL.crl InvalidCAnotBeforeDateTest1EE.crt + ValidCertificatePathTest1EE.crt InvalidCASignatureTest2EE.crt ValidDSAParameterInheritanceTest5EE.crt + InvalidDSASignatureTest6EE.crt ValidDSASignaturesTest4EE.crt + InvalidEEnotAfterDateTest6EE.crt ValidGeneralizedTimenotAfterDateTest8EE.crt + InvalidEEnotBeforeDateTest2EE.crt ValidGeneralizedTimenotBeforeDateTest4EE.crt + InvalidEESignatureTest3EE.crt ValidNameChainingCapitalizationTest5EE.crt + InvalidMissingCRLTest1EE.crt ValidNameChainingWhitespaceTest3EE.crt + InvalidNameChainingOrderTest2EE.crt ValidNameChainingWhitespaceTest4EE.crt + InvalidNameChainingTest1EE.crt ValidNameUIDsTest6EE.crt + Invalidpre2000UTCEEnotAfterDateTest7EE.crt Validpre2000UTCnotBeforeDateTest3EE.crt + InvalidRevokedCATest2EE.crt ValidRFC3280MandatoryAttributeTypesTest7EE.crt + InvalidRevokedEETest3EE.crt ValidRFC3280OptionalAttributeTypesTest8EE.crt + NoCRLCACert.crt ValidRolloverfromPrintableStringtoUTF8StringTest10EE.crt + RevokedsubCACert.crt ValidUTF8StringCaseInsensitiveMatchTest11EE.crt + RevokedsubCACRL.crl ValidUTF8StringEncodedNamesTest9EE.crt RFC3280MandatoryAttributeTypesCACert.crt ) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/certs/${testFileName} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/certs/${testFileName} COPYONLY) +ENDFOREACH( testFileName ) + +add_qca_test(pkits "PublicKeyInfrastructure") diff -Nru qca2-2.0.3/unittest/pkits/pkits.cpp qca2-2.1.0/unittest/pkits/pkits.cpp --- qca2-2.0.3/unittest/pkits/pkits.cpp 2007-06-29 21:30:22.000000000 +0000 +++ qca2-2.1.0/unittest/pkits/pkits.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class Pkits : public QObject { Q_OBJECT @@ -74,7 +78,6 @@ void Pkits::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void Pkits::cleanupTestCase() diff -Nru qca2-2.0.3/unittest/pkits/pkits.pro qca2-2.1.0/unittest/pkits/pkits.pro --- qca2-2.0.3/unittest/pkits/pkits.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/pkits/pkits.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = pkits -test.commands = ./pkits - -# Input -SOURCES += pkits.cpp diff -Nru qca2-2.0.3/unittest/pkits/README qca2-2.1.0/unittest/pkits/README --- qca2-2.0.3/unittest/pkits/README 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/pkits/README 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,8 @@ +This directory holds PKITS (PKI Test Suite). + +The certificates and CRLs used for the tests are made by the +NIST (http://csrc.nist.gov/groups/ST/crypto_apps_infra/pki/pkitesting.html), +if the certificates are expired (for i.e.: This lib is still used after 10 +years again), you can download the certificates on the NIST's website. + +- PKITS v1.0.1, posted on 2011. diff -Nru qca2-2.0.3/unittest/randomunittest/randomunittest.cpp qca2-2.1.0/unittest/randomunittest/randomunittest.cpp --- qca2-2.0.3/unittest/randomunittest/randomunittest.cpp 2007-04-10 23:42:54.000000000 +0000 +++ qca2-2.1.0/unittest/randomunittest/randomunittest.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -/** - * Copyright (C) 2004, 2006 Brad Hards - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include - -class RandomUnitTest : public QObject -{ - Q_OBJECT - -private slots: - void initTestCase(); - void cleanupTestCase(); - void testSetGlobal(); - void testGetData(); - -private: - QCA::Initializer* m_init; - -}; - -void RandomUnitTest::initTestCase() -{ - m_init = new QCA::Initializer; -#include "../fixpaths.include" -} - -void RandomUnitTest::cleanupTestCase() -{ - delete m_init; -} - -void RandomUnitTest::testSetGlobal() -{ - QCA::setGlobalRandomProvider( "default" ); - QString pname = QCA::globalRandomProvider( ); - QCOMPARE( pname, QString( "default" ) ); - - // Only check this if we have the Botan provider - if ( QCA::findProvider( "qca-botan" ) ) { - QCA::setGlobalRandomProvider( "qca-botan" ); - QString rng1name = QCA::globalRandomProvider( ); - QCOMPARE( rng1name, QString( "qca-botan" ) ); - } -} - -void RandomUnitTest::testGetData() -{ - QStringList providersToTest; - providersToTest.append("default"); - providersToTest.append("qca-botan"); - - foreach(QString provider, providersToTest) { - QCA::Random randObject (provider); - QCOMPARE( randObject.nextByte() == randObject.nextByte(), false ); - QCOMPARE( QCA::Random().nextByte() == QCA::Random().nextByte(), false ); - QCOMPARE( randObject.nextBytes(4) == randObject.nextBytes(4), false ); - QCOMPARE( randObject.nextBytes(100) == randObject.nextBytes(100), false ); - QCOMPARE( randObject.randomChar() == randObject.randomChar(), false ); - QCOMPARE( QCA::Random().randomChar() == QCA::Random().randomChar(), false ); - QCOMPARE( QCA::Random::randomChar() == QCA::Random::randomChar(), false ); - QCOMPARE( QCA::Random().randomInt() == QCA::Random().randomInt(), false ); - QCOMPARE( QCA::Random::randomInt() == QCA::Random::randomInt(), false ); - QCOMPARE( QCA::Random().randomArray(3) == QCA::Random().randomArray(3), false ); - QCOMPARE( QCA::Random::randomArray(3) == QCA::Random::randomArray(3), false ); - - for (int len = 1; len <= 1024; len*=2 ) { - QCOMPARE( QCA::Random::randomArray(len).size(), len ); - } - } -} - -QTEST_MAIN(RandomUnitTest) - -#include "randomunittest.moc" diff -Nru qca2-2.0.3/unittest/randomunittest/randomunittest.pro qca2-2.1.0/unittest/randomunittest/randomunittest.pro --- qca2-2.0.3/unittest/randomunittest/randomunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/randomunittest/randomunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = randomunittest -test.commands = ./randomunittest - -# Input -SOURCES += randomunittest.cpp diff -Nru qca2-2.0.3/unittest/rsaunittest/CMakeLists.txt qca2-2.1.0/unittest/rsaunittest/CMakeLists.txt --- qca2-2.0.3/unittest/rsaunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/rsaunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set(rsaunittest_bin_SRCS rsaunittest.cpp) + +MY_AUTOMOC( rsaunittest_bin_SRCS ) + +add_executable(rsaunittest ${rsaunittest_bin_SRCS} ) + +target_link_qca_test_libraries(rsaunittest) + +add_qca_test(rsaunittest "RSA") diff -Nru qca2-2.0.3/unittest/rsaunittest/rsaunittest.cpp qca2-2.1.0/unittest/rsaunittest/rsaunittest.cpp --- qca2-2.0.3/unittest/rsaunittest/rsaunittest.cpp 2007-06-29 21:30:22.000000000 +0000 +++ qca2-2.1.0/unittest/rsaunittest/rsaunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class RSAUnitTest : public QObject { Q_OBJECT @@ -34,6 +38,7 @@ void initTestCase(); void cleanupTestCase(); void testrsa(); + void testAsymmetricEncryption(); private: QCA::Initializer* m_init; @@ -42,7 +47,6 @@ void RSAUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void RSAUnitTest::cleanupTestCase() @@ -78,6 +82,7 @@ QCOMPARE( rsaKey.isPublic(), false ); QCOMPARE( rsaKey.canSign(), true); QCOMPARE( rsaKey.canDecrypt(), true); + QCOMPARE( rsaKey.canEncrypt(), true); QCA::RSAPrivateKey rsaPrivKey = rsaKey.toRSA(); QCOMPARE( rsaPrivKey.bitSize(), keysize ); @@ -144,6 +149,50 @@ } } +void RSAUnitTest::testAsymmetricEncryption() +{ + if(!QCA::isSupported("pkey", "qca-ossl") || + !QCA::PKey::supportedTypes("qca-ossl").contains(QCA::PKey::RSA) || + !QCA::PKey::supportedIOTypes("qca-ossl").contains(QCA::PKey::RSA)) { + QWARN(QString("RSA not supported").toLocal8Bit()); +#if QT_VERSION >= 0x050000 + QSKIP("RSA not supported. skipping"); +#else + QSKIP("RSA not supported. skipping",SkipAll); +#endif + } + QCA::RSAPrivateKey rsaPrivKey1 = QCA::KeyGenerator().createRSA(512, 65537, "qca-ossl").toRSA(); + QCA::RSAPublicKey rsaPubKey1 = rsaPrivKey1.toPublicKey().toRSA(); + + QCA::RSAPrivateKey rsaPrivKey2 = QCA::KeyGenerator().createRSA(512, 65537, "qca-ossl").toRSA(); + // QCA::RSAPublicKey rsaPubKey2 = rsaPrivKey2.toPublicKey().toRSA(); + + const QCA::SecureArray clearText = "Hello World !"; + QCA::SecureArray testText; + QCA::SecureArray cipherText; + + // Test keys #1: Enc with public, dec with private + QVERIFY( rsaPubKey1.maximumEncryptSize(QCA::EME_PKCS1v15) >= clearText.size() ); + cipherText = rsaPubKey1.encrypt(clearText, QCA::EME_PKCS1v15); + QVERIFY( rsaPrivKey1.decrypt(cipherText, &testText, QCA::EME_PKCS1v15) ); + QCOMPARE( clearText, testText ); + testText.clear(); + // --- + + // Test keys #2 to decipher key #1 + QVERIFY( !rsaPrivKey2.decrypt(cipherText, &testText, QCA::EME_PKCS1v15) ); + QVERIFY( testText.isEmpty() ); + // --- + + // Test keys #2: Enc with private, dec with public + cipherText.clear(); + QVERIFY( rsaPrivKey1.maximumEncryptSize(QCA::EME_PKCS1v15) >= clearText.size() ); + cipherText = rsaPrivKey1.encrypt(clearText, QCA::EME_PKCS1v15); + QVERIFY( rsaPubKey1.decrypt(cipherText, &testText, QCA::EME_PKCS1v15) ); + QCOMPARE( clearText, testText ); + testText.clear(); + // --- +} QTEST_MAIN(RSAUnitTest) diff -Nru qca2-2.0.3/unittest/rsaunittest/rsaunittest.pro qca2-2.1.0/unittest/rsaunittest/rsaunittest.pro --- qca2-2.0.3/unittest/rsaunittest/rsaunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/rsaunittest/rsaunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = rsaunittest -test.commands = ./rsaunittest - -# Input -SOURCES += rsaunittest.cpp diff -Nru qca2-2.0.3/unittest/securearrayunittest/CMakeLists.txt qca2-2.1.0/unittest/securearrayunittest/CMakeLists.txt --- qca2-2.0.3/unittest/securearrayunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/securearrayunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set(securearrayunittest_bin_SRCS securearrayunittest.cpp) + +MY_AUTOMOC( securearrayunittest_bin_SRCS ) + +add_executable( securearrayunittest ${securearrayunittest_bin_SRCS} ) + +target_link_qca_test_libraries(securearrayunittest) + +add_qca_test(securearrayunittest "SecureArray") diff -Nru qca2-2.0.3/unittest/securearrayunittest/securearrayunittest.cpp qca2-2.1.0/unittest/securearrayunittest/securearrayunittest.cpp --- qca2-2.0.3/unittest/securearrayunittest/securearrayunittest.cpp 2007-06-13 02:30:43.000000000 +0000 +++ qca2-2.1.0/unittest/securearrayunittest/securearrayunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class SecureArrayUnitTest : public QObject { Q_OBJECT @@ -43,7 +47,6 @@ void SecureArrayUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void SecureArrayUnitTest::cleanupTestCase() diff -Nru qca2-2.0.3/unittest/securearrayunittest/securearrayunittest.pro qca2-2.1.0/unittest/securearrayunittest/securearrayunittest.pro --- qca2-2.0.3/unittest/securearrayunittest/securearrayunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/securearrayunittest/securearrayunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = securearrayunittest -test.commands = ./securearrayunittest - -# Input -SOURCES += securearrayunittest.cpp diff -Nru qca2-2.0.3/unittest/staticunittest/CMakeLists.txt qca2-2.1.0/unittest/staticunittest/CMakeLists.txt --- qca2-2.0.3/unittest/staticunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/staticunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set(staticunittest_bin_SRCS staticunittest.cpp) + +MY_AUTOMOC( staticunittest_bin_SRCS ) + +add_executable( staticunittest ${staticunittest_bin_SRCS} ) + +target_link_qca_test_libraries(staticunittest) + +add_qca_test(staticunittest "StaticFunctions") diff -Nru qca2-2.0.3/unittest/staticunittest/staticunittest.cpp qca2-2.1.0/unittest/staticunittest/staticunittest.cpp --- qca2-2.0.3/unittest/staticunittest/staticunittest.cpp 2007-07-08 02:11:06.000000000 +0000 +++ qca2-2.1.0/unittest/staticunittest/staticunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class StaticUnitTest : public QObject { Q_OBJECT @@ -43,7 +47,6 @@ void StaticUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void StaticUnitTest::cleanupTestCase() diff -Nru qca2-2.0.3/unittest/staticunittest/staticunittest.pro qca2-2.1.0/unittest/staticunittest/staticunittest.pro --- qca2-2.0.3/unittest/staticunittest/staticunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/staticunittest/staticunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = staticunittest -test.commands = ./staticunittest - -# Input -SOURCES += staticunittest.cpp diff -Nru qca2-2.0.3/unittest/symmetrickeyunittest/CMakeLists.txt qca2-2.1.0/unittest/symmetrickeyunittest/CMakeLists.txt --- qca2-2.0.3/unittest/symmetrickeyunittest/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/symmetrickeyunittest/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set(symmetrickeyunittest_bin_SRCS symmetrickeyunittest.cpp) + +MY_AUTOMOC( symmetrickeyunittest_bin_SRCS ) + +add_executable( symmetrickeyunittest ${symmetrickeyunittest_bin_SRCS} ) + +target_link_qca_test_libraries(symmetrickeyunittest) + +add_qca_test(symmetrickeyunittest "SymmetricKey") diff -Nru qca2-2.0.3/unittest/symmetrickeyunittest/symmetrickeyunittest.cpp qca2-2.1.0/unittest/symmetrickeyunittest/symmetrickeyunittest.cpp --- qca2-2.0.3/unittest/symmetrickeyunittest/symmetrickeyunittest.cpp 2007-06-13 02:30:43.000000000 +0000 +++ qca2-2.1.0/unittest/symmetrickeyunittest/symmetrickeyunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class SymmetricKeyUnitTest : public QObject { Q_OBJECT @@ -43,7 +47,6 @@ void SymmetricKeyUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void SymmetricKeyUnitTest::cleanupTestCase() diff -Nru qca2-2.0.3/unittest/symmetrickeyunittest/symmetrickeyunittest.pro qca2-2.1.0/unittest/symmetrickeyunittest/symmetrickeyunittest.pro --- qca2-2.0.3/unittest/symmetrickeyunittest/symmetrickeyunittest.pro 2007-07-09 10:52:52.000000000 +0000 +++ qca2-2.1.0/unittest/symmetrickeyunittest/symmetrickeyunittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = symmetrickeyunittest -test.commands = ./symmetrickeyunittest - -# Input -SOURCES += symmetrickeyunittest.cpp diff -Nru qca2-2.0.3/unittest/tls/CMakeLists.txt qca2-2.1.0/unittest/tls/CMakeLists.txt --- qca2-2.0.3/unittest/tls/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/tls/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,11 @@ +ENABLE_TESTING() + +set(tlsunittest_bin_SRCS tlsunittest.cpp) + +MY_AUTOMOC( tlsunittest_bin_SRCS ) + +add_executable(tlsunittest ${tlsunittest_bin_SRCS} ) + +target_link_qca_test_libraries(tlsunittest) + +add_qca_test(tlsunittest "TransportLayerSecurity") diff -Nru qca2-2.0.3/unittest/tls/tls.pro qca2-2.1.0/unittest/tls/tls.pro --- qca2-2.0.3/unittest/tls/tls.pro 2007-08-22 16:20:58.000000000 +0000 +++ qca2-2.1.0/unittest/tls/tls.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib -TARGET = tlsunittest - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = tlsunittest -test.commands = ./tlsunittest - -# Input -SOURCES += tlsunittest.cpp diff -Nru qca2-2.0.3/unittest/tls/tlsunittest.cpp qca2-2.1.0/unittest/tls/tlsunittest.cpp --- qca2-2.0.3/unittest/tls/tlsunittest.cpp 2007-09-02 18:47:40.000000000 +0000 +++ qca2-2.1.0/unittest/tls/tlsunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -26,6 +26,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class TLSUnitTest : public QObject { Q_OBJECT @@ -41,7 +45,6 @@ void TLSUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void TLSUnitTest::cleanupTestCase() @@ -67,14 +70,20 @@ QVERIFY( cipherList.contains("TLS_RSA_WITH_AES_128_CBC_SHA") ); QVERIFY( cipherList.contains("TLS_RSA_WITH_RC4_128_SHA") ); QVERIFY( cipherList.contains("TLS_RSA_WITH_RC4_128_MD5") ); - QVERIFY( cipherList.contains("TLS_DHE_RSA_WITH_DES_CBC_SHA") ); - QVERIFY( cipherList.contains("TLS_DHE_DSS_WITH_DES_CBC_SHA") ); - QVERIFY( cipherList.contains("TLS_RSA_WITH_DES_CBC_SHA") ); - QVERIFY( cipherList.contains("TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA") ); - QVERIFY( cipherList.contains("TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA") ); - QVERIFY( cipherList.contains("TLS_RSA_EXPORT_WITH_DES40_CBC_SHA") ); - QVERIFY( cipherList.contains("TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5") ); - QVERIFY( cipherList.contains("TLS_RSA_EXPORT_WITH_RC4_40_MD5") ); + + // Fedora 20 openssl has no this cipher suites. + // I just believe that F20 has the most strict patent rules + // and Fedora list is the minimal default list. + // It should fit for every openssl distribuition. + + // QVERIFY( cipherList.contains("TLS_DHE_RSA_WITH_DES_CBC_SHA") ); + // QVERIFY( cipherList.contains("TLS_DHE_DSS_WITH_DES_CBC_SHA") ); + // QVERIFY( cipherList.contains("TLS_RSA_WITH_DES_CBC_SHA") ); + // QVERIFY( cipherList.contains("TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA") ); + // QVERIFY( cipherList.contains("TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA") ); + // QVERIFY( cipherList.contains("TLS_RSA_EXPORT_WITH_DES40_CBC_SHA") ); + // QVERIFY( cipherList.contains("TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5") ); + // QVERIFY( cipherList.contains("TLS_RSA_EXPORT_WITH_RC4_40_MD5") ); cipherList = tls->supportedCipherSuites(QCA::TLS::SSL_v3); QVERIFY( cipherList.contains("SSL_DHE_RSA_WITH_AES_256_CBC_SHA") ); @@ -88,23 +97,26 @@ QVERIFY( cipherList.contains("SSL_RSA_WITH_AES_128_CBC_SHA") ); QVERIFY( cipherList.contains("SSL_RSA_WITH_RC4_128_SHA") ); QVERIFY( cipherList.contains("SSL_RSA_WITH_RC4_128_MD5") ); - QVERIFY( cipherList.contains("SSL_DHE_RSA_WITH_DES_CBC_SHA") ); - QVERIFY( cipherList.contains("SSL_DHE_DSS_WITH_DES_CBC_SHA") ); - QVERIFY( cipherList.contains("SSL_RSA_WITH_DES_CBC_SHA") ); - QVERIFY( cipherList.contains("SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA") ); - QVERIFY( cipherList.contains("SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA") ); - QVERIFY( cipherList.contains("SSL_RSA_EXPORT_WITH_DES40_CBC_SHA") ); - QVERIFY( cipherList.contains("SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5") ); - QVERIFY( cipherList.contains("SSL_RSA_EXPORT_WITH_RC4_40_MD5") ); - - cipherList = tls->supportedCipherSuites(QCA::TLS::SSL_v2); - QVERIFY( cipherList.contains("SSL_CK_DES_192_EDE3_CBC_WITH_MD5") ); - QVERIFY( cipherList.contains("SSL_CK_RC4_128_EXPORT40_WITH_MD5") ); - QVERIFY( cipherList.contains("SSL_CK_RC2_128_CBC_WITH_MD5") ); - QVERIFY( cipherList.contains("SSL_CK_RC4_128_WITH_MD5") ); - QVERIFY( cipherList.contains("SSL_CK_DES_64_CBC_WITH_MD5") ); - QVERIFY( cipherList.contains("SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5") ); - QVERIFY( cipherList.contains("SSL_CK_RC4_128_EXPORT40_WITH_MD5") ); + + // QVERIFY( cipherList.contains("SSL_DHE_RSA_WITH_DES_CBC_SHA") ); + // QVERIFY( cipherList.contains("SSL_DHE_DSS_WITH_DES_CBC_SHA") ); + // QVERIFY( cipherList.contains("SSL_RSA_WITH_DES_CBC_SHA") ); + // QVERIFY( cipherList.contains("SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA") ); + // QVERIFY( cipherList.contains("SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA") ); + // QVERIFY( cipherList.contains("SSL_RSA_EXPORT_WITH_DES40_CBC_SHA") ); + // QVERIFY( cipherList.contains("SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5") ); + // QVERIFY( cipherList.contains("SSL_RSA_EXPORT_WITH_RC4_40_MD5") ); + + // Debian testing (jessie) has no these ciphers. So disable them. + + // cipherList = tls->supportedCipherSuites(QCA::TLS::SSL_v2); + // QVERIFY( cipherList.contains("SSL_CK_DES_192_EDE3_CBC_WITH_MD5") ); + // QVERIFY( cipherList.contains("SSL_CK_RC4_128_EXPORT40_WITH_MD5") ); + // QVERIFY( cipherList.contains("SSL_CK_RC2_128_CBC_WITH_MD5") ); + // QVERIFY( cipherList.contains("SSL_CK_RC4_128_WITH_MD5") ); + // QVERIFY( cipherList.contains("SSL_CK_DES_64_CBC_WITH_MD5") ); + // QVERIFY( cipherList.contains("SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5") ); + // QVERIFY( cipherList.contains("SSL_CK_RC4_128_EXPORT40_WITH_MD5") ); } } diff -Nru qca2-2.0.3/unittest/unittest.pri qca2-2.1.0/unittest/unittest.pri --- qca2-2.0.3/unittest/unittest.pri 2009-04-24 21:12:15.000000000 +0000 +++ qca2-2.1.0/unittest/unittest.pri 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -include(../app.pri) - -# default to console (individual programs can always override this if needed) -CONFIG += console -CONFIG -= app_bundle -QT -= gui diff -Nru qca2-2.0.3/unittest/unittest.pro qca2-2.1.0/unittest/unittest.pro --- qca2-2.0.3/unittest/unittest.pro 2007-08-03 02:02:09.000000000 +0000 +++ qca2-2.1.0/unittest/unittest.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -TEMPLATE = subdirs - -SUBDIRS += \ - base64unittest \ - bigintunittest \ - certunittest \ - cipherunittest \ - clientplugin \ - cms \ - dsaunittest \ - filewatchunittest \ - hashunittest \ - hexunittest \ - kdfunittest \ - keybundle \ - keygenunittest \ - keylengthunittest \ - keystore \ - logger \ - macunittest \ - metatype \ - pgpunittest \ - pipeunittest \ - pkits \ - randomunittest \ - rsaunittest \ - securearrayunittest \ - staticunittest \ - symmetrickeyunittest \ - tls \ - velox - -QMAKE_EXTRA_TARGETS += test -test.commands = sh ./checkall - diff -Nru qca2-2.0.3/unittest/velox/CMakeLists.txt qca2-2.1.0/unittest/velox/CMakeLists.txt --- qca2-2.0.3/unittest/velox/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qca2-2.1.0/unittest/velox/CMakeLists.txt 2014-11-06 08:15:45.000000000 +0000 @@ -0,0 +1,15 @@ +ENABLE_TESTING() + +set(veloxunittest_bin_SRCS veloxunittest.cpp) + +MY_AUTOMOC( veloxunittest_bin_SRCS ) + +add_executable(veloxunittest ${veloxunittest_bin_SRCS} ) + +target_link_qca_test_libraries(veloxunittest) +target_link_libraries(veloxunittest ${QT_QTNETWORK_LIBRARY}) + +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/root.crt ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/root.crt COPYONLY) + +# this will almost always fail. +# add_qca_test(veloxunittest "ServerNameIndication") diff -Nru qca2-2.0.3/unittest/velox/velox.pro qca2-2.1.0/unittest/velox/velox.pro --- qca2-2.0.3/unittest/velox/velox.pro 2008-05-22 00:54:13.000000000 +0000 +++ qca2-2.1.0/unittest/velox/velox.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -DEPENDPATH += . -include(../unittest.pri) -CONFIG += qtestlib -QT += network -TARGET = veloxunittest - -# test target -QMAKE_EXTRA_TARGETS = test -test.depends = veloxunittest -test.commands = ./veloxunittest - -# Input -SOURCES += veloxunittest.cpp diff -Nru qca2-2.0.3/unittest/velox/veloxunittest.cpp qca2-2.1.0/unittest/velox/veloxunittest.cpp --- qca2-2.0.3/unittest/velox/veloxunittest.cpp 2007-06-29 21:30:22.000000000 +0000 +++ qca2-2.1.0/unittest/velox/veloxunittest.cpp 2014-11-06 08:15:45.000000000 +0000 @@ -27,6 +27,10 @@ #include #include +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + class TlsTest : public QObject { Q_OBJECT @@ -130,7 +134,6 @@ void VeloxUnitTest::initTestCase() { m_init = new QCA::Initializer; -#include "../fixpaths.include" } void VeloxUnitTest::cleanupTestCase()