Version 1.0.21
This point release includes all the changes from 1.0.20-stable, which
include a security fix for the crypto_core_ed25519_is_valid_point()
function, as well as two new sets of functions:
- The new
crypto_ipcrypt_* functions implement mechanisms for securely
encrypting and anonymizing IP addresses as specified in https://ipcrypt-std.github.io
- The
sodium_bin2ip and sodium_ip2bin helper functions have been added
to complement the crypto_ipcrypt_* functions and easily convert addresses
between bytes and strings.
- XOF: the
crypto_xof_shake* and crypto_xof_turboshake* functions
are standard extendable output functions. From input of any length, they can
derive output of any length with the same properties as hash functions. These
primitives are required by many post-quantum mechanisms, but can also be used
for a wide range of applications, including key derivation, session encryption
and more.
Version 1.0.20-stable
- XCFramework: cross-compilation is now forced on Apple Silicon to
avoid Rosetta-related build issues
- The Fil-C compiler is supported out of the box
- The CompCert compiler is supported out of the box
- MSVC 2026 (Visual Studio 2026) is now supported
- Zig builds now support FreeBSD targets
- Performance of AES256-GCM and AEGIS on ARM has been improved
with some compilers
- Android binaries have been added to the NuGet package
- Windows ARM binaries have been added to the NuGet package
- The Android build script has been improved. The base SDK is
now 27c, and the default platform is 21, supporting 16 KB page sizes.
- The library can now be compiled with Zig 0.15 and Zig 0.16
- Zig builds now generate position-independent static libraries by
default on targets that support PIC
- arm64e builds have been added to the XCFramework packages
- XCFramework packages are now full builds instead of minimal
builds
- MSVC builds have been enabled for ARM64
- iOS 32-bit (armv7/armv7s) support has been removed from the
XCFramework build script
- Security: optblockers have been introduced in critical code paths
to prevent compilers from introducing unwanted side channels via
conditional jumps. This was observed on RISC-V targets with specific
compilers and options.
- Security:
crypto_core_ed25519_is_valid_point() now properly
rejects small-order points that are not in the main subgroup
((nonnull)) attributes have been relaxed on some crypto_stream*
functions to allow NULL output buffers when the output length is zero
- A cross-compilation issue with old clang versions has been
fixed
- JavaScript: support for Cloudflare Workers has been added
- JavaScript: WASM_BIGINT is forcibly disabled to retain
compatibility with older runtimes
- A compilation issue with old toolchains on Solaris has been
fixed
crypto_aead_aes256gcm_is_available is exported to JavaScript
- libsodium is now compatible with Emscripten 4.x
- Security: memory fences have been added after MAC verification in
AEAD to prevent speculative access to plaintext before authentication
is complete
- Assembly files now include .gnu.property notes for proper IBT and
Shadow Stack support when building with CET instrumentation