Hello,

On 27/09/2025 02:19, Jacob Bachmeyer wrote:
On 9/26/25 01:53, Jussi Kivilinna wrote:
* cipher/mceliece6688128f.c (pk_gen): Remove 'mat' array allocation and
rename function to ...
(pk_gen_mat): ... this.
(pk_gen): New warper for 'pk_gen_mat' with dynamic allocation of 'mat' array.

Typo?  Did you mean "wrapper"?


Yes, typo.

Why do it this way instead of just adding xmalloc()/xfree() calls to pk_gen()?  
Also, should the buffer be zeroed before releasing it?


I wanted to avoid diverging too much from the original, to avoid having to make 
greater changes to original pk_gen() function. With allocation in pk_gen(), 'mat' 
would change from 2d array to, for example, simple pointer and then all 'mat[][]' 
accesses would need to be changed. Or 'mat' could be changed to 'struct { uint64_t 
arr[][] } *mat' and change accesses to 'mat->arr[][]'.

That buffer probably should be zeroed after although it was not being cleared. 
I'll add that for v2 of patch. About memory zeroing in general... I see that PQ 
algorithms use quite a lot of stack arrays in their implementations (some quite 
large allocations too) but there is no stack memory wiping in place. Maybe 
there should be? I guess simplest way to wipe used stack would be to add 
appropriately sized _gcry_burn_stack() calls after each PQ function call, for 
example in 'kem.c'.

-Jussi


_______________________________________________
Gcrypt-devel mailing list
[email protected]
https://lists.gnupg.org/mailman/listinfo/gcrypt-devel

Reply via email to