Frank Denis
fbad64f6ef
Disable asm on native client
2016-04-28 21:31:18 +02:00
Frank Denis
5f3b59c8b0
Tabify
2016-04-27 11:37:21 +02:00
Frank Denis
46539b9381
Indent
2016-04-27 00:11:00 +02:00
Frank Denis
ffd5987e7c
Proper lock test on Windows
2016-04-26 01:43:00 +02:00
Frank Denis
d908d08b0d
Simplify the fallback _sodium_crit_enter() code
2016-04-25 20:15:33 +02:00
Frank Denis
f8ff8ebf66
Add locks around sodium_init()
2016-04-25 18:33:11 +02:00
Frank Denis
14211cd7ea
Update include guard
2016-04-22 12:01:56 +02:00
Frank Denis
b2586f5402
Use the same convention for include guards everywhere
2016-04-22 11:46:37 +02:00
Frank Denis
801fbde757
scrypt/sse - Note that B's layout is permuted compared to nosse
2016-04-21 20:37:11 +02:00
Frank Denis
2de4b3f514
Hand-roll zeroing instead of relying on memset()
2016-04-21 17:17:24 +02:00
Frank Denis
492d4b1dd6
Repair NativeClient support
2016-04-18 21:40:18 +02:00
Frank Denis
8ab4334945
if -> ifdef
2016-04-18 16:53:34 +02:00
Frank Denis
531ce5bd32
Do not use getrandom(2) on SLES11 service pack 4
2016-04-14 17:21:42 +02:00
Frank Denis
34aeee6ba5
Replace two more memcpy() with a local loop
2016-04-12 07:30:54 +02:00
Frank Denis
d7294320c4
sha{512,256}: use a local loop instead of if + memcpy()
...
Compilers can't figure out the max inlen value, so help them with an
explicit AND.
Unify the name of the input pointer by the way.
2016-04-12 02:14:45 +02:00
Frank Denis
bbf1e17983
Avoid bit shifting with signed values
2016-04-12 00:51:41 +02:00
Frank Denis
50e11be472
memcpy(): pointers must be valid even if the size is 0
2016-04-12 00:41:37 +02:00
Frank Denis
0a590b07b2
Decryption functions can now accept a NULL
pointer for the output
...
This checks the MAC without writing the decrypted message.
2016-04-11 18:33:50 +02:00
Frank Denis
80310ef56c
Set randombytes_implementation to NULL by default, to cope with Visual Studio 2008
2016-04-08 17:50:18 +02:00
Frank Denis
a53a9c98d2
Back to dev mode
2016-04-08 08:25:42 +02:00
Frank Denis
22ab28be0a
Require Visual Studio 2010+ for AESNI
2016-04-07 18:57:07 +02:00
Frank Denis
292969b3b5
Argon2: initialize ctx{.pwd,.pwdlen} in the verify function
...
Keep initializing the length for clarity;
Compilers know how to optimize this out.
2016-04-07 08:19:50 +02:00
Frank Denis
1818267d64
Return -1 if crypto_generichash_final() is called twice
2016-04-06 01:00:49 +02:00
Frank Denis
97b09aba0b
Move curve25519_ref10.h to include/sodium/private/
2016-04-04 18:03:08 +02:00
Frank Denis
8df895b3ec
include/sodium/private.h -> include/sodium/private/common.h
2016-04-04 17:16:32 +02:00
Frank Denis
3927cad829
Relocate sodium/common.h
2016-04-04 16:28:40 +02:00
Frank Denis
501ec7a679
Adjust another relative path for sodium/common.h
2016-04-04 08:44:59 +02:00
David Renshaw
c3b68c12d6
Fix up relative includes of sodium/common.h
2016-04-04 03:18:24 +00:00
Frank Denis
1550026a9a
Explain why blake2b_param_set_digest_length() is not needed
2016-04-03 13:52:55 +02:00
Frank Denis
0716b7701e
Initialize constant
2016-04-02 12:17:47 +02:00
Frank Denis
1853248f0a
Consistency
2016-04-02 12:08:41 +02:00
Frank Denis
e50f1e95ab
Reuse STORE64_LE whenever possible
2016-04-02 11:46:53 +02:00
Frank Denis
6ee06a9242
Include missing structures definitions
2016-04-02 09:01:03 +02:00
Frank Denis
698efbdc23
Consistency
2016-04-02 01:20:38 +02:00
Frank Denis
531c51e7a3
Stronger types for >= 16 bits shifts
2016-04-02 01:06:04 +02:00
Frank Denis
ca71815db3
((unsigned long long) 1) -> 1ULL
2016-04-02 00:57:33 +02:00
Frank Denis
42535e0b40
(1 << x) -> (1UL << x) for compilers where sizeof(int) == 2
2016-04-02 00:54:17 +02:00
Frank Denis
95114d8592
l -> L
2016-04-02 00:44:41 +02:00
Frank Denis
5cdd950c5c
Reformat
2016-04-01 20:51:05 +02:00
Frank Denis
d7f5877df5
Add crypto_pwhash_argon2i_ALG_ARGON2I13
2016-04-01 20:48:34 +02:00
Frank Denis
384e08b7f4
Require an algorithm identifier in crypto_pwhash()
2016-04-01 20:29:28 +02:00
Frank Denis
5d8c878ffb
Remove mlen_p from the AEAD detached interface
2016-03-30 21:20:34 +02:00
Frank Denis
de22f38da2
Mark the _out_of_bounds() function as noreturn
2016-03-27 00:21:04 +01:00
Frank Denis
25faa47b46
Include blake2b_long prototype
2016-03-27 00:11:32 +01:00
Frank Denis
20bf121fcd
1.0.9 is almost ready to be tagged
2016-03-25 16:30:36 +01:00
Frank Denis
2aa703fcc7
Restore the previous sodium_malloc(0) behavior
...
If aligned memory cannot be obtained, allocate 1 byte
to always return a non-NULL pointer.
2016-03-25 16:26:37 +01:00
Frank Denis
811bdb2c5f
Explicit cast; length is already checked by the caller
2016-03-25 16:00:52 +01:00
Frank Denis
fb865c9a5c
More tests / lcov exclusions
2016-03-25 15:36:57 +01:00
Frank Denis
58e4cdf809
Make Argon2 encode/decode return codes consistent with other functions
2016-03-25 14:54:14 +01:00
Frank Denis
e9b7a71a38
Remove unused code
2016-03-25 12:29:25 +01:00
Frank Denis
a25569320c
The version in Argon2i strings is separated from other parameters
2016-03-25 12:27:04 +01:00
Frank Denis
321e9eab2e
Remove useless check
2016-03-25 10:38:50 +01:00
Frank Denis
da448c38e4
Nits
2016-03-25 09:55:37 +01:00
Frank Denis
eb13ec0cff
Make sodium_malloc(0) well-defined. It always returns NULL.
2016-03-25 09:44:41 +01:00
Frank Denis
02e4b3b842
Check memory base instead of the aligned pointer
...
No behavior change, but it is less confusing to static analyzers
2016-03-25 09:42:32 +01:00
Frank Denis
346f8c131e
More tests
2016-03-24 22:16:52 +01:00
Frank Denis
7a08f643bf
Remove unused declaration
2016-03-24 21:06:07 +01:00
Frank Denis
a3a2b74bd8
Use existing functions for unaligned access in hash_sha*
2016-03-24 15:02:34 +01:00
Frank Denis
3295752821
Of course, GNU ld doesn't know about .private_extern
2016-03-22 21:26:39 +01:00
Frank Denis
bafc9c70e1
Only use .private_extern if this is supported
2016-03-22 20:42:07 +01:00
Frank Denis
26e4cf479a
Reduce symbols visibility in curve25519_sandy2x
2016-03-22 19:55:07 +01:00
Frank Denis
3fb2ee07cb
Add crypto_pwhash_primitive()
2016-03-21 20:59:43 +01:00
Frank Denis
1820a4239d
Add missing SODIUM_EXPORT statements
2016-03-21 19:29:33 +01:00
Frank Denis
de451c23a0
Add detached versions of ChaCha20-Poly1305
2016-03-21 13:11:04 +01:00
Frank Denis
89a6f58e4d
Replace some constants
2016-03-21 12:55:24 +01:00
Frank Denis
e34f3512ad
clen -> clen_p
2016-03-21 12:13:11 +01:00
Frank Denis
359553f07d
Add support for optional parameters to future-proof crypto_pwhash()
2016-03-21 09:38:43 +01:00
Frank Denis
33f406892f
Rename CPUID bits constants for clarity
2016-03-21 03:54:10 +01:00
Frank Denis
fd440e7b4d
AVX2 bit is in %ebx, not %ecx
2016-03-21 03:42:33 +01:00
Frank Denis
2b71f28c4c
Double crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE
2016-03-20 17:50:27 +01:00
Frank Denis
05d82ad147
Simplify quirks for C++Builder
2016-03-18 22:13:23 +01:00
Frank Denis
a456244a95
Merge pull request #373 from jcolli44/master
...
Introduce C++Builder compatibility
2016-03-18 22:06:59 +01:00
Frank Denis
f0e3cb0d50
Some platforms don't define ENOSYS - use ENXIO instead on these.
2016-03-18 22:01:35 +01:00
unknown
2085693c32
Introduce C++Builder compatibility
...
Add new preprocessor directives to allow libsodium to be easily
built in C++Builder.
2016-03-18 14:46:00 -04:00
Frank Denis
0c06979260
Verify at compile time that blake2b_param is packed as expected
2016-03-18 10:20:56 +01:00
Frank Denis
76e3e91576
Remove unnecessary extern "C" and unused prototypes
2016-03-18 10:17:02 +01:00
Frank Denis
6c94f968e4
Remove BLAKE2s-related declarations
2016-03-18 09:59:32 +01:00
Frank Denis
0a18d18daf
Consistent comment style
2016-03-18 09:56:21 +01:00
Frank Denis
a54e9402c5
Avoid BLAKE2 AVX2 implementation on Win32
2016-03-17 17:31:57 +01:00
Frank Denis
4b6667a9d3
Update Makefiles and MSVC solutions
2016-03-17 17:07:43 +01:00
Frank Denis
64fe1b2353
Indent
2016-03-17 16:53:30 +01:00
Frank Denis
7583cb26b5
Merge branch 'blakeavx2'
...
* blakeavx2:
BLAKE2b AVX2 implementation By the marvellous Samuel Neves - https://github.com/sneves/blake2-avx2
2016-03-17 16:29:12 +01:00
Frank Denis
0131a72082
BLAKE2b AVX2 implementation
...
By the marvellous Samuel Neves - https://github.com/sneves/blake2-avx2
2016-03-17 16:24:04 +01:00
Frank Denis
8a24608fd2
Luminous beings are we, not this crude matter
2016-03-17 12:21:10 +01:00
Frank Denis
81f87df6a2
The Yoda style avoiding we can.
...
In a similar test above, that style we didn't use.
2016-03-17 12:21:09 +01:00
Frank Denis
6f2be3633f
Argon2: avoid initial zeroing by calling fill_block() on the first pass
2016-03-17 12:21:06 +01:00
Frank Denis
7611ea6018
Add AVX2 detection
2016-03-17 11:15:18 +01:00
Frank Denis
42d906d3e9
Cacheline alignment
2016-03-17 09:27:39 +01:00
Frank Denis
a4327a90f4
Spacing
2016-03-17 09:22:09 +01:00
Frank Denis
e8dfc764d3
Add a detached API for aes256gcm
2016-03-15 11:02:25 +01:00
Frank Denis
d8845c04dd
Update blake2b licensing
2016-03-13 09:12:34 +01:00
Frank Denis
630ac0913b
We only support data independent addressing for Argon2
...
Let the compiler automatically remove unused code
2016-03-11 16:41:06 +01:00
Frank Denis
5a00dff84d
p -> R for clarity
2016-03-11 13:45:39 +01:00
Frank Denis
676950d206
Remove superflous constant type qualifiers
2016-03-10 16:43:42 +01:00
Frank Denis
ab2f22137e
ed25519_verify: check for small-order R
2016-03-10 16:39:54 +01:00
Frank Denis
7597b7cc13
Check what the implications of versioned Argon2 strings will be
2016-03-10 12:26:17 +01:00
Frank Denis
805fd3589d
The version number in Argon2 strings will require 5 extra bytes
...
Round `crypto_pwhash_argon2i_STRBYTES` up to 128
2016-03-10 12:22:13 +01:00
Frank Denis
7c5d30a6a3
Consistent indentation
2016-03-09 15:37:47 +01:00
Frank Denis
62911edb7f
Ed25519: verify 0<=s<2^252+27742317777372353535851937790883648493
...
This reintroduces removed code to match the irtf-cfrg-eddsa draft
ED25519_COMPAT can be defined to keep the old behavior
2016-03-08 20:35:21 +01:00
Frank Denis
7d4cfbf7af
pwhash_argon2i_str(): zero the output buffer even on error path
2016-03-08 13:55:04 +01:00
Frank Denis
3853d5a824
Require a least 128 bits for an Argon2i digest
2016-03-08 13:51:23 +01:00
Frank Denis
7e4f83a54d
Revisit Argon2i predefined parameters
2016-03-08 11:55:03 +01:00
Frank Denis
0158b2b1fd
Argon2: use negative error codes
2016-03-08 09:32:37 +01:00
Frank Denis
f4397f12d0
Remove unneeded prototypes
2016-03-06 13:55:04 +01:00
Frank Denis
ddc1bbad73
Remove unused variables
2016-03-06 13:51:42 +01:00
Frank Denis
2fb69179cd
scrypt: zeroize the temporary output buffer
2016-03-06 00:08:35 +01:00
Frank Denis
edcd258417
inttypes.h -> stdint.h
2016-03-05 18:23:53 +01:00
Frank Denis
8b139cdc31
Compile optimized Argon2i impl on 32-bit MSVC
2016-03-05 18:21:59 +01:00
Frank Denis
db139ced5f
MSVC analyzer FP
2016-03-05 17:56:40 +01:00
Frank Denis
b55febaafa
Bump ARGON2_MIN_TIME to 3, adjust tests accordingly
2016-03-01 14:08:31 +01:00
Frank Denis
0868222732
Let core_salsa20* accept a default constant
2016-02-29 12:04:34 +01:00
Frank Denis
9fbb822281
Use stdint types a bit more
2016-02-27 16:33:22 +01:00
Frank Denis
4e9b0b67ce
Let crypto_core_hsalsa20()
accept NULL
for the default constants
2016-02-27 16:19:38 +01:00
Frank Denis
bb596e8eb7
Trim/untab/indent
2016-02-27 13:26:42 +01:00
Frank Denis
6dc466ee8b
Use a single way to do unaligned memory access/endianness conversion
2016-02-27 12:46:07 +01:00
Frank Denis
d9493834b2
Hide store32()/load32() in the header
2016-02-26 13:22:33 +01:00
Frank Denis
49c57dfe0a
Faster HChaCha20
2016-02-26 13:15:36 +01:00
Frank Denis
1e2a9eb062
Faster with clang
2016-02-26 12:59:14 +01:00
Frank Denis
4d5c3976db
Add HChaCha20
2016-02-26 12:50:17 +01:00
Frank Denis
ecdcfba07e
Argon2: issue different error codes for VERIFY_MISMATCH and DECODING_FAIL
...
Only used internally, not exposed in the Sodium API
2016-02-23 15:24:37 +01:00
Frank Denis
80d24c00cc
Use calloc() instead of malloc()+memset()
2016-02-19 07:40:09 +01:00
Frank Denis
4b6a909d8a
Argon2: fill_block() now XORs blocks instead of overwriting them
2016-02-17 16:26:37 +01:00
Frank Denis
e153debd0d
Remove ...edwards25519sha512batch_*() wrappers for the constants
...
The ...edwards25519sha512batch_*() functions are only here for ABI
compatibility with NaCl, where constants were only defined as macros.
Plus, these functions were only present as prototypes since 1.0.6;
the actual symbols were no defined any more.
2016-02-13 08:15:00 +01:00
Frank Denis
54915743f4
Define ZEROBYTES as BOXZEROBYTES + MACBYTES
...
ZEROBYTES and BOXZEROBYTES are rarely used compared to MACBYTES,
so it makes more sense to define MACBYTES and define the compat macros
based on it that the other way round.
2016-02-11 15:19:58 +01:00
Frank Denis
36e60b2d28
Wipe secret keys before public keys and nonces
2016-02-03 01:19:24 +01:00
Frank Denis
1b63773986
Comments cleanup
2016-02-01 16:08:29 +01:00
Frank Denis
7035bbb8b8
Indent
2016-01-28 14:44:41 +01:00
Frank Denis
aa2ae5642b
aes256gcm_encrypt_afternm() - abort() if mlen > 2^39-256 bits
2016-01-27 14:42:32 +01:00
Frank Denis
113091b2a0
On non-ELF platforms, mark pointers as volatile, not just what they point to.
...
See http://sk.tl/Wj3pmI vs http://sk.tl/VNsyd9
2016-01-27 08:24:19 +01:00
Frank Denis
bd15b68569
Argon2: explicitly initialize ctx.secret to NULL
2016-01-26 11:14:40 +01:00
Frank Denis
367afac0bf
Sync argon2 implementation with upstream
2016-01-24 20:35:00 +01:00
Frank Denis
31a153c937
argon2_core() -> argon2_ctx()
2016-01-23 22:52:11 +01:00
Frank Denis
8bd6c9e289
Caps
2016-01-22 16:16:15 +01:00
Frank Denis
dc4a9791a7
Add comments to argon2-encoding.c
...
Upstream `decode_string()` can return `ARGON2_INCORRECT_TYPE`.
This change is not merged. Either have a function return an ARGON2 constant,
have it return 0/1, or have it return 0/-1, but mixing different systems
is confusing. (encode|decode)_string() should probably all return an ARGON2
code.
2016-01-22 16:12:24 +01:00
Frank Denis
921507cc59
Add extra sodium_memzero() in Argon2
2016-01-22 16:03:09 +01:00
Frank Denis
a814810a43
Relax max sizes in argon2 decoding
2016-01-22 15:59:54 +01:00
Frank Denis
17248540e3
Add aes256gcm stubs for platforms where it is not available
2016-01-22 10:21:24 +01:00
Frank Denis
d1b028abe3
Initialize ctx->pwdlen in argon2 string decoder
2016-01-21 08:42:23 +01:00
Frank Denis
82c7c45924
zero the context, in case we forget to initialize some members
2016-01-21 08:39:47 +01:00
Frank Denis
ba415e1f4d
Argon2: use existing constants more consistently
...
By @technion via the reference implementation
2016-01-21 08:35:53 +01:00
Frank Denis
53419d7b06
Merge pull request #348 from betafive/pbarker/blake2
...
Add crypt_generichash_blake2b_statebytes function
2016-01-16 20:15:00 +01:00
Paul Barker
e20291d78e
Add crypt_generichash_blake2b_statebytes function
...
The function crypto_generichash_statebytes exists to dynamically determine the
size of a crypto_generichash_state struct. This is useful when using libsodium
from a language which can't use sizeof on C types. However, no equivalent
existed for the crypto_generichash_blake2b_state struct for users who want to
explicitly use the blake2b algorithm.
The function crypt_generichash_blake2b_statebytes is added to fill this gap.
2016-01-16 17:25:14 +00:00
Frank Denis
8c0b916729
Add new macros for chacha20poly1305_ietf constants, for clarity
2016-01-16 12:36:30 +01:00
Frank Denis
18cc1b5682
The occasional absence of braces is disturbing.
2016-01-15 21:12:34 +01:00
Frank Denis
08d3b8a19c
Reuse validate_inputs() to validate parameters in argon2-encoding.c
2016-01-15 20:58:50 +01:00
Frank Denis
936667e3f1
Untab
2016-01-12 09:26:46 +01:00
Frank Denis
20ccc09018
Argon2: Let fill_{memory_blocks,segment} return an error code
2016-01-12 09:24:50 +01:00
Frank Denis
751f3b3753
Visual Studio's preprocessor doesn't support #warning
2016-01-11 11:11:43 +01:00
Frank Denis
f1ab1fd377
Add extra CRYPTO_ALIGN() required for Minix
2016-01-07 15:33:17 +01:00
Frank Denis
82ed2169b0
Make argon2i blocks allocation functions static
2015-12-30 17:30:59 +01:00