Commit Graph

110 Commits

Author SHA1 Message Date
Frank Denis
0e23192159 Add crypto_sign_ed25519_sk_to_seed() and crypto_sign_ed25519_sk_to_pk() 2014-08-15 13:52:08 -07:00
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
9f0208050e crypto_sign_SECRETKEYBYTES already includes the public key 2014-08-05 14:26:39 -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
c16502fc2c Coverity FP 2014-07-15 22:48:49 -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
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
96b840cfcf Add a test for short (non-detached) signed messages 2014-07-10 22:39:11 -07:00
Frank Denis
f6519378b4 + --enable-minimal to build a smaller library without less-used functions. 2014-07-09 20:24:04 -07:00
Frank Denis
0e4f4d6205 Use unsigned types for sizes in tests. 2014-07-01 19:33:59 +00:00
Frank Denis
9154d7416e Add a test for crypto_aead without any additional data 2014-06-30 16:23:34 -07:00
Frank Denis
768b78b711 crypto_(secret)box_easy_detached() -> crypto_(secret)box_detached() 2014-06-27 18:29:03 -07:00
Frank Denis
44f7a9f3cb Allow the authentication tag to be stored separately from the message.
Encrypting in-place and storing the tag separately is a very common need.
Instead of forcing people to do their own cuisine, let's provide simple
variants of the _easy interfaces to do that.
2014-06-26 15:18:39 -07:00
Frank Denis
eec0f78af6 Move the tag to the end for crypto_aead_chacha20poly1305 2014-06-26 09:15:20 -07:00
Frank Denis
efe53d118b chachapoly1305 test: check output length 2014-06-26 08:56:17 -07:00
Frank Denis
a7410966ea Rename secretbox_chacha20poly1305() -> aead_chacha20poly1305()
The tag is still at the end. This will be changed right after.
2014-06-26 08:48:13 -07:00
Frank Denis
5e89fc9303 Import secretbox_chacha20poly1305.exp 2014-06-19 23:07:20 -07:00
Frank Denis
bd1490a6cd Add AEAD_CHACHA20_POLY1305
With a twist: in order to be consistent with the crypto_stream
interface, the tag has to come before the ciphertext.
2014-06-19 22:49:33 -07:00
Frank Denis
1fcb676aed test/default/sign.c: make the test vectors static 2014-06-09 19:27:54 -07:00
Frank Denis
06e089ef6a Make crypto_sign() test code more explicit.
crypto_sign() doesn't just need the secret key. The public key has to follow.
Which is why the test vectors are laid out in this order.
But this can confuse static analysis, as well as people looking at the test
in order to better understand how crypto_sign() works.
So, just copy the sk and the pk into a dedicated buffer, for clarity.
2014-06-09 19:27:49 -07:00
Frank Denis
8560366cd8 Disable the pwhash_scrypt_ll test that requires 1 Gb RAM.
This is way too much for many devices and for VPS users.
2014-06-07 10:16:03 -07:00
Frank Denis
2058eaea99 Revert bd8cbd3175
Go back to masking the high bit in curve25519 instead of processing the
key as a 256-bit value.
2014-06-06 08:22:11 -07:00
Frank Denis
e737c94271 More test/default/pwhash_scrypt_ll.c fixes 2014-06-03 23:48:25 -07:00
Frank Denis
f341a4c9a3 Make arguments match the format string in test/default/pwhash_scrypt_ll.c ... 2014-06-03 23:22:38 -07:00
Anders Johansson
1d4849465b Change spaces to tab in Makefile.am after pwhash_scrypt_ll addition 2014-06-03 13:04:26 +02:00
Anders Johansson
e7e4ab514c To comply with C89:
- Moved variable declarations to top of function
 - Constant output buffer inside the function

Moved strlen calls from main to inside function to make code easier to read.

Also switched from fancy quotes to single quotes in expected output
2014-06-03 12:15:39 +02:00
Anders Johansson
e477e51323 Fix Travis g++ errors 2014-06-01 21:31:44 +02:00
Anders Johansson
d47d5d8623 Add test for Tarsnap testvectors to low-level scrypt interface 2014-06-01 20:58:20 +02:00
Jan Varho
9f52b0f0e9 Change crypto_box_seed_keypair to use SHA-512 of the seed
This makes it compatible with what js-nacl and racl do.
2014-05-25 19:13:04 -07:00
Jan Varho
f438116b6b Test crypto_box_seed_keypair 2014-05-23 10:33:58 +03:00
Frank Denis
a517bf9f0f One more chacha20 test 2014-05-15 15:26:44 -07:00
Frank Denis
0d9f25999a +chacha20.exp 2014-05-15 13:35:56 -07:00
Frank Denis
7381983f8b Preliminary chacha20 support 2014-05-15 13:27:15 -07:00
Frank Denis
bd05b7d292 Rename scryptxsalsa208sha256 to scryptsalsa208sha256 2014-05-15 00:01:16 -07:00
Frank Denis
62e37fbfe4 crypto_pwhash_scryptxsalsa208sha256_str() test vectors 2014-05-14 23:46:15 -07:00
Frank Denis
eca5267df9 crypto_pwhash_scryptxsalsa208sha256 test vectors 2014-05-14 23:22:11 -07:00
Frank Denis
84cceed1f6 Do not require crypto_sign_BYTES extra bytes for the message in crypto_sign_open()
This is a common source of confusion.
2014-05-12 22:54:05 -07:00
Frank Denis
0c63926ef1 Fix sign.c test, classic crypto_sign_open() confusion. 2014-05-12 21:43:33 -07:00
Frank Denis
30c1e13f2a Switch opslimit and memlimit in pwhash, to be closer to PHC's proposed API. 2014-05-12 12:34:41 -07:00
Frank Denis
37d73684b8 More crypto_pwhash tests 2014-05-12 11:26:39 -07:00
Frank Denis
9383d59e21 It's totally fine for sodium_library_version_minor() to be 0. 2014-05-08 21:32:36 -07:00
Frank Denis
42d87bf926 The pwhash test requires a 32 bytes salt. 2014-05-08 20:39:14 -07:00
Frank Denis
e48b1e6b75 Remove extra puts() in pwhash test. 2014-05-08 19:09:43 -07:00
Frank Denis
299ff0ceb3 Add a minimal test for crypto_pwhash 2014-05-07 23:54:55 -07:00
Frank Denis
9d29f94ac2 Add overdue crypto_sign test 2014-05-07 23:23:13 -07:00
Frank Denis
01059444ee Wait, what, printf(3) on Windows doesn't even support %zu? o_O 2014-04-17 22:15:09 -07:00
Frank Denis
219db714cf Add sodium_hex2bin() 2014-04-15 00:39:14 -07:00