From 3333de37875f4cad1263ee14861ff3b29ad60d5d Mon Sep 17 00:00:00 2001 From: Calascibetta Romain Date: Sat, 20 Apr 2024 14:38:26 +0200 Subject: [PATCH 1/2] Set a new bytes used for elliptic curves computations to '\000' Cstruct.create does this. If we don't initialize bytes with '\000', Field_element.zero can be something else than '\000'. It's a fix for mirleft/ocaml-x509#167. --- ec/mirage_crypto_ec.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ec/mirage_crypto_ec.ml b/ec/mirage_crypto_ec.ml index 5c1e47ed..f6b0d726 100644 --- a/ec/mirage_crypto_ec.ml +++ b/ec/mirage_crypto_ec.ml @@ -135,7 +135,7 @@ end module Make_field_element (P : Parameters) (F : Foreign) : Field_element = struct let b_uts b = Bytes.unsafe_to_string b - let create () = Bytes.create P.fe_length + let create () = Bytes.make P.fe_length '\000' let mul a b = let tmp = create () in From 81c492efcb8877a383554f2a85bd87fc5e1fa1e1 Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Tue, 23 Apr 2024 15:41:17 +0100 Subject: [PATCH 2/2] only fill the zero with zero bytes --- ec/mirage_crypto_ec.ml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ec/mirage_crypto_ec.ml b/ec/mirage_crypto_ec.ml index f6b0d726..05f346e4 100644 --- a/ec/mirage_crypto_ec.ml +++ b/ec/mirage_crypto_ec.ml @@ -135,7 +135,7 @@ end module Make_field_element (P : Parameters) (F : Foreign) : Field_element = struct let b_uts b = Bytes.unsafe_to_string b - let create () = Bytes.make P.fe_length '\000' + let create () = Bytes.create P.fe_length let mul a b = let tmp = create () in @@ -158,7 +158,8 @@ module Make_field_element (P : Parameters) (F : Foreign) : Field_element = struc b_uts tmp let zero = - b_uts (create ()) + let b = Bytes.make P.fe_length '\000' in + b_uts b let one = let fe = create () in