On Sat, Jan 08, 2022 at 08:12:50AM -0800, Adrian Klaver wrote: > On 1/8/22 05:21, Ali Koca wrote: >> 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); > > What they do is explained in md5_common.c. pg_md5_hash() and pg_md5_binary() do the same thing, by computing a MD5. pg_md5_hash() computes it as a string in hex format, meaning that it is 33-character long with the final trailing '\0'. pg_md5_binary() computes 16 raw bytes. pg_md5_encrypt() is a utility wrapper that does the operation of pg_md5_hash() based on a password and a salt, used at authentication time for MD5. Its result is a 36-byte long string, prefixed with "md5" and a 33-byte long hex string. Those routine names are historic. -- Michael
Attachment:
signature.asc
Description: PGP signature