43 Commits
Author SHA1 Message Date
Frank Denis 83a873ea1b Fix tests, use guard page instead of NULL because of Wasm 2019-02-09 20:47:24 +01:00
Ilya Maykov 6934a8d0c8 Relax most __attribute__ ((nonnull)) to allow 0-length inputs to be NULL.
Justifications:
- crypto_(auth|hash|generichash|onetimeauth|shorthash)*:
  it's legal to hash or HMAC a 0-length message
- crypto_box*: it's legal to encrypt a 0-length message
- crypto_sign*: it's legal to sign a 0-length message
- utils:
  comparing two 0-length byte arrays is legal
  memzero on a 0-length byte array is a no-op
  converting an empty hex string to binary results in an empty binary string
  converting an empty binary string to hex results in an empty hex string
  converting an empty b64 string to binary results in an empty binary string
  converting an empty binary string to b64 results in an empty b64 string
  sodium_add / sodium_sub on zero-length arrays is a no-op

For the functions declared in utils.h, I moved the logic into private functions that
have the __attribute__ ((nonnull)) check, but they are only called when the
corresponding length argument is non-0. I didn't do this for the hash/box/sign
functions since it would have been a lot more work and quite a large refactor.
2019-02-09 20:26:10 +01:00
Frank Denis d4eec69ef1 More tests 2019-01-05 21:17:48 +01:00
Frank Denis d333f509a2 Add a test for sodium_sub() 2019-01-02 15:32:59 +01:00
Jakob Rieck 543b5ad068 Fixes padding for blocksizes > 256 2018-08-27 11:42:49 +02:00
Frank Denis 22b65dc57c Add a call to sodium_stackzero() 2017-12-05 17:49:58 +00:00
Frank Denis 7e75ad4ca9 Remove unused var 2017-10-23 23:43:19 +02:00
Frank Denis ee1d5c96d8 Move the codecs tests to their own test file 2017-09-19 22:51:05 +02:00
Frank Denis 41dc933226 More tests 2017-09-19 22:08:31 +02:00
Frank Denis aec433cecc Additional check 2017-09-19 20:04:57 +02:00
Frank Denis 7423408cd3 Make the behavior of hex2bin() consistent with base642bin()
Return -1 on incomplete sequences and on complete sequences
with trailing, non-ignored characters if no pointers to store the
last parsed byte has been provided
2017-09-19 18:45:23 +02:00
Frank Denis 3c8a7f17f0 Add tests for short, invalid unpadded base64 strings 2017-09-19 16:59:18 +02:00
Frank Denis 9209e89d96 More tests 2017-09-19 00:34:26 +02:00
Frank Denis 31e9a5541d More tests 2017-09-18 23:57:29 +02:00
Frank Denis 15ee95c64c Remove unused var 2017-09-15 00:57:44 +02:00
Frank Denis 0af31aeb26 Fill the max output buffer size in sodium_bin2base64()
Unlike hex encoding, due to optional padding, computing the correct size is
not straightforward. Ensuring that the string ends with `\0` is fine, but
if the size is not exact, some unrelated data might be send around by the
application. So, zero it to be safe.
2017-08-31 19:32:14 +02:00
Frank Denis fd4478288e Test sodium_pad() with a NULL pointer 2017-08-25 15:24:46 +02:00
Frank Denis 4c93d0391c C++ compat 2017-08-17 23:27:20 +02:00
Frank Denis 0850e55808 Check that a zero blocksize returns -1 2017-08-17 21:00:02 +02:00
Frank Denis a27c18d0e8 No need for two buffers in the padding test 2017-08-17 20:58:14 +02:00
Frank Denis d5574a69fa Complete sodium_pad/unpad() and add a couple tests 2017-08-17 20:54:20 +02:00
Frank Denis 265bdcfe07 bin2hex & bin2base64: return a null size on error
This might prevent applications that don't properly check return codes
from reusing previous data.
2017-08-09 22:41:20 +02:00
Frank Denis a6480aec44 b64 test: intentionally overestimate sizes
overflows will be caught by the guard page, if any
2017-08-09 18:03:56 +02:00
Frank Denis 74fd8fd1ce C++ compat 2017-08-09 16:08:03 +02:00
Frank Denis cdbb43f444 base64 tests 2017-08-09 15:56:58 +02:00
Frank Denis cac2dde218 Indent 2017-02-23 11:24:48 +01:00
Frank Denis ec6b86611f More checks for sodium_add() (overlaps) and sodium_increment() 2015-12-06 19:06:27 +01:00
Frank Denis 9337ecfa60 Add tests for sodium_add(), more tests for sodium_increment() and is_zero() 2015-11-16 23:22:01 +01:00
Frank Denis 7561a25d5a Add a is_zero() helper 2015-11-13 01:48:34 +01:00
Frank Denis 84695c8d42 Make sodium_compare() work on little-endian numbers as expected 2015-10-31 22:36:54 +01:00
Frank Denis a2c8ff5ccb Visual Studio doesn't have %zu 2015-10-17 21:32:25 +02:00
Frank Denis d667efde68 Add sodium_compare()
A constant-time version of memcmp(), useful to compare nonces and counters
in little-endian format, that plays well with sodium_increment().

Unlike sodium_memcmp() which can compare anything for equality,
sodium_compare() is designed to compare things that are comparable, byte by
byte. Therefore, the prototype is slightly different: its arguments are
supposed to be `const unsigned char *`.

The names sodium_memcmp() and sodium_compare() are slightly confusing.
But we're not going to rename sodium_memcmp(), and I cannot think of a
better name for sodium_compare() than sodium_compare().
2015-10-17 21:25:30 +02:00
Frank Denis 2aef671fd9 Indent 2015-10-17 21:10:52 +02:00
Frank Denis e2fca8cac5 Add sodium_increment() 2015-06-22 15:44:58 +02:00
Frank Denis 37580f4f52 More tests 2014-09-16 20:46:43 -07:00
Frank Denis 82bc039d6c Consistent syle for the tests. 2014-09-14 11:32:55 -07:00
Frank Denis 4d276a81e7 Include header files commonly used by the tests to cmptest.h 2014-09-13 14:11:12 -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
Frank Denis 1a3786705e Add a sodium_bin2hex utility function. 2013-07-07 23:38:14 -07:00
Frank Denis de517b70d9 char vs unsigned char in the sodium_utils test 2013-04-26 21:51:59 -07:00
Frank Denis 1827e508ea Remove trailing spaces 2013-04-25 22:38:06 -07:00
Frank Denis 4c31bb5ef1 Add tests for sodium_*() functions. 2013-04-25 22:37:15 -07:00