1*22ce4affSfengbojiang 2*22ce4affSfengbojiang* Version 1.0.16 3*22ce4affSfengbojiang - Signatures computations and verifications are now way faster on 4*22ce4affSfengbojiang64-bit platforms with compilers supporting 128-bit arithmetic (gcc, 5*22ce4affSfengbojiangclang, icc). This includes the WebAssembly target. 6*22ce4affSfengbojiang - New low-level APIs for computations over edwards25519: 7*22ce4affSfengbojiang`crypto_scalarmult_ed25519()`, `crypto_scalarmult_ed25519_base()`, 8*22ce4affSfengbojiang`crypto_core_ed25519_is_valid_point()`, `crypto_core_ed25519_add()`, 9*22ce4affSfengbojiang`crypto_core_ed25519_sub()` and `crypto_core_ed25519_from_uniform()` 10*22ce4affSfengbojiang(elligator representative to point). 11*22ce4affSfengbojiang - `crypto_sign_open()`, `crypto_sign_verify_detached() and 12*22ce4affSfengbojiang`crypto_sign_edwards25519sha512batch_open` now reject public keys in 13*22ce4affSfengbojiangnon-canonical form in addition to low-order points. 14*22ce4affSfengbojiang - The library can be built with `ED25519_NONDETERMINISTIC` defined in 15*22ce4affSfengbojiangorder to use synthetic nonces for EdDSA. This is disabled by default. 16*22ce4affSfengbojiang - Webassembly: `crypto_pwhash_*()` functions are now included in 17*22ce4affSfengbojiangnon-sumo builds. 18*22ce4affSfengbojiang - `sodium_stackzero()` was added to wipe content off the stack. 19*22ce4affSfengbojiang - Android: support new SDKs where unified headers have become the 20*22ce4affSfengbojiangdefault. 21*22ce4affSfengbojiang - The Salsa20-based PRNG example is now thread-safe on platforms with 22*22ce4affSfengbojiangsupport for thread-local storage, optionally mixes bits from RDRAND. 23*22ce4affSfengbojiang - CMAKE: static library detection on Unix systems has been improved 24*22ce4affSfengbojiang(thanks to @BurningEnlightenment, @nibua-r, @mellery451) 25*22ce4affSfengbojiang - Argon2 and scrypt are slightly faster on Linux. 26*22ce4affSfengbojiang 27*22ce4affSfengbojiang* Version 1.0.15 28*22ce4affSfengbojiang - The default password hashing algorithm is now Argon2id. The 29*22ce4affSfengbojiang`pwhash_str_verify()` function can still verify Argon2i hashes 30*22ce4affSfengbojiangwithout any changes, and `pwhash()` can still compute Argon2i hashes 31*22ce4affSfengbojiangas well. 32*22ce4affSfengbojiang - The aes128ctr primitive was removed. It was slow, non-standard, not 33*22ce4affSfengbojiangauthenticated, and didn't seem to be used by any opensource project. 34*22ce4affSfengbojiang - Argon2id required at least 3 passes like Argon2i, despite a minimum 35*22ce4affSfengbojiangof `1` as defined by the `OPSLIMIT_MIN` constant. This has been fixed. 36*22ce4affSfengbojiang - The secretstream construction was slightly changed to be consistent 37*22ce4affSfengbojiangwith forthcoming variants. 38*22ce4affSfengbojiang - The Javascript and Webassembly versions have been merged, and the 39*22ce4affSfengbojiangmodule now returns a `.ready` promise that will resolve after the 40*22ce4affSfengbojiangWebassembly code is loaded and compiled. 41*22ce4affSfengbojiang - Note that due to these incompatible changes, the library version 42*22ce4affSfengbojiangmajor was bumped up. 43*22ce4affSfengbojiang 44*22ce4affSfengbojiang* Version 1.0.14 45*22ce4affSfengbojiang - iOS binaries should now be compatible with WatchOS and TVOS. 46*22ce4affSfengbojiang - WebAssembly is now officially supported. Special thanks to 47*22ce4affSfengbojiang@facekapow and @pepyakin who helped to make it happen. 48*22ce4affSfengbojiang - Internal consistency checks failing and primitives used with 49*22ce4affSfengbojiangdangerous/out-of-bounds/invalid parameters used to call abort(3). 50*22ce4affSfengbojiangNow, a custom handler *that doesn't return* can be set with the 51*22ce4affSfengbojiang`set_sodium_misuse()` function. It still aborts by default or if the 52*22ce4affSfengbojianghandler ever returns. This is not a replacement for non-fatal, 53*22ce4affSfengbojiangexpected runtime errors. This handler will be only called in 54*22ce4affSfengbojiangunexpected situations due to potential bugs in the library or in 55*22ce4affSfengbojianglanguage bindings. 56*22ce4affSfengbojiang - `*_MESSAGEBYTES_MAX` macros (and the corresponding 57*22ce4affSfengbojiang`_messagebytes_max()` symbols) have been added to represent the 58*22ce4affSfengbojiangmaximum message size that can be safely handled by a primitive. 59*22ce4affSfengbojiangLanguage bindings are encouraged to check user inputs against these 60*22ce4affSfengbojiangmaximum lengths. 61*22ce4affSfengbojiang - The test suite has been extended to cover more edge cases. 62*22ce4affSfengbojiang - crypto_sign_ed25519_pk_to_curve25519() now rejects points that are 63*22ce4affSfengbojiangnot on the curve, or not in the main subgroup. 64*22ce4affSfengbojiang - Further changes have been made to ensure that smart compilers will 65*22ce4affSfengbojiangnot optimize out code that we don't want to be optimized. 66*22ce4affSfengbojiang - Visual Studio solutions are now included in distribution tarballs. 67*22ce4affSfengbojiang - The `sodium_runtime_has_*` symbols for CPU features detection are 68*22ce4affSfengbojiangnow defined as weak symbols, i.e. they can be replaced with an 69*22ce4affSfengbojiangapplication-defined implementation. This can be useful to disable 70*22ce4affSfengbojiangAVX* when temperature/power consumption is a concern. 71*22ce4affSfengbojiang - `crypto_kx_*()` now aborts if called with no non-NULL pointers to 72*22ce4affSfengbojiangstore keys to. 73*22ce4affSfengbojiang - SSE2 implementations of `crypto_verify_*()` have been added. 74*22ce4affSfengbojiang - Passwords can be hashed using a specific algorithm with the new 75*22ce4affSfengbojiang`crypto_pwhash_str_alg()` function. 76*22ce4affSfengbojiang - Due to popular demand, base64 encoding (`sodium_bin2base64()`) and 77*22ce4affSfengbojiangdecoding (`sodium_base642bin()`) have been implemented. 78*22ce4affSfengbojiang - A new `crypto_secretstream_*()` API was added to safely encrypt files 79*22ce4affSfengbojiangand multi-part messages. 80*22ce4affSfengbojiang - The `sodium_pad()` and `sodium_unpad()` helper functions have been 81*22ce4affSfengbojiangadded in order to add & remove padding. 82*22ce4affSfengbojiang - An AVX512 optimized implementation of Argon2 has been added (written 83*22ce4affSfengbojiangby Ondrej Mosnáček, thanks!) 84*22ce4affSfengbojiang - The `crypto_pwhash_str_needs_rehash()` function was added to check if 85*22ce4affSfengbojianga password hash string matches the given parameters, or if it needs an 86*22ce4affSfengbojiangupdate. 87*22ce4affSfengbojiang - The library can now be compiled with recent versions of 88*22ce4affSfengbojiangemscripten/binaryen that don't allow multiple variables declarations 89*22ce4affSfengbojiangusing a single `var` statement. 90*22ce4affSfengbojiang 91*22ce4affSfengbojiang* Version 1.0.13 92*22ce4affSfengbojiang - Javascript: the sumo builds now include all symbols. They were 93*22ce4affSfengbojiangpreviously limited to symbols defined in minimal builds. 94*22ce4affSfengbojiang - The public `crypto_pwhash_argon2i_MEMLIMIT_MAX` constant was 95*22ce4affSfengbojiangincorrectly defined on 32-bit platforms. This has been fixed. 96*22ce4affSfengbojiang - Version 1.0.12 didn't compile on OpenBSD/i386 using the base gcc 97*22ce4affSfengbojiangcompiler. This has been fixed. 98*22ce4affSfengbojiang - The Android compilation scripts have been updated for NDK r14b. 99*22ce4affSfengbojiang - armv7s-optimized code was re-added to iOS builds. 100*22ce4affSfengbojiang - An AVX2 optimized implementation of the Argon2 round function was 101*22ce4affSfengbojiangadded. 102*22ce4affSfengbojiang - The Argon2id variant of Argon2 has been implemented. The 103*22ce4affSfengbojianghigh-level `crypto_pwhash_str_verify()` function automatically detects 104*22ce4affSfengbojiangthe algorithm and can verify both Argon2i and Argon2id hashed passwords. 105*22ce4affSfengbojiangThe default algorithm for newly hashed passwords remains Argon2i in 106*22ce4affSfengbojiangthis version to avoid breaking compatibility with verifiers running 107*22ce4affSfengbojianglibsodium <= 1.0.12. 108*22ce4affSfengbojiang - A `crypto_box_curve25519xchacha20poly1305_seal*()` function set was 109*22ce4affSfengbojiangimplemented. 110*22ce4affSfengbojiang - scrypt was removed from minimal builds. 111*22ce4affSfengbojiang - libsodium is now available on NuGet. 112*22ce4affSfengbojiang 113*22ce4affSfengbojiang* Version 1.0.12 114*22ce4affSfengbojiang - Ed25519ph was implemented, adding a multi-part signature API 115*22ce4affSfengbojiang(`crypto_sign_init()`, `crypto_sign_update()`, `crypto_sign_final_*()`). 116*22ce4affSfengbojiang - New constants and related accessors have been added for Scrypt and 117*22ce4affSfengbojiangArgon2. 118*22ce4affSfengbojiang - XChaCha20 has been implemented. Like XSalsa20, this construction 119*22ce4affSfengbojiangextends the ChaCha20 cipher to accept a 192-bit nonce. This makes it safe 120*22ce4affSfengbojiangto use ChaCha20 with random nonces. 121*22ce4affSfengbojiang - `crypto_secretbox`, `crypto_box` and `crypto_aead` now offer 122*22ce4affSfengbojiangvariants leveraging XChaCha20. 123*22ce4affSfengbojiang - SHA-2 is about 20% faster, which also gives a speed boost to 124*22ce4affSfengbojiangsignature and signature verification. 125*22ce4affSfengbojiang - AVX2 implementations of Salsa20 and ChaCha20 have been added. They 126*22ce4affSfengbojiangare twice as fast as the SSE2 implementations. The speed gain is 127*22ce4affSfengbojiangeven more significant on Windows, that previously didn't use 128*22ce4affSfengbojiangvectorized implementations. 129*22ce4affSfengbojiang - New high-level API: `crypto_kdf`, to easily derive one or more 130*22ce4affSfengbojiangsubkeys from a master key. 131*22ce4affSfengbojiang - Siphash with a 128-bit output has been implemented, and is 132*22ce4affSfengbojiangavailable as `crypto_shorthash_siphashx_*`. 133*22ce4affSfengbojiang - New `*_keygen()` helpers functions have been added to create secret 134*22ce4affSfengbojiangkeys for all constructions. This improves code clarity and can prevent keys 135*22ce4affSfengbojiangfrom being partially initialized. 136*22ce4affSfengbojiang - A new `randombytes_buf_deterministic()` function was added to 137*22ce4affSfengbojiangdeterministically fill a memory region with pseudorandom data. This 138*22ce4affSfengbojiangfunction can especially be useful to write reproducible tests. 139*22ce4affSfengbojiang - A preliminary `crypto_kx_*()` API was added to compute shared session 140*22ce4affSfengbojiangkeys. 141*22ce4affSfengbojiang - AVX2 detection is more reliable. 142*22ce4affSfengbojiang - The pthreads library is not required any more when using MingW. 143*22ce4affSfengbojiang - `contrib/Findsodium.cmake` was added as an example to include 144*22ce4affSfengbojianglibsodium in a project using cmake. 145*22ce4affSfengbojiang - Compatibility with gcc 2.x has been restored. 146*22ce4affSfengbojiang - Minimal builds can be checked using `sodium_library_minimal()`. 147*22ce4affSfengbojiang - The `--enable-opt` compilation switch has become compatible with more 148*22ce4affSfengbojiangplatforms. 149*22ce4affSfengbojiang - Android builds are now using clang on platforms where it is 150*22ce4affSfengbojiangavailable. 151*22ce4affSfengbojiang 152*22ce4affSfengbojiang* Version 1.0.11 153*22ce4affSfengbojiang - `sodium_init()` is now thread-safe, and can be safely called multiple 154*22ce4affSfengbojiangtimes. 155*22ce4affSfengbojiang - Android binaries now properly support 64-bit Android, targeting 156*22ce4affSfengbojiangplatform 24, but without breaking compatibility with platforms 16 and 157*22ce4affSfengbojiang21. 158*22ce4affSfengbojiang - Better support for old gcc versions. 159*22ce4affSfengbojiang - On FreeBSD, core dumps are disabled on regions allocated with 160*22ce4affSfengbojiangsodium allocation functions. 161*22ce4affSfengbojiang - AVX2 detection was fixed, resulting in faster Blake2b hashing on 162*22ce4affSfengbojiangplatforms where it was not properly detected. 163*22ce4affSfengbojiang - The Sandy2x Curve25519 implementation was not as fast as expected 164*22ce4affSfengbojiangon some platforms. This has been fixed. 165*22ce4affSfengbojiang - The NativeClient target was improved. Most notably, it now supports 166*22ce4affSfengbojiangoptimized implementations, and uses pepper_49 by default. 167*22ce4affSfengbojiang - The library can be compiled with recent Emscripten versions. 168*22ce4affSfengbojiangChanges have been made to produce smaller code, and the default heap 169*22ce4affSfengbojiangsize was reduced in the standard version. 170*22ce4affSfengbojiang - The code can now be compiled on SLES11 service pack 4. 171*22ce4affSfengbojiang - Decryption functions can now accept a NULL pointer for the output. 172*22ce4affSfengbojiangThis checks the MAC without writing the decrypted message. 173*22ce4affSfengbojiang - crypto_generichash_final() now returns -1 if called twice. 174*22ce4affSfengbojiang - Support for Visual Studio 2008 was improved. 175*22ce4affSfengbojiang 176*22ce4affSfengbojiang* Version 1.0.10 177*22ce4affSfengbojiang - This release only fixes a compilation issue reported with some older 178*22ce4affSfengbojianggcc versions. There are no functional changes over the previous release. 179*22ce4affSfengbojiang 180*22ce4affSfengbojiang* Version 1.0.9 181*22ce4affSfengbojiang - The Javascript target now includes a `--sumo` option to include all 182*22ce4affSfengbojiangthe symbols of the original C library. 183*22ce4affSfengbojiang - A detached API was added to the ChaCha20-Poly1305 and AES256-GCM 184*22ce4affSfengbojiangimplementations. 185*22ce4affSfengbojiang - The Argon2i password hashing function was added, and is accessible 186*22ce4affSfengbojiangdirectly and through a new, high-level `crypto_pwhash` API. The scrypt 187*22ce4affSfengbojiangfunction remains available as well. 188*22ce4affSfengbojiang - A speed-record AVX2 implementation of BLAKE2b was added (thanks to 189*22ce4affSfengbojiangSamuel Neves). 190*22ce4affSfengbojiang - The library can now be compiled using C++Builder (thanks to @jcolli44) 191*22ce4affSfengbojiang - Countermeasures for Ed25519 signatures malleability have been added 192*22ce4affSfengbojiangto match the irtf-cfrg-eddsa draft (note that malleability is irrelevant to 193*22ce4affSfengbojiangthe standard definition of signature security). Signatures with a small-order 194*22ce4affSfengbojiang`R` point are now also rejected. 195*22ce4affSfengbojiang - Some implementations are now slightly faster when using the Clang 196*22ce4affSfengbojiangcompiler. 197*22ce4affSfengbojiang - The HChaCha20 core function was implemented (`crypto_core_hchacha20()`). 198*22ce4affSfengbojiang - No-op stubs were added for all AES256-GCM public functions even when 199*22ce4affSfengbojiangcompiled on non-Intel platforms. 200*22ce4affSfengbojiang - `crypt_generichash_blake2b_statebytes()` was added. 201*22ce4affSfengbojiang - New macros were added for the IETF variant of the ChaCha20-Poly1305 202*22ce4affSfengbojiangconstruction. 203*22ce4affSfengbojiang - The library can now be compiled on Minix. 204*22ce4affSfengbojiang - HEASLR is now enabled on MinGW builds. 205*22ce4affSfengbojiang 206*22ce4affSfengbojiang* Version 1.0.8 207*22ce4affSfengbojiang - Handle the case where the CPU supports AVX, but we are running 208*22ce4affSfengbojiangon an hypervisor with AVX disabled/not supported. 209*22ce4affSfengbojiang - Faster (2x) scalarmult_base() when using the ref10 implementation. 210*22ce4affSfengbojiang 211*22ce4affSfengbojiang* Version 1.0.7 212*22ce4affSfengbojiang - More functions whose return value should be checked have been 213*22ce4affSfengbojiangtagged with `__attribute__ ((warn_unused_result))`: `crypto_box_easy()`, 214*22ce4affSfengbojiang`crypto_box_detached()`, `crypto_box_beforenm()`, `crypto_box()`, and 215*22ce4affSfengbojiang`crypto_scalarmult()`. 216*22ce4affSfengbojiang - Sandy2x, the fastest Curve25519 implementation ever, has been 217*22ce4affSfengbojiangmerged in, and is automatically used on CPUs supporting the AVX 218*22ce4affSfengbojianginstructions set. 219*22ce4affSfengbojiang - An SSE2 optimized implementation of Poly1305 was added, and is 220*22ce4affSfengbojiangtwice as fast as the portable one. 221*22ce4affSfengbojiang - An SSSE3 optimized implementation of ChaCha20 was added, and is 222*22ce4affSfengbojiangtwice as fast as the portable one. 223*22ce4affSfengbojiang - Faster `sodium_increment()` for common nonce sizes. 224*22ce4affSfengbojiang - New helper functions have been added: `sodium_is_zero()` and 225*22ce4affSfengbojiang `sodium_add()`. 226*22ce4affSfengbojiang - `sodium_runtime_has_aesni()` now properly detects the CPU flag when 227*22ce4affSfengbojiang compiled using Visual Studio. 228*22ce4affSfengbojiang 229*22ce4affSfengbojiang* Version 1.0.6 230*22ce4affSfengbojiang - Optimized implementations of Blake2 have been added for modern 231*22ce4affSfengbojiangIntel platforms. `crypto_generichash()` is now faster than MD5 and SHA1 232*22ce4affSfengbojiangimplementations while being far more secure. 233*22ce4affSfengbojiang - Functions for which the return value should be checked have been 234*22ce4affSfengbojiangtagged with `__attribute__ ((warn_unused_result))`. This will 235*22ce4affSfengbojiangintentionally break code compiled with `-Werror` that didn't bother 236*22ce4affSfengbojiangchecking critical return values. 237*22ce4affSfengbojiang - The `crypto_sign_edwards25519sha512batch_*()` functions have been 238*22ce4affSfengbojiangtagged as deprecated. 239*22ce4affSfengbojiang - Undocumented symbols that were exported, but were only useful for 240*22ce4affSfengbojianginternal purposes have been removed or made private: 241*22ce4affSfengbojiang`sodium_runtime_get_cpu_features()`, the implementation-specific 242*22ce4affSfengbojiang`crypto_onetimeauth_poly1305_donna()` symbols, 243*22ce4affSfengbojiang`crypto_onetimeauth_poly1305_set_implementation()`, 244*22ce4affSfengbojiang`crypto_onetimeauth_poly1305_implementation_name()` and 245*22ce4affSfengbojiang`crypto_onetimeauth_pick_best_implementation()`. 246*22ce4affSfengbojiang - `sodium_compare()` now works as documented, and compares numbers 247*22ce4affSfengbojiangin little-endian format instead of behaving like `memcmp()`. 248*22ce4affSfengbojiang - The previous changes should not break actual applications, but to be 249*22ce4affSfengbojiangsafe, the library version major was incremented. 250*22ce4affSfengbojiang - `sodium_runtime_has_ssse3()` and `sodium_runtime_has_sse41()` have 251*22ce4affSfengbojiangbeen added. 252*22ce4affSfengbojiang - The library can now be compiled with the CompCert compiler. 253*22ce4affSfengbojiang 254*22ce4affSfengbojiang* Version 1.0.5 255*22ce4affSfengbojiang - Compilation issues on some platforms were fixed: missing alignment 256*22ce4affSfengbojiangdirectives were added (required at least on RHEL-6/i386), a workaround 257*22ce4affSfengbojiangfor a VRP bug on gcc/armv7 was added, and the library can now be compiled 258*22ce4affSfengbojiangwith the SunPro compiler. 259*22ce4affSfengbojiang - Javascript target: io.js is not supported any more. Use nodejs. 260*22ce4affSfengbojiang 261*22ce4affSfengbojiang* Version 1.0.4 262*22ce4affSfengbojiang - Support for AES256-GCM has been added. This requires 263*22ce4affSfengbojianga CPU with the aesni and pclmul extensions, and is accessible via the 264*22ce4affSfengbojiangcrypto_aead_aes256gcm_*() functions. 265*22ce4affSfengbojiang - The Javascript target doesn't use eval() any more, so that the 266*22ce4affSfengbojianglibrary can be used in Chrome packaged applications. 267*22ce4affSfengbojiang - QNX and CloudABI are now supported. 268*22ce4affSfengbojiang - Support for NaCl has finally been added. 269*22ce4affSfengbojiang - ChaCha20 with an extended (96 bit) nonce and a 32-bit counter has 270*22ce4affSfengbojiangbeen implemented as crypto_stream_chacha20_ietf(), 271*22ce4affSfengbojiangcrypto_stream_chacha20_ietf_xor() and crypto_stream_chacha20_ietf_xor_ic(). 272*22ce4affSfengbojiangAn IETF-compatible version of ChaCha20Poly1305 is available as 273*22ce4affSfengbojiangcrypto_aead_chacha20poly1305_ietf_npubbytes(), 274*22ce4affSfengbojiangcrypto_aead_chacha20poly1305_ietf_encrypt() and 275*22ce4affSfengbojiangcrypto_aead_chacha20poly1305_ietf_decrypt(). 276*22ce4affSfengbojiang - The sodium_increment() helper function has been added, to increment 277*22ce4affSfengbojiangan arbitrary large number (such as a nonce). 278*22ce4affSfengbojiang - The sodium_compare() helper function has been added, to compare 279*22ce4affSfengbojiangarbitrary large numbers (such as nonces, in order to prevent replay 280*22ce4affSfengbojiangattacks). 281*22ce4affSfengbojiang 282*22ce4affSfengbojiang* Version 1.0.3 283*22ce4affSfengbojiang - In addition to sodium_bin2hex(), sodium_hex2bin() is now a 284*22ce4affSfengbojiangconstant-time function. 285*22ce4affSfengbojiang - crypto_stream_xsalsa20_ic() has been added. 286*22ce4affSfengbojiang - crypto_generichash_statebytes(), crypto_auth_*_statebytes() and 287*22ce4affSfengbojiangcrypto_hash_*_statebytes() have been added in order to retrieve the 288*22ce4affSfengbojiangsize of structures keeping states from foreign languages. 289*22ce4affSfengbojiang - The JavaScript target doesn't require /dev/urandom or an external 290*22ce4affSfengbojiangrandombytes() implementation any more. Other minor Emscripten-related 291*22ce4affSfengbojiangimprovements have been made in order to support libsodium.js 292*22ce4affSfengbojiang - Custom randombytes implementations do not need to provide their own 293*22ce4affSfengbojiangimplementation of randombytes_uniform() any more. randombytes_stir() 294*22ce4affSfengbojiangand randombytes_close() can also be NULL pointers if they are not 295*22ce4affSfengbojiangrequired. 296*22ce4affSfengbojiang - On Linux, getrandom(2) is being used instead of directly accessing 297*22ce4affSfengbojiang/dev/urandom, if the kernel supports this system call. 298*22ce4affSfengbojiang - crypto_box_seal() and crypto_box_seal_open() have been added. 299*22ce4affSfengbojiang - Visual Studio 2015 is now supported. 300*22ce4affSfengbojiang 301*22ce4affSfengbojiang* Version 1.0.2 302*22ce4affSfengbojiang - The _easy and _detached APIs now support precalculated keys; 303*22ce4affSfengbojiangcrypto_box_easy_afternm(), crypto_box_open_easy_afternm(), 304*22ce4affSfengbojiangcrypto_box_detached_afternm() and crypto_box_open_detached_afternm() 305*22ce4affSfengbojianghave been added as an alternative to the NaCl interface. 306*22ce4affSfengbojiang - Memory allocation functions can now be used on operating systems with 307*22ce4affSfengbojiangno memory protection. 308*22ce4affSfengbojiang - crypto_sign_open() and crypto_sign_edwards25519sha512batch_open() 309*22ce4affSfengbojiangnow accept a NULL pointer instead of a pointer to the message size, if 310*22ce4affSfengbojiangstoring this information is not required. 311*22ce4affSfengbojiang - The close-on-exec flag is now set on the descriptor returned when 312*22ce4affSfengbojiangopening /dev/urandom. 313*22ce4affSfengbojiang - A libsodium-uninstalled.pc file to use pkg-config even when 314*22ce4affSfengbojianglibsodium is not installed, has been added. 315*22ce4affSfengbojiang - The iOS target now includes armv7s and arm64 optimized code, as well 316*22ce4affSfengbojiangas i386 and x86_64 code for the iOS simulator. 317*22ce4affSfengbojiang - sodium_free() can now be called on regions with PROT_NONE protection. 318*22ce4affSfengbojiang - The Javascript tests can run on Ubuntu, where the node binary was 319*22ce4affSfengbojiangrenamed nodejs. io.js can also be used instead of node. 320*22ce4affSfengbojiang 321*22ce4affSfengbojiang* Version 1.0.1 322*22ce4affSfengbojiang - DLL_EXPORT was renamed SODIUM_DLL_EXPORT in order to avoid 323*22ce4affSfengbojiangcollisions with similar macros defined by other libraries. 324*22ce4affSfengbojiang - sodium_bin2hex() is now constant-time. 325*22ce4affSfengbojiang - crypto_secretbox_detached() now supports overlapping input and output 326*22ce4affSfengbojiangregions. 327*22ce4affSfengbojiang - NaCl's donna_c64 implementation of curve25519 was reading an extra byte 328*22ce4affSfengbojiangpast the end of the buffer containing the base point. This has been 329*22ce4affSfengbojiangfixed. 330*22ce4affSfengbojiang 331*22ce4affSfengbojiang* Version 1.0.0 332*22ce4affSfengbojiang - The API and ABI are now stable. New features will be added, but 333*22ce4affSfengbojiangbackward-compatibility is guaranteed through all the 1.x.y releases. 334*22ce4affSfengbojiang - crypto_sign() properly works with overlapping regions again. Thanks 335*22ce4affSfengbojiangto @pysiak for reporting this regression introduced in version 0.6.1. 336*22ce4affSfengbojiang - The test suite has been extended. 337*22ce4affSfengbojiang 338*22ce4affSfengbojiang* Version 0.7.1 (1.0 RC2) 339*22ce4affSfengbojiang - This is the second release candidate of Sodium 1.0. Minor 340*22ce4affSfengbojiangcompilation, readability and portability changes have been made and the 341*22ce4affSfengbojiangtest suite was improved, but the API is the same as the previous release 342*22ce4affSfengbojiangcandidate. 343*22ce4affSfengbojiang 344*22ce4affSfengbojiang* Version 0.7.0 (1.0 RC1) 345*22ce4affSfengbojiang - Allocating memory to store sensitive data can now be done using 346*22ce4affSfengbojiangsodium_malloc() and sodium_allocarray(). These functions add guard 347*22ce4affSfengbojiangpages around the protected data to make it less likely to be 348*22ce4affSfengbojiangaccessible in a heartbleed-like scenario. In addition, the protection 349*22ce4affSfengbojiangfor memory regions allocated that way can be changed using 350*22ce4affSfengbojiangsodium_mprotect_noaccess(), sodium_mprotect_readonly() and 351*22ce4affSfengbojiangsodium_mprotect_readwrite(). 352*22ce4affSfengbojiang - ed25519 keys can be converted to curve25519 keys with 353*22ce4affSfengbojiangcrypto_sign_ed25519_pk_to_curve25519() and 354*22ce4affSfengbojiangcrypto_sign_ed25519_sk_to_curve25519(). This allows using the same 355*22ce4affSfengbojiangkeys for signature and encryption. 356*22ce4affSfengbojiang - The seed and the public key can be extracted from an ed25519 key 357*22ce4affSfengbojiangusing crypto_sign_ed25519_sk_to_seed() and crypto_sign_ed25519_sk_to_pk(). 358*22ce4affSfengbojiang - aes256 was removed. A timing-attack resistant implementation might 359*22ce4affSfengbojiangbe added later, but not before version 1.0 is tagged. 360*22ce4affSfengbojiang - The crypto_pwhash_scryptxsalsa208sha256_* compatibility layer was 361*22ce4affSfengbojiangremoved. Use crypto_pwhash_scryptsalsa208sha256_*. 362*22ce4affSfengbojiang - The compatibility layer for implementation-specific functions was 363*22ce4affSfengbojiangremoved. 364*22ce4affSfengbojiang - Compilation issues with Mingw64 on MSYS (not MSYS2) were fixed. 365*22ce4affSfengbojiang - crypto_pwhash_scryptsalsa208sha256_STRPREFIX was added: it contains 366*22ce4affSfengbojiangthe prefix produced by crypto_pwhash_scryptsalsa208sha256_str() 367*22ce4affSfengbojiang 368*22ce4affSfengbojiang* Version 0.6.1 369*22ce4affSfengbojiang - Important bug fix: when crypto_sign_open() was given a signed 370*22ce4affSfengbojiangmessage too short to even contain a signature, it was putting an 371*22ce4affSfengbojiangunlimited amount of zeros into the target buffer instead of 372*22ce4affSfengbojiangimmediately returning -1. The bug was introduced in version 0.5.0. 373*22ce4affSfengbojiang - New API: crypto_sign_detached() and crypto_sign_verify_detached() 374*22ce4affSfengbojiangto produce and verify ed25519 signatures without having to duplicate 375*22ce4affSfengbojiangthe message. 376*22ce4affSfengbojiang - New ./configure switch: --enable-minimal, to create a smaller 377*22ce4affSfengbojianglibrary, with only the functions required for the high-level API. 378*22ce4affSfengbojiangMainly useful for the JavaScript target and embedded systems. 379*22ce4affSfengbojiang - All the symbols are now exported by the Emscripten build script. 380*22ce4affSfengbojiang - The pkg-config .pc file is now always installed even if the 381*22ce4affSfengbojiangpkg-config tool is not available during the installation. 382*22ce4affSfengbojiang 383*22ce4affSfengbojiang* Version 0.6.0 384*22ce4affSfengbojiang - The ChaCha20 stream cipher has been added, as crypto_stream_chacha20_* 385*22ce4affSfengbojiang - The ChaCha20Poly1305 AEAD construction has been implemented, as 386*22ce4affSfengbojiangcrypto_aead_chacha20poly1305_* 387*22ce4affSfengbojiang - The _easy API does not require any heap allocations any more and 388*22ce4affSfengbojiangdoes not have any overhead over the NaCl API. With the password 389*22ce4affSfengbojianghashing function being an obvious exception, the library doesn't 390*22ce4affSfengbojiangallocate and will not allocate heap memory ever. 391*22ce4affSfengbojiang - crypto_box and crypto_secretbox have a new _detached API to store 392*22ce4affSfengbojiangthe authentication tag and the encrypted message separately. 393*22ce4affSfengbojiang - crypto_pwhash_scryptxsalsa208sha256*() functions have been renamed 394*22ce4affSfengbojiangcrypto_pwhash_scryptsalsa208sha256*(). 395*22ce4affSfengbojiang - The low-level crypto_pwhash_scryptsalsa208sha256_ll() function 396*22ce4affSfengbojiangallows setting individual parameters of the scrypt function. 397*22ce4affSfengbojiang - New macros and functions for recommended crypto_pwhash_* parameters 398*22ce4affSfengbojianghave been added. 399*22ce4affSfengbojiang - Similarly to crypto_sign_seed_keypair(), crypto_box_seed_keypair() 400*22ce4affSfengbojianghas been introduced to deterministically generate a key pair from a seed. 401*22ce4affSfengbojiang - crypto_onetimeauth() now provides a streaming interface. 402*22ce4affSfengbojiang - crypto_stream_chacha20_xor_ic() and crypto_stream_salsa20_xor_ic() 403*22ce4affSfengbojianghave been added to use a non-zero initial block counter. 404*22ce4affSfengbojiang - On Windows, CryptGenRandom() was replaced by RtlGenRandom(), which 405*22ce4affSfengbojiangdoesn't require the Crypt API. 406*22ce4affSfengbojiang - The high bit in curve25519 is masked instead of processing the key as 407*22ce4affSfengbojianga 256-bit value. 408*22ce4affSfengbojiang - The curve25519 ref implementation was replaced by the latest ref10 409*22ce4affSfengbojiangimplementation from Supercop. 410*22ce4affSfengbojiang - sodium_mlock() now prevents memory from being included in coredumps 411*22ce4affSfengbojiangon Linux 3.4+ 412*22ce4affSfengbojiang 413*22ce4affSfengbojiang* Version 0.5.0 414*22ce4affSfengbojiang - sodium_mlock()/sodium_munlock() have been introduced to lock pages 415*22ce4affSfengbojiangin memory before storing sensitive data, and to zero them before 416*22ce4affSfengbojiangunlocking them. 417*22ce4affSfengbojiang - High-level wrappers for crypto_box and crypto_secretbox 418*22ce4affSfengbojiang(crypto_box_easy and crypto_secretbox_easy) can be used to avoid 419*22ce4affSfengbojiangdealing with the specific memory layout regular functions depend on. 420*22ce4affSfengbojiang - crypto_pwhash_scryptsalsa208sha256* functions have been added 421*22ce4affSfengbojiangto derive a key from a password, and for password storage. 422*22ce4affSfengbojiang - Salsa20 and ed25519 implementations now support overlapping 423*22ce4affSfengbojianginputs/keys/outputs (changes imported from supercop-20140505). 424*22ce4affSfengbojiang - New build scripts for Visual Studio, Emscripten, different Android 425*22ce4affSfengbojiangarchitectures and msys2 are available. 426*22ce4affSfengbojiang - The poly1305-53 implementation has been replaced with Floodyberry's 427*22ce4affSfengbojiangpoly1305-donna32 and poly1305-donna64 implementations. 428*22ce4affSfengbojiang - sodium_hex2bin() has been added to complement sodium_bin2hex(). 429*22ce4affSfengbojiang - On OpenBSD and Bitrig, arc4random() is used instead of reading 430*22ce4affSfengbojiang/dev/urandom. 431*22ce4affSfengbojiang - crypto_auth_hmac_sha512() has been implemented. 432*22ce4affSfengbojiang - sha256 and sha512 now have a streaming interface. 433*22ce4affSfengbojiang - hmacsha256, hmacsha512 and hmacsha512256 now support keys of 434*22ce4affSfengbojiangarbitrary length, and have a streaming interface. 435*22ce4affSfengbojiang - crypto_verify_64() has been implemented. 436*22ce4affSfengbojiang - first-class Visual Studio build system, thanks to @evoskuil 437*22ce4affSfengbojiang - CPU features are now detected at runtime. 438*22ce4affSfengbojiang 439*22ce4affSfengbojiang* Version 0.4.5 440*22ce4affSfengbojiang - Restore compatibility with OSX <= 10.6 441*22ce4affSfengbojiang 442*22ce4affSfengbojiang* Version 0.4.4 443*22ce4affSfengbojiang - Visual Studio is officially supported (VC 2010 & VC 2013) 444*22ce4affSfengbojiang - mingw64 is now supported 445*22ce4affSfengbojiang - big-endian architectures are now supported as well 446*22ce4affSfengbojiang - The donna_c64 implementation of curve25519_donna_c64 now handles 447*22ce4affSfengbojiangnon-canonical points like the ref implementation 448*22ce4affSfengbojiang - Missing scalarmult_curve25519 and stream_salsa20 constants are now exported 449*22ce4affSfengbojiang - A crypto_onetimeauth_poly1305_ref() wrapper has been added 450*22ce4affSfengbojiang 451*22ce4affSfengbojiang* Version 0.4.3 452*22ce4affSfengbojiang - crypto_sign_seedbytes() and crypto_sign_SEEDBYTES were added. 453*22ce4affSfengbojiang - crypto_onetimeauth_poly1305_implementation_name() was added. 454*22ce4affSfengbojiang - poly1305-ref has been replaced by a faster implementation, 455*22ce4affSfengbojiangFloodyberry's poly1305-donna-unrolled. 456*22ce4affSfengbojiang - Stackmarkings have been added to assembly code, for Hardened Gentoo. 457*22ce4affSfengbojiang - pkg-config can now be used in order to retrieve compilations flags for 458*22ce4affSfengbojiangusing libsodium. 459*22ce4affSfengbojiang - crypto_stream_aes256estream_*() can now deal with unaligned input 460*22ce4affSfengbojiangon platforms that require word alignment. 461*22ce4affSfengbojiang - portability improvements. 462*22ce4affSfengbojiang 463*22ce4affSfengbojiang* Version 0.4.2 464*22ce4affSfengbojiang - All NaCl constants are now also exposed as functions. 465*22ce4affSfengbojiang - The Android and iOS cross-compilation script have been improved. 466*22ce4affSfengbojiang - libsodium can now be cross-compiled to Windows from Linux. 467*22ce4affSfengbojiang - libsodium can now be compiled with emscripten. 468*22ce4affSfengbojiang - New convenience function (prototyped in utils.h): sodium_bin2hex(). 469*22ce4affSfengbojiang 470*22ce4affSfengbojiang* Version 0.4.1 471*22ce4affSfengbojiang - sodium_version_*() functions were not exported in version 0.4. They 472*22ce4affSfengbojiangare now visible as intended. 473*22ce4affSfengbojiang - sodium_init() now calls randombytes_stir(). 474*22ce4affSfengbojiang - optimized assembly version of salsa20 is now used on amd64. 475*22ce4affSfengbojiang - further cleanups and enhanced compatibility with non-C99 compilers. 476*22ce4affSfengbojiang 477*22ce4affSfengbojiang* Version 0.4 478*22ce4affSfengbojiang - Most constants and operations are now available as actual functions 479*22ce4affSfengbojianginstead of macros, making it easier to use from other languages. 480*22ce4affSfengbojiang - New operation: crypto_generichash, featuring a variable key size, a 481*22ce4affSfengbojiangvariable output size, and a streaming API. Currently implemented using 482*22ce4affSfengbojiangBlake2b. 483*22ce4affSfengbojiang - The package can be compiled in a separate directory. 484*22ce4affSfengbojiang - aes128ctr functions are exported. 485*22ce4affSfengbojiang - Optimized versions of curve25519 (curve25519_donna_c64), poly1305 486*22ce4affSfengbojiang(poly1305_53) and ed25519 (ed25519_ref10) are available. Optionally calling 487*22ce4affSfengbojiangsodium_init() once before using the library makes it pick the fastest 488*22ce4affSfengbojiangimplementation. 489*22ce4affSfengbojiang - New convenience function: sodium_memzero() in order to securely 490*22ce4affSfengbojiangwipe a memory area. 491*22ce4affSfengbojiang - A whole bunch of cleanups and portability enhancements. 492*22ce4affSfengbojiang - On Windows, a .REF file is generated along with the shared library, 493*22ce4affSfengbojiangfor use with Visual Studio. The installation path for these has become 494*22ce4affSfengbojiang$prefix/bin as expected by MingW. 495*22ce4affSfengbojiang 496*22ce4affSfengbojiang* Version 0.3 497*22ce4affSfengbojiang - The crypto_shorthash operation has been added, implemented using 498*22ce4affSfengbojiangSipHash-2-4. 499*22ce4affSfengbojiang 500*22ce4affSfengbojiang* Version 0.2 501*22ce4affSfengbojiang - crypto_sign_seed_keypair() has been added 502*22ce4affSfengbojiang 503*22ce4affSfengbojiang* Version 0.1 504*22ce4affSfengbojiang - Initial release. 505*22ce4affSfengbojiang 506