9 Commits

Author SHA1 Message Date
Han
67c89a3ef6 fix: scratch padding size and make BoolEvaluator more general (#49) 2024-10-17 22:40:30 +08:00
Han
69a21d8f85 [rewrite] Ring packing (#48)
* tmp

* tmp

* fix: add `forward_lazy` to make prime ring work with modulus up to `2^61`

* refactor

* refactor

* fix: apply auto to LWE `a` instead of to `sk`

* feat: test multi party case

* feat: integrate ring packing to `fhew` and example `multi_party`

* chore

* feat: update example `multi_party`

* feat: add noise stat for ring packing and improve example

* chore
2024-10-17 13:09:14 +08:00
Han
5232e55bfa [rewrite] More comments (#41)
* feat: add more comments and `cargo doc` in ci

* ci

* feat: more
2024-09-25 05:06:39 -07:00
Han
34d4af4669 [rewrite] Better api and example (#40)
* chore: rename `Interactive` to `Mpi`

* feat: add mod `prelude` for easier usage

* refactor: remove crs from key shaer

* refactor: remove scratch from args for fns called only once

* feat: port sample parameter `I_4P` from original impl

* chore

* feat: implement more details in `multi_party`

* feat: client receive pk
2024-09-15 20:20:51 -07:00
Han
bcf2d97ea4 [rewrite] Add serde support (#34)
* feat: add `serde` and derive for most structs

* refactor: skip serde PhantomData

* feat: add serialize deserialize test

* feat: introduce `Compact` as a wrapper to serialize modulus element more compact

* feat: use `assert` for `FhewBoolCiphertext` decrypt
2024-08-28 23:02:21 -07:00
Han
b8243820d5 [rewrite] Interactive key gen (#32)
* feat: interactive key gen (noisy ring not working yet)

* feat: add interactive key gen noise stats test

* fix: clippy

* feat: add `LmkcdeyInteractiveCrs`

* chore: re-organize mod `lmkcdey`
2024-08-22 22:59:21 -07:00
Han
b9ef3cc783 [rewrite] Add single-party example and improve prime ring a bit (#31)
* refactor: precompute `log_g_map`

* feat: add example `single_party`

* refactor: faster prime decompose

* refactor: faster ntt forword backward

* refactor: use `ModulusOps` for `lwe`
2024-08-22 19:02:02 -07:00
Han
0ee34c0548 [rewrite] Use fft on split-limbs for precise power of 2 ring (#30)
* feat: on precise `PowerOfTwoRing` split u64 into 4 limbs and fft to preserve 64-bits precision

* feat: add `eval_scratch` to reduce rustfft cost (4% improvement in forward/backward)

* refactor: refactor deps and add bench for fhew evaluator

* refactor: benchmark with random data

* fix: fmt
2024-08-17 22:00:39 -07:00
Han
f53e613aba [rewrite] Introduce crate evaluator and implement FhewBoolEvaluator (#29)
* refactor: simplify a bit

* feat: introduce crate `evaluator` and implement `FhewBoolEvaluator`

* feat: fix `Ternary` and implement `rgsw::pk_encrypt`

* refactor: allocate scratch for each `bitop_assign`

* feat: make evaluator `Send + Sync`
2024-08-17 09:46:34 -07:00