logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

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

Authors

       The czmq manual was written by the authors in the AUTHORS file.

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

Fromzdigest_testmethod.

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

           zdigest_t *digest = zdigest_new ();
           assert (digest);
           zdigest_update (digest, buffer, 1024);
           const 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);
           freen (buffer);

           #if defined (__WINDOWS__)
           zsys_shutdown();
           #endif

Name

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

Notes

Resources

       Main web site:

       Report bugs to the email <zeromq-dev@lists.zeromq.org[1]>

Synopsis

       //  This is a stable class, and may not change except for emergencies. It
       //  is provided in stable builds.
       //  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, const byte *buffer, size_t length);

       //  Return final digest hash data. If built without crypto support,
       //  returns NULL.
       CZMQ_EXPORT const 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 void
           zdigest_test (bool verbose);

       Please add '@interface' section in './../src/zdigest.c'.

See Also