Percy++
A C++ implementation of Private Information Retrieval (PIR) protocols
|
A PIR client is used to retrieve database blocks from a server.
Below we explain the steps necessary to create a PIR client using our interface.
The first step is to create a protocol parameters object with information about our protocol and the database. This protocol parameters object will be an instantiation of one of the classes derived from PercyParams:
The protocol parameters object is then encapsulated in a client parameters object. This contains information about how the client will encode the queries and decode the server replies.
If our protocol parameters object is non-recursive (one of AGParams, ChorParams, GF2EParams, or ZZ_pParams) we create a PercyClientParams object.
Otherwise, our protocol parameters object is recursive (one of HybridParams or RecursiveAGParams) and we create a RecursiveClientParams object.
Finally, we create our client object. This is done by passing our client parameters to the factory method PercyClient::make_client().
To retrieve database blocks from the database, we do the following:
The steps above can be done all at once using the PercyClient::fetch_blocks() method.