You’re hashing raw bytes of opaque data, not doing math with numbers. What’s expected is a pointer to a piece of memory - if this were c++ instead of a void* and size_t you’d probably get at least one overload taking something likeconst std::vector<std::byte>& data.
I completely forgot about this thread. Yes it is as you say.
I did eventually read some parts of the OpenSSL source code. It is macro definitions of macro definitions all the way down, and for a newbie like me it was kind of hard to untangle.