diff --git a/Mainpage.dox b/Mainpage.dox index 770aacad..bba47b66 100644 --- a/Mainpage.dox +++ b/Mainpage.dox @@ -19,8 +19,8 @@ \section features Features This library provides an easy API for the following features: - - Secure byte arrays (QSecureArray) - - Arbitrary precision integers (QBigInteger) + - Secure byte arrays (QCA::SecureArray) + - Arbitrary precision integers (QCA::BigInteger) - Random number generation (QCA::Random) - SSL/TLS (QCA::TLS) - X509 certificates (QCA::Certificate and QCA::CertificateCollection) diff --git a/include/QtCrypto/qca_basic.h b/include/QtCrypto/qca_basic.h index 4161b37c..da1c9d79 100644 --- a/include/QtCrypto/qca_basic.h +++ b/include/QtCrypto/qca_basic.h @@ -80,7 +80,7 @@ namespace QCA * * \sa randomArray */ - QSecureArray nextBytes(int size); + SecureArray nextBytes(int size); /** * Provide a random character (byte) @@ -111,12 +111,12 @@ namespace QCA * * \code * // build a 30 byte secure array. - * QSecureArray arry = QCA::Random::randomArray(30); + * SecureArray arry = QCA::Random::randomArray(30); * \endcode * * \param size the number of bytes to provide */ - static QSecureArray randomArray(int size); + static SecureArray randomArray(int size); }; /** @@ -200,7 +200,7 @@ namespace QCA * * \param a the byte array to add to the hash */ - virtual void update(const QSecureArray &a); + virtual void update(const SecureArray &a); /** * \overload @@ -214,7 +214,7 @@ namespace QCA * * This method is provided to assist with code that * already exists, and is being ported to %QCA. You are - * better off passing a QSecureArray (as shown above) + * better off passing a SecureArray (as shown above) * if you are writing new code. * * \param data pointer to a char array @@ -261,19 +261,19 @@ namespace QCA * reuse the Hash object, you should call clear() and * start to update() again. */ - virtual QSecureArray final(); + virtual SecureArray final(); /** * %Hash a byte array, returning it as another * byte array. * * This is a convenience method that returns the - * hash of a QSecureArray. + * hash of a SecureArray. * * \code - * QSecureArray sampleArray(3); + * SecureArray sampleArray(3); * sampleArray.fill('a'); - * QSecureArray outputArray = QCA::Hash("md2")::hash(sampleArray); + * SecureArray outputArray = QCA::Hash("md2")::hash(sampleArray); * \endcode * * \param array the QByteArray to hash @@ -283,7 +283,7 @@ namespace QCA * consider creating an Hash object, and then calling * update() and final(). */ - QSecureArray hash(const QSecureArray &array); + SecureArray hash(const SecureArray &array); /** * %Hash a byte array, returning it as a printable @@ -299,7 +299,7 @@ namespace QCA * object, call Hash::update() as required, then call * Hash::final(), before using the static arrayToHex() method. */ - QString hashToString(const QSecureArray &array); + QString hashToString(const SecureArray &array); }; /** \page hashing Hashing Algorithms @@ -560,13 +560,13 @@ namespace QCA * * \param a the array of data to encrypt / decrypt */ - virtual QSecureArray update(const QSecureArray &a); + virtual SecureArray update(const SecureArray &a); /** * complete the block of data, padding as required, and returning * the completed block */ - virtual QSecureArray final(); + virtual SecureArray final(); /** @@ -683,7 +683,7 @@ namespace QCA * * \param array the message contents */ - virtual void update(const QSecureArray &array); + virtual void update(const SecureArray &array); /** * Finalises input and returns the MAC result @@ -696,7 +696,7 @@ namespace QCA * reuse the %MessageAuthenticationCode object, you * should call clear() and start to update() again. */ - virtual QSecureArray final(); + virtual SecureArray final(); /** * Initialise the MAC algorithm. @@ -751,7 +751,7 @@ namespace QCA * * \return the derived key */ - SymmetricKey makeKey(const QSecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount); + SymmetricKey makeKey(const SecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount); /** * Construct the name of the algorithm diff --git a/include/QtCrypto/qca_cert.h b/include/QtCrypto/qca_cert.h index b8f369a2..4ef4274d 100644 --- a/include/QtCrypto/qca_cert.h +++ b/include/QtCrypto/qca_cert.h @@ -386,7 +386,7 @@ namespace QCA /** The serial number for the certificate */ - QBigInteger serialNumber() const; // create + BigInteger serialNumber() const; // create /** the first time the certificate will be valid @@ -459,7 +459,7 @@ namespace QCA \param i the serial number to use */ - void setSerialNumber(const QBigInteger &i); + void setSerialNumber(const BigInteger &i); /** Set the validity period for the certificate @@ -616,7 +616,7 @@ namespace QCA /** The serial number of the certificate */ - QBigInteger serialNumber() const; + BigInteger serialNumber() const; /** The public key associated with the subject of the certificate @@ -678,7 +678,7 @@ namespace QCA /** Export the Certificate into a DER format */ - QSecureArray toDER() const; + SecureArray toDER() const; /** Export the Certificate into a PEM format @@ -701,7 +701,7 @@ namespace QCA \return the Certificate corresponding to the certificate in the provided array */ - static Certificate fromDER(const QSecureArray &a, ConvertResult *result = 0, const QString &provider = QString()); + static Certificate fromDER(const SecureArray &a, ConvertResult *result = 0, const QString &provider = QString()); /** Import the certificate from PEM format @@ -992,7 +992,7 @@ namespace QCA \note this only applies to PKCS#10 format certificate requests */ - QSecureArray toDER() const; + SecureArray toDER() const; /** Export the Certificate Request into a PEM format @@ -1021,7 +1021,7 @@ namespace QCA \note this only applies to PKCS#10 format certificate requests */ - static CertificateRequest fromDER(const QSecureArray &a, ConvertResult *result = 0, const QString &provider = QString()); + static CertificateRequest fromDER(const SecureArray &a, ConvertResult *result = 0, const QString &provider = QString()); /** Import the certificate request from PEM format @@ -1127,12 +1127,12 @@ namespace QCA \param time the time the Certificate was revoked (or will be revoked) \param r the reason that the certificate is being revoked */ - CRLEntry(const QBigInteger serial, const QDateTime time, Reason r = Unspecified); + CRLEntry(const BigInteger serial, const QDateTime time, Reason r = Unspecified); /** The serial number of the certificate that is the subject of this CRL entry */ - QBigInteger serialNumber() const; + BigInteger serialNumber() const; /** The time this CRL entry was created @@ -1168,7 +1168,7 @@ namespace QCA bool operator==(const CRLEntry &a) const; private: - QBigInteger _serial; + BigInteger _serial; QDateTime _time; Reason _reason; }; @@ -1261,7 +1261,7 @@ namespace QCA /** The signature on this CRL */ - QSecureArray signature() const; + SecureArray signature() const; /** The signature algorithm used for the signature on this CRL @@ -1285,7 +1285,7 @@ namespace QCA \return an array containing the CRL in DER format */ - QSecureArray toDER() const; + SecureArray toDER() const; /** Export the %Certificate Revocation List (CRL) in PEM format @@ -1310,7 +1310,7 @@ namespace QCA \return the CRL corresponding to the contents of the array */ - static CRL fromDER(const QSecureArray &a, ConvertResult *result = 0, const QString &provider = QString()); + static CRL fromDER(const SecureArray &a, ConvertResult *result = 0, const QString &provider = QString()); /** Import a PEM encoded %Certificate Revocation List (CRL) @@ -1583,7 +1583,7 @@ namespace QCA \sa fromFile for a more flexible version of the same capability. */ - KeyBundle(const QString &fileName, const QSecureArray &passphrase = QSecureArray()); + KeyBundle(const QString &fileName, const SecureArray &passphrase = SecureArray()); /** Standard copy constructor @@ -1668,7 +1668,7 @@ namespace QCA \param passphrase the passphrase to use to protect the bundle \param provider the provider to use, if a specific provider is required */ - QByteArray toArray(const QSecureArray &passphrase, const QString &provider = QString()) const; + QByteArray toArray(const SecureArray &passphrase, const QString &provider = QString()) const; /** Export the key bundle to a file in PKCS12 (.p12) format @@ -1690,7 +1690,7 @@ namespace QCA \param passphrase the passphrase to use to protect the bundle \param provider the provider to use, if a specific provider is required */ - bool toFile(const QString &fileName, const QSecureArray &passphrase, const QString &provider = QString()) const; + bool toFile(const QString &fileName, const SecureArray &passphrase, const QString &provider = QString()) const; /** Import the key bundle from an array in PKCS12 format @@ -1713,7 +1713,7 @@ namespace QCA \param result pointer to the result of the import process \param provider the provider to use, if a specific provider is required */ - static KeyBundle fromArray(const QByteArray &a, const QSecureArray &passphrase = QSecureArray(), ConvertResult *result = 0, const QString &provider = QString()); + static KeyBundle fromArray(const QByteArray &a, const SecureArray &passphrase = SecureArray(), ConvertResult *result = 0, const QString &provider = QString()); /** Import the key bundle from a file in PKCS12 (.p12) format @@ -1736,7 +1736,7 @@ namespace QCA \param result pointer to the result of the import process \param provider the provider to use, if a specific provider is required */ - static KeyBundle fromFile(const QString &fileName, const QSecureArray &passphrase = QSecureArray(), ConvertResult *result = 0, const QString &provider = QString()); + static KeyBundle fromFile(const QString &fileName, const SecureArray &passphrase = SecureArray(), ConvertResult *result = 0, const QString &provider = QString()); private: class Private; @@ -1863,7 +1863,7 @@ namespace QCA \sa fromArray for a static import method. \sa toString for an "ascii armoured" export method. */ - QSecureArray toArray() const; + SecureArray toArray() const; /** Export the key to a string @@ -1890,7 +1890,7 @@ namespace QCA \param provider the provider to use, if a particular provider is required */ - static PGPKey fromArray(const QSecureArray &a, ConvertResult *result = 0, const QString &provider = QString()); + static PGPKey fromArray(const SecureArray &a, ConvertResult *result = 0, const QString &provider = QString()); /** Import the key from a string @@ -1921,7 +1921,7 @@ namespace QCA void loadPrivateKeyFromPEMFile(const QString &fileName); void loadPrivateKeyFromPEM(const QString &s); - void loadPrivateKeyFromDER(const QSecureArray &a); + void loadPrivateKeyFromDER(const SecureArray &a); void loadKeyBundleFromFile(const QString &fileName); void loadKeyBundleFromArray(const QByteArray &a); diff --git a/include/QtCrypto/qca_core.h b/include/QtCrypto/qca_core.h index 5fd5d0f2..0a1a0673 100644 --- a/include/QtCrypto/qca_core.h +++ b/include/QtCrypto/qca_core.h @@ -475,10 +475,10 @@ namespace QCA * representation. * * This is a convenience function to convert an arbitrary - * QSecureArray to a printable representation. + * SecureArray to a printable representation. * * \code - * QSecureArray test(10); + * SecureArray test(10); * test.fill('a'); * // 0x61 is 'a' in ASCII * if (QString("61616161616161616161") == QCA::arrayToHex(test) ) { @@ -489,7 +489,7 @@ namespace QCA * \param array the array to be converted * \return a printable representation */ - QCA_EXPORT QString arrayToHex(const QSecureArray &array); + QCA_EXPORT QString arrayToHex(const SecureArray &array); /** * Convert a QString containing a hexadecimal representation @@ -809,12 +809,12 @@ namespace QCA \param a the byte array of data that is to be used to update the internal state. */ - virtual void update(const QSecureArray &a) = 0; + virtual void update(const SecureArray &a) = 0; /** Complete the algorithm and return the internal state */ - virtual QSecureArray final() = 0; + virtual SecureArray final() = 0; /** Perform an "all in one" update, returning @@ -826,7 +826,7 @@ namespace QCA \note This will invalidate any previous computation using this object. */ - QSecureArray process(const QSecureArray &a); + SecureArray process(const SecureArray &a); }; /** @@ -861,13 +861,13 @@ namespace QCA \param a the array containing data to process */ - virtual QSecureArray update(const QSecureArray &a) = 0; + virtual SecureArray update(const SecureArray &a) = 0; /** Complete the algorithm, returning any additional results. */ - virtual QSecureArray final() = 0; + virtual SecureArray final() = 0; /** Test if an update() or final() call succeeded. @@ -886,7 +886,7 @@ namespace QCA \note This will invalidate any previous computation using this object. */ - QSecureArray process(const QSecureArray &a); + SecureArray process(const SecureArray &a); }; /** @@ -995,7 +995,7 @@ namespace QCA Container for keys for symmetric encryption algorithms. */ - class QCA_EXPORT SymmetricKey : public QSecureArray + class QCA_EXPORT SymmetricKey : public SecureArray { public: /** @@ -1018,7 +1018,7 @@ namespace QCA * * \param a the byte array to copy */ - SymmetricKey(const QSecureArray &a); + SymmetricKey(const SecureArray &a); /** * Construct a key from a provided byte array @@ -1040,7 +1040,7 @@ namespace QCA Container for initialisation vectors and nonces */ - class QCA_EXPORT InitializationVector : public QSecureArray + class QCA_EXPORT InitializationVector : public SecureArray { public: /** @@ -1060,7 +1060,7 @@ namespace QCA \param a the byte array to copy */ - InitializationVector(const QSecureArray &a); + InitializationVector(const SecureArray &a); /** Construct an initialisation vector from a provided byte array @@ -1283,7 +1283,7 @@ namespace QCA \note the id parameter is the same as that provided in the eventReady() signal. */ - void submitPassword(int id, const QSecureArray &password); + void submitPassword(int id, const SecureArray &password); /** function to call to indicate that the token has been inserted @@ -1386,7 +1386,7 @@ namespace QCA The password / passphrase / PIN provided by the user in response to the asker request. This may be empty. */ - QSecureArray password() const; + SecureArray password() const; Q_SIGNALS: /** diff --git a/include/QtCrypto/qca_publickey.h b/include/QtCrypto/qca_publickey.h index 59da527d..ee696b42 100644 --- a/include/QtCrypto/qca_publickey.h +++ b/include/QtCrypto/qca_publickey.h @@ -131,7 +131,7 @@ namespace QCA function of QCA and does not utilize a provider. SHA1, MD5, MD2, and RIPEMD160 are supported. */ - QCA_EXPORT QSecureArray emsa3Encode(const QString &hashName, const QSecureArray &digest, int size = -1); + QCA_EXPORT SecureArray emsa3Encode(const QString &hashName, const SecureArray &digest, int size = -1); /** \class DLGroup qca_publickey.h QtCrypto @@ -150,7 +150,7 @@ namespace QCA \param q \param g */ - DLGroup(const QBigInteger &p, const QBigInteger &q, const QBigInteger &g); + DLGroup(const BigInteger &p, const BigInteger &q, const BigInteger &g); /** Construct a discrete logarithm group from raw parameters @@ -158,7 +158,7 @@ namespace QCA \param p \param g */ - DLGroup(const QBigInteger &p, const QBigInteger &g); + DLGroup(const BigInteger &p, const BigInteger &g); /** Standard copy constructor @@ -189,17 +189,17 @@ namespace QCA /** Provide the p component of the group */ - QBigInteger p() const; + BigInteger p() const; /** Provide the q component of the group */ - QBigInteger q() const; + BigInteger q() const; /** Provide the g component of the group */ - QBigInteger g() const; + BigInteger g() const; private: class Private; @@ -537,7 +537,7 @@ namespace QCA \param a the message to encrypt \param alg the algorithm to use */ - QSecureArray encrypt(const QSecureArray &a, EncryptionAlgorithm alg); + SecureArray encrypt(const SecureArray &a, EncryptionAlgorithm alg); /** Initialise the signature verification process @@ -552,7 +552,7 @@ namespace QCA \param a the array containing the data that should be added to the signature */ - void update(const QSecureArray &a); + void update(const SecureArray &a); /** Check the signature is valid for the message @@ -575,7 +575,7 @@ namespace QCA \return true if the signature is correct */ - bool validSignature(const QSecureArray &sig); + bool validSignature(const SecureArray &sig); /** Single step message verification @@ -590,13 +590,13 @@ namespace QCA \return true if the signature is valid for the message */ - bool verifyMessage(const QSecureArray &a, const QSecureArray &sig, SignatureAlgorithm alg, SignatureFormat format = DefaultFormat); + bool verifyMessage(const SecureArray &a, const SecureArray &sig, SignatureAlgorithm alg, SignatureFormat format = DefaultFormat); /** Export the key in Distinguished Encoding Rules (DER) format */ - QSecureArray toDER() const; + SecureArray toDER() const; /** Export the key in Privacy Enhanced Mail (PEM) format @@ -637,7 +637,7 @@ namespace QCA \param result pointer to a variable, which returns whether the conversion succeeded (ConvertGood) or not \param provider the name of the provider to use for the import. */ - static PublicKey fromDER(const QSecureArray &a, ConvertResult *result = 0, const QString &provider = QString()); + static PublicKey fromDER(const SecureArray &a, ConvertResult *result = 0, const QString &provider = QString()); /** Import a key in Privacy Enhanced Mail (PEM) format @@ -720,7 +720,7 @@ namespace QCA \sa fromPEMFile for an alternative method */ - PrivateKey(const QString &fileName, const QSecureArray &passphrase = QSecureArray()); + PrivateKey(const QString &fileName, const SecureArray &passphrase = SecureArray()); /** Interpret / convert the key to an RSA key @@ -759,7 +759,7 @@ namespace QCA \param out the plain text data \param alg the algorithm to use */ - bool decrypt(const QSecureArray &in, QSecureArray *out, EncryptionAlgorithm alg); + bool decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg); /** Initialise the message signature process @@ -774,12 +774,12 @@ namespace QCA \param a the message to use to update the signature */ - void update(const QSecureArray &a); + void update(const SecureArray &a); /** The resulting signature */ - QSecureArray signature(); + SecureArray signature(); /** One step signature process @@ -790,7 +790,7 @@ namespace QCA \return the signature */ - QSecureArray signMessage(const QSecureArray &a, SignatureAlgorithm alg, SignatureFormat format = DefaultFormat); + SecureArray signMessage(const SecureArray &a, SignatureAlgorithm alg, SignatureFormat format = DefaultFormat); /** Derive a shared secret key from a public key @@ -816,7 +816,7 @@ namespace QCA \sa fromDER provides an inverse of toDER, converting the DER encoded key back to a PrivateKey */ - QSecureArray toDER(const QSecureArray &passphrase = QSecureArray(), PBEAlgorithm pbe = PBEDefault) const; + SecureArray toDER(const SecureArray &passphrase = SecureArray(), PBEAlgorithm pbe = PBEDefault) const; /** Export the key in Privacy Enhanced Mail (PEM) format @@ -827,7 +827,7 @@ namespace QCA \sa toPEMFile provides a convenient way to save the PEM encoded key to a file \sa fromPEM provides an inverse of toPEM, converting the PEM encoded key back to a PrivateKey */ - QString toPEM(const QSecureArray &passphrase = QSecureArray(), PBEAlgorithm pbe = PBEDefault) const; + QString toPEM(const SecureArray &passphrase = SecureArray(), PBEAlgorithm pbe = PBEDefault) const; /** Export the key in Privacy Enhanced Mail (PEM) format to a file @@ -841,7 +841,7 @@ namespace QCA \sa toPEM provides a convenient way to save the PEM encoded key to a file \sa fromPEM provides an inverse of toPEM, converting the PEM encoded key back to a PrivateKey */ - bool toPEMFile(const QString &fileName, const QSecureArray &passphrase = QSecureArray(), PBEAlgorithm pbe = PBEDefault) const; + bool toPEMFile(const QString &fileName, const SecureArray &passphrase = SecureArray(), PBEAlgorithm pbe = PBEDefault) const; /** Import the key from Distinguished Encoding Rules (DER) format @@ -854,7 +854,7 @@ namespace QCA \sa toDER provides an inverse of fromDER, exporting the key to an array */ - static PrivateKey fromDER(const QSecureArray &a, const QSecureArray &passphrase = QSecureArray(), ConvertResult *result = 0, const QString &provider = QString()); + static PrivateKey fromDER(const SecureArray &a, const SecureArray &passphrase = SecureArray(), ConvertResult *result = 0, const QString &provider = QString()); /** Import the key from Privacy Enhanced Mail (PEM) format @@ -867,7 +867,7 @@ namespace QCA \sa toPEM provides an inverse of fromPEM, exporting the key to a string in PEM encoding. */ - static PrivateKey fromPEM(const QString &s, const QSecureArray &passphrase = QSecureArray(), ConvertResult *result = 0, const QString &provider = QString()); + static PrivateKey fromPEM(const QString &s, const SecureArray &passphrase = SecureArray(), ConvertResult *result = 0, const QString &provider = QString()); /** Import the key in Privacy Enhanced Mail (PEM) format from a file @@ -883,7 +883,7 @@ namespace QCA \note there is also a constructor form, that allows you to create the key directly */ - static PrivateKey fromPEMFile(const QString &fileName, const QSecureArray &passphrase = QSecureArray(), ConvertResult *result = 0, const QString &provider = QString()); + static PrivateKey fromPEMFile(const QString &fileName, const SecureArray &passphrase = SecureArray(), ConvertResult *result = 0, const QString &provider = QString()); protected: /** @@ -1041,7 +1041,7 @@ namespace QCA \param e the public key exponent \param provider the provider to use, if a particular provider is required */ - RSAPublicKey(const QBigInteger &n, const QBigInteger &e, const QString &provider = QString()); + RSAPublicKey(const BigInteger &n, const BigInteger &e, const QString &provider = QString()); /** Extract the public key components from an RSA private key @@ -1056,14 +1056,14 @@ namespace QCA 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. */ - QBigInteger n() const; + BigInteger n() const; /** The public key exponent This value is the exponent chosen in the original key generator step */ - QBigInteger e() const; + BigInteger e() const; }; /** @@ -1089,7 +1089,7 @@ namespace QCA \param d inverse of the exponent, modulo (p-1)(q-1) \param provider the provider to use, if a particular provider is required */ - RSAPrivateKey(const QBigInteger &n, const QBigInteger &e, const QBigInteger &p, const QBigInteger &q, const QBigInteger &d, const QString &provider = QString()); + RSAPrivateKey(const BigInteger &n, const BigInteger &e, const BigInteger &p, const BigInteger &q, const BigInteger &d, const QString &provider = QString()); /** The public key value @@ -1097,29 +1097,29 @@ namespace QCA 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. */ - QBigInteger n() const; + BigInteger n() const; /** The public key exponent This value is the exponent chosen in the original key generator step */ - QBigInteger e() const; + BigInteger e() const; /** One of the two random primes used to generate the private key */ - QBigInteger p() const; + BigInteger p() const; /** The second of the two random primes used to generate the private key */ - QBigInteger q() const; + BigInteger q() const; /** The inverse of the exponent, module (p-1)(q-1) */ - QBigInteger d() const; + BigInteger d() const; }; /** @@ -1142,7 +1142,7 @@ namespace QCA \param y the public random value \param provider the provider to use, if a specific provider is required */ - DSAPublicKey(const DLGroup &domain, const QBigInteger &y, const QString &provider = QString()); + DSAPublicKey(const DLGroup &domain, const BigInteger &y, const QString &provider = QString()); /** Create a DSA public key from a specified private key @@ -1159,7 +1159,7 @@ namespace QCA /** The public random value associated with this key */ - QBigInteger y() const; + BigInteger y() const; }; /** @@ -1183,7 +1183,7 @@ namespace QCA \param x the private random value \param provider the provider to use, if a specific provider is required */ - DSAPrivateKey(const DLGroup &domain, const QBigInteger &y, const QBigInteger &x, const QString &provider = QString()); + DSAPrivateKey(const DLGroup &domain, const BigInteger &y, const BigInteger &x, const QString &provider = QString()); /** The discrete logarithm group that is being used @@ -1193,12 +1193,12 @@ namespace QCA /** the public random value */ - QBigInteger y() const; + BigInteger y() const; /** the private random value */ - QBigInteger x() const; + BigInteger x() const; }; /** @@ -1221,7 +1221,7 @@ namespace QCA \param y the public random value \param provider the provider to use, if a specific provider is required */ - DHPublicKey(const DLGroup &domain, const QBigInteger &y, const QString &provider = QString()); + DHPublicKey(const DLGroup &domain, const BigInteger &y, const QString &provider = QString()); /** Create a Diffie-Hellman public key from a specified private key @@ -1238,7 +1238,7 @@ namespace QCA /** The public random value associated with this key */ - QBigInteger y() const; + BigInteger y() const; }; /** @@ -1262,7 +1262,7 @@ namespace QCA \param x the private random value \param provider the provider to use, if a particular provider is required */ - DHPrivateKey(const DLGroup &domain, const QBigInteger &y, const QBigInteger &x, const QString &provider = QString()); + DHPrivateKey(const DLGroup &domain, const BigInteger &y, const BigInteger &x, const QString &provider = QString()); /** The discrete logarithm group that is being used @@ -1272,12 +1272,12 @@ namespace QCA /** The public random value associated with this key */ - QBigInteger y() const; + BigInteger y() const; /** The private random value associated with this key */ - QBigInteger x() const; + BigInteger x() const; }; } diff --git a/include/QtCrypto/qca_securelayer.h b/include/QtCrypto/qca_securelayer.h index 5755417b..0febf544 100644 --- a/include/QtCrypto/qca_securelayer.h +++ b/include/QtCrypto/qca_securelayer.h @@ -914,7 +914,7 @@ namespace QCA \param pass the password to use */ - void setPassword(const QSecureArray &pass); + void setPassword(const SecureArray &pass); /** Specify the realm to use in authentication diff --git a/include/QtCrypto/qca_support.h b/include/QtCrypto/qca_support.h index 8b4f5b06..375c295f 100644 --- a/include/QtCrypto/qca_support.h +++ b/include/QtCrypto/qca_support.h @@ -271,8 +271,8 @@ namespace QCA void write(const QByteArray &a); // secure i/o - QSecureArray readSecure(int bytes = -1); - void writeSecure(const QSecureArray &a); + SecureArray readSecure(int bytes = -1); + void writeSecure(const SecureArray &a); // close write channel (only if writing enabled) void closeOutput(); @@ -297,7 +297,7 @@ namespace QCA { Q_OBJECT public: - static QSecureArray getHidden(const QString &promptStr); + static SecureArray getHidden(const QString &promptStr); static void waitForEnter(); private: diff --git a/include/QtCrypto/qca_textfilter.h b/include/QtCrypto/qca_textfilter.h index 2dead99e..b4c90e47 100644 --- a/include/QtCrypto/qca_textfilter.h +++ b/include/QtCrypto/qca_textfilter.h @@ -75,7 +75,7 @@ namespace QCA \param a the array to encode */ - QSecureArray encode(const QSecureArray &a); + SecureArray encode(const SecureArray &a); /** Process an array in the "reverse" direction, @@ -88,7 +88,7 @@ namespace QCA \param a the array to decode */ - QSecureArray decode(const QSecureArray &a); + SecureArray decode(const SecureArray &a); /** Process an array in the "forward" direction, @@ -100,7 +100,7 @@ namespace QCA \param a the array to encode */ - QString arrayToString(const QSecureArray &a); + QString arrayToString(const SecureArray &a); /** Process an string in the "reverse" direction, @@ -112,7 +112,7 @@ namespace QCA \param s the array to decode */ - QSecureArray stringToArray(const QString &s); + SecureArray stringToArray(const QString &s); /** Process a string in the "forward" direction, @@ -185,7 +185,7 @@ namespace QCA \param a the array containing data to process */ - virtual QSecureArray update(const QSecureArray &a); + virtual SecureArray update(const SecureArray &a); /** Complete the algorithm @@ -195,7 +195,7 @@ namespace QCA zero length array - any output will have been returned from the update() call. */ - virtual QSecureArray final(); + virtual SecureArray final(); /** Test if an update() or final() call succeeded. @@ -262,7 +262,7 @@ namespace QCA \param a the array containing data to process */ - virtual QSecureArray update(const QSecureArray &a); + virtual SecureArray update(const SecureArray &a); /** Complete the algorithm @@ -272,7 +272,7 @@ namespace QCA empty array, or an array containing one or two "=" (equals, 0x3D) characters. */ - virtual QSecureArray final(); + virtual SecureArray final(); /** Test if an update() or final() call succeeded. @@ -282,7 +282,7 @@ namespace QCA virtual bool ok() const; private: - QSecureArray partial; + SecureArray partial; bool _ok; int col; bool _lb_enabled; diff --git a/include/QtCrypto/qca_tools.h b/include/QtCrypto/qca_tools.h index 99fb4ac2..34157c18 100644 --- a/include/QtCrypto/qca_tools.h +++ b/include/QtCrypto/qca_tools.h @@ -1,6 +1,6 @@ /* * qca_tools.h - Qt Cryptographic Architecture - * Copyright (C) 2003-2005 Justin Karneges <justin@affinix.com> + * Copyright (C) 2003-2007 Justin Karneges <justin@affinix.com> * Copyright (C) 2004,2005 Brad Hards <bradh@frogmouth.net> * * This library is free software; you can redistribute it and/or @@ -72,12 +72,14 @@ QCA_EXPORT void qca_secure_free(void *p); */ QCA_EXPORT void *qca_secure_realloc(void *p, int bytes); +namespace QCA { + /** - \class QSecureArray qca_tools.h QtCrypto + \class SecureArray qca_tools.h QtCrypto Secure array of bytes - The %QSecureArray provides an array of memory from a pool that is, + 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 QMemArray (or subclass such as QCString or QByteArray) may @@ -86,13 +88,13 @@ QCA_EXPORT void *qca_secure_realloc(void *p, int bytes); Note that this class is implicitly shared (that is, copy on write). **/ -class QCA_EXPORT QSecureArray +class QCA_EXPORT SecureArray { public: /** * Construct a secure byte array, zero length */ - QSecureArray(); + SecureArray(); /** * Construct a secure byte array of the specified length @@ -100,14 +102,14 @@ public: * \param size the number of bytes in the array * \param ch the value every byte should be set to */ - QSecureArray(int size, char ch = 0); + SecureArray(int size, char ch = 0); /** * Construct a secure byte array from a string * * Note that this copies, rather than references the source array */ - QSecureArray(const char *str); + SecureArray(const char *str); /** * Construct a secure byte array from a QByteArray @@ -116,30 +118,30 @@ public: * * \sa operator=() */ - QSecureArray(const QByteArray &a); + SecureArray(const QByteArray &a); /** * Construct a (shallow) copy of another secure byte array * * \param from the source of the data and length. */ - QSecureArray(const QSecureArray &from); + SecureArray(const SecureArray &from); - ~QSecureArray(); + ~SecureArray(); /** * Creates a reference, rather than a deep copy. * if you want a deep copy then you should use copy() * instead, or use operator=(), then call detach() when required. */ - QSecureArray & operator=(const QSecureArray &from); + SecureArray & operator=(const SecureArray &from); /** * Creates a copy, rather than references * * \param a the array to copy from */ - QSecureArray & operator=(const QByteArray &a); + SecureArray & operator=(const QByteArray &a); /** * Clears the contents of the array and makes it empty @@ -257,12 +259,12 @@ public: /** * Append a secure byte array to the end of this array */ - QSecureArray & append(const QSecureArray &a); + SecureArray & append(const SecureArray &a); /** * Append a secure byte array to the end of this array */ - QSecureArray & operator+=(const QSecureArray &a); + SecureArray & operator+=(const SecureArray &a); protected: /** @@ -271,7 +273,7 @@ protected: * * \param from the byte array to copy */ - void set(const QSecureArray &from); + void set(const SecureArray &from); /** * Assign the contents of a provided byte array to this @@ -286,60 +288,58 @@ private: QSharedDataPointer<Private> d; }; -Q_DECLARE_METATYPE(QSecureArray) - /** - * Equality operator. Returns true if the two QSecureArray + * Equality operator. Returns true if the two SecureArray * arguments have the same data (and the same length, of course). * - * \relates QSecureArray + * \relates SecureArray **/ -QCA_EXPORT bool operator==(const QSecureArray &a, const QSecureArray &b); +QCA_EXPORT bool operator==(const SecureArray &a, const SecureArray &b); /** - * Inequality operator. Returns true if the two QSecureArray + * Inequality operator. Returns true if the two SecureArray * arguments have different length, or the same length but * different data * - * \relates QSecureArray + * \relates SecureArray **/ -QCA_EXPORT bool operator!=(const QSecureArray &a, const QSecureArray &b); +QCA_EXPORT bool operator!=(const SecureArray &a, const SecureArray &b); /** * Returns an array that is the result of concatenating a and b * - * \relates QSecureArray + * \relates SecureArray **/ -QCA_EXPORT const QSecureArray operator+(const QSecureArray &a, const QSecureArray &b); +QCA_EXPORT const SecureArray operator+(const SecureArray &a, const SecureArray &b); /** - \class QBigInteger qca_tools.h QtCrypto + \class BigInteger qca_tools.h QtCrypto Arbitrary precision integer - QBigInteger provides arbitrary precision integers. + BigInteger provides arbitrary precision integers. \code - if ( QBigInteger("3499543804349") == - QBigInteger("38493290803248") + QBigInteger( 343 ) ) + if ( BigInteger("3499543804349") == + BigInteger("38493290803248") + BigInteger( 343 ) ) { // do something } \endcode **/ -class QCA_EXPORT QBigInteger +class QCA_EXPORT BigInteger { public: /** - * Constructor. Creates a new QBigInteger, initialised to zero. + * Constructor. Creates a new BigInteger, initialised to zero. */ - QBigInteger(); + BigInteger(); /** * \overload * * \param n an alternative integer initialisation value. */ - QBigInteger(int n); + BigInteger(int n); /** * \overload @@ -347,46 +347,46 @@ public: * \param c an alternative initialisation value, encoded as a character array * * \code - * QBigInteger b ( "9890343" ); + * BigInteger b ( "9890343" ); * \endcode */ - QBigInteger(const char *c); + BigInteger(const char *c); /** * \overload * * \param s an alternative initialisation value, encoded as a string */ - QBigInteger(const QString &s); + BigInteger(const QString &s); /** * \overload * - * \param a an alternative initialisation value, encoded as QSecureArray + * \param a an alternative initialisation value, encoded as SecureArray */ - QBigInteger(const QSecureArray &a); + BigInteger(const QCA::SecureArray &a); /** * \overload * - * \param from an alternative initialisation value, encoded as a %QBigInteger + * \param from an alternative initialisation value, encoded as a %BigInteger */ - QBigInteger(const QBigInteger &from); + BigInteger(const BigInteger &from); - ~QBigInteger(); + ~BigInteger(); /** * Assignment operator * - * \param from the QBigInteger to copy from + * \param from the BigInteger to copy from * * \code - * QBigInteger a; // a is zero - * QBigInteger b( 500 ); + * BigInteger a; // a is zero + * BigInteger b( 500 ); * a = b; // a is now 500 * \endcode */ - QBigInteger & operator=(const QBigInteger &from); + BigInteger & operator=(const BigInteger &from); /** * \overload @@ -400,7 +400,7 @@ public: * contains numbers and an optional minus sign at the start) * **/ - QBigInteger & operator=(const QString &s); + BigInteger & operator=(const QString &s); /** * Increment in place operator @@ -408,13 +408,13 @@ public: * \param b the amount to increment by * * \code - * QBigInteger a; // a is zero - * QBigInteger b( 500 ); + * BigInteger a; // a is zero + * BigInteger b( 500 ); * a += b; // a is now 500 * a += b; // a is now 1000 * \endcode **/ - QBigInteger & operator+=(const QBigInteger &b); + BigInteger & operator+=(const BigInteger &b); /** * Decrement in place operator @@ -422,40 +422,40 @@ public: * \param b the amount to decrement by * * \code - * QBigInteger a; // a is zero - * QBigInteger b( 500 ); + * BigInteger a; // a is zero + * BigInteger b( 500 ); * a -= b; // a is now -500 * a -= b; // a is now -1000 * \endcode **/ - QBigInteger & operator-=(const QBigInteger &b); + BigInteger & operator-=(const BigInteger &b); /** - * Output %QBigInteger as a byte array, useful for storage or + * Output %BigInteger as a byte array, useful for storage or * transmission. The format is a binary integer in sign-extended * network-byte-order. * - * \sa void fromArray(const QSecureArray &a); + * \sa void fromArray(const SecureArray &a); */ - QSecureArray toArray() const; + QCA::SecureArray toArray() const; /** * Assign from an array. The input is expected to be a binary integer * in sign-extended network-byte-order. * - * \param a a QSecureArray that represents an integer + * \param a a SecureArray that represents an integer * - * \sa QBigInteger(const QSecureArray &a); - * \sa QSecureArray toArray() const; + * \sa BigInteger(const SecureArray &a); + * \sa SecureArray toArray() const; */ - void fromArray(const QSecureArray &a); + void fromArray(const QCA::SecureArray &a); /** - * Convert %QBigInteger to a QString + * Convert %BigInteger to a QString * * \code * QString aString; - * QBigInteger aBiggishInteger( 5878990 ); + * BigInteger aBiggishInteger( 5878990 ); * aString = aBiggishInteger.toString(); // aString is now "5878990" * \endcode */ @@ -470,108 +470,106 @@ public: * that the QString represents a valid integer (ie it only * contains numbers and an optional minus sign at the start) * - * \sa QBigInteger(const QString &s) - * \sa QBigInteger & operator=(const QString &s) + * \sa BigInteger(const QString &s) + * \sa BigInteger & operator=(const QString &s) */ bool fromString(const QString &s); /** - * Compare this value with another %QBigInteger + * 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. * - * \param n the QBigInteger to compare with + * \param n the BigInteger to compare with * * \return zero if the values are the same, negative if the argument - * is less than the value of this QBigInteger, and positive if the argument - * value is greater than this QBigInteger + * is less than the value of this BigInteger, and positive if the argument + * value is greater than this BigInteger * * \code - * QBigInteger a( "400" ); - * QBigInteger b( "-400" ); - * QBigInteger c( " 200 " ); + * 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 * \endcode **/ - int compare(const QBigInteger &n) const; + int compare(const BigInteger &n) const; private: class Private; QSharedDataPointer<Private> d; }; -Q_DECLARE_METATYPE(QBigInteger) - /** - * Equality operator. Returns true if the two QBigInteger values + * Equality operator. Returns true if the two BigInteger values * are the same, including having the same sign. * - * \relates QBigInteger + * \relates BigInteger **/ -inline bool operator==(const QBigInteger &a, const QBigInteger &b) +inline bool operator==(const BigInteger &a, const BigInteger &b) { return (0 == a.compare( b ) ); } /** - * Inequality operator. Returns true if the two QBigInteger values + * Inequality operator. Returns true if the two BigInteger values * are different in magnitude, sign or both * - * \relates QBigInteger + * \relates BigInteger **/ -inline bool operator!=(const QBigInteger &a, const QBigInteger &b) +inline bool operator!=(const BigInteger &a, const BigInteger &b) { return (0 != a.compare( b ) ); } /** - * Less than or equal operator. Returns true if the QBigInteger value - * on the left hand side is equal to or less than the QBigInteger value + * 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. * - * \relates QBigInteger + * \relates BigInteger **/ -inline bool operator<=(const QBigInteger &a, const QBigInteger &b) +inline bool operator<=(const BigInteger &a, const BigInteger &b) { return (a.compare( b ) <= 0 ); } /** - * Greater than or equal operator. Returns true if the QBigInteger value - * on the left hand side is equal to or greater than the QBigInteger value + * 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. * - * \relates QBigInteger + * \relates BigInteger **/ -inline bool operator>=(const QBigInteger &a, const QBigInteger &b) +inline bool operator>=(const BigInteger &a, const BigInteger &b) { return (a.compare( b ) >= 0 ); } /** - * Less than operator. Returns true if the QBigInteger value - * on the left hand side is less than the QBigInteger value + * 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. * - * \relates QBigInteger + * \relates BigInteger **/ -inline bool operator<(const QBigInteger &a, const QBigInteger &b) +inline bool operator<(const BigInteger &a, const BigInteger &b) { return (a.compare( b ) < 0 ); } /** - * Greater than operator. Returns true if the QBigInteger value - * on the left hand side is greater than the QBigInteger value + * 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. * - * \relates QBigInteger + * \relates BigInteger **/ -inline bool operator>(const QBigInteger &a, const QBigInteger &b) +inline bool operator>(const BigInteger &a, const BigInteger &b) { return (a.compare( b ) > 0 ); } @@ -579,8 +577,13 @@ inline bool operator>(const QBigInteger &a, const QBigInteger &b) /** * Stream operator. * - * \relates QBigInteger + * \relates BigInteger **/ -QCA_EXPORT QTextStream &operator<<(QTextStream &stream, const QBigInteger &b); +QCA_EXPORT QTextStream &operator<<(QTextStream &stream, const BigInteger &b); + +} + +Q_DECLARE_METATYPE(QCA::SecureArray) +Q_DECLARE_METATYPE(QCA::BigInteger) #endif diff --git a/include/QtCrypto/qcaprovider.h b/include/QtCrypto/qcaprovider.h index 9e360a8d..c0b3e553 100644 --- a/include/QtCrypto/qcaprovider.h +++ b/include/QtCrypto/qcaprovider.h @@ -49,7 +49,7 @@ class QCA_EXPORT RandomContext : public BasicContext Q_OBJECT public: RandomContext(Provider *p) : BasicContext(p, "random") {} - virtual QSecureArray nextBytes(int size) = 0; + virtual SecureArray nextBytes(int size) = 0; }; class QCA_EXPORT HashContext : public BasicContext @@ -58,8 +58,8 @@ class QCA_EXPORT HashContext : public BasicContext public: HashContext(Provider *p, const QString &type) : BasicContext(p, type) {} virtual void clear() = 0; - virtual void update(const QSecureArray &a) = 0; - virtual QSecureArray final() = 0; + virtual void update(const SecureArray &a) = 0; + virtual SecureArray final() = 0; }; class QCA_EXPORT CipherContext : public BasicContext @@ -71,8 +71,8 @@ public: virtual KeyLength keyLength() const = 0; virtual unsigned int blockSize() const = 0; - virtual bool update(const QSecureArray &in, QSecureArray *out) = 0; - virtual bool final(QSecureArray *out) = 0; + virtual bool update(const SecureArray &in, SecureArray *out) = 0; + virtual bool final(SecureArray *out) = 0; }; class QCA_EXPORT MACContext : public BasicContext @@ -83,8 +83,8 @@ public: virtual void setup(const SymmetricKey &key) = 0; virtual KeyLength keyLength() const = 0; - virtual void update(const QSecureArray &in) = 0; - virtual void final(QSecureArray *out) = 0; + virtual void update(const SecureArray &in) = 0; + virtual void final(SecureArray *out) = 0; protected: KeyLength anyKeyLength() const @@ -101,7 +101,7 @@ class QCA_EXPORT KDFContext : public BasicContext Q_OBJECT public: KDFContext(Provider *p, const QString &type) : BasicContext(p, type) {} - virtual SymmetricKey makeKey(const QSecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount) = 0; + virtual SymmetricKey makeKey(const SecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount) = 0; }; class QCA_EXPORT DLGroupContext : public Provider::Context @@ -112,7 +112,7 @@ public: virtual QList<DLGroupSet> supportedGroupSets() const = 0; virtual bool isNull() const = 0; virtual void fetchGroup(DLGroupSet set, bool block) = 0; - virtual void getResult(QBigInteger *p, QBigInteger *q, QBigInteger *g) const = 0; + virtual void getResult(BigInteger *p, BigInteger *q, BigInteger *g) const = 0; Q_SIGNALS: void finished(); @@ -132,15 +132,15 @@ public: // encrypt/decrypt virtual int maximumEncryptSize(EncryptionAlgorithm alg) const; - virtual QSecureArray encrypt(const QSecureArray &in, EncryptionAlgorithm alg); - virtual bool decrypt(const QSecureArray &in, QSecureArray *out, EncryptionAlgorithm alg); + virtual SecureArray encrypt(const SecureArray &in, EncryptionAlgorithm alg); + virtual bool decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg); // sign / verify virtual void startSign(SignatureAlgorithm alg, SignatureFormat format); virtual void startVerify(SignatureAlgorithm alg, SignatureFormat format); - virtual void update(const QSecureArray &in); - virtual QSecureArray endSign(); - virtual bool endVerify(const QSecureArray &sig); + virtual void update(const SecureArray &in); + virtual SecureArray endSign(); + virtual bool endVerify(const SecureArray &sig); // key agreement virtual SymmetricKey deriveKey(const PKeyBase &theirs); @@ -155,13 +155,13 @@ class QCA_EXPORT RSAContext : public PKeyBase public: RSAContext(Provider *p) : PKeyBase(p, "rsa") {} virtual void createPrivate(int bits, int exp, bool block) = 0; - virtual void createPrivate(const QBigInteger &n, const QBigInteger &e, const QBigInteger &p, const QBigInteger &q, const QBigInteger &d) = 0; - virtual void createPublic(const QBigInteger &n, const QBigInteger &e) = 0; - virtual QBigInteger n() const = 0; - virtual QBigInteger e() const = 0; - virtual QBigInteger p() const = 0; - virtual QBigInteger q() const = 0; - virtual QBigInteger d() const = 0; + virtual void createPrivate(const BigInteger &n, const BigInteger &e, const BigInteger &p, const BigInteger &q, const BigInteger &d) = 0; + virtual void createPublic(const BigInteger &n, const BigInteger &e) = 0; + virtual BigInteger n() const = 0; + virtual BigInteger e() const = 0; + virtual BigInteger p() const = 0; + virtual BigInteger q() const = 0; + virtual BigInteger d() const = 0; }; class QCA_EXPORT DSAContext : public PKeyBase @@ -170,11 +170,11 @@ class QCA_EXPORT DSAContext : public PKeyBase public: DSAContext(Provider *p) : PKeyBase(p, "dsa") {} virtual void createPrivate(const DLGroup &domain, bool block) = 0; - virtual void createPrivate(const DLGroup &domain, const QBigInteger &y, const QBigInteger &x) = 0; - virtual void createPublic(const DLGroup &domain, const QBigInteger &y) = 0; + virtual void createPrivate(const DLGroup &domain, const BigInteger &y, const BigInteger &x) = 0; + virtual void createPublic(const DLGroup &domain, const BigInteger &y) = 0; virtual DLGroup domain() const = 0; - virtual QBigInteger y() const = 0; - virtual QBigInteger x() const = 0; + virtual BigInteger y() const = 0; + virtual BigInteger x() const = 0; }; class QCA_EXPORT DHContext : public PKeyBase @@ -183,11 +183,11 @@ class QCA_EXPORT DHContext : public PKeyBase public: DHContext(Provider *p) : PKeyBase(p, "dh") {} virtual void createPrivate(const DLGroup &domain, bool block) = 0; - virtual void createPrivate(const DLGroup &domain, const QBigInteger &y, const QBigInteger &x) = 0; - virtual void createPublic(const DLGroup &domain, const QBigInteger &y) = 0; + virtual void createPrivate(const DLGroup &domain, const BigInteger &y, const BigInteger &x) = 0; + virtual void createPublic(const DLGroup &domain, const BigInteger &y) = 0; virtual DLGroup domain() const = 0; - virtual QBigInteger y() const = 0; - virtual QBigInteger x() const = 0; + virtual BigInteger y() const = 0; + virtual BigInteger x() const = 0; }; class QCA_EXPORT PKeyContext : public BasicContext @@ -206,14 +206,14 @@ public: virtual bool importKey(const PKeyBase *key) = 0; // import / export - virtual QSecureArray publicToDER() const; + virtual SecureArray publicToDER() const; virtual QString publicToPEM() const; - virtual ConvertResult publicFromDER(const QSecureArray &a); + virtual ConvertResult publicFromDER(const SecureArray &a); virtual ConvertResult publicFromPEM(const QString &s); - virtual QSecureArray privateToDER(const QSecureArray &passphrase, PBEAlgorithm pbe) const; - virtual QString privateToPEM(const QSecureArray &passphrase, PBEAlgorithm pbe) const; - virtual ConvertResult privateFromDER(const QSecureArray &a, const QSecureArray &passphrase); - virtual ConvertResult privateFromPEM(const QString &s, const QSecureArray &passphrase); + virtual SecureArray privateToDER(const SecureArray &passphrase, PBEAlgorithm pbe) const; + virtual QString privateToPEM(const SecureArray &passphrase, PBEAlgorithm pbe) const; + virtual ConvertResult privateFromDER(const SecureArray &a, const SecureArray &passphrase); + virtual ConvertResult privateFromPEM(const QString &s, const SecureArray &passphrase); }; class QCA_EXPORT CertBase : public BasicContext @@ -223,9 +223,9 @@ public: CertBase(Provider *p, const QString &type) : BasicContext(p, type) {} // import / export - virtual QSecureArray toDER() const = 0; + virtual SecureArray toDER() const = 0; virtual QString toPEM() const = 0; - virtual ConvertResult fromDER(const QSecureArray &a) = 0; + virtual ConvertResult fromDER(const SecureArray &a) = 0; virtual ConvertResult fromPEM(const QString &s) = 0; }; @@ -238,11 +238,11 @@ public: CertificateInfoOrdered issuer; // cert only Constraints constraints; QStringList policies; - QBigInteger serial; // cert only + BigInteger serial; // cert only bool isCA; bool isSelfSigned; // cert only int pathLimit; - QSecureArray sig; + SecureArray sig; SignatureAlgorithm sigalgo; QByteArray subjectId, issuerId; // cert only QString challenge; // csr only @@ -256,7 +256,7 @@ public: int number; QDateTime thisUpdate, nextUpdate; QList<CRLEntry> revoked; - QSecureArray sig; + SecureArray sig; SignatureAlgorithm sigalgo; QByteArray issuerId; }; @@ -337,10 +337,10 @@ class QCA_EXPORT PKCS12Context : public BasicContext public: PKCS12Context(Provider *p) : BasicContext(p, "pkcs12") {} - virtual QByteArray toPKCS12(const QString &name, const QList<const CertContext*> &chain, const PKeyContext &priv, const QSecureArray &passphrase) const = 0; + virtual QByteArray toPKCS12(const QString &name, const QList<const CertContext*> &chain, const PKeyContext &priv, const SecureArray &passphrase) const = 0; // caller must delete - virtual ConvertResult fromPKCS12(const QByteArray &in, const QSecureArray &passphrase, QString *name, QList<CertContext*> *chain, PKeyContext **priv) const = 0; + virtual ConvertResult fromPKCS12(const QByteArray &in, const SecureArray &passphrase, QString *name, QList<CertContext*> *chain, PKeyContext **priv) const = 0; }; class QCA_EXPORT PGPKeyContextProps @@ -363,9 +363,9 @@ public: virtual const PGPKeyContextProps *props() const = 0; - virtual QSecureArray toBinary() const = 0; + virtual SecureArray toBinary() const = 0; virtual QString toAscii() const = 0; - virtual ConvertResult fromBinary(const QSecureArray &a) = 0; + virtual ConvertResult fromBinary(const SecureArray &a) = 0; virtual ConvertResult fromAscii(const QString &s) = 0; }; @@ -430,7 +430,7 @@ public: virtual QString writeEntry(int id, const PGPKey &key); virtual bool removeEntry(int id, const QString &entryId); - virtual void submitPassphrase(int id, int requestId, const QSecureArray &passphrase); + virtual void submitPassphrase(int id, int requestId, const SecureArray &passphrase); virtual void rejectPassphraseRequest(int id, int requestId); Q_SIGNALS: @@ -612,7 +612,7 @@ public: // call after NeedParams virtual SASL::Params clientParamsNeeded() const = 0; - virtual void setClientParams(const QString *user, const QString *authzid, const QSecureArray *pass, const QString *realm) = 0; + virtual void setClientParams(const QString *user, const QString *authzid, const SecureArray *pass, const QString *realm) = 0; // call after AuthCheck virtual QString username() const = 0; diff --git a/include/QtCrypto/qpipe.h b/include/QtCrypto/qpipe.h index 232142a7..3ceb5a6b 100644 --- a/include/QtCrypto/qpipe.h +++ b/include/QtCrypto/qpipe.h @@ -143,14 +143,14 @@ public: #ifdef QPIPE_SECURE // secure i/o - QSecureArray readSecure(int bytes = -1); - void writeSecure(const QSecureArray &a); + SecureArray readSecure(int bytes = -1); + void writeSecure(const SecureArray &a); #endif QByteArray takeBytesToWrite(); #ifdef QPIPE_SECURE - QSecureArray takeBytesToWriteSecure(); + SecureArray takeBytesToWriteSecure(); #endif Q_SIGNALS: diff --git a/src/qca_basic.cpp b/src/qca_basic.cpp index 7de34b92..cabdf8f7 100644 --- a/src/qca_basic.cpp +++ b/src/qca_basic.cpp @@ -42,7 +42,7 @@ uchar Random::nextByte() return (uchar)(nextBytes(1)[0]); } -QSecureArray Random::nextBytes(int size) +SecureArray Random::nextBytes(int size) { return static_cast<RandomContext *>(context())->nextBytes(size); } @@ -56,13 +56,13 @@ uchar Random::randomChar() int Random::randomInt() { QMutexLocker locker(global_random_mutex()); - QSecureArray a = global_random()->nextBytes(sizeof(int)); + SecureArray a = global_random()->nextBytes(sizeof(int)); int x; memcpy(&x, a.data(), a.size()); return x; } -QSecureArray Random::randomArray(int size) +SecureArray Random::randomArray(int size) { QMutexLocker locker(global_random_mutex()); return global_random()->nextBytes(size); @@ -81,14 +81,14 @@ void Hash::clear() static_cast<HashContext *>(context())->clear(); } -void Hash::update(const QSecureArray &a) +void Hash::update(const SecureArray &a) { static_cast<HashContext *>(context())->update(a); } void Hash::update(const QByteArray &a) { - update( QSecureArray( a ) ); + update( SecureArray( a ) ); } void Hash::update(const char *data, int len) @@ -111,17 +111,17 @@ void Hash::update(QIODevice &file) update(buffer, len); } -QSecureArray Hash::final() +SecureArray Hash::final() { return static_cast<HashContext *>(context())->final(); } -QSecureArray Hash::hash(const QSecureArray &a) +SecureArray Hash::hash(const SecureArray &a) { return process(a); } -QString Hash::hashToString(const QSecureArray &a) +QString Hash::hashToString(const SecureArray &a) { return arrayToHex(hash(a)); } @@ -190,18 +190,18 @@ void Cipher::clear() static_cast<CipherContext *>(context())->setup(d->dir, d->key, d->iv); } -QSecureArray Cipher::update(const QSecureArray &a) +SecureArray Cipher::update(const SecureArray &a) { - QSecureArray out; + SecureArray out; if(d->done) return out; d->ok = static_cast<CipherContext *>(context())->update(a, &out); return out; } -QSecureArray Cipher::final() +SecureArray Cipher::final() { - QSecureArray out; + SecureArray out; if(d->done) return out; d->done = true; @@ -274,7 +274,7 @@ public: SymmetricKey key; bool done; - QSecureArray buf; + SecureArray buf; }; @@ -322,14 +322,14 @@ void MessageAuthenticationCode::clear() static_cast<MACContext *>(context())->setup(d->key); } -void MessageAuthenticationCode::update(const QSecureArray &a) +void MessageAuthenticationCode::update(const SecureArray &a) { if(d->done) return; static_cast<MACContext *>(context())->update(a); } -QSecureArray MessageAuthenticationCode::final() +SecureArray MessageAuthenticationCode::final() { if(!d->done) { @@ -368,7 +368,7 @@ KeyDerivationFunction & KeyDerivationFunction::operator=(const KeyDerivationFunc return *this; } -SymmetricKey KeyDerivationFunction::makeKey(const QSecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount) +SymmetricKey KeyDerivationFunction::makeKey(const SecureArray &secret, const InitializationVector &salt, unsigned int keyLength, unsigned int iterationCount) { return static_cast<KDFContext *>(context())->makeKey(secret, salt, keyLength, iterationCount); } diff --git a/src/qca_cert.cpp b/src/qca_cert.cpp index c73bead1..7aa2b5a6 100644 --- a/src/qca_cert.cpp +++ b/src/qca_cert.cpp @@ -34,7 +34,7 @@ bool stringToFile(const QString &fileName, const QString &content); bool stringFromFile(const QString &fileName, QString *s); bool arrayToFile(const QString &fileName, const QByteArray &content); bool arrayFromFile(const QString &fileName, QByteArray *a); -bool ask_passphrase(const QString &fname, void *ptr, QSecureArray *answer); +bool ask_passphrase(const QString &fname, void *ptr, SecureArray *answer); ProviderList allProviders(); Provider *providerForName(const QString &name); bool use_asker_fallback(ConvertResult r); @@ -604,7 +604,7 @@ public: QStringList policies; bool isCA; int pathLimit; - QBigInteger serial; + BigInteger serial; QDateTime start, end; Private() : isCA(false), pathLimit(0) @@ -691,7 +691,7 @@ int CertificateOptions::pathLimit() const return d->pathLimit; } -QBigInteger CertificateOptions::serialNumber() const +BigInteger CertificateOptions::serialNumber() const { return d->serial; } @@ -745,7 +745,7 @@ void CertificateOptions::setAsUser() d->pathLimit = 0; } -void CertificateOptions::setSerialNumber(const QBigInteger &i) +void CertificateOptions::setSerialNumber(const BigInteger &i) { d->serial = i; } @@ -927,7 +927,7 @@ QString Certificate::commonName() const return d->subjectInfoMap.value(CommonName); } -QBigInteger Certificate::serialNumber() const +BigInteger Certificate::serialNumber() const { return static_cast<const CertContext *>(context())->props()->serial; } @@ -1012,7 +1012,7 @@ Validity Certificate::validate(const CertificateCollection &trusted, const Certi return static_cast<const CertContext *>(context())->validate(trusted_list, untrusted_list, crl_list, u);*/ } -QSecureArray Certificate::toDER() const +SecureArray Certificate::toDER() const { return static_cast<const CertContext *>(context())->toDER(); } @@ -1027,7 +1027,7 @@ bool Certificate::toPEMFile(const QString &fileName) const return stringToFile(fileName, toPEM()); } -Certificate Certificate::fromDER(const QSecureArray &a, ConvertResult *result, const QString &provider) +Certificate Certificate::fromDER(const SecureArray &a, ConvertResult *result, const QString &provider) { Certificate c; CertContext *cc = static_cast<CertContext *>(getContext("cert", provider)); @@ -1339,7 +1339,7 @@ bool CertificateRequest::operator==(const CertificateRequest &otherCsr) const return true; } -QSecureArray CertificateRequest::toDER() const +SecureArray CertificateRequest::toDER() const { return static_cast<const CSRContext *>(context())->toDER(); } @@ -1354,7 +1354,7 @@ bool CertificateRequest::toPEMFile(const QString &fileName) const return stringToFile(fileName, toPEM()); } -CertificateRequest CertificateRequest::fromDER(const QSecureArray &a, ConvertResult *result, const QString &provider) +CertificateRequest CertificateRequest::fromDER(const SecureArray &a, ConvertResult *result, const QString &provider) { CertificateRequest c; CSRContext *csr = static_cast<CSRContext *>(getContext("csr", provider)); @@ -1433,14 +1433,14 @@ CRLEntry::CRLEntry(const Certificate &c, Reason r) _reason = r; } -CRLEntry::CRLEntry(const QBigInteger serial, const QDateTime time, Reason r) +CRLEntry::CRLEntry(const BigInteger serial, const QDateTime time, Reason r) { _serial = serial; _time = time; _reason = r; } -QBigInteger CRLEntry::serialNumber() const +BigInteger CRLEntry::serialNumber() const { return _serial; } @@ -1562,7 +1562,7 @@ QList<CRLEntry> CRL::revoked() const return static_cast<const CRLContext *>(context())->props()->revoked; } -QSecureArray CRL::signature() const +SecureArray CRL::signature() const { return static_cast<const CRLContext *>(context())->props()->sig; } @@ -1577,7 +1577,7 @@ QByteArray CRL::issuerKeyId() const return static_cast<const CRLContext *>(context())->props()->issuerId; } -QSecureArray CRL::toDER() const +SecureArray CRL::toDER() const { return static_cast<const CRLContext *>(context())->toDER(); } @@ -1627,7 +1627,7 @@ bool CRL::operator==(const CRL &otherCrl) const } -CRL CRL::fromDER(const QSecureArray &a, ConvertResult *result, const QString &provider) +CRL CRL::fromDER(const SecureArray &a, ConvertResult *result, const QString &provider) { CRL c; CRLContext *cc = static_cast<CRLContext *>(getContext("crl", provider)); @@ -1958,7 +1958,7 @@ KeyBundle::KeyBundle() { } -KeyBundle::KeyBundle(const QString &fileName, const QSecureArray &passphrase) +KeyBundle::KeyBundle(const QString &fileName, const SecureArray &passphrase) :d(new Private) { *this = fromFile(fileName, passphrase, 0, QString()); @@ -2010,7 +2010,7 @@ void KeyBundle::setCertificateChainAndKey(const CertificateChain &c, const Priva d->key = key; } -QByteArray KeyBundle::toArray(const QSecureArray &passphrase, const QString &provider) const +QByteArray KeyBundle::toArray(const SecureArray &passphrase, const QString &provider) const { PKCS12Context *pix = static_cast<PKCS12Context *>(getContext("pkcs12", provider)); @@ -2023,12 +2023,12 @@ QByteArray KeyBundle::toArray(const QSecureArray &passphrase, const QString &pro return buf; } -bool KeyBundle::toFile(const QString &fileName, const QSecureArray &passphrase, const QString &provider) const +bool KeyBundle::toFile(const QString &fileName, const SecureArray &passphrase, const QString &provider) const { return arrayToFile(fileName, toArray(passphrase, provider)); } -KeyBundle KeyBundle::fromArray(const QByteArray &a, const QSecureArray &passphrase, ConvertResult *result, const QString &provider) +KeyBundle KeyBundle::fromArray(const QByteArray &a, const SecureArray &passphrase, ConvertResult *result, const QString &provider) { QString name; QList<CertContext *> list; @@ -2041,7 +2041,7 @@ KeyBundle KeyBundle::fromArray(const QByteArray &a, const QSecureArray &passphra // error converting without passphrase? maybe a passphrase is needed if(use_asker_fallback(r) && passphrase.isEmpty()) { - QSecureArray pass; + SecureArray pass; if(ask_passphrase(QString(), 0, &pass)) r = pix->fromPKCS12(a, pass, &name, &list, &kc); } @@ -2063,7 +2063,7 @@ KeyBundle KeyBundle::fromArray(const QByteArray &a, const QSecureArray &passphra return bundle; } -KeyBundle KeyBundle::fromFile(const QString &fileName, const QSecureArray &passphrase, ConvertResult *result, const QString &provider) +KeyBundle KeyBundle::fromFile(const QString &fileName, const SecureArray &passphrase, ConvertResult *result, const QString &provider) { QByteArray der; if(!arrayFromFile(fileName, &der)) @@ -2152,7 +2152,7 @@ bool PGPKey::isTrusted() const return static_cast<const PGPKeyContext *>(context())->props()->isTrusted; } -QSecureArray PGPKey::toArray() const +SecureArray PGPKey::toArray() const { return static_cast<const PGPKeyContext *>(context())->toBinary(); } @@ -2167,7 +2167,7 @@ bool PGPKey::toFile(const QString &fileName) const return stringToFile(fileName, toString()); } -PGPKey PGPKey::fromArray(const QSecureArray &a, ConvertResult *result, const QString &provider) +PGPKey PGPKey::fromArray(const SecureArray &a, ConvertResult *result, const QString &provider) { PGPKey k; PGPKeyContext *kc = static_cast<PGPKeyContext *>(getContext("pgpkey", provider)); @@ -2217,7 +2217,7 @@ public: public: Type type; QString fileName, pem; - QSecureArray der; + SecureArray der; QByteArray kbder; }; @@ -2240,15 +2240,15 @@ protected: virtual void run() { if(in.type == PKPEMFile) - out.privateKey = PrivateKey::fromPEMFile(in.fileName, QSecureArray(), &out.convertResult); + out.privateKey = PrivateKey::fromPEMFile(in.fileName, SecureArray(), &out.convertResult); else if(in.type == PKPEM) - out.privateKey = PrivateKey::fromPEM(in.pem, QSecureArray(), &out.convertResult); + out.privateKey = PrivateKey::fromPEM(in.pem, SecureArray(), &out.convertResult); else if(in.type == PKDER) - out.privateKey = PrivateKey::fromDER(in.der, QSecureArray(), &out.convertResult); + out.privateKey = PrivateKey::fromDER(in.der, SecureArray(), &out.convertResult); else if(in.type == KBDERFile) - out.keyBundle = KeyBundle::fromFile(in.fileName, QSecureArray(), &out.convertResult); + out.keyBundle = KeyBundle::fromFile(in.fileName, SecureArray(), &out.convertResult); else if(in.type == KBDER) - out.keyBundle = KeyBundle::fromArray(in.kbder, QSecureArray(), &out.convertResult); + out.keyBundle = KeyBundle::fromArray(in.kbder, SecureArray(), &out.convertResult); } }; @@ -2331,7 +2331,7 @@ void KeyLoader::loadPrivateKeyFromPEM(const QString &s) d->start(); } -void KeyLoader::loadPrivateKeyFromDER(const QSecureArray &a) +void KeyLoader::loadPrivateKeyFromDER(const SecureArray &a) { Q_ASSERT(!d->active); if(d->active) diff --git a/src/qca_core.cpp b/src/qca_core.cpp index df636462..b665ec8f 100644 --- a/src/qca_core.cpp +++ b/src/qca_core.cpp @@ -651,7 +651,7 @@ void setAppName(const QString &s) global->app_name = s; } -QString arrayToHex(const QSecureArray &a) +QString arrayToHex(const SecureArray &a) { return Hex().arrayToString(a); } @@ -843,12 +843,12 @@ int PKeyBase::maximumEncryptSize(EncryptionAlgorithm) const return 0; } -QSecureArray PKeyBase::encrypt(const QSecureArray &, EncryptionAlgorithm) +SecureArray PKeyBase::encrypt(const SecureArray &, EncryptionAlgorithm) { - return QSecureArray(); + return SecureArray(); } -bool PKeyBase::decrypt(const QSecureArray &, QSecureArray *, EncryptionAlgorithm) +bool PKeyBase::decrypt(const SecureArray &, SecureArray *, EncryptionAlgorithm) { return false; } @@ -861,16 +861,16 @@ void PKeyBase::startVerify(SignatureAlgorithm, SignatureFormat) { } -void PKeyBase::update(const QSecureArray &) +void PKeyBase::update(const SecureArray &) { } -QSecureArray PKeyBase::endSign() +SecureArray PKeyBase::endSign() { - return QSecureArray(); + return SecureArray(); } -bool PKeyBase::endVerify(const QSecureArray &) +bool PKeyBase::endVerify(const SecureArray &) { return false; } @@ -883,9 +883,9 @@ SymmetricKey PKeyBase::deriveKey(const PKeyBase &) //---------------------------------------------------------------------------- // PKeyContext //---------------------------------------------------------------------------- -QSecureArray PKeyContext::publicToDER() const +SecureArray PKeyContext::publicToDER() const { - return QSecureArray(); + return SecureArray(); } QString PKeyContext::publicToPEM() const @@ -893,7 +893,7 @@ QString PKeyContext::publicToPEM() const return QString(); } -ConvertResult PKeyContext::publicFromDER(const QSecureArray &) +ConvertResult PKeyContext::publicFromDER(const SecureArray &) { return ErrorDecode; } @@ -903,22 +903,22 @@ ConvertResult PKeyContext::publicFromPEM(const QString &) return ErrorDecode; } -QSecureArray PKeyContext::privateToDER(const QSecureArray &, PBEAlgorithm) const +SecureArray PKeyContext::privateToDER(const SecureArray &, PBEAlgorithm) const { - return QSecureArray(); + return SecureArray(); } -QString PKeyContext::privateToPEM(const QSecureArray &, PBEAlgorithm) const +QString PKeyContext::privateToPEM(const SecureArray &, PBEAlgorithm) const { return QString(); } -ConvertResult PKeyContext::privateFromDER(const QSecureArray &, const QSecureArray &) +ConvertResult PKeyContext::privateFromDER(const SecureArray &, const SecureArray &) { return ErrorDecode; } -ConvertResult PKeyContext::privateFromPEM(const QString &, const QSecureArray &) +ConvertResult PKeyContext::privateFromPEM(const QString &, const SecureArray &) { return ErrorDecode; } @@ -1021,7 +1021,7 @@ bool KeyStoreListContext::removeEntry(int, const QString &) return false; } -void KeyStoreListContext::submitPassphrase(int, int, const QSecureArray &) +void KeyStoreListContext::submitPassphrase(int, int, const SecureArray &) { } @@ -1054,7 +1054,7 @@ BufferedComputation::~BufferedComputation() { } -QSecureArray BufferedComputation::process(const QSecureArray &a) +SecureArray BufferedComputation::process(const SecureArray &a) { clear(); update(a); @@ -1068,15 +1068,15 @@ Filter::~Filter() { } -QSecureArray Filter::process(const QSecureArray &a) +SecureArray Filter::process(const SecureArray &a) { clear(); - QSecureArray buf = update(a); + SecureArray buf = update(a); if(!ok()) - return QSecureArray(); - QSecureArray fin = final(); + return SecureArray(); + SecureArray fin = final(); if(!ok()) - return QSecureArray(); + return SecureArray(); int oldsize = buf.size(); buf.resize(oldsize + fin.size()); memcpy(buf.data() + oldsize, fin.data(), fin.size()); @@ -1207,14 +1207,14 @@ SymmetricKey::SymmetricKey(int size) set(Random::randomArray(size)); } -SymmetricKey::SymmetricKey(const QSecureArray &a) +SymmetricKey::SymmetricKey(const SecureArray &a) { set(a); } SymmetricKey::SymmetricKey(const QByteArray &a) { - set(QSecureArray(a)); + set(SecureArray(a)); } /* from libgcrypt-1.2.0 */ @@ -1290,7 +1290,7 @@ bool SymmetricKey::isWeakDESKey() { if(size() != 8) return false; // dubious - QSecureArray workingCopy(8); + SecureArray workingCopy(8); // clear parity bits for(uint i = 0; i < 8; i++) workingCopy[i] = (data()[i]) & 0xfe; @@ -1315,14 +1315,14 @@ InitializationVector::InitializationVector(int size) set(Random::randomArray(size)); } -InitializationVector::InitializationVector(const QSecureArray &a) +InitializationVector::InitializationVector(const SecureArray &a) { set(a); } InitializationVector::InitializationVector(const QByteArray &a) { - set(QSecureArray(a)); + set(SecureArray(a)); } //---------------------------------------------------------------------------- @@ -1461,13 +1461,13 @@ public: { } - virtual void set_accepted(const QSecureArray &password) = 0; + virtual void set_accepted(const SecureArray &password) = 0; virtual void set_rejected() = 0; }; static void handler_add(HandlerBase *h, int pos = -1); static void handler_remove(HandlerBase *h); -static void handler_accept(HandlerBase *h, int id, const QSecureArray &password); +static void handler_accept(HandlerBase *h, int id, const SecureArray &password); static void handler_reject(HandlerBase *h, int id); static bool asker_ask(AskerBase *a, const Event &e); static void asker_cancel(AskerBase *a); @@ -1504,7 +1504,7 @@ public: EventGlobal() { qRegisterMetaType<Event>("QCA::Event"); - qRegisterMetaType<QSecureArray>("QSecureArray"); + qRegisterMetaType<SecureArray>("QCA::SecureArray"); next_id = 0; } @@ -1643,7 +1643,7 @@ void handler_remove(HandlerBase *h) } } -void handler_accept(HandlerBase *h, int id, const QSecureArray &password) +void handler_accept(HandlerBase *h, int id, const SecureArray &password) { QMutexLocker locker(g_event_mutex()); Q_ASSERT(g_event); @@ -1780,7 +1780,7 @@ void EventHandler::start() handler_add(d); } -void EventHandler::submitPassword(int id, const QSecureArray &password) +void EventHandler::submitPassword(int id, const SecureArray &password) { if(!d->activeIds.contains(id)) return; @@ -1795,7 +1795,7 @@ void EventHandler::tokenOkay(int id) return; d->activeIds.removeAll(id); - handler_accept(d, id, QSecureArray()); + handler_accept(d, id, SecureArray()); } void EventHandler::reject(int id) @@ -1824,7 +1824,7 @@ public: QWaitCondition w; bool accepted; - QSecureArray password; + SecureArray password; bool waiting; bool done; @@ -1868,7 +1868,7 @@ public: asker_cancel(this); } - virtual void set_accepted(const QSecureArray &_password) + virtual void set_accepted(const SecureArray &_password) { QMutexLocker locker(&m); accepted = true; @@ -1957,7 +1957,7 @@ bool PasswordAsker::accepted() const return d->accepted; } -QSecureArray PasswordAsker::password() const +SecureArray PasswordAsker::password() const { return d->password; } diff --git a/src/qca_default.cpp b/src/qca_default.cpp index 5fcfc5ef..2b584bfd 100644 --- a/src/qca_default.cpp +++ b/src/qca_default.cpp @@ -44,9 +44,9 @@ public: return new DefaultRandomContext(provider()); } - virtual QSecureArray nextBytes(int size) + virtual SecureArray nextBytes(int size) { - QSecureArray buf(size); + SecureArray buf(size); for(int n = 0; n < (int)buf.size(); ++n) buf[n] = (char)rand(); return buf; @@ -127,7 +127,7 @@ typedef quint32 md5_word_t; /* 32-bit word */ /* Define the state of the MD5 Algorithm. */ struct md5_state_t { - QSecureArray sbuf; + SecureArray sbuf; md5_word_t *count; // 2 /* message length in bits, lsw first */ md5_word_t *abcd; // 4 /* digest buffer */ md5_byte_t *buf; // 64 /* accumulate block */ @@ -245,7 +245,7 @@ md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/) /* Define storage for little-endian or both types of CPUs. */ // possible FIXME: does xbuf really need to be secured? - QSecureArray sxbuf(16 * sizeof(md5_word_t)); + SecureArray sxbuf(16 * sizeof(md5_word_t)); md5_word_t *xbuf = (md5_word_t *)sxbuf.data(); const md5_word_t *X; @@ -485,14 +485,14 @@ public: md5_init(&md5); } - virtual void update(const QSecureArray &in) + virtual void update(const SecureArray &in) { md5_append(&md5, (const md5_byte_t *)in.data(), in.size()); } - virtual QSecureArray final() + virtual SecureArray final() { - QSecureArray b(16); + SecureArray b(16); md5_finish(&md5, (md5_byte_t *)b.data()); return b; } @@ -518,7 +518,7 @@ public: struct SHA1_CONTEXT { - QSecureArray sbuf; + SecureArray sbuf; quint32 *state; // 5 quint32 *count; // 2 unsigned char *buffer; // 64 @@ -576,14 +576,14 @@ public: sha1_init(&_context); } - virtual void update(const QSecureArray &in) + virtual void update(const SecureArray &in) { sha1_update(&_context, (unsigned char *)in.data(), (unsigned int)in.size()); } - virtual QSecureArray final() + virtual SecureArray final() { - QSecureArray b(20); + SecureArray b(20); sha1_final((unsigned char *)b.data(), &_context); return b; } diff --git a/src/qca_publickey.cpp b/src/qca_publickey.cpp index 75e24aac..f3bb9251 100644 --- a/src/qca_publickey.cpp +++ b/src/qca_publickey.cpp @@ -66,7 +66,7 @@ bool arrayFromFile(const QString &fileName, QByteArray *a) return true; } -bool ask_passphrase(const QString &fname, void *ptr, QSecureArray *answer) +bool ask_passphrase(const QString &fname, void *ptr, SecureArray *answer) { PasswordAsker asker; asker.ask(Event::StylePassphrase, fname, ptr); @@ -169,7 +169,7 @@ class Getter_PublicKey { public: // DER - static ConvertResult fromData(PKeyContext *c, const QSecureArray &in) + static ConvertResult fromData(PKeyContext *c, const SecureArray &in) { return c->publicFromDER(in); } @@ -180,7 +180,7 @@ public: return c->publicFromPEM(in); } - static PublicKey getKey(Provider *p, const I &in, const QSecureArray &, ConvertResult *result) + static PublicKey getKey(Provider *p, const I &in, const SecureArray &, ConvertResult *result) { PublicKey k; PKeyContext *c = static_cast<PKeyContext *>(getContext("pkey", p)); @@ -204,18 +204,18 @@ class Getter_PrivateKey { public: // DER - static ConvertResult fromData(PKeyContext *c, const QSecureArray &in, const QSecureArray &passphrase) + static ConvertResult fromData(PKeyContext *c, const SecureArray &in, const SecureArray &passphrase) { return c->privateFromDER(in, passphrase); } // PEM - static ConvertResult fromData(PKeyContext *c, const QString &in, const QSecureArray &passphrase) + static ConvertResult fromData(PKeyContext *c, const QString &in, const SecureArray &passphrase) { return c->privateFromPEM(in, passphrase); } - static PrivateKey getKey(Provider *p, const I &in, const QSecureArray &passphrase, ConvertResult *result) + static PrivateKey getKey(Provider *p, const I &in, const SecureArray &passphrase, ConvertResult *result) { PrivateKey k; PKeyContext *c = static_cast<PKeyContext *>(getContext("pkey", p)); @@ -299,7 +299,7 @@ QList<T> getList(const QString &provider) } template <typename T, typename G, typename I> -T getKey(const QString &provider, const I &in, const QSecureArray &passphrase, ConvertResult *result) +T getKey(const QString &provider, const I &in, const SecureArray &passphrase, ConvertResult *result) { T k; @@ -379,11 +379,11 @@ QByteArray get_hash_id(const QString &name) return QByteArray(); } -QSecureArray emsa3Encode(const QString &hashName, const QSecureArray &digest, int size) +SecureArray emsa3Encode(const QString &hashName, const SecureArray &digest, int size) { QByteArray hash_id = get_hash_id(hashName); if(hash_id.isEmpty()) - return QSecureArray(); + return SecureArray(); // logic adapted from Botan int basesize = hash_id.size() + digest.size() + 2; @@ -391,9 +391,9 @@ QSecureArray emsa3Encode(const QString &hashName, const QSecureArray &digest, in size = basesize + 1; // default to 1-byte pad int padlen = size - basesize; if(padlen < 1) - return QSecureArray(); + return SecureArray(); - QSecureArray out(size, 0xff); // pad with 0xff + SecureArray out(size, 0xff); // pad with 0xff out[0] = 0x01; out[padlen + 1] = 0x00; int at = padlen + 2; @@ -409,9 +409,9 @@ QSecureArray emsa3Encode(const QString &hashName, const QSecureArray &digest, in class DLGroup::Private { public: - QBigInteger p, q, g; + BigInteger p, q, g; - Private(const QBigInteger &p1, const QBigInteger &q1, const QBigInteger &g1) + Private(const BigInteger &p1, const BigInteger &q1, const BigInteger &g1) :p(p1), q(q1), g(g1) { } @@ -422,12 +422,12 @@ DLGroup::DLGroup() d = 0; } -DLGroup::DLGroup(const QBigInteger &p, const QBigInteger &q, const QBigInteger &g) +DLGroup::DLGroup(const BigInteger &p, const BigInteger &q, const BigInteger &g) { d = new Private(p, q, g); } -DLGroup::DLGroup(const QBigInteger &p, const QBigInteger &g) +DLGroup::DLGroup(const BigInteger &p, const BigInteger &g) { d = new Private(p, 0, g); } @@ -464,17 +464,17 @@ bool DLGroup::isNull() const return (d ? false: true); } -QBigInteger DLGroup::p() const +BigInteger DLGroup::p() const { return d->p; } -QBigInteger DLGroup::q() const +BigInteger DLGroup::q() const { return d->q; } -QBigInteger DLGroup::g() const +BigInteger DLGroup::g() const { return d->g; } @@ -734,7 +734,7 @@ int PublicKey::maximumEncryptSize(EncryptionAlgorithm alg) const return static_cast<const PKeyContext *>(context())->key()->maximumEncryptSize(alg); } -QSecureArray PublicKey::encrypt(const QSecureArray &a, EncryptionAlgorithm alg) +SecureArray PublicKey::encrypt(const SecureArray &a, EncryptionAlgorithm alg) { return static_cast<PKeyContext *>(context())->key()->encrypt(a, alg); } @@ -746,26 +746,26 @@ void PublicKey::startVerify(SignatureAlgorithm alg, SignatureFormat format) static_cast<PKeyContext *>(context())->key()->startVerify(alg, format); } -void PublicKey::update(const QSecureArray &a) +void PublicKey::update(const SecureArray &a) { static_cast<PKeyContext *>(context())->key()->update(a); } -bool PublicKey::validSignature(const QSecureArray &sig) +bool PublicKey::validSignature(const SecureArray &sig) { return static_cast<PKeyContext *>(context())->key()->endVerify(sig); } -bool PublicKey::verifyMessage(const QSecureArray &a, const QSecureArray &sig, SignatureAlgorithm alg, SignatureFormat format) +bool PublicKey::verifyMessage(const SecureArray &a, const SecureArray &sig, SignatureAlgorithm alg, SignatureFormat format) { startVerify(alg, format); update(a); return validSignature(sig); } -QSecureArray PublicKey::toDER() const +SecureArray PublicKey::toDER() const { - QSecureArray out; + SecureArray out; Provider *p = providerForIOType(type()); if(!p) return out; @@ -810,14 +810,14 @@ bool PublicKey::toPEMFile(const QString &fileName) const return stringToFile(fileName, toPEM()); } -PublicKey PublicKey::fromDER(const QSecureArray &a, ConvertResult *result, const QString &provider) +PublicKey PublicKey::fromDER(const SecureArray &a, ConvertResult *result, const QString &provider) { - return getKey<PublicKey, Getter_PublicKey<QSecureArray>, QSecureArray>(provider, a, QSecureArray(), result); + return getKey<PublicKey, Getter_PublicKey<SecureArray>, SecureArray>(provider, a, SecureArray(), result); } PublicKey PublicKey::fromPEM(const QString &s, ConvertResult *result, const QString &provider) { - return getKey<PublicKey, Getter_PublicKey<QString>, QString>(provider, s, QSecureArray(), result); + return getKey<PublicKey, Getter_PublicKey<QString>, QString>(provider, s, SecureArray(), result); } PublicKey PublicKey::fromPEMFile(const QString &fileName, ConvertResult *result, const QString &provider) @@ -844,7 +844,7 @@ PrivateKey::PrivateKey(const QString &type, const QString &provider) { } -PrivateKey::PrivateKey(const QString &fileName, const QSecureArray &passphrase) +PrivateKey::PrivateKey(const QString &fileName, const SecureArray &passphrase) { *this = fromPEMFile(fileName, passphrase, 0, QString()); } @@ -874,7 +874,7 @@ bool PrivateKey::canSign() const return (isRSA() || isDSA()); } -bool PrivateKey::decrypt(const QSecureArray &in, QSecureArray *out, EncryptionAlgorithm alg) +bool PrivateKey::decrypt(const SecureArray &in, SecureArray *out, EncryptionAlgorithm alg) { return static_cast<PKeyContext *>(context())->key()->decrypt(in, out, alg); } @@ -886,17 +886,17 @@ void PrivateKey::startSign(SignatureAlgorithm alg, SignatureFormat format) static_cast<PKeyContext *>(context())->key()->startSign(alg, format); } -void PrivateKey::update(const QSecureArray &a) +void PrivateKey::update(const SecureArray &a) { static_cast<PKeyContext *>(context())->key()->update(a); } -QSecureArray PrivateKey::signature() +SecureArray PrivateKey::signature() { return static_cast<PKeyContext *>(context())->key()->endSign(); } -QSecureArray PrivateKey::signMessage(const QSecureArray &a, SignatureAlgorithm alg, SignatureFormat format) +SecureArray PrivateKey::signMessage(const SecureArray &a, SignatureAlgorithm alg, SignatureFormat format) { startSign(alg, format); update(a); @@ -914,9 +914,9 @@ QList<PBEAlgorithm> PrivateKey::supportedPBEAlgorithms(const QString &provider) return getList<PBEAlgorithm, Getter_PBE>(provider); } -QSecureArray PrivateKey::toDER(const QSecureArray &passphrase, PBEAlgorithm pbe) const +SecureArray PrivateKey::toDER(const SecureArray &passphrase, PBEAlgorithm pbe) const { - QSecureArray out; + SecureArray out; if(pbe == PBEDefault) pbe = get_pbe_default(); Provider *p = providerForPBE(pbe, type()); @@ -937,7 +937,7 @@ QSecureArray PrivateKey::toDER(const QSecureArray &passphrase, PBEAlgorithm pbe) return out; } -QString PrivateKey::toPEM(const QSecureArray &passphrase, PBEAlgorithm pbe) const +QString PrivateKey::toPEM(const SecureArray &passphrase, PBEAlgorithm pbe) const { QString out; if(pbe == PBEDefault) @@ -960,30 +960,30 @@ QString PrivateKey::toPEM(const QSecureArray &passphrase, PBEAlgorithm pbe) cons return out; } -bool PrivateKey::toPEMFile(const QString &fileName, const QSecureArray &passphrase, PBEAlgorithm pbe) const +bool PrivateKey::toPEMFile(const QString &fileName, const SecureArray &passphrase, PBEAlgorithm pbe) const { return stringToFile(fileName, toPEM(passphrase, pbe)); } -PrivateKey PrivateKey::fromDER(const QSecureArray &a, const QSecureArray &passphrase, ConvertResult *result, const QString &provider) +PrivateKey PrivateKey::fromDER(const SecureArray &a, const SecureArray &passphrase, ConvertResult *result, const QString &provider) { PrivateKey out; ConvertResult r; - out = getKey<PrivateKey, Getter_PrivateKey<QSecureArray>, QSecureArray>(provider, a, passphrase, &r); + out = getKey<PrivateKey, Getter_PrivateKey<SecureArray>, SecureArray>(provider, a, passphrase, &r); // error converting without passphrase? maybe a passphrase is needed if(use_asker_fallback(r) && passphrase.isEmpty()) { - QSecureArray pass; + SecureArray pass; if(ask_passphrase(QString(), 0, &pass)) - out = getKey<PrivateKey, Getter_PrivateKey<QSecureArray>, QSecureArray>(provider, a, pass, &r); + out = getKey<PrivateKey, Getter_PrivateKey<SecureArray>, SecureArray>(provider, a, pass, &r); } if(result) *result = r; return out; } -PrivateKey PrivateKey::fromPEM(const QString &s, const QSecureArray &passphrase, ConvertResult *result, const QString &provider) +PrivateKey PrivateKey::fromPEM(const QString &s, const SecureArray &passphrase, ConvertResult *result, const QString &provider) { PrivateKey out; ConvertResult r; @@ -992,7 +992,7 @@ PrivateKey PrivateKey::fromPEM(const QString &s, const QSecureArray &passphrase, // error converting without passphrase? maybe a passphrase is needed if(use_asker_fallback(r) && passphrase.isEmpty()) { - QSecureArray pass; + SecureArray pass; if(ask_passphrase(QString(), 0, &pass)) out = getKey<PrivateKey, Getter_PrivateKey<QString>, QString>(provider, s, pass, &r); } @@ -1001,7 +1001,7 @@ PrivateKey PrivateKey::fromPEM(const QString &s, const QSecureArray &passphrase, return out; } -PrivateKey PrivateKey::fromPEMFile(const QString &fileName, const QSecureArray &passphrase, ConvertResult *result, const QString &provider) +PrivateKey PrivateKey::fromPEMFile(const QString &fileName, const SecureArray &passphrase, ConvertResult *result, const QString &provider) { QString pem; if(!stringFromFile(fileName, &pem)) @@ -1075,7 +1075,7 @@ public slots: { if(!dc->isNull()) { - QBigInteger p, q, g; + BigInteger p, q, g; dc->getResult(&p, &q, &g); group = DLGroup(p, q, g); } @@ -1238,7 +1238,7 @@ RSAPublicKey::RSAPublicKey() { } -RSAPublicKey::RSAPublicKey(const QBigInteger &n, const QBigInteger &e, const QString &provider) +RSAPublicKey::RSAPublicKey(const BigInteger &n, const BigInteger &e, const QString &provider) { RSAContext *k = static_cast<RSAContext *>(getContext("rsa", provider)); k->createPublic(n, e); @@ -1252,12 +1252,12 @@ RSAPublicKey::RSAPublicKey(const RSAPrivateKey &k) { } -QBigInteger RSAPublicKey::n() const +BigInteger RSAPublicKey::n() const { return static_cast<const RSAContext *>(static_cast<const PKeyContext *>(context())->key())->n(); } -QBigInteger RSAPublicKey::e() const +BigInteger RSAPublicKey::e() const { return static_cast<const RSAContext *>(static_cast<const PKeyContext *>(context())->key())->e(); } @@ -1269,7 +1269,7 @@ RSAPrivateKey::RSAPrivateKey() { } -RSAPrivateKey::RSAPrivateKey(const QBigInteger &n, const QBigInteger &e, const QBigInteger &p, const QBigInteger &q, const QBigInteger &d, const QString &provider) +RSAPrivateKey::RSAPrivateKey(const BigInteger &n, const BigInteger &e, const BigInteger &p, const BigInteger &q, const BigInteger &d, const QString &provider) { RSAContext *k = static_cast<RSAContext *>(getContext("rsa", provider)); k->createPrivate(n, e, p, q, d); @@ -1278,27 +1278,27 @@ RSAPrivateKey::RSAPrivateKey(const QBigInteger &n, const QBigInteger &e, const Q change(c); } -QBigInteger RSAPrivateKey::n() const +BigInteger RSAPrivateKey::n() const { return static_cast<const RSAContext *>(static_cast<const PKeyContext *>(context())->key())->n(); } -QBigInteger RSAPrivateKey::e() const +BigInteger RSAPrivateKey::e() const { return static_cast<const RSAContext *>(static_cast<const PKeyContext *>(context())->key())->e(); } -QBigInteger RSAPrivateKey::p() const +BigInteger RSAPrivateKey::p() const { return static_cast<const RSAContext *>(static_cast<const PKeyContext *>(context())->key())->p(); } -QBigInteger RSAPrivateKey::q() const +BigInteger RSAPrivateKey::q() const { return static_cast<const RSAContext *>(static_cast<const PKeyContext *>(context())->key())->q(); } -QBigInteger RSAPrivateKey::d() const +BigInteger RSAPrivateKey::d() const { return static_cast<const RSAContext *>(static_cast<const PKeyContext *>(context())->key())->d(); } @@ -1310,7 +1310,7 @@ DSAPublicKey::DSAPublicKey() { } -DSAPublicKey::DSAPublicKey(const DLGroup &domain, const QBigInteger &y, const QString &provider) +DSAPublicKey::DSAPublicKey(const DLGroup &domain, const BigInteger &y, const QString &provider) { DSAContext *k = static_cast<DSAContext *>(getContext("dsa", provider)); k->createPublic(domain, y); @@ -1329,7 +1329,7 @@ DLGroup DSAPublicKey::domain() const return static_cast<const DSAContext *>(static_cast<const PKeyContext *>(context())->key())->domain(); } -QBigInteger DSAPublicKey::y() const +BigInteger DSAPublicKey::y() const { return static_cast<const DSAContext *>(static_cast<const PKeyContext *>(context())->key())->y(); } @@ -1341,7 +1341,7 @@ DSAPrivateKey::DSAPrivateKey() { } -DSAPrivateKey::DSAPrivateKey(const DLGroup &domain, const QBigInteger &y, const QBigInteger &x, const QString &provider) +DSAPrivateKey::DSAPrivateKey(const DLGroup &domain, const BigInteger &y, const BigInteger &x, const QString &provider) { DSAContext *k = static_cast<DSAContext *>(getContext("dsa", provider)); k->createPrivate(domain, y, x); @@ -1355,12 +1355,12 @@ DLGroup DSAPrivateKey::domain() const return static_cast<const DSAContext *>(static_cast<const PKeyContext *>(context())->key())->domain(); } -QBigInteger DSAPrivateKey::y() const +BigInteger DSAPrivateKey::y() const { return static_cast<const DSAContext *>(static_cast<const PKeyContext *>(context())->key())->y(); } -QBigInteger DSAPrivateKey::x() const +BigInteger DSAPrivateKey::x() const { return static_cast<const DSAContext *>(static_cast<const PKeyContext *>(context())->key())->x(); } @@ -1372,7 +1372,7 @@ DHPublicKey::DHPublicKey() { } -DHPublicKey::DHPublicKey(const DLGroup &domain, const QBigInteger &y, const QString &provider) +DHPublicKey::DHPublicKey(const DLGroup &domain, const BigInteger &y, const QString &provider) { DHContext *k = static_cast<DHContext *>(getContext("dh", provider)); k->createPublic(domain, y); @@ -1391,7 +1391,7 @@ DLGroup DHPublicKey::domain() const return static_cast<const DHContext *>(static_cast<const PKeyContext *>(context())->key())->domain(); } -QBigInteger DHPublicKey::y() const +BigInteger DHPublicKey::y() const { return static_cast<const DHContext *>(static_cast<const PKeyContext *>(context())->key())->y(); } @@ -1403,7 +1403,7 @@ DHPrivateKey::DHPrivateKey() { } -DHPrivateKey::DHPrivateKey(const DLGroup &domain, const QBigInteger &y, const QBigInteger &x, const QString &provider) +DHPrivateKey::DHPrivateKey(const DLGroup &domain, const BigInteger &y, const BigInteger &x, const QString &provider) { DHContext *k = static_cast<DHContext *>(getContext("dh", provider)); k->createPrivate(domain, y, x); @@ -1417,12 +1417,12 @@ DLGroup DHPrivateKey::domain() const return static_cast<const DHContext *>(static_cast<const PKeyContext *>(context())->key())->domain(); } -QBigInteger DHPrivateKey::y() const +BigInteger DHPrivateKey::y() const { return static_cast<const DHContext *>(static_cast<const PKeyContext *>(context())->key())->y(); } -QBigInteger DHPrivateKey::x() const +BigInteger DHPrivateKey::x() const { return static_cast<const DHContext *>(static_cast<const PKeyContext *>(context())->key())->x(); } diff --git a/src/qca_securelayer.cpp b/src/qca_securelayer.cpp index 387cceca..d581fd4a 100644 --- a/src/qca_securelayer.cpp +++ b/src/qca_securelayer.cpp @@ -991,7 +991,7 @@ void SASL::setAuthzid(const QString &authzid) d->c->setClientParams(0, &authzid, 0, 0); } -void SASL::setPassword(const QSecureArray &pass) +void SASL::setPassword(const SecureArray &pass) { d->c->setClientParams(0, 0, &pass, 0); } diff --git a/src/qca_textfilter.cpp b/src/qca_textfilter.cpp index 4534d1ce..87d15ee8 100644 --- a/src/qca_textfilter.cpp +++ b/src/qca_textfilter.cpp @@ -37,27 +37,27 @@ void TextFilter::setup(Direction dir) _dir = dir; } -QSecureArray TextFilter::encode(const QSecureArray &a) +SecureArray TextFilter::encode(const SecureArray &a) { setup(Encode); return process(a); } -QSecureArray TextFilter::decode(const QSecureArray &a) +SecureArray TextFilter::decode(const SecureArray &a) { setup(Decode); return process(a); } -QString TextFilter::arrayToString(const QSecureArray &a) +QString TextFilter::arrayToString(const SecureArray &a) { return QString::fromLatin1(encode(a).toByteArray()); } -QSecureArray TextFilter::stringToArray(const QString &s) +SecureArray TextFilter::stringToArray(const QString &s) { if(s.isEmpty()) - return QSecureArray(); + return SecureArray(); return decode(s.toLatin1()); } @@ -108,11 +108,11 @@ void Hex::clear() _ok = true; } -QSecureArray Hex::update(const QSecureArray &a) +SecureArray Hex::update(const SecureArray &a) { if(_dir == Encode) { - QSecureArray out(a.size() * 2); + SecureArray out(a.size() * 2); int at = 0; int c; for(int n = 0; n < (int)a.size(); ++n) @@ -135,7 +135,7 @@ QSecureArray Hex::update(const QSecureArray &a) out[at++] = (char)c; } if(!_ok) - return QSecureArray(); + return SecureArray(); return out; } @@ -150,7 +150,7 @@ QSecureArray Hex::update(const QSecureArray &a) flag = true; } - QSecureArray out(a.size() / 2); + SecureArray out(a.size() / 2); int at = 0; int c; for(int n = 0; n < (int)a.size(); ++n) @@ -175,7 +175,7 @@ QSecureArray Hex::update(const QSecureArray &a) } } if(!_ok) - return QSecureArray(); + return SecureArray(); if(flag) { @@ -186,11 +186,11 @@ QSecureArray Hex::update(const QSecureArray &a) } } -QSecureArray Hex::final() +SecureArray Hex::final() { if(partial) _ok = false; - return QSecureArray(); + return SecureArray(); } bool Hex::ok() const @@ -228,7 +228,7 @@ void Base64::setLineBreaksColumn(int column) _lb_column = 76; } -static QSecureArray b64encode(const QSecureArray &s) +static SecureArray b64encode(const SecureArray &s) { int i; int len = s.size(); @@ -244,7 +244,7 @@ static QSecureArray b64encode(const QSecureArray &s) "="; int a, b, c; - QSecureArray p((len + 2) / 3 * 4); + SecureArray p((len + 2) / 3 * 4); int at = 0; for(i = 0; i < len; i += 3) { @@ -272,7 +272,7 @@ static QSecureArray b64encode(const QSecureArray &s) return p; } -static QSecureArray b64decode(const QSecureArray &s, bool *ok) +static SecureArray b64decode(const SecureArray &s, bool *ok) { // -1 specifies invalid // 64 specifies eof @@ -299,7 +299,7 @@ static QSecureArray b64decode(const QSecureArray &s, bool *ok) }; // return value - QSecureArray p; + SecureArray p; *ok = true; // this should be a multiple of 4 @@ -343,7 +343,7 @@ static QSecureArray b64decode(const QSecureArray &s, bool *ok) return p; } -static int findLF(const QSecureArray &in, int offset) +static int findLF(const SecureArray &in, int offset) { for(int n = offset; n < in.size(); ++n) { @@ -353,9 +353,9 @@ static int findLF(const QSecureArray &in, int offset) return -1; } -static QSecureArray insert_linebreaks(const QSecureArray &s, int *col, int lfAt) +static SecureArray insert_linebreaks(const SecureArray &s, int *col, int lfAt) { - QSecureArray out = s; + SecureArray out = s; int needed = (out.size() + *col) / lfAt; // how many newlines needed? if(needed > 0) @@ -391,9 +391,9 @@ static QSecureArray insert_linebreaks(const QSecureArray &s, int *col, int lfAt) return out; } -static QSecureArray remove_linebreaks(const QSecureArray &s) +static SecureArray remove_linebreaks(const SecureArray &s) { - QSecureArray out = s; + SecureArray out = s; int removed = 0; int at = findLF(out, 0); @@ -419,23 +419,23 @@ static QSecureArray remove_linebreaks(const QSecureArray &s) return out; } -static void appendArray(QSecureArray *a, const QSecureArray &b) +static void appendArray(SecureArray *a, const SecureArray &b) { int oldsize = a->size(); a->resize(oldsize + b.size()); memcpy(a->data() + oldsize, b.data(), b.size()); } -QSecureArray Base64::update(const QSecureArray &a) +SecureArray Base64::update(const SecureArray &a) { - QSecureArray in; + SecureArray in; if(_dir == Decode && _lb_enabled) in = remove_linebreaks(a); else in = a; if(in.isEmpty()) - return QSecureArray(); + return SecureArray(); int chunk; if(_dir == Encode) @@ -447,13 +447,13 @@ QSecureArray Base64::update(const QSecureArray &a) if(size < chunk) { appendArray(&partial, in); - return QSecureArray(); + return SecureArray(); } int eat = size % chunk; // s = partial + a - eat - QSecureArray s(partial.size() + in.size() - eat); + SecureArray s(partial.size() + in.size() - eat); memcpy(s.data(), partial.data(), partial.size()); memcpy(s.data() + partial.size(), in.data(), in.size() - eat); @@ -470,14 +470,14 @@ QSecureArray Base64::update(const QSecureArray &a) else { bool ok; - QSecureArray out = b64decode(s, &ok); + SecureArray out = b64decode(s, &ok); if(!ok) _ok = false; return out; } } -QSecureArray Base64::final() +SecureArray Base64::final() { if(_dir == Encode) { @@ -489,7 +489,7 @@ QSecureArray Base64::final() else { bool ok; - QSecureArray out = b64decode(partial, &ok); + SecureArray out = b64decode(partial, &ok); if(!ok) _ok = false; return out; diff --git a/src/qca_tools.cpp b/src/qca_tools.cpp index 6fa1c825..b4fe1acc 100644 --- a/src/qca_tools.cpp +++ b/src/qca_tools.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2005 Justin Karneges <justin@affinix.com> + * Copyright (C) 2003-2007 Justin Karneges <justin@affinix.com> * Copyright (C) 2004,2005 Brad Hards <bradh@frogmouth.net> * * This library is free software; you can redistribute it and/or @@ -151,12 +151,12 @@ void *qca_secure_realloc(void *p, int bytes) return new_p; } -using namespace QCA; +namespace QCA { //---------------------------------------------------------------------------- -// QSecureArray +// SecureArray //---------------------------------------------------------------------------- -class QSecureArray::Private : public QSharedData +class SecureArray::Private : public QSharedData { public: Botan::SecureVector<Botan::byte> *buf; @@ -203,12 +203,12 @@ public: } }; -QSecureArray::QSecureArray() +SecureArray::SecureArray() { d = 0; } -QSecureArray::QSecureArray(int size, char ch) +SecureArray::SecureArray(int size, char ch) { if(size > 0) { @@ -222,7 +222,7 @@ QSecureArray::QSecureArray(int size, char ch) d = 0; } -QSecureArray::QSecureArray(const char *str) +SecureArray::SecureArray(const char *str) { QByteArray a = QByteArray::fromRawData(str, strlen(str)); if(a.size() > 0) @@ -231,29 +231,29 @@ QSecureArray::QSecureArray(const char *str) d = 0; } -QSecureArray::QSecureArray(const QByteArray &a) +SecureArray::SecureArray(const QByteArray &a) { d = 0; *this = a; } -QSecureArray::QSecureArray(const QSecureArray &from) +SecureArray::SecureArray(const SecureArray &from) { d = 0; *this = from; } -QSecureArray::~QSecureArray() +SecureArray::~SecureArray() { } -QSecureArray & QSecureArray::operator=(const QSecureArray &from) +SecureArray & SecureArray::operator=(const SecureArray &from) { d = from.d; return *this; } -QSecureArray & QSecureArray::operator=(const QByteArray &from) +SecureArray & SecureArray::operator=(const QByteArray &from) { d = 0; if(!from.isEmpty()) @@ -262,12 +262,12 @@ QSecureArray & QSecureArray::operator=(const QByteArray &from) return *this; } -void QSecureArray::clear() +void SecureArray::clear() { d = 0; } -bool QSecureArray::resize(int size) +bool SecureArray::resize(int size) { int cur_size = (d ? d->size : 0); if(cur_size == size) @@ -290,31 +290,31 @@ bool QSecureArray::resize(int size) return true; } -char & QSecureArray::operator[](int index) +char & SecureArray::operator[](int index) { return at(index); } -const char & QSecureArray::operator[](int index) const +const char & SecureArray::operator[](int index) const { return at(index); } -char & QSecureArray::at(int index) +char & SecureArray::at(int index) { Botan::byte *bp = (Botan::byte *)(*d->buf) + index; char *cp = (char *)bp; return *cp; } -const char & QSecureArray::at(int index) const +const char & SecureArray::at(int index) const { const Botan::byte *bp = (const Botan::byte *)(*d->buf) + index; const char *cp = (const char *)bp; return *cp; } -char *QSecureArray::data() +char *SecureArray::data() { if(!d) return 0; @@ -322,7 +322,7 @@ char *QSecureArray::data() return ((char *)p); } -const char *QSecureArray::data() const +const char *SecureArray::data() const { if(!d) return 0; @@ -330,22 +330,22 @@ const char *QSecureArray::data() const return ((const char *)p); } -const char *QSecureArray::constData() const +const char *SecureArray::constData() const { return data(); } -int QSecureArray::size() const +int SecureArray::size() const { return (d ? d->size : 0); } -bool QSecureArray::isEmpty() const +bool SecureArray::isEmpty() const { return (size() == 0); } -QByteArray QSecureArray::toByteArray() const +QByteArray SecureArray::toByteArray() const { if(isEmpty()) return QByteArray(); @@ -355,7 +355,7 @@ QByteArray QSecureArray::toByteArray() const return buf; } -QSecureArray & QSecureArray::append(const QSecureArray &a) +SecureArray & SecureArray::append(const SecureArray &a) { int oldsize = size(); resize(oldsize + a.size()); @@ -363,29 +363,29 @@ QSecureArray & QSecureArray::append(const QSecureArray &a) return *this; } -QSecureArray & QSecureArray::operator+=(const QSecureArray &a) +SecureArray & SecureArray::operator+=(const SecureArray &a) { return append(a); } -void QSecureArray::fill(char fillChar, int fillToPosition) +void SecureArray::fill(char fillChar, int fillToPosition) { int len = (fillToPosition == -1) ? size() : qMin(fillToPosition, size()); if(len > 0) memset(data(), (int)fillChar, len); } -void QSecureArray::set(const QSecureArray &from) +void SecureArray::set(const SecureArray &from) { *this = from; } -void QSecureArray::set(const QByteArray &from) +void SecureArray::set(const QByteArray &from) { *this = from; } -bool operator==(const QSecureArray &a, const QSecureArray &b) +bool operator==(const SecureArray &a, const SecureArray &b) { if(&a == &b) return true; @@ -394,19 +394,19 @@ bool operator==(const QSecureArray &a, const QSecureArray &b) return false; } -bool operator!=(const QSecureArray &a, const QSecureArray &b) +bool operator!=(const SecureArray &a, const SecureArray &b) { return !(a == b); } -const QSecureArray operator+(const QSecureArray &a, const QSecureArray &b) +const SecureArray operator+(const SecureArray &a, const SecureArray &b) { - QSecureArray c = a; + SecureArray c = a; return c.append(b); } //---------------------------------------------------------------------------- -// QBigInteger +// BigInteger //---------------------------------------------------------------------------- static void negate_binary(char *a, int size) { @@ -428,18 +428,18 @@ static void negate_binary(char *a, int size) } } -class QBigInteger::Private : public QSharedData +class BigInteger::Private : public QSharedData { public: Botan::BigInt n; }; -QBigInteger::QBigInteger() +BigInteger::BigInteger() { d = new Private; } -QBigInteger::QBigInteger(int i) +BigInteger::BigInteger(int i) { d = new Private; if(i < 0) @@ -454,82 +454,82 @@ QBigInteger::QBigInteger(int i) } } -QBigInteger::QBigInteger(const char *c) +BigInteger::BigInteger(const char *c) { d = new Private; fromString(QString(c)); } -QBigInteger::QBigInteger(const QString &s) +BigInteger::BigInteger(const QString &s) { d = new Private; fromString(s); } -QBigInteger::QBigInteger(const QSecureArray &a) +BigInteger::BigInteger(const SecureArray &a) { d = new Private; fromArray(a); } -QBigInteger::QBigInteger(const QBigInteger &from) +BigInteger::BigInteger(const BigInteger &from) { *this = from; } -QBigInteger::~QBigInteger() +BigInteger::~BigInteger() { } -QBigInteger & QBigInteger::operator=(const QBigInteger &from) +BigInteger & BigInteger::operator=(const BigInteger &from) { d = from.d; return *this; } -QBigInteger & QBigInteger::operator+=(const QBigInteger &i) +BigInteger & BigInteger::operator+=(const BigInteger &i) { d->n += i.d->n; return *this; } -QBigInteger & QBigInteger::operator-=(const QBigInteger &i) +BigInteger & BigInteger::operator-=(const BigInteger &i) { d->n -= i.d->n; return *this; } -QBigInteger & QBigInteger::operator=(const QString &s) +BigInteger & BigInteger::operator=(const QString &s) { fromString(s); return *this; } -int QBigInteger::compare(const QBigInteger &n) const +int BigInteger::compare(const BigInteger &n) const { return ( (d->n).cmp( n.d->n, true) ); } -QTextStream &operator<<(QTextStream &stream, const QBigInteger& b) +QTextStream &operator<<(QTextStream &stream, const BigInteger& b) { stream << b.toString(); return stream; } -QSecureArray QBigInteger::toArray() const +SecureArray BigInteger::toArray() const { int size = d->n.encoded_size(Botan::BigInt::Binary); // return at least 8 bits if(size == 0) { - QSecureArray a(1); + SecureArray a(1); a[0] = 0; return a; } int offset = 0; - QSecureArray a; + SecureArray a; // make room for a sign bit if needed if(d->n.get_bit((size * 8) - 1)) @@ -550,14 +550,14 @@ QSecureArray QBigInteger::toArray() const return a; } -void QBigInteger::fromArray(const QSecureArray &_a) +void BigInteger::fromArray(const SecureArray &_a) { if(_a.isEmpty()) { d->n = Botan::BigInt(0); return; } - QSecureArray a = _a; + SecureArray a = _a; Botan::BigInt::Sign sign = Botan::BigInt::Positive; if(a[0] & 0x80) @@ -570,7 +570,7 @@ void QBigInteger::fromArray(const QSecureArray &_a) d->n.set_sign(sign); } -QString QBigInteger::toString() const +QString BigInteger::toString() const { QByteArray cs; try @@ -590,7 +590,7 @@ QString QBigInteger::toString() const return str; } -bool QBigInteger::fromString(const QString &s) +bool BigInteger::fromString(const QString &s) { if(s.isEmpty()) return false; @@ -615,3 +615,5 @@ bool QBigInteger::fromString(const QString &s) d->n.set_sign(Botan::BigInt::Positive); return true; } + +} diff --git a/src/support/console.cpp b/src/support/console.cpp index 6108c2a8..2c88b945 100644 --- a/src/support/console.cpp +++ b/src/support/console.cpp @@ -120,12 +120,12 @@ public slots: out.write(a); } - QSecureArray readSecure(int bytes = -1) + QCA::SecureArray readSecure(int bytes = -1) { return in.readSecure(bytes); } - void writeSecure(const QSecureArray &a) + void writeSecure(const QCA::SecureArray &a) { out.writeSecure(a); } @@ -206,7 +206,7 @@ public: ConsoleThread(QObject *parent = 0) : SyncThread(parent) { - qRegisterMetaType<QSecureArray>("QSecureArray"); + qRegisterMetaType<SecureArray>("QCA::SecureArray"); } ~ConsoleThread() @@ -255,14 +255,14 @@ public: mycall(worker, "write", QVariantList() << a); } - QSecureArray readSecure(int bytes = -1) + SecureArray readSecure(int bytes = -1) { - return qVariantValue<QSecureArray>(mycall(worker, "readSecure", QVariantList() << bytes)); + return qVariantValue<SecureArray>(mycall(worker, "readSecure", QVariantList() << bytes)); } - void writeSecure(const QSecureArray &a) + void writeSecure(const SecureArray &a) { - mycall(worker, "writeSecure", QVariantList() << qVariantFromValue<QSecureArray>(a)); + mycall(worker, "writeSecure", QVariantList() << qVariantFromValue<SecureArray>(a)); } void closeOutput() @@ -659,12 +659,12 @@ void ConsoleReference::write(const QByteArray &a) d->thread->write(a); } -QSecureArray ConsoleReference::readSecure(int bytes) +SecureArray ConsoleReference::readSecure(int bytes) { return d->thread->readSecure(bytes); } -void ConsoleReference::writeSecure(const QSecureArray &a) +void ConsoleReference::writeSecure(const SecureArray &a) { d->thread->writeSecure(a); } @@ -694,7 +694,7 @@ public: Synchronizer sync; ConsoleReference console; QString promptStr; - QSecureArray result; + SecureArray result; int at; bool done; bool enterMode; @@ -818,7 +818,7 @@ private slots: { while(console.bytesAvailable() > 0) { - QSecureArray buf = console.readSecure(1); + SecureArray buf = console.readSecure(1); if(buf.isEmpty()) break; @@ -861,17 +861,17 @@ ConsolePrompt::~ConsolePrompt() delete d; } -QSecureArray ConsolePrompt::getHidden(const QString &promptStr) +SecureArray ConsolePrompt::getHidden(const QString &promptStr) { ConsolePrompt p; p.d->promptStr = promptStr; if(!p.d->start(false)) - return QSecureArray(); + return SecureArray(); // convert result from utf16 to utf8, securely QTextCodec *codec = QTextCodec::codecForMib(106); QTextCodec::ConverterState cstate(QTextCodec::IgnoreHeader); - QSecureArray out; + SecureArray out; ushort *ustr = (ushort *)p.d->result.data(); int len = p.d->result.size() / sizeof(ushort); for(int n = 0; n < len; ++n) diff --git a/src/support/qpipe.cpp b/src/support/qpipe.cpp index 463bbb83..298cf1d4 100644 --- a/src/support/qpipe.cpp +++ b/src/support/qpipe.cpp @@ -1240,7 +1240,7 @@ int QPipeDevice::read(char *data, int maxsize) int num = size / CONSOLE_CHAREXPAND; #ifdef QPIPE_SECURE - QSecureArray destbuf(num * sizeof(ushort), 0); + SecureArray destbuf(num * sizeof(ushort), 0); #else QByteArray destbuf(num * sizeof(ushort), 0); #endif @@ -1436,8 +1436,8 @@ public: #ifdef QPIPE_SECURE bool secure; - QSecureArray sec_buf; - QSecureArray sec_curWrite; + SecureArray sec_buf; + SecureArray sec_curWrite; #endif QTimer readTrigger, writeTrigger, closeTrigger, writeErrorTrigger; bool canRead, activeWrite; @@ -1521,7 +1521,7 @@ public: } #ifdef QPIPE_SECURE - void appendArray(QSecureArray *a, const QSecureArray &b) + void appendArray(SecureArray *a, const SecureArray &b) { a->append(b); } @@ -1536,7 +1536,7 @@ public: } #ifdef QPIPE_SECURE - void takeArray(QSecureArray *a, int len) + void takeArray(SecureArray *a, int len) { char *p = a->data(); int newsize = a->size() - len; @@ -1588,9 +1588,9 @@ public: } #ifdef QPIPE_SECURE - QSecureArray readSecure(QSecureArray *buf, int bytes) + SecureArray readSecure(SecureArray *buf, int bytes) { - QSecureArray a; + SecureArray a; if(bytes == -1 || bytes > buf->size()) { a = *buf; @@ -1606,7 +1606,7 @@ public: return a; } - void writeSecure(QSecureArray *buf, const QSecureArray &a) + void writeSecure(SecureArray *buf, const SecureArray &a) { appendArray(buf, a); setupNextWrite(); @@ -1716,7 +1716,7 @@ public slots: #ifdef QPIPE_SECURE if(secure) { - QSecureArray a(max); + SecureArray a(max); ret = pipe.read(a.data(), a.size()); if(ret >= 1) { @@ -1947,12 +1947,12 @@ void QPipeEnd::write(const QByteArray &buf) } #ifdef QPIPE_SECURE -QSecureArray QPipeEnd::readSecure(int bytes) +SecureArray QPipeEnd::readSecure(int bytes) { return d->readSecure(&d->sec_buf, bytes); } -void QPipeEnd::writeSecure(const QSecureArray &buf) +void QPipeEnd::writeSecure(const SecureArray &buf) { if(!isValid() || d->closing) return; @@ -1979,13 +1979,13 @@ QByteArray QPipeEnd::takeBytesToWrite() } #ifdef QPIPE_SECURE -QSecureArray QPipeEnd::takeBytesToWriteSecure() +SecureArray QPipeEnd::takeBytesToWriteSecure() { // only call this on inactive sessions if(isValid()) - return QSecureArray(); + return SecureArray(); - QSecureArray a = d->sec_buf; + SecureArray a = d->sec_buf; d->sec_buf.clear(); return a; } diff --git a/tools/qcatool/main.cpp b/tools/qcatool/main.cpp index 474e125b..95035daf 100644 --- a/tools/qcatool/main.cpp +++ b/tools/qcatool/main.cpp @@ -166,7 +166,7 @@ public: bool warned; bool have_pass; bool used_pass; - QSecureArray pass; + QCA::SecureArray pass; PassphrasePrompt() { @@ -178,7 +178,7 @@ public: handler.start(); } - void setExplicitPassword(const QSecureArray &_pass) + void setExplicitPassword(const QCA::SecureArray &_pass) { have_pass = true; used_pass = false; @@ -252,7 +252,7 @@ private slots: else str = QString("Enter %1").arg(type); - QSecureArray result = QCA::ConsolePrompt::getHidden(str); + QCA::SecureArray result = QCA::ConsolePrompt::getHidden(str); handler.submitPassword(id, result); } else if(e.type() == QCA::Event::Token) @@ -310,9 +310,9 @@ protected: } }; -static bool promptForNewPassphrase(QSecureArray *result) +static bool promptForNewPassphrase(QCA::SecureArray *result) { - QSecureArray out = QCA::ConsolePrompt::getHidden("Enter new passphrase"); + QCA::SecureArray out = QCA::ConsolePrompt::getHidden("Enter new passphrase"); if(QCA::ConsolePrompt::getHidden("Confirm new passphrase") != out) { fprintf(stderr, "Error: confirmation does not match original entry.\n"); @@ -639,7 +639,7 @@ static QCA::CertificateOptions promptForCertAttributes(bool advanced, bool req) while(1) { QString str = prompt_for("Serial Number"); - QBigInteger num; + QCA::BigInteger num; if(str.isEmpty() || !num.fromString(str)) { printf("'%s' is not a valid entry.\n", qPrintable(str)); @@ -1448,7 +1448,7 @@ static QCA::KeyStoreEntry get_E(const QString &name, bool nopassiveerror = false return entry; } -static QCA::PrivateKey get_K(const QString &name, const QSecureArray &pass) +static QCA::PrivateKey get_K(const QString &name, const QCA::SecureArray &pass) { QCA::PrivateKey key; @@ -1517,7 +1517,7 @@ static QCA::KeyBundle get_X(const QString &name) // try file // TODO: remove passphrase arg after api update - QCA::KeyBundle key = QCA::KeyBundle::fromFile(name, QSecureArray()); + QCA::KeyBundle key = QCA::KeyBundle::fromFile(name, QCA::SecureArray()); if(key.isNull()) { printf("Error: unable to read/process keybundle file.\n"); @@ -1631,7 +1631,7 @@ int main(int argc, char **argv) bool have_pass = false; bool have_newpass = false; - QSecureArray pass, newpass; + QCA::SecureArray pass, newpass; bool allowprompt = true; bool ordered = false; bool debug = false;