L

libtrhash

Hashing functions for the taskrambler framework.

passed 3a0ace0e rename lib · by Georg Hopp

LIBTRHASH

This bundles some useful hashing and encoding functions. Part of this comes from taskrambler, other are added later.

Currently it contains code to create an sha1 hash, Uuids Version 1, 3 and 5 and code to hexencode or decode in a charset independent way. The idea for this is taken from the base64 code in the linux core utils.

Hashing: sha1 md5

When OpenSSL is available it is used for sha1 or md5 creation because it is really hard to outperform it. Anyway, if for some reason OpenSSL is not available I have alternative code in place here.

The C implementation without SSE intrisics is created by myself. The vectorized SSE intrisics code is public domain and from this page.

On my system the implementation without intrisics is 4 times slower than the OpenSSL code whereas the intrisics code is just marginally slower.

In future I will add own md5 code to make this library independet from OpenSSL if needed.

Uuid

This is just an addon on to the utils-linux implementation of DCE uuid's done by Theodore Y. Ts'o. It wraps uuids in my class system right now and adds version 3 and version 5 uuid.

Anyway, this will only work on linux as it's build around the util-linux code.

encoding

Currently this contains code hexencode and hexdecode data in a charset independent way. As a special case of hexdecoding a urldecode function is also available.

In the near future code to urlencode and base64 encode and decode code will be added.

INSTALLATION

This can be installed via the usual configure, make, make install cycle. For gentoo users am ebuild is added under docs.

API DOC

To generate the api doc a patched version of doxygen is neccessary. A patch is included under docs.

make docs creates the api doc.

USAGE

API

EXAMPLE

TESTING

No tests right now... sorry.

REQUIREMENTS

CONTRIBUTION

I would really like to see some people possibly interested in this stuff. I think it contains some really interesting ideas.

If you like to contribute anyway, make a fork, do your changes and generate a pull request. Or simply contact me on georg@steffers.org.