Today I saw a function prototype of the form(few initial lines are added for completeness)
typedef unsigned char md5_byte_t; /* 8-bit byte */
typedef unsigned int md5_word_t; /* 32-bit word */
/* Define the state of the MD5 Algorithm. */
typedef struct md5_state_s {
md5_word_t count[2]; /* message length in bits, lsw first */
md5_word_t abcd[4]; /* digest buffer */
md5_byte_t buf[64]; /* accumulate block */
} md5_state_t;
void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
This has been taken form md5 implementation of L. Peter Deutsch. From what I know writing 16 in the prototype does not make any sense. So why is it included here
Is it just a indication to programmer that whatever pointer or array you pass to the function it will only take into account the first 16 bytes of it. What does it actually signify here. here is the link to the implementation hosted at github