2017-09-19 00:45:28 +00:00
|
|
|
|
Squashed 'libsodium/' changes from 7d5d9204e..18609cffa
4c37368f9 Nits
94550cefd Remove dev #warning
3e0b4dec6 Add sodium_base64_encoded_len()
4ce2856a5 Avoid negations on unsigned values
7e06a6a99 Annotate
18f0fff89 More tests: verify that they key gets updated after the counter wraps
e061abc2b The documentation is not a work in progress any more
91233a014 Tag salsa208 as deprecated
ee1d5c96d Move the codecs tests to their own test file
558355e56 Check if SIGABRT can be trapped multiple times in a row
8ee67b1dd More tests
1f72dec89 More tests
3db75fc64 No need for ge_scalarmult_vartime() in minimal mode
41dc93322 More tests
aec433cec Additional check
87af832ae Do not trigger Travis+Coverity in the master branch
7423408cd Make the behavior of hex2bin() consistent with base642bin()
00660d79b secretstream test: don't pull twice if we don't test with AD
3c8a7f17f Add tests for short, invalid unpadded base64 strings
c7fe84cfb Skip trailing ignored characters in base64 decoding
70e5ff5e1 Add a helper macro to compute the length of a base64 string
9209e89d9 More tests
31e9a5541 More tests
61214ba6b Remove redundant test
525c21ed1 Tests
77f3b7135 Indent
1875980d3 More tests
5b9680ead More tests
4828c5923 ~ 80 columns please
66c621f41 Faster; doesn't require to wipe the output stream
5da8f4fbc Add a global xor_buf() private helper function
7d756fab9 xor the key and the nonce on rekey for better separation
bb1b27fa3 Improve readability
10bb28b27 One more COMPILER_ASSERT()
2ce41de29 Define macros instead of repeated offsets
e878bc141 More keygen tests
f244f658d int -> size_t
9c53da4a6 metamorphic tests for HMAC
bd69a3083 metamorphic tests for onetimeauth
a7b75a2d7 + simple metamorphic tests for crypto_generichash()
a029b352a Don't generate SSE2 code if that instruction set hasn't been enabled
09fd953fc Revert "__SSE2__ may need to be explicitly enabled"
35d8aa5d3 __SSE2__ may need to be explicitly enabled
a161dd9fa On 32-bit systems, the limit is SIZE_MAX
251751e69 Update ChangeLog
d8a8201bb Avoid "in" and "out". Use "c" to represent the ciphertext.
1181a47cb Proper xchacha20poly1305_MESSAGEBYTES_MAX definition
bfab44aa4 initbytes -> headerbytes for clarity
e8f1c0be6 secretstream: use "header" instead of "in" and "out" for clarity
9e0ff55eb Add the ability to use only strong symbols, even on ELF targets
b0420b32d Define SODIUM_EXPORT_WEAK instead of adding __attribute__((weak)) tags
ae515a16a Bring back -fno-asynchronous-unwind-tables on MingW
3df3fabb8 No default clause needed
1f8056ab1 Use #error in autoconf tests
147d8b620 Disable AVX512 on MingW even harder
ffce4334e Disable AVX512 on MingW for now
07de00bc9 Revert -fno-asynchronous-unwind-tables addition
9aa116531 up
eb8c283dd Add -fno-asynchronous-unwind-tables to optimized builds
186b398a2 -fno-asynchronous-unwind-tables is now required on MingW
7de597f05 Update m4 deps ; remove pkg.m4
383705ffc The AVX512 optimized BLAKE2B implementation hasn't been imported yet
f86f021ac Travis CI : Move the tcc check to the install step
19496bcc0 Don't try to access /usr/local on Travis CI
ca43a1268 Old tcc versions miscompile `while (++in[x])`
10edd16b4 Modernize the core3 test
dcde773e5 Travis CI: don't run multiple jobs in parallel due to memory requirements
150c6930e Travis CI: avoid duplicate addons section
cdfb0aaa3 tcc + travis...
9f4011197 tcc doesn't seem to work on Travis CI
7e8cdd827 Travis: start with a quick compilation using tcc
c6aa04108 Move #ifdef up
b31a3f247 Disable AVX512 optimizations on clang < 4
4aba976d5 Explicit casts
15ee95c64 Remove unused var
dcd60ba66 Force inline
5cc334b33 Add AVX512F optimized Argon2 implementation
70f66c9a6 Check for avx/avx2/avx512f linkage
6866b3d55 Use macros instead of magic numbers
1c0677b09 Check for AVX512F support
80095105b Missing pieces of a version bump
390f865e3 Add tests for scrypt rehash
2a2b85eee Add tests for crypto_pwhash_str_needs_rehash()
979b21d67 Remove extra semicolumns
62c41c703 Avoid untagged unions
5cf1de94a Remove trailing coma
3aa1c71de Don't return void
d0a418a86 + _crypto_pwhash_scryptsalsa208sha256_str_needs_rehash()
6dcba550c Confirm that emcc is actually being used if EMSCRIPTEN is defined
0ae678b0f Avoid multiple declarations in an EN_ASM({}) block
b26de68a6 Use single quotes inside EM_ASM
1aae564da Avoid duplicate initializations; reorder for consistency w/ decl
81cf1ff6d Use unsigned for loop counters
e2efa6d7e Remove unused variable
e06c70afe Use the dedicated type for the argon2 type id
378304f81 Export crypto_pwhash_str_needs_rehash() to Javascript/WebAssembly
e8828eef7 Don't bother verifying hashes whose length is >= crypto_pwhash_STRBYTES
7cc482523 Add crypto_pwhash_str_needs_rehash()
c65189a0c Explicit casts
7b687bb45 + Jonathan Stowe for Natrium (Perl 6 bindings)
c72ef48f0 Static-ify what we currently don't need in crypto_core/curve25519_ref10
5c8b8ea01 Simplify
0af31aeb2 Fill the max output buffer size in sodium_bin2base64()
6b43c1ddb Javascript: don't define crypto_pwhash constants in non-sumo builds
e236df63e Trim empty lines
75cfcf208 Merge branch 'master' of github.com:jedisct1/libsodium
e40e0f6dd Adjust secretstream_..._rekey() after e84336ac
514150d8b Merge branch 'master' of github.com:jedisct1/libsodium
394e21884 Do not clear the padding (for alignment) section of a blake2b state
a0fea6965 Remove RUNNING_JS_OPTS for WebAssembly
d863c9665 chmod +x *.sh
957c251f8 chmod +x *.sh
ce2ecc596 One more compiler assertion
e84336ac4 secretstream: assume the internal nonce is little endian
fd4478288 Test sodium_pad() with a NULL pointer
f61a121b8 Regen emscripten symbols
f8e535a44 messagesbytes -> messagebytes
cd721cfc1 Have generate-emscripten-symbols.sh automatically update the js/wasm build script
aa20d2e86 Add secretstream constants
49f1d87cf salsa208: messagebyte -> messagebytes
a0b9bc46e constcheck: grab a few more constants
0ccdfd0c8 Update emscripten symbols list
242045cb4 Update emscripten symbols list
30a25dbb2 Bump
be58b2e66 Accept a NULL pointer for the padded length in sodium_pad()
b503d75e4 Add crypto_secretstream_*() to MSVC solutions
a55e13246 Update packaging for .NET Core (#583)
4c93d0391 C++ compat
0850e5580 Check that a zero blocksize returns -1
a27c18d0e No need for two buffers in the padding test
d5574a69f Complete sodium_pad/unpad() and add a couple tests
b9ed93fcb Change the sodium_pad() API to accept a maximum buffer length
4fd66e3ad Name similar things the same way in sodium_pad() and sodium_unpad()
fb4dc083e Update ChangeLog
50c7632cc + sodium_pad() / sodium_unpad()
55a578d62 Merge branch 'master' of github.com:jedisct1/libsodium
b27714898 Reorder crypto_secretstream_*() prototypes in a more intuitive sequence
c3b315ec7 + Firefox
80296be94 Some notes about RtlGenRandom
914ff8757 Format paragraphs
c65426147 Explain that sodium_misuse() still aborts by default
901c49203 + crypto_secretstream_*()
a335fc2da Merge branch 'master' of github.com:jedisct1/libsodium
5f1f6f747 THANKS += PIA
6e8e0a93f Add a couple tests for crypto_secretstream_*()
88c0b6538 Trigger sodium_misuse() if mlen > secretstream_MESSAGESBYTES_MAX
72d5d506d Sort
df7ad2632 Introduce a new crypto_secretstream_*() API
45f2759d8 Update packaging scripts to .NET Core 2.0 (#582)
c39ecb245 Update packaging for .NET Core (#581)
100a055a5 Indent
e6e3f7dd8 ChangeLog
76995c52f Argon2: use sodium_{bin2base64,base642bin} instead of a private implementation
265bdcfe0 bin2hex & bin2base64: return a null size on error
a6480aec4 b64 test: intentionally overestimate sizes
74fd8fd1c C++ compat
ad5a5232a Make that a size_t
f42390a55 Update Visual Studio solutions
cdbb43f44 base64 tests
eb84b00b7 glibc requires <stdint.h> for SIZE_MAX
3f272cbbf Add a base64 codec, due to popular request
308684790 Move the codecs from sodium/utils.c to a dedicated file
b49054ff8 Merge branch 'master' of github.com:jedisct1/libsodium
ef7c9f44c Sort
c87e6f5e1 Add -Wold-style-declaration
dd9416fd5 Doc
1c573d4cb Update
5b141eb9e Add some blank lines for readability
7e91aa3f8 s/the//
4baea3575 Merge branch 'master' of github.com:jedisct1/libsodium
9b7db7c3f Document crypto_aead_aes256gcm_*() limitations
8f0953b31 Merge branch 'master' of github.com:jedisct1/libsodium
9e0e77a3f Update ChangeLog
a894ec93f Add crypto_pwhash_str_alg()
cde31281d Bench: don't tie the printed result to the number of iterations
6d59a5897 Make the number of iterations configurable; reduce the default
28a1e6886 Add an interesting test case for a custom randombytes_uniform implementation
5b4db091d Add a benchmark mode
8813c36ff randombytes test: restore the salsa20-based rng at the end, for benchmarks
a8cc1634f Indent
9d03fbb38 Merge branch 'master' of github.com:jedisct1/libsodium
196e03299 Preliminary ChangeLog
19f76d7cb Simplify
544ce6400 Just a simple script to match constants with functions
f711c6d04 + emscripten-wasm.sh
1a3b474f7 Update the exported list of JS symbols
e1fa9cc90 Add *_messagebytes_max() wrappers
53280aa28 Revert "wasm tests: skip over *.asm.js files"
ac8111c31 wasm tests: skip over *.asm.js files
29914ec82 [Findsodium.cmake] DON'T OVERWRITE LIBRARY SUFFIXES (#576)
f02770b2a Revert "+ sodium_alloc_overhead()"
c5b61d812 + sodium_alloc_overhead()
23c36615c Remove TOTAL_MEMORY from wasm builds
c56fa3ccf Include private/common.h for COMPILER_ASSERT
56eb70f8b Sort
3c3214fbd Node need for --expose-wasm any more with recent nodejs versions
b5b67d074 Add -fembed-bitcode to the iOS 64 target, for WatchOS and TVOS
580bf7a19 emscripten-wasm.sh: generate HTML files even if we don't use them
ae8cd7208 emscript-wasm: don't use --enable-minimal on sumo builds
f2a7b6123 Update symbols
774ec67e2 Repair sodium_core test
8a14f5c16 Don't call sodium_misuse() in the sodium_core test for Javascript/wasm targets
0ce03b6ce misuse test: just return from main() on unsupported platforms
6ac18dae4 The MESSAGEBYTES_MAX constants are to be used with the libsodium API
180a89cb2 More tests for signatures
90bd94e4e Coverage exclusion
b34b89ab3 secrebox: add a test with in/out buffers next to each other
3dd56fa91 Coverage exclusions
ff8bb6705 More tests for scrypt
a3f90d602 Indent
63d8a896f Test KX with a weak PK
7ad9a46cb More tests
a9a21a7df Test Ed->X conversion with x not being a square root
982cde1a7 Test crypto_box_open_detached() with a weak PK
52bfc0325 Initialize the base&aligned addresses in argon2's allocate_memory
fc9088792 Add missing include "core.h"
c15173de1 Turn a few calls with an insane message length into a sodium_misuse()
f28fe0ae2 Cap argon2*_BYTES_MAX to SODIUM_SIZE_MAX
bac61ebf5 BYTES_MAX -> MESSAGEBYTES_MAX
16179b87f Introduce *_BYTES_MAX constants
568adb570 Trim crypto_pwhash_scryptsalsa208sha256_BYTES_MAX down to ~127 GB
3525f032d Inline
3ee2151f1 memzero(): with weak symbols, just call memset()
105f7108d Argon2: wipe all blocks if the ARGON2_FLAG_CLEAR_MEMORY flag is set
dc2c68067 C++ compat
fb739acd7 fill_memory_blocks() cannot possibly fail
c3908f87d Argon2: deallocate memory if fill_memory_blocks() ever fails
8d91a3275 Add more tests for crypto_sign_ed25519_pk_to_curve25519()
214fe473f Add an invalid key to the signature tests
e1b044820 Test crypto_secretbox_open_detached() with a NULL message pointer
c90ddae75 Use the right state type for the auth256 test
51a0b96f1 Test crypto_hmac_sha256_update() with empty chunks
2a2ed3df3 Volatilify the accumulator, at least for consistency with sodium_is_zero()
cd51ff29e Coverage exclusions
33d6908f9 Test crypto_auth_hmacsha256_*()
f92c82537 More tests
67a7df73b Add all the Visual Studio files in the tarball
56efb47ab .13 -> .14
334738cf2 Add resource.rc to the Visual Studio filters files
47796a5b8 Indent
d7ecf04d6 Comment randombytes_uniform()
eaab51278 Add specialized ge_mul_l() to multiply by the order of the main subgroup
6de26b59d ed25519_pk_to_curve25519: check that the input is in the right subgroup
571915ea2 ed25519: un-static the check for low-order points
b57f9668f More tests
cc5191607 Tag sodium_runtime_has_*() symbols as weak
8b9b6a54b Remove error string from sodium_misuse()
9361070f9 Merge branch 'master' of github.com:jedisct1/libsodium * 'master' of github.com:jedisct1/libsodium: Tweak emscripten-wasm.sh Clear the BLAKE2B state only once, on finalization memzero() the state if we call generichash_final() twice
63cbad750 Visual Studio doesn't like abort() chains
21fd252ac Tweak emscripten-wasm.sh
97486f7d4 Clear the BLAKE2B state only once, on finalization
1090fcfd4 memzero() the state if we call generichash_final() twice
6768d82ea Add missing return value in set_misuse_handler()
9df008a78 Add some invalid base64 strings to pwhash_str_verify() tests
5d56821d3 More tests, and start testing misuse cases
0238cbcf6 Bump NuGet package
0e8d7c926 Implement sodium_set_misuse_handler()
9def4d9a8 Add tests for crypto_kx_*() when a single key is required
8a70f258f No more abort() calls!
c3b24c1d2 Explain why some abort() calls are still around
74703c63a More abort() -> sodium_misuse()
a0e997b8a More abort() -> sodium_misuse()
ea9281cb0 More abort() -> sodium_misuse()
c7459c125 Remove the useless donations button
a61dddd49 Back to dev mode. If you want a stable version, use the stable branch.
bcf98b554 Start replacing abort() with an internal sodium_misuse() function
c86080e7b Fix funky indentation
608e103e4 Finish the Argon2id tests
8b99f44ff Abort on misuse in crypto_kx_server_session_keys() too
765ba55cd crypto_kx(): abort if the function is called without any non-NULL pointer
90658321d Only include sodium/crypto_pwhash_scryptsalsa208sha256.h on !minimal
1f826df2d is_zero(): volatilize the accumulator
3d400363b sodium_compare: x1, x2 don't have to be volatile
99f8c19a1 memzero(): call the weak function after zeroing
30e8a2b23 The time has come to use memset_s() if available
f0c15da02 We don't need these extra loads
bcdb042ad Revert "Explicitly include <limits.h>"
7dbbd266b Simple SSE2 implementation of crypto_verify*()
94a8b3327 Simplify crypto_verify_*()
37e99aa4f Make it more difficult for the compiler to optimize crypto_verify_*()
c746eb277 Revert "Bail out if SIZE_MAX < crypto_pwhash_MEMLIMIT_MAX"
0fd9aae17 Explicitly include <limits.h>
c2ef7d088 Bail out if SIZE_MAX < crypto_pwhash_MEMLIMIT_MAX
git-subtree-dir: libsodium
git-subtree-split: 18609cffafed6ccfcac77088d402074e1d74f02c
2017-09-27 05:22:05 +00:00
|
|
|
* Version 1.0.14
|
|
|
|
- iOS binaries should now be compatible with WatchOS and TVOS.
|
|
|
|
- WebAssembly is now officially supported. Special thanks to
|
|
|
|
@facekapow and @pepyakin who helped to make it happen.
|
|
|
|
- Internal consistency checks failing and primitives used with
|
|
|
|
dangerous/out-of-bounds/invalid parameters used to call abort(3).
|
|
|
|
Now, a custom handler *that doesn't return* can be set with the
|
|
|
|
`set_sodium_misuse()` function. It still aborts by default or if the
|
|
|
|
handler ever returns. This is not a replacement for non-fatal,
|
|
|
|
expected runtime errors. This handler will be only called in
|
|
|
|
unexpected situations due to potential bugs in the library or in
|
|
|
|
language bindings.
|
|
|
|
- `*_MESSAGEBYTES_MAX` macros (and the corresponding
|
|
|
|
`_messagebytes_max()` symbols) have been added to represent the
|
|
|
|
maximum message size that can be safely handled by a primitive.
|
|
|
|
Language bindings are encouraged to check user inputs against these
|
|
|
|
maximum lengths.
|
|
|
|
- The test suite has been extended to cover more edge cases.
|
|
|
|
- crypto_sign_ed25519_pk_to_curve25519() now rejects points that are
|
|
|
|
not on the curve, or not in the main subgroup.
|
|
|
|
- Further changes have been made to ensure that smart compilers will
|
|
|
|
not optimize out code that we don't want to be optimized.
|
|
|
|
- Visual Studio solutions are now included in distribution tarballs.
|
|
|
|
- The `sodium_runtime_has_*` symbols for CPU features detection are
|
|
|
|
now defined as weak symbols, i.e. they can be replaced with an
|
|
|
|
application-defined implementation. This can be useful to disable
|
|
|
|
AVX* when temperature/power consumption is a concern.
|
|
|
|
- `crypto_kx_*()` now aborts if called with no non-NULL pointers to
|
|
|
|
store keys to.
|
|
|
|
- SSE2 implementations of `crypto_verify_*()` have been added.
|
|
|
|
- Passwords can be hashed using a specific algorithm with the new
|
|
|
|
`crypto_pwhash_str_alg()` function.
|
|
|
|
- Due to popular demand, base64 encoding (`sodium_bin2base64()`) and
|
|
|
|
decoding (`sodium_base642bin()`) have been implemented.
|
|
|
|
- A new `crypto_secretstream_*()` API was added to safely encrypt files
|
|
|
|
and multi-part messages.
|
|
|
|
- The `sodium_pad()` and `sodium_unpad()` helper functions have been
|
|
|
|
added in order to add & remove padding.
|
|
|
|
- An AVX512 optimized implementation of Argon2 has been added (written
|
|
|
|
by Ondrej Mosnáček, thanks!)
|
|
|
|
- The `crypto_pwhash_str_needs_rehash()` function was added to check if
|
|
|
|
a password hash string matches the given parameters, or if it needs an
|
|
|
|
update.
|
|
|
|
- The library can now be compiled with recent versions of
|
|
|
|
emscripten/binaryen that don't allow multiple variables declarations
|
|
|
|
using a single `var` statement.
|
|
|
|
|
2017-09-19 00:45:28 +00:00
|
|
|
* Version 1.0.13
|
|
|
|
- Javascript: the sumo builds now include all symbols. They were
|
|
|
|
previously limited to symbols defined in minimal builds.
|
|
|
|
- The public `crypto_pwhash_argon2i_MEMLIMIT_MAX` constant was
|
|
|
|
incorrectly defined on 32-bit platforms. This has been fixed.
|
|
|
|
- Version 1.0.12 didn't compile on OpenBSD/i386 using the base gcc
|
|
|
|
compiler. This has been fixed.
|
|
|
|
- The Android compilation scripts have been updated for NDK r14b.
|
|
|
|
- armv7s-optimized code was re-added to iOS builds.
|
|
|
|
- An AVX2 optimized implementation of the Argon2 round function was
|
|
|
|
added.
|
|
|
|
- The Argon2id variant of Argon2 has been implemented. The
|
|
|
|
high-level `crypto_pwhash_str_verify()` function automatically detects
|
|
|
|
the algorithm and can verify both Argon2i and Argon2id hashed passwords.
|
|
|
|
The default algorithm for newly hashed passwords remains Argon2i in
|
|
|
|
this version to avoid breaking compatibility with verifiers running
|
|
|
|
libsodium <= 1.0.12.
|
|
|
|
- A `crypto_box_curve25519xchacha20poly1305_seal*()` function set was
|
|
|
|
implemented.
|
|
|
|
- scrypt was removed from minimal builds.
|
|
|
|
- libsodium is now available on NuGet.
|
|
|
|
|
|
|
|
* Version 1.0.12
|
|
|
|
- Ed25519ph was implemented, adding a multi-part signature API
|
|
|
|
(`crypto_sign_init()`, `crypto_sign_update()`, `crypto_sign_final_*()`).
|
|
|
|
- New constants and related accessors have been added for Scrypt and
|
|
|
|
Argon2.
|
|
|
|
- XChaCha20 has been implemented. Like XSalsa20, this construction
|
|
|
|
extends the ChaCha20 cipher to accept a 192-bit nonce. This makes it safe
|
|
|
|
to use ChaCha20 with random nonces.
|
|
|
|
- `crypto_secretbox`, `crypto_box` and `crypto_aead` now offer
|
|
|
|
variants leveraging XChaCha20.
|
|
|
|
- SHA-2 is about 20% faster, which also gives a speed boost to
|
|
|
|
signature and signature verification.
|
|
|
|
- AVX2 implementations of Salsa20 and ChaCha20 have been added. They
|
|
|
|
are twice as fast as the SSE2 implementations. The speed gain is
|
|
|
|
even more significant on Windows, that previously didn't use
|
|
|
|
vectorized implementations.
|
|
|
|
- New high-level API: `crypto_kdf`, to easily derive one or more
|
|
|
|
subkeys from a master key.
|
|
|
|
- Siphash with a 128-bit output has been implemented, and is
|
|
|
|
available as `crypto_shorthash_siphashx_*`.
|
|
|
|
- New `*_keygen()` helpers functions have been added to create secret
|
|
|
|
keys for all constructions. This improves code clarity and can prevent keys
|
|
|
|
from being partially initialized.
|
|
|
|
- A new `randombytes_buf_deterministic()` function was added to
|
|
|
|
deterministically fill a memory region with pseudorandom data. This
|
|
|
|
function can especially be useful to write reproducible tests.
|
|
|
|
- A preliminary `crypto_kx_*()` API was added to compute shared session
|
|
|
|
keys.
|
|
|
|
- AVX2 detection is more reliable.
|
|
|
|
- The pthreads library is not required any more when using MingW.
|
|
|
|
- `contrib/Findsodium.cmake` was added as an example to include
|
|
|
|
libsodium in a project using cmake.
|
|
|
|
- Compatibility with gcc 2.x has been restored.
|
|
|
|
- Minimal builds can be checked using `sodium_library_minimal()`.
|
|
|
|
- The `--enable-opt` compilation switch has become compatible with more
|
|
|
|
platforms.
|
|
|
|
- Android builds are now using clang on platforms where it is
|
|
|
|
available.
|
|
|
|
|
|
|
|
* Version 1.0.11
|
|
|
|
- `sodium_init()` is now thread-safe, and can be safely called multiple
|
|
|
|
times.
|
|
|
|
- Android binaries now properly support 64-bit Android, targeting
|
|
|
|
platform 24, but without breaking compatibility with platforms 16 and
|
|
|
|
21.
|
|
|
|
- Better support for old gcc versions.
|
|
|
|
- On FreeBSD, core dumps are disabled on regions allocated with
|
|
|
|
sodium allocation functions.
|
|
|
|
- AVX2 detection was fixed, resulting in faster Blake2b hashing on
|
|
|
|
platforms where it was not properly detected.
|
|
|
|
- The Sandy2x Curve25519 implementation was not as fast as expected
|
|
|
|
on some platforms. This has been fixed.
|
|
|
|
- The NativeClient target was improved. Most notably, it now supports
|
|
|
|
optimized implementations, and uses pepper_49 by default.
|
|
|
|
- The library can be compiled with recent Emscripten versions.
|
|
|
|
Changes have been made to produce smaller code, and the default heap
|
|
|
|
size was reduced in the standard version.
|
|
|
|
- The code can now be compiled on SLES11 service pack 4.
|
|
|
|
- Decryption functions can now accept a NULL pointer for the output.
|
|
|
|
This checks the MAC without writing the decrypted message.
|
|
|
|
- crypto_generichash_final() now returns -1 if called twice.
|
|
|
|
- Support for Visual Studio 2008 was improved.
|
|
|
|
|
|
|
|
* Version 1.0.10
|
|
|
|
- This release only fixes a compilation issue reported with some older
|
|
|
|
gcc versions. There are no functional changes over the previous release.
|
|
|
|
|
|
|
|
* Version 1.0.9
|
|
|
|
- The Javascript target now includes a `--sumo` option to include all
|
|
|
|
the symbols of the original C library.
|
|
|
|
- A detached API was added to the ChaCha20-Poly1305 and AES256-GCM
|
|
|
|
implementations.
|
|
|
|
- The Argon2i password hashing function was added, and is accessible
|
|
|
|
directly and through a new, high-level `crypto_pwhash` API. The scrypt
|
|
|
|
function remains available as well.
|
|
|
|
- A speed-record AVX2 implementation of BLAKE2b was added (thanks to
|
|
|
|
Samuel Neves).
|
|
|
|
- The library can now be compiled using C++Builder (thanks to @jcolli44)
|
|
|
|
- Countermeasures for Ed25519 signatures malleability have been added
|
|
|
|
to match the irtf-cfrg-eddsa draft (note that malleability is irrelevant to
|
|
|
|
the standard definition of signature security). Signatures with a small-order
|
|
|
|
`R` point are now also rejected.
|
|
|
|
- Some implementations are now slightly faster when using the Clang
|
|
|
|
compiler.
|
|
|
|
- The HChaCha20 core function was implemented (`crypto_core_hchacha20()`).
|
|
|
|
- No-op stubs were added for all AES256-GCM public functions even when
|
|
|
|
compiled on non-Intel platforms.
|
|
|
|
- `crypt_generichash_blake2b_statebytes()` was added.
|
|
|
|
- New macros were added for the IETF variant of the ChaCha20-Poly1305
|
|
|
|
construction.
|
|
|
|
- The library can now be compiled on Minix.
|
|
|
|
- HEASLR is now enabled on MinGW builds.
|
|
|
|
|
|
|
|
* Version 1.0.8
|
|
|
|
- Handle the case where the CPU supports AVX, but we are running
|
|
|
|
on an hypervisor with AVX disabled/not supported.
|
|
|
|
- Faster (2x) scalarmult_base() when using the ref10 implementation.
|
|
|
|
|
|
|
|
* Version 1.0.7
|
|
|
|
- More functions whose return value should be checked have been
|
|
|
|
tagged with `__attribute__ ((warn_unused_result))`: `crypto_box_easy()`,
|
|
|
|
`crypto_box_detached()`, `crypto_box_beforenm()`, `crypto_box()`, and
|
|
|
|
`crypto_scalarmult()`.
|
|
|
|
- Sandy2x, the fastest Curve25519 implementation ever, has been
|
|
|
|
merged in, and is automatically used on CPUs supporting the AVX
|
|
|
|
instructions set.
|
|
|
|
- An SSE2 optimized implementation of Poly1305 was added, and is
|
|
|
|
twice as fast as the portable one.
|
|
|
|
- An SSSE3 optimized implementation of ChaCha20 was added, and is
|
|
|
|
twice as fast as the portable one.
|
|
|
|
- Faster `sodium_increment()` for common nonce sizes.
|
|
|
|
- New helper functions have been added: `sodium_is_zero()` and
|
|
|
|
`sodium_add()`.
|
|
|
|
- `sodium_runtime_has_aesni()` now properly detects the CPU flag when
|
|
|
|
compiled using Visual Studio.
|
|
|
|
|
|
|
|
* Version 1.0.6
|
|
|
|
- Optimized implementations of Blake2 have been added for modern
|
|
|
|
Intel platforms. `crypto_generichash()` is now faster than MD5 and SHA1
|
|
|
|
implementations while being far more secure.
|
|
|
|
- Functions for which the return value should be checked have been
|
|
|
|
tagged with `__attribute__ ((warn_unused_result))`. This will
|
|
|
|
intentionally break code compiled with `-Werror` that didn't bother
|
|
|
|
checking critical return values.
|
|
|
|
- The `crypto_sign_edwards25519sha512batch_*()` functions have been
|
|
|
|
tagged as deprecated.
|
|
|
|
- Undocumented symbols that were exported, but were only useful for
|
|
|
|
internal purposes have been removed or made private:
|
|
|
|
`sodium_runtime_get_cpu_features()`, the implementation-specific
|
|
|
|
`crypto_onetimeauth_poly1305_donna()` symbols,
|
|
|
|
`crypto_onetimeauth_poly1305_set_implementation()`,
|
|
|
|
`crypto_onetimeauth_poly1305_implementation_name()` and
|
|
|
|
`crypto_onetimeauth_pick_best_implementation()`.
|
|
|
|
- `sodium_compare()` now works as documented, and compares numbers
|
|
|
|
in little-endian format instead of behaving like `memcmp()`.
|
|
|
|
- The previous changes should not break actual applications, but to be
|
|
|
|
safe, the library version major was incremented.
|
|
|
|
- `sodium_runtime_has_ssse3()` and `sodium_runtime_has_sse41()` have
|
|
|
|
been added.
|
|
|
|
- The library can now be compiled with the CompCert compiler.
|
|
|
|
|
|
|
|
* Version 1.0.5
|
|
|
|
- Compilation issues on some platforms were fixed: missing alignment
|
|
|
|
directives were added (required at least on RHEL-6/i386), a workaround
|
|
|
|
for a VRP bug on gcc/armv7 was added, and the library can now be compiled
|
|
|
|
with the SunPro compiler.
|
|
|
|
- Javascript target: io.js is not supported any more. Use nodejs.
|
|
|
|
|
|
|
|
* Version 1.0.4
|
|
|
|
- Support for AES256-GCM has been added. This requires
|
|
|
|
a CPU with the aesni and pclmul extensions, and is accessible via the
|
|
|
|
crypto_aead_aes256gcm_*() functions.
|
|
|
|
- The Javascript target doesn't use eval() any more, so that the
|
|
|
|
library can be used in Chrome packaged applications.
|
|
|
|
- QNX and CloudABI are now supported.
|
|
|
|
- Support for NaCl has finally been added.
|
|
|
|
- ChaCha20 with an extended (96 bit) nonce and a 32-bit counter has
|
|
|
|
been implemented as crypto_stream_chacha20_ietf(),
|
|
|
|
crypto_stream_chacha20_ietf_xor() and crypto_stream_chacha20_ietf_xor_ic().
|
|
|
|
An IETF-compatible version of ChaCha20Poly1305 is available as
|
|
|
|
crypto_aead_chacha20poly1305_ietf_npubbytes(),
|
|
|
|
crypto_aead_chacha20poly1305_ietf_encrypt() and
|
|
|
|
crypto_aead_chacha20poly1305_ietf_decrypt().
|
|
|
|
- The sodium_increment() helper function has been added, to increment
|
|
|
|
an arbitrary large number (such as a nonce).
|
|
|
|
- The sodium_compare() helper function has been added, to compare
|
|
|
|
arbitrary large numbers (such as nonces, in order to prevent replay
|
|
|
|
attacks).
|
|
|
|
|
|
|
|
* Version 1.0.3
|
|
|
|
- In addition to sodium_bin2hex(), sodium_hex2bin() is now a
|
|
|
|
constant-time function.
|
|
|
|
- crypto_stream_xsalsa20_ic() has been added.
|
|
|
|
- crypto_generichash_statebytes(), crypto_auth_*_statebytes() and
|
|
|
|
crypto_hash_*_statebytes() have been added in order to retrieve the
|
|
|
|
size of structures keeping states from foreign languages.
|
|
|
|
- The JavaScript target doesn't require /dev/urandom or an external
|
|
|
|
randombytes() implementation any more. Other minor Emscripten-related
|
|
|
|
improvements have been made in order to support libsodium.js
|
|
|
|
- Custom randombytes implementations do not need to provide their own
|
|
|
|
implementation of randombytes_uniform() any more. randombytes_stir()
|
|
|
|
and randombytes_close() can also be NULL pointers if they are not
|
|
|
|
required.
|
|
|
|
- On Linux, getrandom(2) is being used instead of directly accessing
|
|
|
|
/dev/urandom, if the kernel supports this system call.
|
|
|
|
- crypto_box_seal() and crypto_box_seal_open() have been added.
|
|
|
|
- Visual Studio 2015 is now supported.
|
|
|
|
|
|
|
|
* Version 1.0.2
|
|
|
|
- The _easy and _detached APIs now support precalculated keys;
|
|
|
|
crypto_box_easy_afternm(), crypto_box_open_easy_afternm(),
|
|
|
|
crypto_box_detached_afternm() and crypto_box_open_detached_afternm()
|
|
|
|
have been added as an alternative to the NaCl interface.
|
|
|
|
- Memory allocation functions can now be used on operating systems with
|
|
|
|
no memory protection.
|
|
|
|
- crypto_sign_open() and crypto_sign_edwards25519sha512batch_open()
|
|
|
|
now accept a NULL pointer instead of a pointer to the message size, if
|
|
|
|
storing this information is not required.
|
|
|
|
- The close-on-exec flag is now set on the descriptor returned when
|
|
|
|
opening /dev/urandom.
|
|
|
|
- A libsodium-uninstalled.pc file to use pkg-config even when
|
|
|
|
libsodium is not installed, has been added.
|
|
|
|
- The iOS target now includes armv7s and arm64 optimized code, as well
|
|
|
|
as i386 and x86_64 code for the iOS simulator.
|
|
|
|
- sodium_free() can now be called on regions with PROT_NONE protection.
|
|
|
|
- The Javascript tests can run on Ubuntu, where the node binary was
|
|
|
|
renamed nodejs. io.js can also be used instead of node.
|
|
|
|
|
|
|
|
* Version 1.0.1
|
|
|
|
- DLL_EXPORT was renamed SODIUM_DLL_EXPORT in order to avoid
|
|
|
|
collisions with similar macros defined by other libraries.
|
|
|
|
- sodium_bin2hex() is now constant-time.
|
|
|
|
- crypto_secretbox_detached() now supports overlapping input and output
|
|
|
|
regions.
|
|
|
|
- NaCl's donna_c64 implementation of curve25519 was reading an extra byte
|
|
|
|
past the end of the buffer containing the base point. This has been
|
|
|
|
fixed.
|
|
|
|
|
|
|
|
* Version 1.0.0
|
|
|
|
- The API and ABI are now stable. New features will be added, but
|
|
|
|
backward-compatibility is guaranteed through all the 1.x.y releases.
|
|
|
|
- crypto_sign() properly works with overlapping regions again. Thanks
|
|
|
|
to @pysiak for reporting this regression introduced in version 0.6.1.
|
|
|
|
- The test suite has been extended.
|
|
|
|
|
|
|
|
* Version 0.7.1 (1.0 RC2)
|
|
|
|
- This is the second release candidate of Sodium 1.0. Minor
|
|
|
|
compilation, readability and portability changes have been made and the
|
|
|
|
test suite was improved, but the API is the same as the previous release
|
|
|
|
candidate.
|
|
|
|
|
|
|
|
* Version 0.7.0 (1.0 RC1)
|
|
|
|
- Allocating memory to store sensitive data can now be done using
|
|
|
|
sodium_malloc() and sodium_allocarray(). These functions add guard
|
|
|
|
pages around the protected data to make it less likely to be
|
|
|
|
accessible in a heartbleed-like scenario. In addition, the protection
|
|
|
|
for memory regions allocated that way can be changed using
|
|
|
|
sodium_mprotect_noaccess(), sodium_mprotect_readonly() and
|
|
|
|
sodium_mprotect_readwrite().
|
|
|
|
- ed25519 keys can be converted to curve25519 keys with
|
|
|
|
crypto_sign_ed25519_pk_to_curve25519() and
|
|
|
|
crypto_sign_ed25519_sk_to_curve25519(). This allows using the same
|
|
|
|
keys for signature and encryption.
|
|
|
|
- The seed and the public key can be extracted from an ed25519 key
|
|
|
|
using crypto_sign_ed25519_sk_to_seed() and crypto_sign_ed25519_sk_to_pk().
|
|
|
|
- aes256 was removed. A timing-attack resistant implementation might
|
|
|
|
be added later, but not before version 1.0 is tagged.
|
|
|
|
- The crypto_pwhash_scryptxsalsa208sha256_* compatibility layer was
|
|
|
|
removed. Use crypto_pwhash_scryptsalsa208sha256_*.
|
|
|
|
- The compatibility layer for implementation-specific functions was
|
|
|
|
removed.
|
|
|
|
- Compilation issues with Mingw64 on MSYS (not MSYS2) were fixed.
|
|
|
|
- crypto_pwhash_scryptsalsa208sha256_STRPREFIX was added: it contains
|
|
|
|
the prefix produced by crypto_pwhash_scryptsalsa208sha256_str()
|
|
|
|
|
|
|
|
* Version 0.6.1
|
|
|
|
- Important bug fix: when crypto_sign_open() was given a signed
|
|
|
|
message too short to even contain a signature, it was putting an
|
|
|
|
unlimited amount of zeros into the target buffer instead of
|
|
|
|
immediately returning -1. The bug was introduced in version 0.5.0.
|
|
|
|
- New API: crypto_sign_detached() and crypto_sign_verify_detached()
|
|
|
|
to produce and verify ed25519 signatures without having to duplicate
|
|
|
|
the message.
|
|
|
|
- New ./configure switch: --enable-minimal, to create a smaller
|
|
|
|
library, with only the functions required for the high-level API.
|
|
|
|
Mainly useful for the JavaScript target and embedded systems.
|
|
|
|
- All the symbols are now exported by the Emscripten build script.
|
|
|
|
- The pkg-config .pc file is now always installed even if the
|
|
|
|
pkg-config tool is not available during the installation.
|
|
|
|
|
|
|
|
* Version 0.6.0
|
|
|
|
- The ChaCha20 stream cipher has been added, as crypto_stream_chacha20_*
|
|
|
|
- The ChaCha20Poly1305 AEAD construction has been implemented, as
|
|
|
|
crypto_aead_chacha20poly1305_*
|
|
|
|
- The _easy API does not require any heap allocations any more and
|
|
|
|
does not have any overhead over the NaCl API. With the password
|
|
|
|
hashing function being an obvious exception, the library doesn't
|
|
|
|
allocate and will not allocate heap memory ever.
|
|
|
|
- crypto_box and crypto_secretbox have a new _detached API to store
|
|
|
|
the authentication tag and the encrypted message separately.
|
|
|
|
- crypto_pwhash_scryptxsalsa208sha256*() functions have been renamed
|
|
|
|
crypto_pwhash_scryptsalsa208sha256*().
|
|
|
|
- The low-level crypto_pwhash_scryptsalsa208sha256_ll() function
|
|
|
|
allows setting individual parameters of the scrypt function.
|
|
|
|
- New macros and functions for recommended crypto_pwhash_* parameters
|
|
|
|
have been added.
|
|
|
|
- Similarly to crypto_sign_seed_keypair(), crypto_box_seed_keypair()
|
|
|
|
has been introduced to deterministically generate a key pair from a seed.
|
|
|
|
- crypto_onetimeauth() now provides a streaming interface.
|
|
|
|
- crypto_stream_chacha20_xor_ic() and crypto_stream_salsa20_xor_ic()
|
|
|
|
have been added to use a non-zero initial block counter.
|
|
|
|
- On Windows, CryptGenRandom() was replaced by RtlGenRandom(), which
|
|
|
|
doesn't require the Crypt API.
|
|
|
|
- The high bit in curve25519 is masked instead of processing the key as
|
|
|
|
a 256-bit value.
|
|
|
|
- The curve25519 ref implementation was replaced by the latest ref10
|
|
|
|
implementation from Supercop.
|
|
|
|
- sodium_mlock() now prevents memory from being included in coredumps
|
|
|
|
on Linux 3.4+
|
|
|
|
|
|
|
|
* Version 0.5.0
|
|
|
|
- sodium_mlock()/sodium_munlock() have been introduced to lock pages
|
|
|
|
in memory before storing sensitive data, and to zero them before
|
|
|
|
unlocking them.
|
|
|
|
- High-level wrappers for crypto_box and crypto_secretbox
|
|
|
|
(crypto_box_easy and crypto_secretbox_easy) can be used to avoid
|
|
|
|
dealing with the specific memory layout regular functions depend on.
|
|
|
|
- crypto_pwhash_scryptsalsa208sha256* functions have been added
|
|
|
|
to derive a key from a password, and for password storage.
|
|
|
|
- Salsa20 and ed25519 implementations now support overlapping
|
|
|
|
inputs/keys/outputs (changes imported from supercop-20140505).
|
|
|
|
- New build scripts for Visual Studio, Emscripten, different Android
|
|
|
|
architectures and msys2 are available.
|
|
|
|
- The poly1305-53 implementation has been replaced with Floodyberry's
|
|
|
|
poly1305-donna32 and poly1305-donna64 implementations.
|
|
|
|
- sodium_hex2bin() has been added to complement sodium_bin2hex().
|
|
|
|
- On OpenBSD and Bitrig, arc4random() is used instead of reading
|
|
|
|
/dev/urandom.
|
|
|
|
- crypto_auth_hmac_sha512() has been implemented.
|
|
|
|
- sha256 and sha512 now have a streaming interface.
|
|
|
|
- hmacsha256, hmacsha512 and hmacsha512256 now support keys of
|
|
|
|
arbitrary length, and have a streaming interface.
|
|
|
|
- crypto_verify_64() has been implemented.
|
|
|
|
- first-class Visual Studio build system, thanks to @evoskuil
|
|
|
|
- CPU features are now detected at runtime.
|
|
|
|
|
|
|
|
* Version 0.4.5
|
|
|
|
- Restore compatibility with OSX <= 10.6
|
|
|
|
|
|
|
|
* Version 0.4.4
|
|
|
|
- Visual Studio is officially supported (VC 2010 & VC 2013)
|
|
|
|
- mingw64 is now supported
|
|
|
|
- big-endian architectures are now supported as well
|
|
|
|
- The donna_c64 implementation of curve25519_donna_c64 now handles
|
|
|
|
non-canonical points like the ref implementation
|
|
|
|
- Missing scalarmult_curve25519 and stream_salsa20 constants are now exported
|
|
|
|
- A crypto_onetimeauth_poly1305_ref() wrapper has been added
|
|
|
|
|
|
|
|
* Version 0.4.3
|
|
|
|
- crypto_sign_seedbytes() and crypto_sign_SEEDBYTES were added.
|
|
|
|
- crypto_onetimeauth_poly1305_implementation_name() was added.
|
|
|
|
- poly1305-ref has been replaced by a faster implementation,
|
|
|
|
Floodyberry's poly1305-donna-unrolled.
|
|
|
|
- Stackmarkings have been added to assembly code, for Hardened Gentoo.
|
|
|
|
- pkg-config can now be used in order to retrieve compilations flags for
|
|
|
|
using libsodium.
|
|
|
|
- crypto_stream_aes256estream_*() can now deal with unaligned input
|
|
|
|
on platforms that require word alignment.
|
|
|
|
- portability improvements.
|
|
|
|
|
|
|
|
* Version 0.4.2
|
|
|
|
- All NaCl constants are now also exposed as functions.
|
|
|
|
- The Android and iOS cross-compilation script have been improved.
|
|
|
|
- libsodium can now be cross-compiled to Windows from Linux.
|
|
|
|
- libsodium can now be compiled with emscripten.
|
|
|
|
- New convenience function (prototyped in utils.h): sodium_bin2hex().
|
|
|
|
|
|
|
|
* Version 0.4.1
|
|
|
|
- sodium_version_*() functions were not exported in version 0.4. They
|
|
|
|
are now visible as intended.
|
|
|
|
- sodium_init() now calls randombytes_stir().
|
|
|
|
- optimized assembly version of salsa20 is now used on amd64.
|
|
|
|
- further cleanups and enhanced compatibility with non-C99 compilers.
|
|
|
|
|
|
|
|
* Version 0.4
|
|
|
|
- Most constants and operations are now available as actual functions
|
|
|
|
instead of macros, making it easier to use from other languages.
|
|
|
|
- New operation: crypto_generichash, featuring a variable key size, a
|
|
|
|
variable output size, and a streaming API. Currently implemented using
|
|
|
|
Blake2b.
|
|
|
|
- The package can be compiled in a separate directory.
|
|
|
|
- aes128ctr functions are exported.
|
|
|
|
- Optimized versions of curve25519 (curve25519_donna_c64), poly1305
|
|
|
|
(poly1305_53) and ed25519 (ed25519_ref10) are available. Optionally calling
|
|
|
|
sodium_init() once before using the library makes it pick the fastest
|
|
|
|
implementation.
|
|
|
|
- New convenience function: sodium_memzero() in order to securely
|
|
|
|
wipe a memory area.
|
|
|
|
- A whole bunch of cleanups and portability enhancements.
|
|
|
|
- On Windows, a .REF file is generated along with the shared library,
|
|
|
|
for use with Visual Studio. The installation path for these has become
|
|
|
|
$prefix/bin as expected by MingW.
|
|
|
|
|
|
|
|
* Version 0.3
|
|
|
|
- The crypto_shorthash operation has been added, implemented using
|
|
|
|
SipHash-2-4.
|
|
|
|
|
|
|
|
* Version 0.2
|
|
|
|
- crypto_sign_seed_keypair() has been added
|
|
|
|
|
|
|
|
* Version 0.1
|
|
|
|
- Initial release.
|
|
|
|
|