Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
ZDIGEST(3)			   CZMQ Manual			      ZDIGEST(3)

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

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'.

DESCRIPTION
     The  zdigest class generates a hash from zchunks of data. The current algo-
     rithm 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 ();
	 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

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

RESOURCES
     Main web site:

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

COPYRIGHT
     Copyright	(c)  the Contributors as noted in the AUTHORS file. This file is
     part of CZMQ, the high-level C  binding  for  0MQ:  http://czmq.zeromq.org.
     This  Source  Code  Form  is subject to the terms of the Mozilla Public Li-
     cense, v. 2.0. If a copy of the MPL was not distributed with this file, You
     can obtain one at http://mozilla.org/MPL/2.0/. LICENSE  included  with  the
     czmq distribution.

NOTES
      1. zeromq-dev@lists.zeromq.org
	 mailto:zeromq-dev@lists.zeromq.org

CZMQ 4.2.1			   08/27/2026			      ZDIGEST(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=zdigest&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help