Skip to content
Draft
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
38 changes: 38 additions & 0 deletions dev/aarch64_clean/src/mldsa_rej_uniform_aarch64_asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,44 @@ mld_rej_uniform_final_copy:
cmp final_copy_count, #MLDSA_N
b.lt mld_rej_uniform_final_copy

// Zeroize the stack buffer
eor val0.16b, val0.16b, val0.16b
mov output_tmp, output_tmp_base
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32

mov x0, count
b mld_rej_uniform_return

Expand Down
22 changes: 22 additions & 0 deletions dev/aarch64_clean/src/mldsa_rej_uniform_eta2_aarch64_asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,28 @@ mld_rej_uniform_eta2_final_copy:
cmp final_copy_count, #MLDSA_N
b.lt mld_rej_uniform_eta2_final_copy

// Zeroize the stack buffer
eor val0.16b, val0.16b, val0.16b
mov output_tmp, output_tmp_base
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32

mov x0, count
pop_stack
ret
Expand Down
22 changes: 22 additions & 0 deletions dev/aarch64_clean/src/mldsa_rej_uniform_eta4_aarch64_asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,28 @@ mld_rej_uniform_eta4_final_copy:
cmp final_copy_count, #MLDSA_N
b.lt mld_rej_uniform_eta4_final_copy

// Zeroize the stack buffer
eor val0.16b, val0.16b, val0.16b
mov output_tmp, output_tmp_base
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32

mov x0, count
pop_stack
ret
Expand Down
38 changes: 38 additions & 0 deletions dev/aarch64_opt/src/mldsa_rej_uniform_aarch64_asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,44 @@ mld_rej_uniform_final_copy:
cmp final_copy_count, #MLDSA_N
b.lt mld_rej_uniform_final_copy

// Zeroize the stack buffer
eor val0.16b, val0.16b, val0.16b
mov output_tmp, output_tmp_base
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32

mov x0, count
b mld_rej_uniform_return

Expand Down
22 changes: 22 additions & 0 deletions dev/aarch64_opt/src/mldsa_rej_uniform_eta2_aarch64_asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,28 @@ mld_rej_uniform_eta2_final_copy:
cmp final_copy_count, #MLDSA_N
b.lt mld_rej_uniform_eta2_final_copy

// Zeroize the stack buffer
eor val0.16b, val0.16b, val0.16b
mov output_tmp, output_tmp_base
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32

mov x0, count
pop_stack
ret
Expand Down
22 changes: 22 additions & 0 deletions dev/aarch64_opt/src/mldsa_rej_uniform_eta4_aarch64_asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,28 @@ mld_rej_uniform_eta4_final_copy:
cmp final_copy_count, #MLDSA_N
b.lt mld_rej_uniform_eta4_final_copy

// Zeroize the stack buffer
eor val0.16b, val0.16b, val0.16b
mov output_tmp, output_tmp_base
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32
stp val0q, val0q, [output_tmp], #32

