Releases: nucypher/nufhe
v0.0.3
-
ADDED:
LweSampleArray.copy()
for cloning a ciphertext. -
ADDED:
LweSampleArray.roll()
that cyclically shifts encrypted bits if a ciphertext. -
ADDED:
thread
keyword parameter toContext
, allowing one to use an existing ReiknaThread
object to create a context. -
ADDED:
concatenate()
forLweSampleArray
objects. -
ADDED:
__setitem__()
functionality forLweSampleArray
objects (the source must be anotherLweSampleArray
). -
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
, includingvm.gate_constant()
not accepting lists as arguments.
v0.0.2
-
CHANGED: a
PerformanceParameters
object needs to be specialized for the device used (by calling itsfor_device()
method) before passing it to gates. -
CHANGED: instead of using
numpy.random.RandomState
for key generation and encryption,DeterministicRNG
andSecureRNG
are available instead. The former is the wrappedRandomState
, 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()
andloads()
methods forNuFHESecretKey
,NuFHECloudKey
andLweSampleArray
for serializing to/from bytestrings. TheContext
'sload_secret_key
,load_cloud_key
andload_ciphertext
also take bytestrings as arguments. -
ADDED: exposed
clear_computation_cache()
which helps release the resources associated with a GPU context (the NuFHEContext
objects call it automatically on destruction). -
ADDED: a
find_devices()
function to help with using multiple computation devices, and a corresponding keyworddevice_id
forContext
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
andPerformanceParametersForDevice
objects did not have a correct equality implementation, leading to unnecessary re-compilation of kernels. -
FIXED: compilation failing when
transforms_per_block
inPerformanceParameters
is set too high.