Code Monkey home page Code Monkey logo

Comments (5)

ladnir avatar ladnir commented on August 29, 2024

It is supported but there is no command line tool to run it.

For the sender, you need to pass the associated data in here as the values parameter.
https://github.com/Visa-Research/volepsi/blob/main/volePSI/RsCpsi.h#L88

The resulting shared are written to here.
https://github.com/Visa-Research/volepsi/blob/main/volePSI/RsCpsi.h#L77
https://github.com/Visa-Research/volepsi/blob/main/volePSI/RsCpsi.h#L105

The receiver can also have associated values but the process works a bit differently. The receiver learns a 'mapping' that tell them which input value was mapped to position i. That is, position i will hold the input with index mMapping[i]. Note that mMapping will have 30% empty spots. They are denoted with mMapping[i]=-1. So for the receiver to give associated values, they can just add them after since they know the mapping.
https://github.com/Visa-Research/volepsi/blob/main/volePSI/RsCpsi.h#L108

Note that the sender also holds a mapping but this mapping is a bit ambiguous in that the sender knows that input with index i was mapped to one of the positions mMapping[i][0],mMapping[i][1],mMapping[i][2].
https://github.com/Visa-Research/volepsi/blob/main/volePSI/RsCpsi.h#L82

from volepsi.

ladnir avatar ladnir commented on August 29, 2024
  1. you can not use the file based PSI command line interface with circuit PSI. This only works for normal PSI.

  2. For circuit psi, you can only use silent ot and the default version of silent ot is with the Expand Accumulate code. Not with the faster but experimental Silver code.

You could modify the code to use IKNP or the better SoftSpoken OT protocol. This comes at a higher communication cost but better computational overhead.

  1. as explained above, you can provide multiple associated values. You should just pack them together into the parameter oc::MatrixView<u8> values. There should be n rows and however many columns you want. each row is one associated values, so party A will have X and A_0, B_0, C_0 where element X[i] is associated with A_0[i], B_0[i], C_0[i]. You should then have values[i]=(A_0[i], B_0[i], C_0[i]).

  2. for -perf -cpsi, all trails are added together and you get one value for the total running time https://github.com/Visa-Research/volepsi/blob/main/frontend/perf.cpp#L489

from volepsi.

jimouris avatar jimouris commented on August 29, 2024

I see, great! Thank you for your quick responses! Is there any example/instructions to invoke CPSI or do I need to call these two functions from my own C++ files?

from volepsi.

ladnir avatar ladnir commented on August 29, 2024

here's an example https://github.com/Visa-Research/volepsi/blob/main/tests/RsCpsi_Tests.cpp#L40

you have to write your own frontend code. Maybe something similar to this if you want it to run on the command line https://github.com/Visa-Research/volepsi/blob/main/volePSI/fileBased.cpp#L230

from volepsi.

jimouris avatar jimouris commented on August 29, 2024

Got it, thanks again! I'll follow the file-based PSI that has functionality separately for the sender and the receiver. When I get some time to clean it up I might send a PR :)

from volepsi.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.