January 11 2016 4:27 AM, "Ingo Weinhold" <ingo_weinhold@xxxxxx> wrote:
On 11.01.2016 03:51, Alexander von Gluck IV wrote:
Feedback *highly* welcome.
I've only invested a day or so into it... so if everyone hates the idea it's
no big deal :-)
When creating new Haiku APIs that already exist in mature tool kits, I can
wholeheartedly recommend
looking at and steal^Hborrowing ideas from those. In this case e.g. Java [1]
and Qt [2]. Two issues
are:
* You don't want to have a one-shot method only. When hashing a file or any
kind of stream one
usually processes the data iteratively. Therefore Java and Qt offer separate
methods for processing
data iteratively (update()/addData()) and computing the final hash
(digest()/result()). Additional
one-shot convenience methods (possibly even static ones) certainly don't
harm, though.
* You don't want to return the hash as a hex string (only/by default). That
is a representation
mostly used for human consumption. Unfortunately lacking an appropriate Haiku
API class there isn't
a convenient way to return byte arrays of unknown size (I pre-allocated the
array and added a
method to return the size in headers/private/shared/SHA256.h). Obviously a
method to convert a byte
array to a BString is needed as well, but it would fit better as a (static)
utility method in
BString.
CU, Ingo
[1] https://docs.oracle.com/javase/7/docs/api/java/security/MessageDigest.html
[2] http://doc.qt.io/qt-5/qcryptographichash.html