zdigest(3)

zdigest(3)

CZMQ Manual - CZMQ/2.2.1

Name

zdigest - provides hashing functions (SHA-1 at present)

Synopsis

//  Constructor - creates new digest object, which you use to build up a
//  digest by repeatedly calling zdigest_update() on chunks of data.
CZMQ_EXPORT zdigest_t *
    zdigest_new (void);

//  Destroy a digest object
CZMQ_EXPORT void
    zdigest_destroy (zdigest_t **self_p);

//  Add buffer into digest calculation
CZMQ_EXPORT void
    zdigest_update (zdigest_t *self, byte *buffer, size_t length);

//  Return final digest hash data. If built without crypto support, returns
//  NULL.
CZMQ_EXPORT byte *
    zdigest_data (zdigest_t *self);

//  Return final digest hash size
CZMQ_EXPORT size_t
    zdigest_size (zdigest_t *self);

//  Return digest as printable hex string; caller should not modify nor
//  free this string. After calling this, you may not use zdigest_update()
//  on the same digest. If built without crypto support, returns NULL.
CZMQ_EXPORT char *
    zdigest_string (zdigest_t *self);

//  Self test of this class
CZMQ_EXPORT int
    zdigest_test (bool verbose);

Description

The zdigest class generates a hash from zchunks of data. The current algorithm is SHA-1, chosen for speed. We are aiming to generate a unique digest for a file, and there are no security issues in this use case.

The current code depends on OpenSSL, which might be replaced by hard coded SHA-1 implementation to reduce build dependencies.

Example

From zdigest_test method

 byte *buffer = (byte *) zmalloc (1024);
 memset (buffer, 0xAA, 1024);

 zdigest_t *digest = zdigest_new ();
 zdigest_update (digest, buffer, 1024);
 byte *data = zdigest_data (digest);
 assert (data [0] == 0xDE);
 assert (data [1] == 0xB2);
 assert (data [2] == 0x38);
 assert (data [3] == 0x07);
 assert (streq (zdigest_string (digest),
 "DEB23807D4FE025E900FE9A9C7D8410C3DDE9671"));
 zdigest_destroy (&digest);  free (buffer);

See also

czmq(7)

Authors

The CZMQ manual was written by Pieter Hintjens<moc.xitami|hp#moc.xitami|hp>.

Resources

Main web site: http://czmq.zeromq.org/

Report bugs to the ØMQ development mailing list: <gro.qmorez.stsil|ved-qmorez#gro.qmorez.stsil|ved-qmorez>

Copyright

Copyright (c) 1991-2014 iMatix and Contributors. License LGPLv3+: GNU LGPL 3 or later <http://gnu.org/licenses/lgpl.html>. This is free software: you are free to change it and redistribute it. There is NO WARRANTY, to the extent permitted by law. For details see the files COPYING and COPYING.LESSER included with the CZMQ distribution.