Skip to content

Concrete Core V1.0.0-beta

Compare
Choose a tag to compare
@agnesLeroy agnesLeroy released this 06 Apr 14:12
· 3527 commits to main since this release

Public features:

  • Breaking change: serde becomes an optional dependency
  • Breaking change: cleartext_vector_encoding_unchecked name is fixed (the vector word was missing in the name)
  • Breaking change: the name of all public engines involving "negation" are renamed to use "opposite" instead, "negate" into "compute_opposite", "neg" into "opp"
  • Implement the fuse_sub_lwe_ciphertext, discard_sub_lwe_ciphertext, fuse_add_lwe_ciphertext_vector, discard_add_lwe_ciphertext_vector, fuse_sub_lwe_ciphertext_plaintext, discard_sub_lwe_ciphertext_plaintext, fuse_sub_lwe_ciphertext_vector, discard_sub_lwe_ciphertext_vector engines in CoreEngine
  • Add entities for GGSW ciphertexts in the Fourier domain, and implement them in the core backend
  • Implement conversion engines to convert a GGSW from the standard to the Fourier domain in CoreEngine
  • Implement the GGSW encryption trait in CoreEngine
  • Implement the external product between a GLWE and a GGSW ciphertext in CoreEngine
  • Add GlweCiphertextTrivialEncryptionEngine and GlweCiphertextTrivialDecryptionEngine traits and their implementation in CoreEngine
  • Add GlweCiphertextVectorTrivialEncryptionEngine and GlweCiphertextVectorTrivialDecryptionEngine traits and their implementation in CoreEngine
  • Add LweCiphertextTrivialEncryptionEngine and LweCiphertextTrivialDecryptionEnginetraits and their implementation inCoreEngine`
  • Add LweCiphertextVectorTrivialEncryptionEngine and LweCiphertextVectorTrivialDecryptionEnginetraits and their implementation inCoreEngine`
  • Add an error for unsupported polynomial size in CoreEngine
  • Implement the conversion of GLWE ciphertexts from the standard to the Fourier domain in CoreEngine

Internal refactoring:

  • The dependency to bincode is removed
  • A new companion library containing generic fixtures for the concrete-core operators is added. This fixture allows to sample and test any implementation of an engine trait.
  • A new companion library using the generic fixtures to systematically test the public engines for all backends is added.

Bug fixes:

  • When generating large bootstrap keys, we used to reach the bounds of the generator. This is due to the rejection sampling algorithm used to sample gaussian variates: we did not provision enough randomness to generate one sample (86) bytes. We now provision (832) bytes, which solves the issue.
  • The CoreEngine implementation of the LweCiphertextDiscardingDecryptionEngine contained a bug. The decryption was added to the output, while it is supposed to be a discarding operation.

Links