Optimizations for AES-NI OCB
g10/mainproc: avoid extra hash contexts when decrypting AEAD input
g10/armor: optimize radix64 to binary conversion
g10/armor: optimize binary to radix64 conversion
g10/armor: use libgcrypt's CRC24 implementation
common/iobuf: optimize iobuf_read_line
g10/armor: fix eof checks in radix64_read
g10/armor: remove unused unarmor_pump code
g10/decrypt-data: use iobuf_read for higher performance
g10/decrypt-data: use fill_buffer in more places
Fix inlining of ocb_get_l for x86 AES implementations
Fix 'variable may be used uninitialized' warning for CTR mode
stdmem: free: only call _gcry_secmem_free if needed
secmem: fix potential memory visibility issue
Change buf_cpy and buf_xor* functions to use buf_put/buf_get helpers
wipememory: use memset for non-constant length or large buffer wipes
rijndael: fix unused parameter warning
mpi/longlong.h: enable inline assembly for powerpc64
Change remaining users of _gcry_fips_mode to use fips_mode
Fix missing global initialization in fips_is_operational
Add size optimized cipher block copy and xor functions
Add hash_buffer and hash_buffers for SHA-224, SHA-385, SHA3 and BLAKE2
Add hash_buffer and hash_buffers pointers to message digest spec
Clean-up implementation selection for SHA1 and SHA2
AES: setup cipher object bulk routines with optimized versions
Pass cipher object pointer to setkey functions
Access cipher mode routines through routine pointers
Add fast path for _gcry_fips_is_operational
Add separate handlers for CBC-CTS variant
Avoid division by spec->blocksize in cipher mode handlers
tests/basic: silence GCC-8 warning
Fix CBC-CTS+CBC-MAC flag check
Faster look-up for spec by algo for digests, ciphers and MAC
Fix building with BLAKE2 disabled
basic_all_hwfeature_combinations.sh: use $njobs to limit parallel tasks
Add missing BLAKE2, SM3 and GOSTR3411_CP to MAC-HMAC interface
aarch64/assembly: only use the lower 32 bit of an int parameters
poly1305: silence compiler warning on clang/aarch64
aarch64: Enable building the aarch64 cipher assembly for windows
aarch64: Fix assembling chacha20-aarch64.S with clang/llvm
aarch64: mpi: Fix building the mpi aarch64 assembly for windows
aarch64: camellia: Only use the lower 32 bit of an int parameter
random: Don't assume that _WIN64 implies x86_64
Register DCO for Martin Storsjö
tests/aeswrap: add in-place encryption/decryption testing
AES-KW: fix in-place encryption
bench-slope: add CPU frequency auto-detection
Improve constant-time buffer compare
_gcry_burn_stack: use memset for clearing memory
Add Intel SHA Extensions accelerated SHA256 implementation
Add Intel SHA Extensions accelerated SHA1 implementation
AVX implementation of BLAKE2s
AVX2 implementation of BLAKE2b
Here's patches I used for testing. First is hack for disabing SHA1+RMD160 'old GPG LITERAL+SIG case' and second is 'iobuf_get to iobuf_read' optimization.
Fix incorrect counter overflow handling for GCM
Fix use of AVX instructions in Chaha20 SSSE3 implementation
doc: fix double "See" in front of reference
cipher: constify spec arrays
Add ARMv8/CE acceleration for AES-XTS
Move AMD64 MS to SysV calling convention conversion to assembly side
rijndael-ssse3: call assembly functions directly
Make BMI2 inline assembly check more robust
Add ARMv8/AArch64 implementation of chacha20
Add AES-NI acceleration for AES-XTS
AES-NI improvements for AMD64
New ChaCha implementations
New Poly1305 implementations
mpi/ec: fix when 'unsigned long' is 32-bit but limb size is 64-bit
jukivili removed a member for
libgcrypt:
jukivili.
jukivili removed a watcher for
libgcrypt:
jukivili.
Add script to run basic tests with all supported HWF combinations
Fix return value type for _gcry_md_extract
Fix building AArch32 CE implementations when target is ARMv6 arch
You can apply this patch by first navigating to libgcrypt-1.8 path and then giving following command (you need 'patch' tool to be installed):
In libgcrypt, _gcry_md_extract has different return type in gcrypt-int.h than in md.c. Does attached patch solve the problem?
Likely fixed by commit a4d1595a2638db63ac4c73e722c8ba95fdd85ff7 (rijndael-aesni: split assembly block to ease register pressure) in 1.7 branch (and included in 1.7.3+).
I did some experimenting and clang SIGILL does not trigger with commonly used, but non-conforming, variable-length object with "struct hack", as below:
rijndael-padlock: change asm operands from read-only to read/write
rijndael-ssse3: fix functions calls from assembly blocks
chacha20-armv7-neon: fix to use fast code path when memory is aligned
Move data in AMD64 assembly to text section
cast5-amd64: use 64-bit relocation with large PIC memory model
Fix building with x86-64 medium and large memory models
Does the attached patch fix the problem?
I have now learnt how GCC uses 'undefined behavior' for aggressive optimization
and that this could break code doing unaligned accesses even on x86. So this
needs to be fixed after all.