-void md5_init(md5_context *context);
-void md5_update(md5_context *context, const byte *buf, uns len);
-/* The data are stored inside the context */
+void md5_init(md5_context *context); /** Initialize the MD5 hashing algorithm in @context. **/
+/**
+ * Push another @len bytes of data from @buf to the MD5 hash
+ * represented by @context. You can call it multiple time on the same
+ * @context without reinitializing it and the result will be the same
+ * as if you concatenated all the data together and fed them here all at
+ * once.
+ */
+void md5_update(md5_context *context, const byte *buf, uint len);
+/**
+ * Call this after the last @md5_update(). It will terminate the
+ * algorithm and return a pointer to the result.
+ *
+ * Note that the data it points to are stored inside the @context, so
+ * if you use it to compute another hash or it ceases to exist, the
+ * pointer becomes invalid.
+ *
+ * To convert the hash to its usual hexadecimal representation, see
+ * <<string:mem_to_hex()>>.
+ */