I can't understand functions in md5.h, these are seemingly little bit
weird. Such as:
/* Utilities common to all the MD5 implementations,
as of md5_common.c */
extern bool pg_md5_hash(const void *buff, size_t len, char *hexsum);
extern bool pg_md5_binary(const void *buff, size_t len, void *outbuf);
extern bool pg_md5_encrypt(const char *passwd, const char *salt,
size_t salt_len, char *buf);