I think it’s reasonable to require a two’s complement implementation (we could verify it in a configure script, and in unit tests)
If you really have some exotic system, then you might not run ./configure or the tests either. I think the safest way is to use some C static assert hack e.g., https://stackoverflow.com/a/56742411. These looks very ugly but they work and the ugliness is hidden behind a macro. We should also check other simple assumptions such as sizeof(int) == 4
etc. Alternatively, we could perform some self-tests at context creation time, and call the error callback if they fail. The simple ones will be optimized away by the compiler, and we should have some kind of self-test anyway if we want to implement a SHA256 override (see the discussion in #702).
Originally posted by @real-or-random in #767 (comment) @gmaxwell notes there that the static assert hack may not be the best idea.