* WIP: Making fields generic
* WIP: Introduced field trait
- added P256
- added Gf2_128
* Readded inverse test
* WIP: Refactoring share-conversion-core
- removed old gf2_128 module
- started adding share-conversion generic over fields
* WIP: Made a2m generic over field
* Refactored share-conversion-core to be generic
- Tests still need to be refactored
* Tests are now generic
* Improved operation implementations for field
- fixed some bugs
* Fixed endianess in Gf2_128
- test against ghash working again
* Bugfixes for Gf2_128
* Get rid of shift operators and xor
* Added test for bit operations
* Removed unused from impls
* Fixed bug for P256
- apply montgomery reduction before extracting bits
* WIP: Refactoring share-conversion-aio to be generic
* Added byte conversion for fields
- also repaired trait bounds
* WIP: Implemented OT for arbitrary message lengths
* Added conversion functions to blocks for fields
* Implemented ObliviousTransfer for long messages for sender
* Implemented ObliviousReceive for longer messages
- repaired tests in share-conversion-aio
* Repaired tests
* WIP: Adapting trait bounds
* Adapted share-conversion actor
* Adapted ghash implementation to new generic fields
* Final touches
- added comments
- improved tests
* Added feedback
* Tidy up from rebase
* added feedback part 1
* Adapted share-conversion-core and added feedback
* Added feedback part 2
* Improve conversion to use less vec allocations
* Added more feedback and some small improvements
* Rename OTEncoding -> BlockEncoding
* Repaired actor-share-conversion
* Adapt Gf2_128 to use an LSB0 encoding internally
* Adapt comment
* Improve bit encoding test
* Added OT for arbitrary message length
* Adapted actor-ot to new OT traits
* Update #187 to use const generic (#188)
* update to use const generic
* parallel encryption for multi-block OT
---------
Co-authored-by: sinu.eth <65924192+sinui0@users.noreply.github.com>
* remove wire id from wire label types
* rename labels
* make label state public
* alias label state and expose methods for working with them
* into_labels
* Add mocking to share-conversion-aio and adapt to new project structure
* Added aio ghash module
- temporarily commented other modules than ghash
- adapted dependencies
* Add error variant which can be used by actors
* Added feedback 1/2
* Added feedback 2/2
* Remove pub from converters
* comments
Co-authored-by: themighty1 <you@example.com>
* WIP: Adding actor sender for share conversion...
* WIP: Added actor for share-conversion sender
* Added actor for recevier
* Added state enum to allow verify functionality
* Added tests
* Adapted trait bounds to rebase of async-factory PR
* Added part of feedback
* Added more tests
* Completed feedback
* Simplify code with let-else
* code comments + test
* Introduce additional `Error` state for share-conversion sender/receiver
* Added feedback
* misc comments
* Cherry-picked from 870e4a1 and merged
Added more let-else and changed error handling
* Add critical errors which stop actor when out-of-order messages arrive
* Made setup to be a message handled by handler and added it to the
corresponding control
Co-authored-by: themighty1 <you@example.com>
Encountered a failed kos15 unit test, because of some very special rng seed.
The test which failed was `test_ot_splitting_mix_pairs`, which is
expected to panic because it uses a wrong pair of split senders and
receivers. I believe that it failed (did not panic, like expected)
because the rng seed incidentally produced some blocks, where the first
half does not differ from the second half. This probably happened because
the number of blocks produced is a random number between (1..1024) and I
expect that the number chosen by the rng seed was very small, so that
there was a high probability that this could happen.
We agreed to seed unit tests with a fixed seed, so I took this
opportunity to just do that for the kos15 unit tests.
* switch OT traits to generic instead of associated types
* blanket OT impls for wire labels
* rustfmt
* make ObliviousVerify generic
* OT verify
* update share-conversion-aio
* fixes for rebase
* rebase fixes
* fmt fix
* mock ot
Co-authored-by: sinu.eth <>
* fix ot split methods in mpc-aio
* OT factory actor impl
* merge fixes
* committed ot
* scope stream futs
* trigger CI
* pr feedback
* alias in test for readability
* misc comments
* error handling and comments
Co-authored-by: themighty1 <you@example.com>
* WIP: Refactoring a2m/m2a...
* WIP: Refactor homomorphic subcrate...
* Implemented aio homomorph sender
* Removed integration test for now and renamed things
* Implemented homomorph aio receiver
* Improved API
* Rename crate homomorph -> share_conversion
* Rename errors and traits
* Migrated changes from branch `ghash-refactor-again`
* Improvements to share-conversion
- Renamed share_conversion to share-conversion
- Got rid of PhantomData for aio layer
* Improved variable naming and some doc
* Added aio unit tests and various improvements
- documentation
- variable naming
* Added TODO comment for OT integration test
* Added part of feedback
* Separated share-conversion into {share-converison-core, share-conversion-aio}
* WIP: Added recorder and implemented on sender side
* Implemented recorder on receiver side
* WIP: Added first draft for traits
* Implemented SendTape for Sender
* Removed TapeAccept trait
- implemented shell of TapeVerify for receiver
* WIP: Adapted verify function...
* Added verify trait and implemented it for AddShare and MulShare
* WIP: Refactoring replay functionality...
* Reapply feedback
* WIP: Refactoring and simplifing implementation...
* Tidied up and simplified recorder implementation
* Added unit tests for recorder in share-conversion-aio
* Added some comments
* Added barrier for sender
* Added feedback
* Added feedback
* Added feedback
* misc comments
* Fixed imports
* Added feedback
Co-authored-by: themighty1 <you@example.com>
* initial work on unchecked types
* circuit io id utilities
* tests passing
* fix wire id bug
* relocate from_unchecked methods
* replace asserts with error
* fixtures and unit tests