mov x0, count
pop_stack
ret
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,10 @@ mld_keccak_f1600_x1_scalar_initial:
ldr input_addr, [sp, #STACK_LOC_INPUT]
store_state

// Zeroize the stack locals
stp xzr, xzr, [sp, #STACK_LOC_INPUT]
stp xzr, xzr, [sp, #STACK_LOC_COUNT]

restore_gprs
free_stack
ret
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2453,6 +2453,12 @@ mld_keccak_f1600_x4_v8a_scalar_hybrid_done:
store_input_scalar 1
store_input_vector

// Zeroize the stack locals
stp xzr, xzr, [sp, #STACK_OFFSET_INPUT]
stp xzr, xzr, [sp, #STACK_OFFSET_CONST_VECTOR]
str xzr, [sp, #STACK_OFFSET_OUTER]
str xzr, [sp, #STACK_LOC_0]

restore_vregs
restore_gprs
free_stack
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2283,6 +2283,12 @@ mld_keccak_f1600_x4_v8a_v84a_scalar_hybrid_done:
store_input_scalar 1
store_input_vector

// Zeroize the stack locals
stp xzr, xzr, [sp, #STACK_OFFSET_INPUT]
stp xzr, xzr, [sp, #STACK_OFFSET_CONST_VECTOR]
str xzr, [sp, #STACK_OFFSET_OUTER]
str xzr, [sp, #STACK_LOC_0]

restore_vregs
restore_gprs
free_stack
Expand Down
27 changes: 27 additions & 0 deletions dev/fips202/x86_64/src/keccak_f1600_x4_avx2_asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -652,6 +652,33 @@ MLD_ASM_FN_SYMBOL(keccak_f1600_x4_avx2_asm)
vmovhpd %xmm3, 0x188(%rdi)
vmovq %xmm15, 0x250(%rdi)
vmovhpd %xmm15, 0x318(%rdi)

// Zeroize the stack frame
vpxor %ymm0, %ymm0, %ymm0
vmovdqu %ymm0, 0x0(%rsp)
vmovdqu %ymm0, 0x20(%rsp)
vmovdqu %ymm0, 0x40(%rsp)
vmovdqu %ymm0, 0x60(%rsp)
vmovdqu %ymm0, 0x80(%rsp)
vmovdqu %ymm0, 0xa0(%rsp)
vmovdqu %ymm0, 0xc0(%rsp)
vmovdqu %ymm0, 0xe0(%rsp)
vmovdqu %ymm0, 0x100(%rsp)
vmovdqu %ymm0, 0x120(%rsp)
vmovdqu %ymm0, 0x140(%rsp)
vmovdqu %ymm0, 0x160(%rsp)
vmovdqu %ymm0, 0x180(%rsp)
vmovdqu %ymm0, 0x1a0(%rsp)
vmovdqu %ymm0, 0x1c0(%rsp)
vmovdqu %ymm0, 0x1e0(%rsp)
vmovdqu %ymm0, 0x200(%rsp)
vmovdqu %ymm0, 0x220(%rsp)
vmovdqu %ymm0, 0x240(%rsp)
vmovdqu %ymm0, 0x260(%rsp)
vmovdqu %ymm0, 0x280(%rsp)
vmovdqu %ymm0, 0x2a0(%rsp)
vmovdqu %ymm0, 0x2c0(%rsp)
vmovdqu %ymm0, 0x2e0(%rsp)
/* Clear upper halves of YMM registers to avoid a performance
* penalty when switching to SSE. */
vzeroupper
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,8 @@ Lmld_keccak_f1600_x1_scalar_loop:
stp x5, x10, [x0, #0xa0]
stp x15, x20, [x0, #0xb0]
str x25, [x0, #0xc0]
stp xzr, xzr, [sp]
stp xzr, xzr, [sp, #0x10]
ldp x19, x20, [sp, #0x20]
.cfi_restore x19
.cfi_restore x20
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1035,6 +1035,10 @@ Lmld_keccak_f1600_x4_v8a_scalar_hybrid_done:
str d24, [x0]
trn2 v25.2d, v24.2d, v24.2d
str d25, [x4]
stp xzr, xzr, [sp]
stp xzr, xzr, [sp, #0x10]
str xzr, [sp, #0x20]
str xzr, [sp, #0xd0]
ldp d8, d9, [sp, #0x90]
.cfi_restore d8
.cfi_restore d9
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -943,6 +943,10 @@ Lmld_keccak_f1600_x4_v8a_v84a_scalar_hybrid_done:
str d24, [x0]
trn2 v25.2d, v24.2d, v24.2d
str d25, [x4]
stp xzr, xzr, [sp]
stp xzr, xzr, [sp, #0x10]
str xzr, [sp, #0x20]
str xzr, [sp, #0xd0]
ldp d8, d9, [sp, #0x90]
.cfi_restore d8
.cfi_restore d9
Expand Down
25 changes: 25 additions & 0 deletions mldsa/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -474,6 +474,31 @@ LLmld_keccak_f1600_x4_avx2_asm:
vmovhpd %xmm3, 0x188(%rdi)
vmovq %xmm15, 0x250(%rdi)
vmovhpd %xmm15, 0x318(%rdi)
vpxor %ymm0, %ymm0, %ymm0
vmovdqu %ymm0, (%rsp)
vmovdqu %ymm0, 0x20(%rsp)
vmovdqu %ymm0, 0x40(%rsp)
vmovdqu %ymm0, 0x60(%rsp)
vmovdqu %ymm0, 0x80(%rsp)
vmovdqu %ymm0, 0xa0(%rsp)
vmovdqu %ymm0, 0xc0(%rsp)
vmovdqu %ymm0, 0xe0(%rsp)
vmovdqu %ymm0, 0x100(%rsp)
vmovdqu %ymm0, 0x120(%rsp)
vmovdqu %ymm0, 0x140(%rsp)
vmovdqu %ymm0, 0x160(%rsp)
vmovdqu %ymm0, 0x180(%rsp)
vmovdqu %ymm0, 0x1a0(%rsp)
vmovdqu %ymm0, 0x1c0(%rsp)
vmovdqu %ymm0, 0x1e0(%rsp)
vmovdqu %ymm0, 0x200(%rsp)
vmovdqu %ymm0, 0x220(%rsp)
vmovdqu %ymm0, 0x240(%rsp)
vmovdqu %ymm0, 0x260(%rsp)
vmovdqu %ymm0, 0x280(%rsp)
vmovdqu %ymm0, 0x2a0(%rsp)
vmovdqu %ymm0, 0x2c0(%rsp)
vmovdqu %ymm0, 0x2e0(%rsp)
vzeroupper
movq %r11, %rsp
.cfi_def_cfa_register %rsp
Expand Down
36 changes: 36 additions & 0 deletions mldsa/src/native/aarch64/src/mldsa_rej_uniform_aarch64_asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,42 @@ Lmld_rej_uniform_final_copy:
add x11, x11, #0x10
cmp x11, #0x100
b.lt Lmld_rej_uniform_final_copy
eor v16.16b, v16.16b, v16.16b
mov x7, x8
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
stp q16, q16, [x7], #0x20
mov x0, x9
b Lmld_rej_uniform_return

Expand Down
Loading
Loading