You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/lib3mf/Tests/CPP_Bindings/Source/{EncryptionMethods.cpp,SecureContent.cpp} + included UnitTest_EncryptionUtils.h
Let's consider creating a separate part PackagePart /3D/3dobjects.model inside OPC, including MeshObjects and ComponentsObjects, with the purpose of its subsequent protection by encryption after preliminary compression. At first, we will use the simplest copying data transformation as encryption, as in example (1), but with compression enabled ResourceData:
auto rd = keyStore->AddResourceData(rdGroup.get(), objectsPart.get(), Lib3MF::eEncryptionAlgorithm::AES256_GCM, Lib3MF::eCompression::Deflate, aad);
Issue 1
If you use simple cube as mesh object, then you can successfully save and restore from the 3mf OPC (example cube_comp_noencrypt.3mf). If you replace the cube with more real objects (cube + fine sphere) with many vertices (example cube_sphere_comp_noencrypt.3mf), then when restoring the scene from the resulting 3mf file, an error occurs:
Lib3MF reading file encountered error #5: Error: GENERICEXCEPTION: Failed to decompress part
A similar error occurs when using real encryption (using the keys specified in the repository examples /lib3mf/Tests/TestFiles/SecureContent/sample.pem) of the section data (examples cube_comp_encrypt.3mf and cube_sphere_comp_encrypt.3mf, respectively).
Issue 2
If you use part encryption (in reality and in the form of copying transformation), but disable its preliminary compression:
auto rd = keyStore->AddResourceData(rdGroup.get(), objectsPart.get(), Lib3MF::eEncryptionAlgorithm::AES256_GCM, Lib3MF::eCompression::NoCompression, aad);
then compression of the entire OPC 3mf is unpredictablly disabled, but the scene is restored correctly (the size of the example cube_sphere_nocomp_encrypt.3mf compared to cube_sphere_nocomp_noencrypt.3mf).
lib3mf version: 2.3.0.0-2.3.2.0
Operating systems: Linux Mint 22 / Windows 10 (under MSYS2 ucrt64 gcc)
The code to obtain all the 3mf container examples attached to the issue is based on (links are relative to the repository):
/lib3mf/SDK/CPackExamples/Cpp/Source/SecureCube.cpp
/lib3mf/Tests/CPP_Bindings/Source/{EncryptionMethods.cpp,SecureContent.cpp} + included UnitTest_EncryptionUtils.h
Let's consider creating a separate part PackagePart
/3D/3dobjects.model
inside OPC, including MeshObjects and ComponentsObjects, with the purpose of its subsequent protection by encryption after preliminary compression. At first, we will use the simplest copying data transformation as encryption, as in example (1), but with compression enabled ResourceData:auto rd = keyStore->AddResourceData(rdGroup.get(), objectsPart.get(), Lib3MF::eEncryptionAlgorithm::AES256_GCM, Lib3MF::eCompression::Deflate, aad);
Issue 1
If you use simple cube as mesh object, then you can successfully save and restore from the 3mf OPC (example
cube_comp_noencrypt.3mf
). If you replace the cube with more real objects (cube + fine sphere) with many vertices (examplecube_sphere_comp_noencrypt.3mf
), then when restoring the scene from the resulting 3mf file, an error occurs:Lib3MF reading file encountered error #5: Error: GENERICEXCEPTION: Failed to decompress part
A similar error occurs when using real encryption (using the keys specified in the repository examples
/lib3mf/Tests/TestFiles/SecureContent/sample.pem
) of the section data (examplescube_comp_encrypt.3mf
andcube_sphere_comp_encrypt.3mf
, respectively).Issue 2
If you use part encryption (in reality and in the form of copying transformation), but disable its preliminary compression:
auto rd = keyStore->AddResourceData(rdGroup.get(), objectsPart.get(), Lib3MF::eEncryptionAlgorithm::AES256_GCM, Lib3MF::eCompression::NoCompression, aad);
then compression of the entire OPC 3mf is unpredictablly disabled, but the scene is restored correctly (the size of the example
cube_sphere_nocomp_encrypt.3mf
compared tocube_sphere_nocomp_noencrypt.3mf
).Discussed above 3mf_examples.tar.gz
The text was updated successfully, but these errors were encountered: