* fix: format with clang-format-20
* fix: fix clang-format linter with rewrite '^#define.*/\*.*\\$'
* fix: update clang-format to version 20 in workflows and documentation
* fix: add SPDX license information to .git-blame-ignore-revs
* Rename librz/util/ubase64.c into librz/util/base64.c for consistency #5216
* Add Doxygen documentation to function in librz/util/base85.c #5216
* Add unit-tests for librz/util/base85.c #5216
* Refactor base85 API and internal functions #5216
base85 was using a FILE as an input and it used to print its result to
STDOUT, which was very bad for having unit-testing or to use it to
extend rz-hash functionality, since the solution I really had was
through using pipes which isn't ideal as much as the refactoring one.
* Extend rz-hash with base85 #5126
* Fix formatting #5216
* Extract base36 decoding function from subprojects/rzwinkd/iob_net.c to librz/util/base36.c #5216
- Also, added Doxygen docs to rz_base36_decode function
* Added rz_base36_encode_dyn #5216
- this function encode a u64 value to it's char[13+1] base36 counterpart
- later, it will be helpful in expanding the funcitionality of rz-hash
- added its Doxygen docs
* Expand rz-hash with base36 encoding/decoding #5216
* Refactor rz_base36_decode to return a suitable error code like -1 #5216
- that should help testing it later for valid and invalid decodings
- keeping the original behaviour as it was in
subprojects/rzwinkd/iob_net.c
* Add unit-tests for base36 encoding & decoding functions #5216
* Fix formatting #5216
* Fix base36.h header file guards #5216
* Add base32 encoding & decoding #5216
added their Doxygen Docs as well
* Add base32 encoding and decoding unti-tests #5216
* Expand rz-hash with base32 encoding/decoding functionality #5216
* Fix formatting #5216
* Fix add base32 to codec_name_bytes #5216
* Fix base32 docs #5216
* Add base16 encoding/decoding functions #5216
- added their Doxygen docs as well.
* Add base16 unit-tests #5216
* Fix test_base85 conversions warnings #5216
* Expand rz-hash with base16 encoding/decoding functionality #5216
* Fix formatting #5216
* Fix doxygen docs #5216
* Restore subprojects/rizin-shell-parser/parser.c to match origin/dev
* Fix the order by baseXX
* Fix base16 - invert the logic in calculate_src_length
* Fix base16 - intialize variables in rz_base16_encode
* Fix base16 - null terminate the output buffer of rz_base16_encode_dyn
* Fix base16 - get rid of unnecessary else in rz_base16_decode
* Fix base16 - use `len & 1` instead of `(len % 2) != 0`
* Fix base32 - invert the logic in calculate_src_length
* Fix base32 - compress two return statments by using `rz_return_val_if_fail(src && dest, 0);`
* Fix base32 - null terminate the output of rz_base32_encode
* Fix base32 - get rid of unnecessary else in rz_base32_decode
add more parentheses to split addition from mult for better clarity
* Fix base32 - intialize variables in rz_base32_encode_dyn
* Fix base36 - intialize `tmp` variable in rz_base36_encode_dyn
* Fix base36 - use RZ_LOG_ERROR instead of eprintf
* Fix base36 - use RZ_NULLABLE for the API interface
* Fix base85 - use RZ_OUT & RZ_NULLABLE for the API interface
* Fix base85 - use RZ_LOG_ERROR instead of eprintf
* Fix base85 - use size_t instead of int for decode_tuple_buf
* Fix base85 - remove unused varaible, `out_len`, in rz_base85_encode_dyn
* Fix base85 - correct decode buffer size calculation
The previous rz_base85_dec_buflen() underestimated the worst‑case output
size (3 bytes per 4 input chars), causing overflows when using ‘z’/’y’
abbreviations. Update it to allocate 4 bytes per input character plus
one for the NUL terminator, eliminating heap-buffer-overflow errors.
* Fix formatting
* Fix base85-test - use `newlines` variable to make sure line breaks were inserted as expected
* Fix base85-test - remove unnecessary includes
* Fix rz-hash test - updated rz-hash -L expected result
* Fix crypto_base36 - use RZ_LOG_ERROR instead of eprintf
* Fix base16 - compress rz_return_val_if_fail statements and move before locals
* Update base16 - use hex.c existing encoding/decoding logic
- base16.c encoding/decoding functions are now wrappers for hex.c
`rz_hex_bin2str` and `rz_hex_str2bin` functions
- updated related base16 unit testing and documentation
- updated the integraion with rz-hash binary (or crypto_base16)
* Fix formatting
* Add documentation to rz_hex_bin2str
* Fix base85 - add missing `reutrn` docs to rz_base85_encode function
* Fix base85 - use RZ_NONNULL for dest and src function instead of RZ_NULLABLE
* Fix base36 - use RZ_NONNULL for dest and src function instead of RZ_NULLABLE
* Fix base16 - use RZ_NONNULL for dest and src function instead of RZ_NULLABLE
* Fix base32 - use RZ_NONNULL for dest and src function instead of RZ_NULLABLE
* Fix base16 - add missig checks for invalid inputs in rz_base16_encode & rz_base16_encode_dyn
* Fix base32 - add missing checks for bad encoding
* Fix - add missing SPDX
* Fix Formatting
* Add rz_base36_encode & rz_base36_decode_dyn functions to base36 API
* Add `/ce` and `/cef` commands and provide better args for entropy search
* Fix comments and more thread safety
* Extract sm4 master key as detail
* Fix comment
* Refactor: Use HtSP for storing plugins.
This saves iterations when searching for a plugin of a given name.
It also allows to save plugin configurations and data in hash table,
all addressed by their name. Hence, usage is more streamlined.
* Fix: iterators iterate over pointers of pointers.
* Soften the NULL check.
If arch is passed on from another struct, NULL is an allowed invalid value.
* Fix some leaks
* Fix NULL checks and incorrect inits
* Fix more leaks
* Add warning if plugin with same name was added before and is overwritten.
* Document rz_str_cmp
* Add function to create new list from iterator.
* Sort plugins alphabetically when listed.
* Fix parameter attributes, NULL checks, leaks and single rename.
* librz: do not duplicate plugins
Plugins structures are statically defined at the file scope and not
dynamically allocated. Plugins should not allocate them either as
RzLibPlugin keeps a reference to them anyway.
* cmd: Fix summary of few "L" sub-commands
* util: start decluttering plugins handling
- Add Doxygen docs
- Remove unused API functions and make others internal only
- Use RzLibType enum for plugin type instead of int
* util: move dlopen/dlsym/dlclose to rz_sys
* util: make rz_lib_open/close return bool
* util: simplify rz_lib_add_handler and rz_lib_open*
* libs: implement rz_*_plugin_del to remove a plugin
* core: remove commands from RzCmd when removing plugins
* librz: call plugins 'fini' method when removing a plugin
* core/cmd: do not fail if the hashmap removal fails
When removing a group command, the inner command might have the same
name, thus it would result in trying to remove the same name twice.
Ignore it, as it is fine.
* librz: make RzCrypto plugins handling like the others
* librz/crypto: add rz_crypto_reset and use it
* librz: allocate the plugin structures before adding them
Duplicated code for pkg-config and cmake configuration is avoided by
letting every rizin module register itself in a global dictionary
called "modules" which is then iterated in one place to perform any
shared logic, inspired by how qemu handles multiple targets in its meson
build system.
This is an almost pure refactor, so the resulting .pc/.cmake files
should be identical with the following exceptions:
- rz_reg.pc does not have plugindir anymore as rz_reg has no plugins.
- Some other modules have their dependencies in .pc files altered to be
consistent with cmake.
* Move binrz meson directives to binrz/ dir
* Move rizin-shell-parser to a subproject
* Move bochs to a meson subproject
* Move rzqnx to meson subproject
* Move winkd to a meson subproject
* Move rzar to a meson subproject
* Move rzw32dbg_wrap to a meson subproject
* Move ptrace-wrap to a meson subproject
* Move rzgdb to a meson subproject
* Rename w32dbg_wrap to rzw32dbg_wrap
* Update CODEOWNERS
* Remove old references to shlr
* Move shlr/heap stuff in core and remove shlr/arm
* Move spp to a meson subproject
* Remove last references to shlr
* Remove use_webui option
* Move include files directives to librz/include/meson.build
* Move librz meson directives into librz/meson.build
* Handle d/ directories inside the specific module meson.build
* Move plugins listing to specific module meson.build
* Move rzheap to its own subproject
* Fix js linter and licenses
* Use meson.override_dependency for all rz_ modules
* Remove wrong librz.pc.in file
* Add plugindir variable to .pc files to allow easy plugin configuration
* Add CMake config files to find Rizin in CMake projects
* Add CI jobs to check cmake files
* Provide workaround for mesonbuild/meson#9702
* Use .lib suffix and no prefix on MSVC to make CMake files work
* Disable cmake files on static libraries build
* Added authors and licenses and plugin access to crypto related files
* removed `rz_hash` and related files
* introduced `rz_msg_digest_*` with plugins
* updated all old methods with newer ones.
* added HMAC support to `rz-hash` (moved key option under `-K`)
* removed wrong algorithms on `woD`/`woE`
* fixed parity digest size
* fixed the behaviour on all hash functions
* added unit test for hash
* optimized code for HMAC key calculation
* removed hash legacy tests
* Refactoring rz-hash main, crypto interfaces and hashes
* ops. removed method that was removed later on
* fixed punycode oob read
* use RZ_ARRAY_SIZE instead of looking for null pointer
* Added broken flag on rz-hash -L test