Skip to content

Commit

Permalink
Add clean and auto-optimized AES-GCM variants
Browse files Browse the repository at this point in the history
This commit adds `crypto/fipsmodule/modes/asm/slothy` containing various
clean and auto-optimized AArch64 implementations of AES-GCM.

The clean versions are algorithmically derived from and still very close to
the existing AArch64 AES-GCM implementations. However, they have been
de-interleaved for better readability and verifiability. The application
of micro-optimizations (e.g. scheduling, software pipelining) is instead
handled automatically by SLOTHY.

To test a clean or optimized version, use `test.sh` from the `slothy`
directory, after adjusting AWS_LC_BASE and BUILD_DIR accordingly.

To run SLOTHY to optimize a clean version, use `optimize.sh`, after
installing SLOTHY and putting `slothy-cli` in your PATH.
  • Loading branch information
hanno-becker committed Jul 8, 2024
1 parent 1fbe1f8 commit 81ff142
Show file tree
Hide file tree
Showing 89 changed files with 81,861 additions and 13 deletions.
4 changes: 4 additions & 0 deletions crypto/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,10 @@ if(ARCH STREQUAL "aarch64")
chacha/chacha-armv8.${ASM_EXT}
test/trampoline-armv8.${ASM_EXT}
cipher_extra/chacha20_poly1305_armv8.${ASM_EXT}

fipsmodule/modes/asm/aesv8-gcm-armv8-slothy-128.S
fipsmodule/modes/asm/aesv8-gcm-armv8-slothy-192.S
fipsmodule/modes/asm/aesv8-gcm-armv8-slothy-256.S
)
endif()

Expand Down
Loading

0 comments on commit 81ff142

Please sign in to comment.