md5.h

All headers

MD5.

  1. MD5_CBLOCK
  2. MD5_DIGEST_LENGTH
  3. MD5_STATE_MAX_BYTES
  4. MD5_Init
  5. MD5_Update
  6. MD5_Final
  7. MD5
  8. MD5_marshal_state
  9. MD5_parse_state
  10. MD5_Transform
  11. md5_state_st

MD5_CBLOCK is the block size of MD5.

#define MD5_CBLOCK 64

MD5_DIGEST_LENGTH is the length of an MD5 digest.

#define MD5_DIGEST_LENGTH 16

MD5_STATE_MAX_BYTES is the maximum length, in bytes, of a marshaled MD5_CTX state.

#define MD5_STATE_MAX_BYTES (16 + 8 + MD5_CBLOCK - 1)

MD5_Init initialises md5 and returns one.

OPENSSL_EXPORT int MD5_Init(MD5_CTX *md5);

MD5_Update adds len bytes from data to md5 and returns one.

OPENSSL_EXPORT int MD5_Update(MD5_CTX *md5, const void *data, size_t len);

MD5_Final adds the final padding to md5 and writes the resulting digest to out, which must have at least MD5_DIGEST_LENGTH bytes of space. It returns one.

OPENSSL_EXPORT int MD5_Final(uint8_t out[MD5_DIGEST_LENGTH], MD5_CTX *md5);

MD5 writes the digest of len bytes from data to out and returns out. There must be at least MD5_DIGEST_LENGTH bytes of space in out.

OPENSSL_EXPORT uint8_t *MD5(const uint8_t *data, size_t len,
                            uint8_t out[MD5_DIGEST_LENGTH]);

MD5_marshal_state serializes the intermediate hash state in md5 into out, sets *out_len to the number of bytes written (at most MD5_STATE_MAX_BYTES), and returns one. md5 is not modified. The serialized format is guaranteed to be backward- and forward-compatible across versions of BoringSSL.

OPENSSL_EXPORT int MD5_marshal_state(const MD5_CTX *md5,
                                     uint8_t out[MD5_STATE_MAX_BYTES],
                                     size_t *out_len);

MD5_parse_state deserializes in_len bytes from in (in the format produced by MD5_marshal_state) into md5 and returns one. If in is malformed, it returns zero and leaves md5 unmodified. The serialized format is guaranteed to be backward- and forward-compatible across versions of BoringSSL.

OPENSSL_EXPORT int MD5_parse_state(MD5_CTX *md5, const uint8_t *in,
                                   size_t in_len);

MD5_Transform is a low-level function that performs a single, MD5 block transformation using the state from md5 and 64 bytes from block.

OPENSSL_EXPORT void MD5_Transform(MD5_CTX *md5,
                                  const uint8_t block[MD5_CBLOCK]);
struct md5_state_st {
  uint32_t h[4];
  uint32_t Nl, Nh;
  uint8_t data[MD5_CBLOCK];
  unsigned num;
};