.. _tor_digest:

Digests code in ``tor``
==========================

In ``src/lib/defs/digest_sizes.h``::

  #define DIGEST_LEN 20
  /** Length of the output of our second (improved) message digests.  (For now
   * this is just sha256, but it could be any other 256-bit digest.) */
  #define DIGEST256_LEN 32
  /** Length of the output of our 64-bit optimized message digests (SHA512). */
  #define DIGEST512_LEN 64

In ``src/lib/crypt_ops/crypto_digest.h``::

  #define BASE64_DIGEST_LEN 27
  /** Length of a sha256 message digest when encoded in base64 with trailing =
   * signs removed. */
  #define BASE64_DIGEST256_LEN 43

  /** Length of hex encoding of SHA1 digest, not including final NUL. */
  #define HEX_DIGEST_LEN 40
  /** Length of hex encoding of SHA256 digest, not including final NUL. */
  #define HEX_DIGEST256_LEN 64

In ``src/lib/crypt_ops/crypto_digest.c``::

  crypto_digest256

Encoding
---------

In ``src/lib/encoding/binascii.c``::

  base16_encode

In ``src/lib/crypt_ops/crypto_format.c``::

  digest_to_base64
  digest_to_base16
  digest256_to_base64