boringssl/crypto/poly1305
David Benjamin 929f842810 Remove custom memcpy and memset from poly1305_vec.
This avoids upsetting the C compiler. UBSan is offended by the alignment
violations in those functions. The business with offset is also
undefined behavior (pointer arithmetic is supposed to stay within a
single object).

There is a small performance cost, however:

Before:
Did 6636000 ChaCha20-Poly1305 (16 bytes) seal operations in 5000475us (1327073.9 ops/sec): 21.2 MB/s
Did 832000 ChaCha20-Poly1305 (1350 bytes) seal operations in 5003481us (166284.2 ops/sec): 224.5 MB/s
Did 155000 ChaCha20-Poly1305 (8192 bytes) seal operations in 5026933us (30833.9 ops/sec): 252.6 MB/s

After:
Did 6508000 ChaCha20-Poly1305 (16 bytes) seal operations in 5000160us (1301558.4 ops/sec): 20.8 MB/s
Did 831000 ChaCha20-Poly1305 (1350 bytes) seal operations in 5002865us (166104.8 ops/sec): 224.2 MB/s
Did 155000 ChaCha20-Poly1305 (8192 bytes) seal operations in 5013204us (30918.4 ops/sec): 253.3 MB/s

(Tested with the no-asm build which disables the custom stitched mode
assembly and ends up using this one.)

Change-Id: I76d74183f1e04ad3726463a8871ee64be04ce674
Reviewed-on: https://boringssl-review.googlesource.com/22784
Reviewed-by: Adam Langley <agl@google.com>
2017-11-10 20:53:30 +00:00
..
CMakeLists.txt Convert a number of tests to GTest. 2017-06-01 17:02:13 +00:00
internal.h Run the comment converter on libcrypto. 2017-08-18 21:49:04 +00:00
poly1305_arm_asm.S Add the start of standalone iOS build support. 2017-04-07 17:13:44 +00:00
poly1305_arm.c Run the comment converter on libcrypto. 2017-08-18 21:49:04 +00:00
poly1305_test.cc Convert a number of tests to GTest. 2017-06-01 17:02:13 +00:00
poly1305_tests.txt
poly1305_vec.c Remove custom memcpy and memset from poly1305_vec. 2017-11-10 20:53:30 +00:00
poly1305.c Run the comment converter on libcrypto. 2017-08-18 21:49:04 +00:00