feat/openssl encrypt decrypt - #669
Open
nahime0 wants to merge 8 commits into
Open
Conversation
Lock scope for the first PR: AES matrix, helpers, AOT + magician paths.
|
Too many files changed for review (618 files, 100 file limit). |
nahime0
marked this pull request as ready for review
August 5, 2026 18:22
…decrypt # Conflicts: # CHANGELOG.md # Cargo.lock # crates/elephc-magician/src/interpreter/builtins/string/mod.rs # crates/elephc-magician/src/interpreter/constants.rs # docs/internals/builtins/_internal/__elephc_gmmktime_raw.md # docs/internals/builtins/_internal/__elephc_hash_ctx_copy.md # docs/internals/builtins/_internal/__elephc_hash_ctx_final.md # docs/internals/builtins/_internal/__elephc_hash_ctx_init.md # docs/internals/builtins/_internal/__elephc_hash_ctx_update.md # docs/internals/builtins/_internal/__elephc_mktime_raw.md # docs/internals/builtins/_internal/__elephc_phar_bzip2_archive.md # docs/internals/builtins/_internal/__elephc_phar_decompress_archive.md # docs/internals/builtins/_internal/__elephc_phar_get_file_metadata.md # docs/internals/builtins/_internal/__elephc_phar_get_metadata.md # docs/internals/builtins/_internal/__elephc_phar_get_signature_hash.md # docs/internals/builtins/_internal/__elephc_phar_get_signature_type.md # docs/internals/builtins/_internal/__elephc_phar_get_stub.md # docs/internals/builtins/_internal/__elephc_phar_gzip_archive.md # docs/internals/builtins/_internal/__elephc_phar_list_entries.md # docs/internals/builtins/_internal/__elephc_phar_set_compression.md # docs/internals/builtins/_internal/__elephc_phar_set_file_metadata.md # docs/internals/builtins/_internal/__elephc_phar_set_metadata.md # docs/internals/builtins/_internal/__elephc_phar_set_stub.md # docs/internals/builtins/_internal/__elephc_phar_set_zip_password.md # docs/internals/builtins/_internal/__elephc_phar_sign_hash.md # docs/internals/builtins/_internal/__elephc_phar_sign_openssl.md # docs/internals/builtins/_internal/__elephc_ptr_is_null.md # docs/internals/builtins/_internal/__elephc_ptr_read_string.md # docs/internals/builtins/_internal/__elephc_ptr_write_string.md # docs/internals/builtins/_internal/__elephc_strtotime_raw.md # docs/internals/builtins/array/array_all.md # docs/internals/builtins/array/array_any.md # docs/internals/builtins/array/array_chunk.md # docs/internals/builtins/array/array_column.md # docs/internals/builtins/array/array_combine.md # docs/internals/builtins/array/array_diff.md # docs/internals/builtins/array/array_diff_assoc.md # docs/internals/builtins/array/array_diff_key.md # docs/internals/builtins/array/array_fill.md # docs/internals/builtins/array/array_fill_keys.md # docs/internals/builtins/array/array_filter.md # docs/internals/builtins/array/array_find.md # docs/internals/builtins/array/array_flip.md # docs/internals/builtins/array/array_intersect.md # docs/internals/builtins/array/array_intersect_assoc.md # docs/internals/builtins/array/array_intersect_key.md # docs/internals/builtins/array/array_is_list.md # docs/internals/builtins/array/array_key_exists.md # docs/internals/builtins/array/array_key_first.md # docs/internals/builtins/array/array_key_last.md # docs/internals/builtins/array/array_keys.md # docs/internals/builtins/array/array_map.md # docs/internals/builtins/array/array_merge.md # docs/internals/builtins/array/array_merge_recursive.md # docs/internals/builtins/array/array_multisort.md # docs/internals/builtins/array/array_pad.md # docs/internals/builtins/array/array_pop.md # docs/internals/builtins/array/array_product.md # docs/internals/builtins/array/array_push.md # docs/internals/builtins/array/array_rand.md # docs/internals/builtins/array/array_reduce.md # docs/internals/builtins/array/array_replace.md # docs/internals/builtins/array/array_replace_recursive.md # docs/internals/builtins/array/array_reverse.md # docs/internals/builtins/array/array_search.md # docs/internals/builtins/array/array_shift.md # docs/internals/builtins/array/array_slice.md # docs/internals/builtins/array/array_splice.md # docs/internals/builtins/array/array_sum.md # docs/internals/builtins/array/array_udiff.md # docs/internals/builtins/array/array_uintersect.md # docs/internals/builtins/array/array_unique.md # docs/internals/builtins/array/array_unshift.md # docs/internals/builtins/array/array_values.md # docs/internals/builtins/array/array_walk.md # docs/internals/builtins/array/array_walk_recursive.md # docs/internals/builtins/array/arsort.md # docs/internals/builtins/array/asort.md # docs/internals/builtins/array/call_user_func.md # docs/internals/builtins/array/call_user_func_array.md # docs/internals/builtins/array/count.md # docs/internals/builtins/array/in_array.md # docs/internals/builtins/array/krsort.md # docs/internals/builtins/array/ksort.md # docs/internals/builtins/array/natcasesort.md # docs/internals/builtins/array/natsort.md # docs/internals/builtins/array/range.md # docs/internals/builtins/array/rsort.md # docs/internals/builtins/array/shuffle.md # docs/internals/builtins/array/sort.md # docs/internals/builtins/array/uasort.md # docs/internals/builtins/array/uksort.md # docs/internals/builtins/array/usort.md # docs/internals/builtins/buffer/buffer_free.md # docs/internals/builtins/buffer/buffer_len.md # docs/internals/builtins/class/class_alias.md # docs/internals/builtins/class/class_attribute_args.md # docs/internals/builtins/class/class_attribute_names.md # docs/internals/builtins/class/class_exists.md # docs/internals/builtins/class/class_get_attributes.md # docs/internals/builtins/class/class_implements.md # docs/internals/builtins/class/class_parents.md # docs/internals/builtins/class/class_uses.md # docs/internals/builtins/class/enum_exists.md # docs/internals/builtins/class/function_exists.md # docs/internals/builtins/class/get_class.md # docs/internals/builtins/class/get_declared_classes.md # docs/internals/builtins/class/get_declared_interfaces.md # docs/internals/builtins/class/get_declared_traits.md # docs/internals/builtins/class/get_parent_class.md # docs/internals/builtins/class/interface_exists.md # docs/internals/builtins/class/is_a.md # docs/internals/builtins/class/is_subclass_of.md # docs/internals/builtins/class/method_exists.md # docs/internals/builtins/class/property_exists.md # docs/internals/builtins/class/trait_exists.md # docs/internals/builtins/date/checkdate.md # docs/internals/builtins/date/date.md # docs/internals/builtins/date/date_default_timezone_get.md # docs/internals/builtins/date/date_default_timezone_set.md # docs/internals/builtins/date/getdate.md # docs/internals/builtins/date/gmdate.md # docs/internals/builtins/date/gmmktime.md # docs/internals/builtins/date/hrtime.md # docs/internals/builtins/date/localtime.md # docs/internals/builtins/date/microtime.md # docs/internals/builtins/date/mktime.md # docs/internals/builtins/date/strtotime.md # docs/internals/builtins/date/time.md # docs/internals/builtins/filesystem/basename.md # docs/internals/builtins/filesystem/chdir.md # docs/internals/builtins/filesystem/chgrp.md # docs/internals/builtins/filesystem/chmod.md # docs/internals/builtins/filesystem/chown.md # docs/internals/builtins/filesystem/clearstatcache.md # docs/internals/builtins/filesystem/copy.md # docs/internals/builtins/filesystem/dirname.md # docs/internals/builtins/filesystem/disk_free_space.md # docs/internals/builtins/filesystem/disk_total_space.md # docs/internals/builtins/filesystem/file_exists.md # docs/internals/builtins/filesystem/fileatime.md # docs/internals/builtins/filesystem/filectime.md # docs/internals/builtins/filesystem/filegroup.md # docs/internals/builtins/filesystem/fileinode.md # docs/internals/builtins/filesystem/filemtime.md # docs/internals/builtins/filesystem/fileowner.md # docs/internals/builtins/filesystem/fileperms.md # docs/internals/builtins/filesystem/filesize.md # docs/internals/builtins/filesystem/filetype.md # docs/internals/builtins/filesystem/fnmatch.md # docs/internals/builtins/filesystem/getcwd.md # docs/internals/builtins/filesystem/getenv.md # docs/internals/builtins/filesystem/glob.md # docs/internals/builtins/filesystem/is_dir.md # docs/internals/builtins/filesystem/is_executable.md # docs/internals/builtins/filesystem/is_file.md # docs/internals/builtins/filesystem/is_link.md # docs/internals/builtins/filesystem/is_readable.md # docs/internals/builtins/filesystem/is_writable.md # docs/internals/builtins/filesystem/is_writeable.md # docs/internals/builtins/filesystem/lchgrp.md # docs/internals/builtins/filesystem/lchown.md # docs/internals/builtins/filesystem/link.md # docs/internals/builtins/filesystem/linkinfo.md # docs/internals/builtins/filesystem/lstat.md # docs/internals/builtins/filesystem/mkdir.md # docs/internals/builtins/filesystem/pathinfo.md # docs/internals/builtins/filesystem/putenv.md # docs/internals/builtins/filesystem/readfile.md # docs/internals/builtins/filesystem/readlink.md # docs/internals/builtins/filesystem/realpath.md # docs/internals/builtins/filesystem/realpath_cache_get.md # docs/internals/builtins/filesystem/realpath_cache_size.md # docs/internals/builtins/filesystem/rename.md # docs/internals/builtins/filesystem/rmdir.md # docs/internals/builtins/filesystem/scandir.md # docs/internals/builtins/filesystem/stat.md # docs/internals/builtins/filesystem/symlink.md # docs/internals/builtins/filesystem/sys_get_temp_dir.md # docs/internals/builtins/filesystem/tempnam.md # docs/internals/builtins/filesystem/tmpfile.md # docs/internals/builtins/filesystem/touch.md # docs/internals/builtins/filesystem/umask.md # docs/internals/builtins/filesystem/unlink.md # docs/internals/builtins/io/closedir.md # docs/internals/builtins/io/fclose.md # docs/internals/builtins/io/fdatasync.md # docs/internals/builtins/io/feof.md # docs/internals/builtins/io/fflush.md # docs/internals/builtins/io/fgetc.md # docs/internals/builtins/io/fgetcsv.md # docs/internals/builtins/io/fgets.md # docs/internals/builtins/io/file.md # docs/internals/builtins/io/file_get_contents.md # docs/internals/builtins/io/file_put_contents.md # docs/internals/builtins/io/flock.md # docs/internals/builtins/io/fopen.md # docs/internals/builtins/io/fpassthru.md # docs/internals/builtins/io/fprintf.md # docs/internals/builtins/io/fputcsv.md # docs/internals/builtins/io/fread.md # docs/internals/builtins/io/fscanf.md # docs/internals/builtins/io/fseek.md # docs/internals/builtins/io/fstat.md # docs/internals/builtins/io/fsync.md # docs/internals/builtins/io/ftell.md # docs/internals/builtins/io/ftruncate.md # docs/internals/builtins/io/fwrite.md # docs/internals/builtins/io/gethostbyaddr.md # docs/internals/builtins/io/gethostbyname.md # docs/internals/builtins/io/gethostname.md # docs/internals/builtins/io/getprotobyname.md # docs/internals/builtins/io/getprotobynumber.md # docs/internals/builtins/io/getservbyname.md # docs/internals/builtins/io/getservbyport.md # docs/internals/builtins/io/hash_file.md # docs/internals/builtins/io/ob_clean.md # docs/internals/builtins/io/ob_end_clean.md # docs/internals/builtins/io/ob_end_flush.md # docs/internals/builtins/io/ob_flush.md # docs/internals/builtins/io/ob_get_clean.md # docs/internals/builtins/io/ob_get_contents.md # docs/internals/builtins/io/ob_get_flush.md # docs/internals/builtins/io/ob_get_length.md # docs/internals/builtins/io/ob_get_level.md # docs/internals/builtins/io/ob_get_status.md # docs/internals/builtins/io/ob_implicit_flush.md # docs/internals/builtins/io/ob_list_handlers.md # docs/internals/builtins/io/ob_start.md # docs/internals/builtins/io/opendir.md # docs/internals/builtins/io/readdir.md # docs/internals/builtins/io/rewind.md # docs/internals/builtins/io/rewinddir.md # docs/internals/builtins/io/stream_bucket_make_writeable.md # docs/internals/builtins/io/stream_bucket_new.md # docs/internals/builtins/io/stream_context_create.md # docs/internals/builtins/io/stream_context_get_default.md # docs/internals/builtins/io/stream_context_get_options.md # docs/internals/builtins/io/stream_context_get_params.md # docs/internals/builtins/io/stream_context_set_default.md # docs/internals/builtins/io/stream_context_set_option.md # docs/internals/builtins/io/stream_context_set_params.md # docs/internals/builtins/io/stream_copy_to_stream.md # docs/internals/builtins/io/stream_filter_register.md # docs/internals/builtins/io/stream_filter_remove.md # docs/internals/builtins/io/stream_get_contents.md # docs/internals/builtins/io/stream_get_filters.md # docs/internals/builtins/io/stream_get_line.md # docs/internals/builtins/io/stream_get_meta_data.md # docs/internals/builtins/io/stream_get_transports.md # docs/internals/builtins/io/stream_get_wrappers.md # docs/internals/builtins/io/stream_is_local.md # docs/internals/builtins/io/stream_isatty.md # docs/internals/builtins/io/stream_resolve_include_path.md # docs/internals/builtins/io/stream_select.md # docs/internals/builtins/io/stream_set_blocking.md # docs/internals/builtins/io/stream_set_chunk_size.md # docs/internals/builtins/io/stream_set_read_buffer.md # docs/internals/builtins/io/stream_set_timeout.md # docs/internals/builtins/io/stream_set_write_buffer.md # docs/internals/builtins/io/stream_socket_accept.md # docs/internals/builtins/io/stream_socket_client.md # docs/internals/builtins/io/stream_socket_enable_crypto.md # docs/internals/builtins/io/stream_socket_get_name.md # docs/internals/builtins/io/stream_socket_pair.md # docs/internals/builtins/io/stream_socket_recvfrom.md # docs/internals/builtins/io/stream_socket_sendto.md # docs/internals/builtins/io/stream_socket_server.md # docs/internals/builtins/io/stream_socket_shutdown.md # docs/internals/builtins/io/stream_supports_lock.md # docs/internals/builtins/io/stream_wrapper_register.md # docs/internals/builtins/io/stream_wrapper_restore.md # docs/internals/builtins/io/stream_wrapper_unregister.md # docs/internals/builtins/io/vfprintf.md # docs/internals/builtins/json/json_decode.md # docs/internals/builtins/json/json_encode.md # docs/internals/builtins/json/json_last_error.md # docs/internals/builtins/json/json_last_error_msg.md # docs/internals/builtins/json/json_validate.md # docs/internals/builtins/math/abs.md # docs/internals/builtins/math/acos.md # docs/internals/builtins/math/asin.md # docs/internals/builtins/math/atan.md # docs/internals/builtins/math/atan2.md # docs/internals/builtins/math/ceil.md # docs/internals/builtins/math/clamp.md # docs/internals/builtins/math/cos.md # docs/internals/builtins/math/cosh.md # docs/internals/builtins/math/deg2rad.md # docs/internals/builtins/math/exp.md # docs/internals/builtins/math/fdiv.md # docs/internals/builtins/math/floor.md # docs/internals/builtins/math/fmod.md # docs/internals/builtins/math/hypot.md # docs/internals/builtins/math/intdiv.md # docs/internals/builtins/math/is_finite.md # docs/internals/builtins/math/is_infinite.md # docs/internals/builtins/math/is_nan.md # docs/internals/builtins/math/log.md # docs/internals/builtins/math/log10.md # docs/internals/builtins/math/log2.md # docs/internals/builtins/math/max.md # docs/internals/builtins/math/min.md # docs/internals/builtins/math/mt_rand.md # docs/internals/builtins/math/pi.md # docs/internals/builtins/math/pow.md # docs/internals/builtins/math/rad2deg.md # docs/internals/builtins/math/rand.md # docs/internals/builtins/math/random_int.md # docs/internals/builtins/math/round.md # docs/internals/builtins/math/sin.md # docs/internals/builtins/math/sinh.md # docs/internals/builtins/math/sqrt.md # docs/internals/builtins/math/tan.md # docs/internals/builtins/math/tanh.md # docs/internals/builtins/misc/define.md # docs/internals/builtins/misc/defined.md # docs/internals/builtins/misc/empty.md # docs/internals/builtins/misc/extension_loaded.md # docs/internals/builtins/misc/get_loaded_extensions.md # docs/internals/builtins/misc/header.md # docs/internals/builtins/misc/http_response_code.md # docs/internals/builtins/misc/php_uname.md # docs/internals/builtins/misc/phpversion.md # docs/internals/builtins/misc/print_r.md # docs/internals/builtins/misc/serialize.md # docs/internals/builtins/misc/unserialize.md # docs/internals/builtins/misc/var_dump.md # docs/internals/builtins/pointer/ptr.md # docs/internals/builtins/pointer/ptr_get.md # docs/internals/builtins/pointer/ptr_is_null.md # docs/internals/builtins/pointer/ptr_null.md # docs/internals/builtins/pointer/ptr_offset.md # docs/internals/builtins/pointer/ptr_read16.md # docs/internals/builtins/pointer/ptr_read32.md # docs/internals/builtins/pointer/ptr_read8.md # docs/internals/builtins/pointer/ptr_read_string.md # docs/internals/builtins/pointer/ptr_set.md # docs/internals/builtins/pointer/ptr_sizeof.md # docs/internals/builtins/pointer/ptr_write16.md # docs/internals/builtins/pointer/ptr_write32.md # docs/internals/builtins/pointer/ptr_write8.md # docs/internals/builtins/pointer/ptr_write_string.md # docs/internals/builtins/pointer/zval_free.md # docs/internals/builtins/pointer/zval_pack.md # docs/internals/builtins/pointer/zval_type.md # docs/internals/builtins/pointer/zval_unpack.md # docs/internals/builtins/process/exec.md # docs/internals/builtins/process/passthru.md # docs/internals/builtins/process/pclose.md # docs/internals/builtins/process/popen.md # docs/internals/builtins/process/readline.md # docs/internals/builtins/process/shell_exec.md # docs/internals/builtins/process/sleep.md # docs/internals/builtins/process/system.md # docs/internals/builtins/process/usleep.md # docs/internals/builtins/regex/mb_ereg_match.md # docs/internals/builtins/regex/preg_match.md # docs/internals/builtins/regex/preg_match_all.md # docs/internals/builtins/regex/preg_replace.md # docs/internals/builtins/regex/preg_replace_callback.md # docs/internals/builtins/regex/preg_split.md # docs/internals/builtins/spl/iterator_apply.md # docs/internals/builtins/spl/iterator_count.md # docs/internals/builtins/spl/iterator_to_array.md # docs/internals/builtins/spl/spl_autoload.md # docs/internals/builtins/spl/spl_autoload_call.md # docs/internals/builtins/spl/spl_autoload_extensions.md # docs/internals/builtins/spl/spl_autoload_functions.md # docs/internals/builtins/spl/spl_autoload_register.md # docs/internals/builtins/spl/spl_autoload_unregister.md # docs/internals/builtins/spl/spl_classes.md # docs/internals/builtins/spl/spl_object_hash.md # docs/internals/builtins/spl/spl_object_id.md # docs/internals/builtins/streams/fsockopen.md # docs/internals/builtins/streams/pfsockopen.md # docs/internals/builtins/streams/stream_bucket_append.md # docs/internals/builtins/streams/stream_bucket_prepend.md # docs/internals/builtins/streams/stream_filter_append.md # docs/internals/builtins/streams/stream_filter_prepend.md # docs/internals/builtins/string/addslashes.md # docs/internals/builtins/string/base64_decode.md # docs/internals/builtins/string/base64_encode.md # docs/internals/builtins/string/bin2hex.md # docs/internals/builtins/string/chop.md # docs/internals/builtins/string/chr.md # docs/internals/builtins/string/crc32.md # docs/internals/builtins/string/explode.md # docs/internals/builtins/string/grapheme_strrev.md # docs/internals/builtins/string/gzcompress.md # docs/internals/builtins/string/gzdeflate.md # docs/internals/builtins/string/gzinflate.md # docs/internals/builtins/string/gzuncompress.md # docs/internals/builtins/string/hash.md # docs/internals/builtins/string/hash_algos.md # docs/internals/builtins/string/hash_equals.md # docs/internals/builtins/string/hash_hmac.md # docs/internals/builtins/string/hex2bin.md # docs/internals/builtins/string/html_entity_decode.md # docs/internals/builtins/string/htmlentities.md # docs/internals/builtins/string/htmlspecialchars.md # docs/internals/builtins/string/implode.md # docs/internals/builtins/string/inet_ntop.md # docs/internals/builtins/string/inet_pton.md # docs/internals/builtins/string/ip2long.md # docs/internals/builtins/string/lcfirst.md # docs/internals/builtins/string/long2ip.md # docs/internals/builtins/string/ltrim.md # docs/internals/builtins/string/mb_strlen.md # docs/internals/builtins/string/md5.md # docs/internals/builtins/string/nl2br.md # docs/internals/builtins/string/number_format.md # docs/internals/builtins/string/ord.md # docs/internals/builtins/string/printf.md # docs/internals/builtins/string/rawurldecode.md # docs/internals/builtins/string/rawurlencode.md # docs/internals/builtins/string/rtrim.md # docs/internals/builtins/string/sha1.md # docs/internals/builtins/string/sprintf.md # docs/internals/builtins/string/sscanf.md # docs/internals/builtins/string/str_contains.md # docs/internals/builtins/string/str_ends_with.md # docs/internals/builtins/string/str_ireplace.md # docs/internals/builtins/string/str_pad.md # docs/internals/builtins/string/str_repeat.md # docs/internals/builtins/string/str_replace.md # docs/internals/builtins/string/str_split.md # docs/internals/builtins/string/str_starts_with.md # docs/internals/builtins/string/strcasecmp.md # docs/internals/builtins/string/strcmp.md # docs/internals/builtins/string/stripslashes.md # docs/internals/builtins/string/strlen.md # docs/internals/builtins/string/strpos.md # docs/internals/builtins/string/strrev.md # docs/internals/builtins/string/strrpos.md # docs/internals/builtins/string/strstr.md # docs/internals/builtins/string/strtolower.md # docs/internals/builtins/string/strtoupper.md # docs/internals/builtins/string/substr.md # docs/internals/builtins/string/substr_replace.md # docs/internals/builtins/string/trim.md # docs/internals/builtins/string/ucfirst.md # docs/internals/builtins/string/ucwords.md # docs/internals/builtins/string/urldecode.md # docs/internals/builtins/string/urlencode.md # docs/internals/builtins/string/vprintf.md # docs/internals/builtins/string/vsprintf.md # docs/internals/builtins/string/wordwrap.md # docs/internals/builtins/type/boolval.md # docs/internals/builtins/type/ctype_alnum.md # docs/internals/builtins/type/ctype_alpha.md # docs/internals/builtins/type/ctype_digit.md # docs/internals/builtins/type/ctype_space.md # docs/internals/builtins/type/floatval.md # docs/internals/builtins/type/get_resource_id.md # docs/internals/builtins/type/get_resource_type.md # docs/internals/builtins/type/gettype.md # docs/internals/builtins/type/intval.md # docs/internals/builtins/type/is_array.md # docs/internals/builtins/type/is_bool.md # docs/internals/builtins/type/is_callable.md # docs/internals/builtins/type/is_double.md # docs/internals/builtins/type/is_float.md # docs/internals/builtins/type/is_int.md # docs/internals/builtins/type/is_integer.md # docs/internals/builtins/type/is_iterable.md # docs/internals/builtins/type/is_long.md # docs/internals/builtins/type/is_null.md # docs/internals/builtins/type/is_numeric.md # docs/internals/builtins/type/is_object.md # docs/internals/builtins/type/is_real.md # docs/internals/builtins/type/is_resource.md # docs/internals/builtins/type/is_scalar.md # docs/internals/builtins/type/is_string.md # docs/internals/builtins/type/settype.md # docs/internals/builtins/type/strval.md # docs/php/builtins/string/printf.md # docs/php/builtins/string/rawurldecode.md # docs/php/builtins/string/rawurlencode.md # docs/php/builtins/string/rtrim.md # docs/php/builtins/string/sha1.md # docs/php/builtins/string/sprintf.md # docs/php/builtins/string/sscanf.md # docs/php/builtins/string/str_contains.md # docs/php/builtins/string/str_ends_with.md # docs/php/builtins/string/str_ireplace.md # docs/php/builtins/string/str_pad.md # docs/php/builtins/string/str_repeat.md # docs/php/builtins/string/str_replace.md # docs/php/builtins/string/str_split.md # docs/php/builtins/string/str_starts_with.md # docs/php/builtins/string/strcasecmp.md # docs/php/builtins/string/strcmp.md # docs/php/builtins/string/stripslashes.md # docs/php/builtins/string/strlen.md # docs/php/builtins/string/strpos.md # docs/php/builtins/string/strrev.md # docs/php/builtins/string/strrpos.md # docs/php/builtins/string/strstr.md # docs/php/builtins/string/strtolower.md # docs/php/builtins/string/strtoupper.md # docs/php/builtins/string/substr.md # docs/php/builtins/string/substr_replace.md # docs/php/builtins/string/trim.md # docs/php/builtins/string/ucfirst.md # docs/php/builtins/string/ucwords.md # docs/php/builtins/string/urldecode.md # docs/php/builtins/string/urlencode.md # docs/php/builtins/string/vprintf.md # docs/php/builtins/string/vsprintf.md # docs/php/builtins/string/wordwrap.md # docs/php/builtins/type/boolval.md # docs/php/builtins/type/ctype_alnum.md # docs/php/builtins/type/ctype_alpha.md # docs/php/builtins/type/ctype_digit.md # docs/php/builtins/type/ctype_space.md # docs/php/builtins/type/floatval.md # docs/php/builtins/type/get_resource_id.md # docs/php/builtins/type/get_resource_type.md # docs/php/builtins/type/gettype.md # docs/php/builtins/type/intval.md # docs/php/builtins/type/is_array.md # docs/php/builtins/type/is_bool.md # docs/php/builtins/type/is_callable.md # docs/php/builtins/type/is_double.md # docs/php/builtins/type/is_float.md # docs/php/builtins/type/is_int.md # docs/php/builtins/type/is_integer.md # docs/php/builtins/type/is_iterable.md # docs/php/builtins/type/is_long.md # docs/php/builtins/type/is_null.md # docs/php/builtins/type/is_numeric.md # docs/php/builtins/type/is_object.md # docs/php/builtins/type/is_real.md # docs/php/builtins/type/is_resource.md # docs/php/builtins/type/is_scalar.md # docs/php/builtins/type/is_string.md # docs/php/builtins/type/settype.md # docs/php/builtins/type/strval.md # docs/php/strings.md # scripts/docs/builtin_registry.json # src/builtins/string/mod.rs # src/codegen/lower_inst/builtins/strings.rs # src/ir/runtime_fn.rs # src/ir_lower/expr/mod.rs # tests/codegen/strings.rs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds OpenSSL-compatible symmetric encryption on both the AOT and
eval()(magician) paths:openssl_encrypt(),openssl_decrypt(),openssl_cipher_iv_length(),openssl_get_cipher_methods()OPENSSL_RAW_DATA,OPENSSL_ZERO_PADDING,OPENSSL_DONT_ZERO_PAD_KEYelephc-crypto(no system OpenSSL /libcrypto)Cipher matrix
AES-128/192/256 × CBC, CTR, ECB, GCM (exactly what
openssl_get_cipher_methods()returns — 12 methods).Behavior
OPENSSL_RAW_DATA(Base64 handled in PHP glue; bridge is always raw)OPENSSL_ZERO_PADDING/OPENSSL_DONT_ZERO_PAD_KEY$tagon encrypt, by-value tag on decrypt,tag_length1–16false(warning text from stock PHP is not yet reproduced)Architecture
Shared bridge keeps AOT and magician from diverging. Bridge links only when crypto builtins are used.
Docs / example
examples/openssl_crypt/— CBC + GCM round tripsdocs/php/strings.md+ generated builtin pagesCHANGELOG.mdunder[Unreleased]Test plan
cargo buildcargo test -p elephc-crypto(hash vectors + OpenSSL PHP goldens / ABI)cargo test --test codegen_tests openssl(non-AEAD + GCM AOT)cargo test -p elephc-magician opensslcargo test --test builtin_parity_testscargo run -- examples/openssl_crypt/main.php && ./examples/openssl_crypt/mainaudit_builtins.py/validate_site_compat.py)macos-aarch64,linux-aarch64,linux-x86_64)Notes
.plans/openssl-encrypt-decrypt.mdcrates/elephc-crypto/tests/fixtures/