#
ce2d2636 |
| 05-Feb-2024 |
Tim Düsterhus |
random: Reuse the seed128/seed256 helpers when seeding using the CSPRNG (#13311) Instead of writing to the engine's state struct directly, use the helpers for consistency.
|
#
97b3b455 |
| 01-Feb-2024 |
Tim Düsterhus |
random: Move CSPRNG API into php_random_csprng.h (#13290) This allows consumers of just the CSPRNG to include a much smaller header. It also allows to verify at a glance whether a source
random: Move CSPRNG API into php_random_csprng.h (#13290) This allows consumers of just the CSPRNG to include a much smaller header. It also allows to verify at a glance whether a source file might use non-secure randomness. This commit includes the new header wherever the CSPRNG is used, possibly replacing the inclusion of php_random.h if nothing else is used, but also includes it in the main php_random.h header for compatibility. Somewhat related to 45f8cfaf104f504340b0073b9736bb50a88d70a1, 2b30f18708b4f73d2c1d29d3a92a606ebdc5ac4c, and b14dd85dca3b67a5462f5ed9b6aa0dc22beb615c.
show more ...
|
#
f39357b0 |
| 29-Jan-2024 |
Tim Düsterhus |
random: Call int-seeding functions directly As the `__construct()` implementation is engine-specific anyway, we know what engine were dealing with and can just call the seeding function
random: Call int-seeding functions directly As the `__construct()` implementation is engine-specific anyway, we know what engine were dealing with and can just call the seeding function directly instead of going through a function pointer. This likely improves construction performance a little, but I did not measure.
show more ...
|
#
304c9c3d |
| 29-Jan-2024 |
Tim Düsterhus |
random: Add explicitly named seed64() helper for xoshiro256**
|
#
79f648ac |
| 09-Jan-2024 |
Tim Düsterhus |
random: Narrow the parameter types of seed128/seed256 These internal-only functions accepted a `php_random_status`, just to extract the internal state from the `state` pointer. Make them
random: Narrow the parameter types of seed128/seed256 These internal-only functions accepted a `php_random_status`, just to extract the internal state from the `state` pointer. Make them take the state struct directly to improve type safety.
show more ...
|
#
db68565d |
| 09-Jan-2024 |
Tim Düsterhus |
random: Dynamically calculate the state size when seeding with CSPRNG Instead of hardcoding struct names, or even sizes, we can just determine the actual size of the target structure usi
random: Dynamically calculate the state size when seeding with CSPRNG Instead of hardcoding struct names, or even sizes, we can just determine the actual size of the target structure using sizeof().
show more ...
|
#
162e1dce |
| 09-Jan-2024 |
Tim Düsterhus |
random: Optimize data flow for the `generate` function of native engines (#13043) Instead of returning the generated `uint64_t` and providing the size (i.e. the number of bytes of the ge
random: Optimize data flow for the `generate` function of native engines (#13043) Instead of returning the generated `uint64_t` and providing the size (i.e. the number of bytes of the generated value) out-of-band via the `last_generated_size` member of the `php_random_status` struct, the `generate` function is now expected to return a new `php_random_result` struct containing both the `size` and the `result`. This has two benefits, one for the developer: It's no longer possible to forget setting `last_generated_size` to the correct value, because it now happens at the time of returning from the function. and the other benefit is for performance: The `php_random_result` struct will be returned as a register pair, thus the `size` will be directly available without reloading it from main memory. Checking a simplified version of `php_random_range64()` on Compiler Explorer (“Godbolt”) with clang 17 shows a single change in the resulting assembly showcasing the improvement (https://godbolt.org/z/G4WjdYxqx): - add rbp, qword ptr [r14] + add rbp, rdx Empirical testing confirms a measurable performance increase for the `Randomizer::getBytes()` method: <?php $e = new Random\Engine\Xoshiro256StarStar(0); $r = new Random\Randomizer($e); var_dump(strlen($r->getBytes(100000000))); goes from 250ms (before the change) to 220ms (after the change). While generating 100 MB of random data certainly is not the most common use case, it confirms the theoretical improvement in practice.
show more ...
|
#
ddf7a5d4 |
| 05-Sep-2022 |
Tim Düsterhus |
random: Validate that the arrays do not contain extra elements when unserializing (#9458) * Apply `var_dump()` in 02_engine/all_serialize_error.phpt This ensures that an undetected
random: Validate that the arrays do not contain extra elements when unserializing (#9458) * Apply `var_dump()` in 02_engine/all_serialize_error.phpt This ensures that an undetected serialization error is clear identifiable in the output. * random: Validate that the arrays do not contain extra elements when unserializing
show more ...
|
#
8e2d4e6b |
| 16-Aug-2022 |
David CARLIER |
random left rotates annotating as const. (#9346)
|
#
1cd2d731 |
| 05-Aug-2022 |
Tim Düsterhus |
Handle all-zero state in Xoshiro256** (#9250) - Retry if the CSPRNG generates a zero state. - Throw ValueError if the user passes a zero state. Fixes GH-9249
|
#
3331832b |
| 02-Aug-2022 |
Tim Düsterhus |
Add ext/random Exception hierarchy (#9220) * Add Random\Random{Error,Exception} and Random\BrokenRandomEngineError * Throw BrokenRandomEngineError * Throw RandomException o
Add ext/random Exception hierarchy (#9220) * Add Random\Random{Error,Exception} and Random\BrokenRandomEngineError * Throw BrokenRandomEngineError * Throw RandomException on seeding failure * Throw RandomException when CSPRNG fails * Remove unused include from ext/random/engine_combinedlcg.c * Remove unused include from ext/random/engine_secure.c * Remove unused include from ext/random/random.c * [ci skip] Add ext/random Exception hierarchy to NEWS * [ci skip] Add the change of Exception for random_(int|bytes) to UPGRADING
show more ...
|
#
53ca24d4 |
| 31-Jul-2022 |
Tim Düsterhus |
Improve phrasing in argument value errors in ext/random (#9206) This rephrases the error message for argument errors to be a proper English sentence. Co-authored-by: Máté Kocsis
Improve phrasing in argument value errors in ext/random (#9206) This rephrases the error message for argument errors to be a proper English sentence. Co-authored-by: Máté Kocsis <kocsismate@woohoolabs.com>
show more ...
|
#
5aca25a1 |
| 30-Jul-2022 |
Tim Düsterhus |
[ci skip] Improve error message of an engine fails to seed from the CSPRNG (#9160)
|
#
e4c89498 |
| 21-Jul-2022 |
Go Kudo |
[ci skip] Update EXTENSIONS and Author(s) in ext/random (#9074) php.net account is better suited for this cases.
|
#
4d8dd8d2 |
| 19-Jul-2022 |
Go Kudo |
Implement Random Extension https://wiki.php.net/rfc/rng_extension https://wiki.php.net/rfc/random_extension_improvement
|