RFC Errata
RFC 1321, "The MD5 Message-Digest Algorithm", April 1992
Note: This RFC has been updated by RFC 6151
Source of RFC: pem (sec)
Errata ID: 7814
Status: Reported
Type: Technical
Publication Format(s) : TEXT
Reported By: Nilstrieb
Date Reported: 2024-02-19
Appendix A.1 says:
/* POINTER defines a generic pointer type */ typedef unsigned char *POINTER; /* UINT2 defines a two byte word */ typedef unsigned short int UINT2; /* UINT4 defines a four byte word */ typedef unsigned long int UINT4;
It should say:
#include <stdint.h> /* POINTER defines a generic pointer type */ typedef unsigned char *POINTER; /* UINT2 defines a two byte word */ typedef uint16_t UINT2; /* UINT4 defines a four byte word */ typedef uint32_t UINT4;
Notes:
On some modern systems like x86-64 Linux, unsigned long int is 8 bytes, which causes the original implementation to be incorrect.