From 3b8ffd45e2638ec2c4e7c429bcf487d22bde4355 Mon Sep 17 00:00:00 2001 From: InfiniteSwerve Date: Mon, 31 Oct 2022 15:58:26 -0700 Subject: [PATCH 1/2] added byte data for signing, and hashed byte data to data_gen and tezos_test_data --- .../crypto/tests/data_for_tests/data_gen.ml | 40 +++++++++++++++++++ .../src/core/crypto/tests/tezos_test_data.ml | 8 +++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/deku-p/src/core/crypto/tests/data_for_tests/data_gen.ml b/deku-p/src/core/crypto/tests/data_for_tests/data_gen.ml index ecb68e5bc1..0102ba6619 100644 --- a/deku-p/src/core/crypto/tests/data_for_tests/data_gen.ml +++ b/deku-p/src/core/crypto/tests/data_for_tests/data_gen.ml @@ -95,6 +95,21 @@ struct List.for_all (fun kh -> Public_key_hash.equal kh kh) key_hashes end + module Sig = struct + let secret_keys = List.map (fun id -> id.secret_key) ids + let public_keys = List.map (fun id -> id.public_key) ids + + let byte_data = + List.map + (fun string -> String.to_bytes string) + [ "1"; "2"; "3"; "4"; "5" ] + + let to_sign = + List.map + (fun string -> Blake2B.hash_bytes string |> Blake2B.to_bytes) + (List.map (fun bytes -> [ bytes ]) byte_data) + end + module Print_secret_key = struct let print_public_keys () = Format.printf "let public_keys = [\n%!"; @@ -113,6 +128,8 @@ struct let print_equality_secret_keys () = Format.printf "let equality_secret_keys = %b\n%!" Skt_key.equality_secret_keys + + (* TODO: encoding *) end module Print_key = struct @@ -125,6 +142,8 @@ struct let print_equality_public_keys () = Format.printf "let equality_public_keys = %b\n%!" Ky.equality_public_keys + + (* TODO: encoding *) end module Print_key_hash = struct @@ -139,5 +158,26 @@ struct let print_equality_key_hash () = Format.printf "let equality_key_hash = %b\n%!" Ky_hash.equality_key_hash + + (* TODO: encoding *) + end + + module Print_signatures = struct + let helper_print_signatures signature = + let signature = to_b58check signature in + let string_list = + String.fold_right + (fun char acc -> (Char.code char |> Int.to_string) :: acc) + signature [] + in + String.concat "" string_list + + let print_to_sign () = + let to_sign = + List.map Bytes.to_string Sig.to_sign + |> String.concat "" + |> String.map (fun char -> (Char.code char |> Int.to_string).[0]) + in + Format.printf "let to_sign = \"%s\"\n%!" to_sign end end diff --git a/deku-p/src/core/crypto/tests/tezos_test_data.ml b/deku-p/src/core/crypto/tests/tezos_test_data.ml index ffc676c3ff..733b827a8c 100644 --- a/deku-p/src/core/crypto/tests/tezos_test_data.ml +++ b/deku-p/src/core/crypto/tests/tezos_test_data.ml @@ -2,10 +2,11 @@ module type Tezos_data = sig val public_keys : string list val compared_secret_keys : string list val equality_secret_keys : bool - val compared_key_hashes : string list val equality_public_keys : bool - val equality_key_hashes : bool val compared_public_keys : string list + val compared_key_hashes : string list + val equality_key_hashes : bool + val to_sign : string end module Ed25519_data : Tezos_data = struct @@ -50,4 +51,7 @@ module Ed25519_data : Tezos_data = struct ] let equality_key_hashes = true + + let to_sign = + "1221111113822211222227921529112243121122121222115441211112211232817511621326112702119221122192222173718731151233283141117142231111154312111111323622251114129212" end From 38e6cb8b946a7607e9bc1121c9c4ca1ff6154f2f Mon Sep 17 00:00:00 2001 From: InfiniteSwerve Date: Mon, 31 Oct 2022 15:58:58 -0700 Subject: [PATCH 2/2] added test for hashed byte data (to_sign) --- .../src/core/crypto/tests/alg_intf_tests.ml | 30 +++++++++++++++++++ deku-p/src/core/crypto/tests/test_ed25519.ml | 1 + 2 files changed, 31 insertions(+) diff --git a/deku-p/src/core/crypto/tests/alg_intf_tests.ml b/deku-p/src/core/crypto/tests/alg_intf_tests.ml index accd1e34d8..7c513f9a47 100644 --- a/deku-p/src/core/crypto/tests/alg_intf_tests.ml +++ b/deku-p/src/core/crypto/tests/alg_intf_tests.ml @@ -38,6 +38,15 @@ struct List.for_all (fun kh -> Key_hash.equal kh kh) key_hashes end + module Signature_data = struct + let secret_keys = List.map (fun id -> id.secret_key) ids + let public_keys = List.map (fun id -> id.public_key) ids + let to_hash = [ "1"; "2"; "3"; "4"; "5" ] + + let to_sign = + List.map (fun string -> Deku_crypto.BLAKE2b.hash string) to_hash + end + module Test_secret_key_data = struct let public_keys () = let public_keys = @@ -96,4 +105,25 @@ struct ~msg:"key hash equality works" ~expected:Tezos_data.equality_key_hashes ~actual:Key_hash_data.equality_key_hashes end + + module Test_signature_data = struct + let helper_string_signatures signature = + let signature = Signature.to_b58 signature in + let string_list = + String.fold_right + (fun char acc -> (Char.code char |> Int.to_string) :: acc) + signature [] + in + String.concat "" string_list + + let to_sign () = + let to_sign = + List.map Deku_crypto.BLAKE2b.to_raw Signature_data.to_sign + |> String.concat "" + |> String.map (fun char -> (Char.code char |> Int.to_string).[0]) + in + Alcotest.(check' string) + ~msg:"presigned hashes are equal" ~expected:Tezos_data.to_sign + ~actual:to_sign + end end diff --git a/deku-p/src/core/crypto/tests/test_ed25519.ml b/deku-p/src/core/crypto/tests/test_ed25519.ml index 159cb1cc18..3778b7add8 100644 --- a/deku-p/src/core/crypto/tests/test_ed25519.ml +++ b/deku-p/src/core/crypto/tests/test_ed25519.ml @@ -98,4 +98,5 @@ let run () = test_case "compare" `Quick Test_key_hash_data.compare; test_case "equality" `Quick Test_key_hash_data.equality; ] ); + ("Signatures", [ test_case "to_sign" `Quick Test_signature_data.to_sign ]); ]