@@ -20,7 +20,7 @@ class TestPublicKey:
2020
2121 def test_bytes_protocol (self ) -> None :
2222 """Test that PublicKey implements Python's bytes protocol."""
23- root = [Fp (value = i ) for i in range (TEST_CONFIG .HASH_LEN_FE )]
23+ root = HashDigestVector ( data = [Fp (value = i ) for i in range (TEST_CONFIG .HASH_LEN_FE )])
2424 parameter = [Fp (value = i + 100 ) for i in range (TEST_CONFIG .PARAMETER_LEN )]
2525 pk = PublicKey (root = root , parameter = parameter )
2626
@@ -31,18 +31,17 @@ def test_bytes_protocol(self) -> None:
3131
3232 def test_to_bytes_with_validation (self ) -> None :
3333 """Test that to_bytes validates field lengths."""
34- root = [Fp (value = i ) for i in range (TEST_CONFIG .HASH_LEN_FE )]
34+ root = HashDigestVector ( data = [Fp (value = i ) for i in range (TEST_CONFIG .HASH_LEN_FE )])
3535 parameter = [Fp (value = i ) for i in range (TEST_CONFIG .PARAMETER_LEN )]
3636 pk = PublicKey (root = root , parameter = parameter )
3737
3838 # Valid serialization
3939 data = pk .to_bytes (TEST_CONFIG )
4040 assert len (data ) == TEST_CONFIG .PUBLIC_KEY_LEN_BYTES
4141
42- # Invalid root length
43- invalid_pk = PublicKey (root = [Fp (value = 0 )] * 5 , parameter = parameter )
44- with pytest .raises (ValueError , match = "Invalid root length" ):
45- invalid_pk .to_bytes (TEST_CONFIG )
42+ # Invalid root length - HashDigestVector validates length at construction
43+ with pytest .raises (ValueError , match = "requires exactly" ):
44+ HashDigestVector (data = [Fp (value = 0 )] * 5 )
4645
4746 # Invalid parameter length
4847 invalid_pk = PublicKey (root = root , parameter = [Fp (value = 0 )] * 3 )
@@ -51,7 +50,7 @@ def test_to_bytes_with_validation(self) -> None:
5150
5251 def test_roundtrip_test_config (self ) -> None :
5352 """Test serialization round-trip with TEST_CONFIG."""
54- root = [Fp (value = i * 10 ) for i in range (TEST_CONFIG .HASH_LEN_FE )]
53+ root = HashDigestVector ( data = [Fp (value = i * 10 ) for i in range (TEST_CONFIG .HASH_LEN_FE )])
5554 parameter = [Fp (value = i * 20 ) for i in range (TEST_CONFIG .PARAMETER_LEN )]
5655 original = PublicKey (root = root , parameter = parameter )
5756
@@ -65,7 +64,7 @@ def test_roundtrip_test_config(self) -> None:
6564
6665 def test_roundtrip_prod_config (self ) -> None :
6766 """Test serialization round-trip with PROD_CONFIG."""
68- root = [Fp (value = i ) for i in range (PROD_CONFIG .HASH_LEN_FE )]
67+ root = HashDigestVector ( data = [Fp (value = i ) for i in range (PROD_CONFIG .HASH_LEN_FE )])
6968 parameter = [Fp (value = i + 1000 ) for i in range (PROD_CONFIG .PARAMETER_LEN )]
7069 original = PublicKey (root = root , parameter = parameter )
7170
@@ -86,14 +85,16 @@ def test_from_bytes_invalid_length(self) -> None:
8685
8786 def test_serialization_format (self ) -> None :
8887 """Test that serialization follows the documented format: root || parameter."""
89- root = [Fp (value = i ) for i in range (TEST_CONFIG .HASH_LEN_FE )]
88+ root = HashDigestVector ( data = [Fp (value = i ) for i in range (TEST_CONFIG .HASH_LEN_FE )])
9089 parameter = [Fp (value = i + 100 ) for i in range (TEST_CONFIG .PARAMETER_LEN )]
9190 pk = PublicKey (root = root , parameter = parameter )
9291
9392 data = bytes (pk )
9493
9594 # Check that root comes first
96- root_data = Fp .serialize_list (root )
95+ from typing import List , cast
96+
97+ root_data = Fp .serialize_list (cast (List [Fp ], list (root .data )))
9798 parameter_data = Fp .serialize_list (parameter )
9899
99100 assert data == root_data + parameter_data
@@ -253,7 +254,7 @@ class TestSerializationProperties:
253254
254255 def test_public_key_deterministic (self ) -> None :
255256 """Test that serialization is deterministic."""
256- root = [Fp (value = i ) for i in range (TEST_CONFIG .HASH_LEN_FE )]
257+ root = HashDigestVector ( data = [Fp (value = i ) for i in range (TEST_CONFIG .HASH_LEN_FE )])
257258 parameter = [Fp (value = i ) for i in range (TEST_CONFIG .PARAMETER_LEN )]
258259 pk = PublicKey (root = root , parameter = parameter )
259260
@@ -288,8 +289,8 @@ def test_signature_deterministic(self) -> None:
288289
289290 def test_different_values_produce_different_bytes (self ) -> None :
290291 """Test that different values produce different serializations."""
291- root1 = [Fp (value = i ) for i in range (TEST_CONFIG .HASH_LEN_FE )]
292- root2 = [Fp (value = i + 1 ) for i in range (TEST_CONFIG .HASH_LEN_FE )]
292+ root1 = HashDigestVector ( data = [Fp (value = i ) for i in range (TEST_CONFIG .HASH_LEN_FE )])
293+ root2 = HashDigestVector ( data = [Fp (value = i + 1 ) for i in range (TEST_CONFIG .HASH_LEN_FE )])
293294 parameter = [Fp (value = 0 )] * TEST_CONFIG .PARAMETER_LEN
294295
295296 pk1 = PublicKey (root = root1 , parameter = parameter )
0 commit comments