Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions BIBLIOGRAPHY.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,16 @@ source code and documentation.
* Referenced from:
- [README.md](README.md)

### `ADOMNICAI23`

* An update on Keccak performance on ARMv7-M
* Author(s):
- Alexandre Adomnicai
* URL: https://eprint.iacr.org/2023/773
* Referenced from:
- [dev/fips202/armv81m/src/keccak_f1600_x1_armv7m.S](dev/fips202/armv81m/src/keccak_f1600_x1_armv7m.S)
- [mlkem/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m.S](mlkem/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m.S)

### `AVX2_NTT`

* Faster AVX2 optimized NTT multiplication for Ring-LWE lattice cryptography.
Expand Down Expand Up @@ -284,6 +294,18 @@ source code and documentation.
- [dev/README.md](dev/README.md)
- [proofs/hol_light/README.md](proofs/hol_light/README.md)

### `SLOTHYM7`

* Enabling Microarchitectural Agility: Taking ML-KEM & ML-DSA from Cortex-M4 to M7 with SLOTHY
* Author(s):
- Amin Abdulrahman
- Matthias J. Kannwischer
- Thing-Han Lim
* URL: https://eprint.iacr.org/2025/366
* Referenced from:
- [dev/fips202/armv81m/src/keccak_f1600_x1_armv7m.S](dev/fips202/armv81m/src/keccak_f1600_x1_armv7m.S)
- [mlkem/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m.S](mlkem/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m.S)

### `SLOTHY_Paper`

* Fast and Clean: Auditable high-performance assembly via constraint solving
Expand All @@ -308,6 +330,20 @@ source code and documentation.
- [proofs/hol_light/aarch64/mlkem/mlkem_intt.S](proofs/hol_light/aarch64/mlkem/mlkem_intt.S)
- [proofs/hol_light/aarch64/mlkem/mlkem_ntt.S](proofs/hol_light/aarch64/mlkem/mlkem_ntt.S)

### `XKCP`

* eXtended Keccak Code Package
* Author(s):
- Guido Bertoni
- Joan Daemen
- Michaël Peeters
- Gilles Van Assche
- Ronny Van Keer
* URL: https://github.com/XKCP/XKCP
* Referenced from:
- [dev/fips202/armv81m/src/keccak_f1600_x1_armv7m.S](dev/fips202/armv81m/src/keccak_f1600_x1_armv7m.S)
- [mlkem/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m.S](mlkem/src/fips202/native/armv81m/src/keccak_f1600_x1_armv7m.S)

### `clangover`

* clangover
Expand Down
23 changes: 23 additions & 0 deletions BIBLIOGRAPHY.yml
Original file line number Diff line number Diff line change
Expand Up @@ -165,3 +165,26 @@
name: tiny_sha3
author: Saarinen, Markku-Juhani O.
url: https://github.com/mjosaarinen/tiny_sha3

- id: XKCP
name: eXtended Keccak Code Package
author:
- Bertoni, Guido
- Daemen, Joan
- Peeters, Michaël
- Van Assche, Gilles
- Van Keer, Ronny
url: https://github.com/XKCP/XKCP

- id: ADOMNICAI23
name: "An update on Keccak performance on ARMv7-M"
author: Adomnicai, Alexandre
url: https://eprint.iacr.org/2023/773

- id: SLOTHYM7
name: "Enabling Microarchitectural Agility: Taking ML-KEM & ML-DSA from Cortex-M4 to M7 with SLOTHY"
author:
- Abdulrahman, Amin
- Kannwischer, Matthias J.
- Lim, Thing-Han
url: https://eprint.iacr.org/2025/366
14 changes: 13 additions & 1 deletion dev/fips202/armv81m/mve.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,26 @@
#define MLK_FIPS202_NATIVE_ARMV81M

/* Part of backend API */
#define MLK_USE_FIPS202_X1_NATIVE
#define MLK_USE_FIPS202_X4_NATIVE
/* Guard for assembly file */
/* Guard for assembly files */
#define MLK_FIPS202_ARMV81M_NEED_X1
#define MLK_FIPS202_ARMV81M_NEED_X4

#if !defined(__ASSEMBLER__)
#include <stdint.h>
#include "../api.h"

#define mlk_keccak_f1600_x1_native_impl \
MLK_NAMESPACE(keccak_f1600_x1_native_impl)
int mlk_keccak_f1600_x1_native_impl(uint64_t *state);

MLK_MUST_CHECK_RETURN_VALUE
static MLK_INLINE int mlk_keccak_f1600_x1_native(uint64_t *state)
{
return mlk_keccak_f1600_x1_native_impl(state);
}

#define mlk_keccak_f1600_x4_native_impl \
MLK_NAMESPACE(keccak_f1600_x4_native_impl)
int mlk_keccak_f1600_x4_native_impl(uint64_t *state);
Expand Down
7 changes: 5 additions & 2 deletions dev/fips202/armv81m/src/fips202_native_armv81m.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@
#include <stdint.h>
#include "../../../../common.h"

/* Keccak round constants in bit-interleaved form */
/* Keccak round constants in bit-interleaved form (with terminator for x1) */
#define mlk_keccakf1600_round_constants \
MLK_NAMESPACE(keccakf1600_round_constants)
extern const uint32_t mlk_keccakf1600_round_constants[48];
extern const uint32_t mlk_keccakf1600_round_constants[49];

#define mlk_keccak_f1600_x4_mve_asm MLK_NAMESPACE(keccak_f1600_x4_mve_asm)
void mlk_keccak_f1600_x4_mve_asm(uint64_t state[100], uint64_t tmpstate[100],
const uint32_t rc[48]);

#define mlk_keccak_f1600_x1_armv7m_asm MLK_NAMESPACE(keccak_f1600_x1_armv7m_asm)
void mlk_keccak_f1600_x1_armv7m_asm(uint32_t state[50], const uint32_t rc[49]);

#endif /* !MLK_DEV_FIPS202_ARMV81M_SRC_FIPS202_NATIVE_ARMV81M_H */
Loading