PHP requires integer typehints to be written "int" and does not
allow "integer" as an alias. This changes type error messages to
match the actual type name and avoids confusing messages like
"must be of the type integer, integer given".
Using ecalloc() to create objects is expensive, because the
dynamic-size memset() is unreasonably slow. Make sure we only
zero the main object structure with known size, as the properties
are intialized separately anyway.
Technically we do not need to zero the embedded zend_object
structure either, but as long as the memset argument is constant,
a couple more bytes don't really matter.
Fix hash_copy() tests by using correct size for sha3 context
sync config.w32 with with new sha3 files
Move dependency on KeccakHash.h to hash_sha3.c so we do not rely on it to install php_hash_sha3.h
Allocate memory for KeccacInstance in hash_sha3.c so header files do not need to know about implementation details while keeping API backward compatible to original sha3 implementation
Fix memory leak because hash_copy is called after init which already allocates the hashinstance
This allows better type hinting as well as potentially adding
methods in a followup diff.
Original patch by Rouven Weßling (github.com/realityking)
Heavily modified by Sara Golemon (github.com/sgolemon)
load64() counted down from 7..0, but the decrement turned 0 into 255.
This means the loop would never terminate on Big Endian systems.
Just use signed char integers since we're only dealing with values from 0..7 anyway.
Closes https://bugs.php.net/bug.php?id=73282
We're not only checking that hash_update_file() succeeds, but rather
that it properly works.
Furthermore, we fix the SKIPIF section – we don't need mhash to run the
test, and we don't need to check for unsupported PHP versions.
We also shorten the test name to avoid cluttering the test reports with
unnecessary detail.