diff options
author | Sune Vuorela <sune@vuorela.dk> | 2011-12-20 19:46:28 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-22 19:47:47 +0100 |
commit | ef03396072e3959e7d03f55d91c2ffa1faa51d8d (patch) | |
tree | df07f15b52e8e44f151c3b856c3b15c0bc8587bb /src | |
parent | eff09a2794bcb4b5373fcee85faa498b36fac27c (diff) |
QCryptographicHash: allow to hash the content of a QIODevice
This adds a new function (and tests) to give the possibility of doing a
QCryptographicHash of a QIODevice, like a QFile or whatever people
needs.
It is a quite handy overload in many cases.
Change-Id: I22fd272f05571844641b3daefcc6746be4e5c7c3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/tools/qcryptographichash.cpp | 23 | ||||
-rw-r--r-- | src/corelib/tools/qcryptographichash.h | 2 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp index 89b3bab7c6..e5ac73c3f5 100644 --- a/src/corelib/tools/qcryptographichash.cpp +++ b/src/corelib/tools/qcryptographichash.cpp @@ -50,6 +50,7 @@ #include "../../3rdparty/md4/md4.h" #include "../../3rdparty/md4/md4.cpp" #include "../../3rdparty/sha1/sha1.cpp" +#include <qiodevice.h> QT_BEGIN_NAMESPACE @@ -155,6 +156,28 @@ void QCryptographicHash::addData(const QByteArray &data) } /*! + Reads the data from the open QIODevice \a device until it ends + and hashes it. Returns true if reading was successful. + */ +bool QCryptographicHash::addData(QIODevice* device) +{ + if (!device->isReadable()) + return false; + + if (!device->isOpen()) + return false; + + char buffer[1024]; + int length; + + while ((length = device->read(buffer,sizeof(buffer))) > 0) + addData(buffer,length); + + return device->atEnd(); +} + + +/*! Returns the final hash value. \sa QByteArray::toHex() diff --git a/src/corelib/tools/qcryptographichash.h b/src/corelib/tools/qcryptographichash.h index b40e8cc25b..15ebd22418 100644 --- a/src/corelib/tools/qcryptographichash.h +++ b/src/corelib/tools/qcryptographichash.h @@ -51,6 +51,7 @@ QT_BEGIN_NAMESPACE QT_MODULE(Core) class QCryptographicHashPrivate; +class QIODevice; class Q_CORE_EXPORT QCryptographicHash { @@ -68,6 +69,7 @@ public: void addData(const char *data, int length); void addData(const QByteArray &data); + bool addData(QIODevice* device); QByteArray result() const; |