Commit Graph

1095 Commits

Author SHA1 Message Date
Frank Denis
473e1718cc Add sodium_{malloc,allocarray,free}() and sodium_mprotect_*()
ptr = sodium_malloc(size) returns a pointer from which exactly "size" bytes
can be accessed.

ptr = sodium_allocarray(count, size) allocates enough storage space for
"count" pointers or scalars of unit size "size".

In both cases, the region is immediately followed by a guard page.
As a result, any attempt to access a memory location after ptr[size - 1] will
immediately trigger a segmentation fault.

The allocated region is mlock()ed and filled with 0xd0 bytes.

A read-only page with the size, a guard page, as well as a canary are
placed before the returned pointer.

The canary is checked by sodium_free(); as a result, altering data right
before ptr is likely to cause sodium_free() to kill the process.

sodium_free() munlock()s the region and fills it with zeros before
actually calling free().

sodium_mprotect_noaccess(), sodium_mprotect_readonly() and
sodium_mprotect_readwrite() can be used to change the protection on the set
of allocated pages.

Reverting the protection to read+write is not required before calling
sodium_free().
2014-08-14 21:41:05 -07:00
Frank Denis
729a54f4a2 Use --enable-minimal in the Android and iOS builds 2014-08-13 23:32:26 -07:00
Frank Denis
6c78c9815c Remove compat.c 2014-08-13 17:40:06 -07:00
Frank Denis
55bb50b855 Bump major 2014-08-06 10:09:21 -07:00
Frank Denis
88ff698bfb --llvm-lto 1 produces smaller Javascript code.
Also add the symbol map.
2014-08-05 23:24:03 -07:00
Frank Denis
85acbd0020 Do not export low-level functions to Javascript by default 2014-08-05 23:09:39 -07:00
Frank Denis
658ae19e0b Update the list of symbols exported to Javascript. 2014-08-05 22:23:14 -07:00
Frank Denis
9f0208050e crypto_sign_SECRETKEYBYTES already includes the public key 2014-08-05 14:26:39 -07:00
Frank Denis
b06951dd20 Zero the nonce in crypto_sign() 2014-08-05 14:08:00 -07:00
Frank Denis
eae4add8de Implement ed25519 -> curve25519 keys conversion 2014-08-05 13:32:25 -07:00
Frank Denis
7b0eeda1c6 Remove aes256estream.
AES-256 will be reintroduced, but not until we have a bitsliced implementation.
2014-08-05 00:57:10 -07:00
Frank Denis
88de46b6ae Document the maximum number of bytes for crypto_stream_aes256estream*()
abort() if these functions are misused.
2014-08-04 20:15:07 -07:00
Frank Denis
ed76b41369 Rephrase 2014-08-04 16:29:13 -07:00
Frank Denis
2b0c8e40aa Keep IA-32 asm on MingW/Cygwin, check for Windows during the x86-64 test. 2014-08-04 16:24:11 -07:00
Frank Denis
b9be5fbd45 Do not pass -fPIC on Windows. Add msys as a host_os value to detect Windows as well. 2014-08-04 14:30:07 -07:00
Frank Denis
4d02391067 Remove scryptx() compatibility functions 2014-08-03 21:18:06 -07:00
Frank Denis
c5a9d46386 Double check for crypto_auth_verify() 2014-08-03 21:15:04 -07:00
Frank Denis
be41f72e0e Bypass gcc optimization 2014-08-03 20:10:38 -07:00
Frank Denis
2350dbe13e Remove _sodium_alignedcalloc 2014-08-02 15:51:37 -07:00
Frank Denis
5aee93a277 Remove try.c
These tests are still in git and may be added to the test suite later.
2014-08-02 15:50:22 -07:00
Frank Denis
92b3d09e89 Implementation-specific symbols are not needed any more, even for RbNacl 2014-08-02 15:38:39 -07:00
Frank Denis
5957d47d5b crypto_pwhash_scryptsalsa208sha256.h requires <stdint.h> 2014-08-02 15:38:33 -07:00
Frank Denis
2acb19520a Add crypto_pwhash_scryptsalsa208sha256_STRPREFIX 2014-08-02 12:29:15 -07:00
Frank Denis
857c772853 Rephrase 2014-07-31 22:13:45 -07:00
Frank Denis
9ac321368a randombytes_salsa20 example: rekey after 16 blocks or after calling _buf() 2014-07-31 22:00:29 -07:00
Frank Denis
e907196101 Do not recommend AES128 over AES256. 2014-07-30 22:42:53 -07:00
Frank Denis
1089114026 Replace ftime() with ftime_s() 2014-07-29 09:28:52 -07:00
Frank Denis
aae1ae5005 MSVC: Define NATIVE_LITTLE_ENDIAN / inline as __inline / UNICODE & _UNICODE 2014-07-29 08:57:17 -07:00
Frank Denis
051507e266 Check for Windows-specific functions by checking _WIN32, not HAVE_* definitions 2014-07-29 08:55:53 -07:00
Frank Denis
955cfba91e MSVC: Don't define NDEBUG even for Release builds. 2014-07-29 08:42:18 -07:00
Frank Denis
a91e0123cf Clarify what sodium_memcmp() is for. 2014-07-28 16:10:19 -07:00
Frank Denis
e06ae6db9d Thanks Jason McCampbell for the Go bindings 2014-07-24 20:58:43 -07:00
Frank Denis
07f3610eef Do not export crypto_onetimeauth_pick_best_implementation() 2014-07-22 20:10:22 -07:00
Frank Denis
990fad3060 librt and libm are not needed any more.
Thanks to Raúl Sánchez Siles for the heads up.
2014-07-21 16:00:47 -07:00
Frank Denis
6985aea355 Properly fill exec_prefix in libsodium.pc, spotted by Jonas Termansen 2014-07-17 22:07:57 -07:00
Frank Denis
c16502fc2c Coverity FP 2014-07-15 22:48:49 -07:00
Frank Denis
dc1e4b468d Typo: not -> now 2014-07-15 14:19:37 -07:00
Frank Denis
8a9777ff1d Update ChangeLog 2014-07-15 13:59:42 -07:00
Frank Denis
1dca7edfab --enable-minimal should compile only what is required for the high-level API
This doesn't include aes128ctr.
2014-07-14 18:43:46 -07:00
Frank Denis
80f9d943f7 Export all the symbols to Emscripten 2014-07-12 21:42:16 -07:00
Frank Denis
412f3edf8c Get ready for 0.6.1 2014-07-12 21:15:46 -07:00
Frank Denis
64c70e0612 Bump up the max allowed memory for Emscripten. Might be required for scrypt. 2014-07-12 19:25:17 -07:00
Frank Denis
25ea5b65db Add explicit checks for crypto_box_detached() 2014-07-11 12:28:52 -07:00
Frank Denis
ad7b1c58a8 Add tests for short messages with (secret)box_easy 2014-07-11 12:23:52 -07:00
Frank Denis
931ce38f61 A double verification of 32 bytes is fast; so is comparing 2 pointers 2014-07-10 23:57:57 -07:00
Frank Denis
2bb8ae26d5 Test detached signatures 2014-07-10 23:21:23 -07:00
Frank Denis
16fa9960e0 Test crypto_sign_detached() 2014-07-10 23:21:22 -07:00
Frank Denis
c9c49c61fd Do not directly return the result of crypto_verify() 2014-07-10 23:21:18 -07:00
Frank Denis
96b840cfcf Add a test for short (non-detached) signed messages 2014-07-10 22:39:11 -07:00
Frank Denis
a362711903 Add crypto_sign_verify_detached() 2014-07-10 22:29:05 -07:00