crypto-algorithms
crypto-algorithms copied to clipboard
There is no 32-bit WORD. That's called a DWORD
I noticed that I can't build sha256.c and sha256.h in Windows, because WORD is redefined with different data types.
There is no 32-bit WORD. A WORD is always 16-bit, and a DWORD would be 32-bit.
~~To fix this issue:~~
~~Change~~
typedef unsigned int WORD; // 32-bit word, change to "long" for 16-bit machines
~~To:~~
typedef unsigned long DWORD;
~~Then, change all WORD to DWORD in the code.~~
This does not only affect SHA256, but most of the other files too.
~~Actually, this is the correct definition. Now it also works on macOS:~~
#include <stdint.h>
typedef uint32_t DWORD;
Errata 2, now, after changing it to uint32_t, it compiles on MacOS, but now doesn't compile on Win32, because there is an incompatibility with LPDWORD*.
So, the correct and ONLY fix is to change sha256.h and sha256.c (and other files) to replace WORD with uint32_t. WORD and DWORD are reserved by the Microsoft API.