From fda62502ed31572710705c789f8eb0b023416c43 Mon Sep 17 00:00:00 2001 From: Wei Dai Date: Wed, 16 Mar 2022 14:02:27 -0700 Subject: [PATCH] Fixed serialization issues. --- dotnet/tests/SerializationTests.cs | 4 +-- native/src/seal/ciphertext.cpp | 12 ++++++-- native/src/seal/serialization.h | 10 +++---- native/tests/seal/serialization.cpp | 46 ++++++++++++++--------------- 4 files changed, 40 insertions(+), 32 deletions(-) diff --git a/dotnet/tests/SerializationTests.cs b/dotnet/tests/SerializationTests.cs index c59a7a6de..c0198244b 100644 --- a/dotnet/tests/SerializationTests.cs +++ b/dotnet/tests/SerializationTests.cs @@ -56,7 +56,7 @@ public void SEALHeaderSaveLoad() Assert.AreEqual(loaded.Size, header.Size); } } - +/* [TestMethod] public void SEALHeaderUpgrade() { @@ -86,7 +86,7 @@ public void SEALHeaderUpgrade() mem.Seek(offset: 0, loc: SeekOrigin.Begin); } } - +*/ [TestMethod] public void ExceptionsTest() { diff --git a/native/src/seal/ciphertext.cpp b/native/src/seal/ciphertext.cpp index fe4042339..c21d17366 100644 --- a/native/src/seal/ciphertext.cpp +++ b/native/src/seal/ciphertext.cpp @@ -127,7 +127,11 @@ namespace seal throw logic_error("unsupported prng_type"); } - if (version.major == 3 && version.minor >= 6) + if (version.major == 4) + { + sample_poly_uniform(prng, context_data_ptr->parms(), data(1)); + } + else if (version.major == 3 && version.minor >= 6) { sample_poly_uniform(prng, context_data_ptr->parms(), data(1)); } @@ -320,7 +324,11 @@ namespace seal // ciphertext case. Next load the UniformRandomGeneratorInfo. UniformRandomGeneratorInfo prng_info; - if (version.major == 3 && version.minor >= 6) + if (version.major == 4) + { + prng_info.load(stream); + } + else if (version.major == 3 && version.minor >= 6) { prng_info.load(stream); } diff --git a/native/src/seal/serialization.h b/native/src/seal/serialization.h index 402d89c96..deee6261d 100644 --- a/native/src/seal/serialization.h +++ b/native/src/seal/serialization.h @@ -155,11 +155,11 @@ namespace seal return false; } - // Support Microsoft SEAL 3.4 and above - if (header.version_major == 3 && header.version_minor >= 4) - { - return true; - } + // // Support Microsoft SEAL 3.4 and above + // if (header.version_major == 3 && header.version_minor >= 4) + // { + // return true; + // } return false; } diff --git a/native/tests/seal/serialization.cpp b/native/tests/seal/serialization.cpp index d36420715..3c6b87c96 100644 --- a/native/tests/seal/serialization.cpp +++ b/native/tests/seal/serialization.cpp @@ -113,32 +113,32 @@ namespace sealtest ASSERT_EQ(256, loaded_header.size); } } - - TEST(SerializationTest, SEALHeaderUpgrade) - { - legacy_headers::SEALHeader_3_4 header_3_4; - header_3_4.compr_mode = Serialization::compr_mode_default; - header_3_4.size = 0xF3F3; - + /* + TEST(SerializationTest, SEALHeaderUpgrade) { - Serialization::SEALHeader header; - Serialization::LoadHeader( - reinterpret_cast(&header_3_4), sizeof(legacy_headers::SEALHeader_3_4), header); - ASSERT_TRUE(Serialization::IsValidHeader(header)); - ASSERT_EQ(header_3_4.compr_mode, header.compr_mode); - ASSERT_EQ(header_3_4.size, header.size); - } - { - Serialization::SEALHeader header; - Serialization::LoadHeader( - reinterpret_cast(&header_3_4), sizeof(legacy_headers::SEALHeader_3_4), header, - false); + legacy_headers::SEALHeader_3_4 header_3_4; + header_3_4.compr_mode = Serialization::compr_mode_default; + header_3_4.size = 0xF3F3; - // No upgrade requested - ASSERT_FALSE(Serialization::IsValidHeader(header)); - } - } + { + Serialization::SEALHeader header; + Serialization::LoadHeader( + reinterpret_cast(&header_3_4), sizeof(legacy_headers::SEALHeader_3_4), header); + ASSERT_TRUE(Serialization::IsValidHeader(header)); + ASSERT_EQ(header_3_4.compr_mode, header.compr_mode); + ASSERT_EQ(header_3_4.size, header.size); + } + { + Serialization::SEALHeader header; + Serialization::LoadHeader( + reinterpret_cast(&header_3_4), sizeof(legacy_headers::SEALHeader_3_4), header, + false); + // No upgrade requested + ASSERT_FALSE(Serialization::IsValidHeader(header)); + } + } + */ TEST(SerializationTest, SaveLoadToStream) { test_struct st{ 3, ~0, 3.14159 }, st2;