Skip to content
This repository has been archived by the owner on Nov 21, 2023. It is now read-only.

Releases: nucypher/nufhe

v0.0.3

19 Jul 17:14
Compare
Choose a tag to compare
  • ADDED: LweSampleArray.copy() for cloning a ciphertext.

  • ADDED: LweSampleArray.roll() that cyclically shifts encrypted bits if a ciphertext.

  • ADDED: thread keyword parameter to Context, allowing one to use an existing Reikna Thread object to create a context.

  • ADDED: concatenate() for LweSampleArray objects.

  • ADDED: __setitem__() functionality for LweSampleArray objects (the source must be another LweSampleArray).

  • ADDED: NTT transform now uses Montgomery multiplication for the cases where one of the factors can be prepared in advance, increasing performance (mostly for the multi-kernel bootstrap).

  • FIXED: result shape derivation in gate methods of VirtualMachine, including vm.gate_constant() not accepting lists as arguments.

v0.0.2

14 Feb 10:21
Compare
Choose a tag to compare
  • CHANGED: a PerformanceParameters object needs to be specialized for the device used (by calling its for_device() method) before passing it to gates.

  • CHANGED: instead of using numpy.random.RandomState for key generation and encryption, DeterministicRNG and SecureRNG are available instead. The former is the wrapped RandomState, fast, but not cryptographically secure; the latter is the secure random source provided by the OS, which can be rather slow.

  • ADDED: a high-level API hiding the Reikna details and removing some boilerplate.

  • ADDED: shape checks in gate functions that take into account possible broadcasting.

  • ADDED: dumps() and loads() methods for NuFHESecretKey, NuFHECloudKey and LweSampleArray for serializing to/from bytestrings. The Context's load_secret_key, load_cloud_key and load_ciphertext also take bytestrings as arguments.

  • ADDED: exposed clear_computation_cache() which helps release the resources associated with a GPU context (the NuFHE Context objects call it automatically on destruction).

  • ADDED: a find_devices() function to help with using multiple computation devices, and a corresponding keyword device_id for Context class constructor that uses its return values.

  • ADDED: an example of multi-threaded multi-GPU usage.

  • FIXED: a bug in tlwe_noiseless_trivial() occasionally leading to memory corruption.

  • FIXED: a bug where PerformanceParameters and PerformanceParametersForDevice objects did not have a correct equality implementation, leading to unnecessary re-compilation of kernels.

  • FIXED: compilation failing when transforms_per_block in PerformanceParameters is set too high.

v0.0.1

14 Feb 10:21
Compare
Choose a tag to compare

Initial version.