Hello Ignace, list, About the encoding API RFC: https://wiki.php.net/rfc/data_encoding_api
I think this API can have a positive impact of security of PHP applications: 1. the current base64_decode is very tolerant towards invalid input, causing both functional and security problems: https://github.com/php/php-src/issues/20187 2. the proposed base58 and URL-safe base64 encode make it easier to create secure tokens that are easy to use. The RFC contains several errors in its examples. For example in the base16 encoding, $encodedWithSpaces contains "2c", a comma, but the decoded string does not contain a comma. I did my best to correct these issues in this repository: https://github.com/Sjord/php-encoding-rfc-examples One of the examples calls base85_decode with DecodingMode::Forgiving. However, the signature of the base85_decode function (under "The following Base85 functions are added") does not have this parameter. Should it have this parameter? The RFC proposes an option to choose a constant-time implementation. I am not sure whether this is a good idea. Constant-time algorithms are pretty difficult to develop and maintain. The benefit is questionable: for these types of timing attacks, the attacker needs to be able to run code on the same CPU as the victim application, which is not really common in how PHP is used. If we would support this, I think it would be better to forward it internally to libsodium or openssl, instead of developing this within PHP. LLMs and I have created an implementation here: https://github.com/php/php-src/pull/23195. This was meant to experiment with the API and try out the RFC, and not necessarily as the actual implementation that gets finalized and merged. For a while I also considered whether to support the base85 algorithm specified in RFC 1924 https://www.rfc-editor.org/info/rfc1924/. It took me quite some time to figure out that RFC was submitted in jest as an April fool's joke. Regards, Sjoerd Langkemper
