Percy++
A C++ implementation of Private Information Retrieval (PIR) protocols
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ZZ_pParams Class Reference
Inheritance diagram for ZZ_pParams:
PercyParams

Public Member Functions

 ZZ_pParams (dbsize_t num_blocks, dbsize_t block_size, dbsize_t word_size, ZZ modulus, nservers_t tau=0, char *pcparams_file=NULL, bool do_spir=false, dbsize_t virtual_block_size=1)
 
 ZZ_pParams (dbsize_t num_blocks, dbsize_t block_size, dbsize_t word_size, unsigned long modulus_bits, nservers_t tau=0, dbsize_t virtual_block_size=1)
 
 ZZ_pParams (dbsize_t num_blocks, dbsize_t block_size, dbsize_t word_size, ZZ p, ZZ q, nservers_t tau=0, dbsize_t virtual_block_size=1)
 
unsigned long modulus_bytes () const
 
unsigned long modulussq_bytes () const
 
void mod_modulus () const
 
void mod_modulussq () const
 
const ZZ & get_modulus () const
 
const ZZ_p & get_g () const
 
bool hybrid () const
 
bool spir () const
 
bool modulus_match (ZZ testmod) const
 
char * get_pcparams_filename () const
 
virtual dbsize_t server_block_size () const
 Get the size of each block in the database that the datastore will actually use. More...
 
ZZ_p encrypt (ZZ plaintext) const
 
ZZ_p decrypt (ZZ_p ciphertext) const
 
ZZ get_p1 () const
 
ZZ get_p2 () const
 
virtual dbsize_t request_size (nqueries_t num_queries=1) const
 Get the size of a client to server request. More...
 
virtual dbsize_t response_size (nqueries_t num_queries=1) const
 Get the size of a server to client response. More...
 
virtual std::vector< const
PercyParams * > 
create_worker_params (std::vector< Dimension > worker_dims) const
 Create protocol parameters for threads/workers. More...
 
- Public Member Functions inherited from PercyParams
 PercyParams (dbsize_t num_blocks, dbsize_t block_size, dbsize_t word_size, PercyMode mode, nservers_t tau=0, dbsize_t virtual_block_size=1)
 Constructor. More...
 
virtual ~PercyParams ()
 Destructor. More...
 
dbsize_t num_blocks () const
 Get the number of blocks in the database. More...
 
dbsize_t block_size () const
 Get the size of each block in the database in bytes. More...
 
dbsize_t word_size () const
 Get the word size used to split blocks. More...
 
dbsize_t words_per_block () const
 Get the number of words per database block. More...
 
PercyMode get_mode () const
 Get the protocol being used. More...
 
nservers_t tau () const
 Get the level of tau-independence. More...
 
dbsize_t num_virtual_blocks () const
 Get the number of virtual blocks when being used as one iteration of a recursive protocol. More...
 
dbsize_t virtual_block_size () const
 Get the number of actual blocks in a virtual block when being used as one iteration of a recursive protocol. More...
 
void print (std::ostream &os) const
 Prints the parameters in CSV form. More...
 
virtual void print_mode_specific (std::ostream &os) const
 Print mode-specific parameters. More...
 
virtual bool is_recursive () const
 Check if the protocol is recursive. More...
 

Protected Member Functions

virtual void write (std::ostream &os) const
 Write the parameters to a stream to check compatibility. More...
 
virtual bool check_compatible (std::istream &is) const
 Read the parameters from a stream (as written by write()) and check that they are compatible with these parameters. More...
 
void create_ZZ_pContexts ()
 
void init_hybrid (ZZ p, ZZ q)
 

Protected Attributes

bool hybrid_protection
 
bool do_spir
 
ZZ_pContext modctx
 
ZZ_pContext modsqctx
 
ZZ modulus
 
ZZ_p g
 
char * pcparams_filename
 
ZZ lambda
 
ZZ_p mu
 
ZZ p1
 
ZZ p2
 
- Protected Attributes inherited from PercyParams
unsigned char version [3]
 Percy++ version. More...
 
dbsize_t _num_blocks
 Number of database blocks. More...
 
dbsize_t _block_size
 Size of database blocks in bytes. More...
 
dbsize_t _word_size
 Word size used to split blocks. More...
 
dbsize_t _words_per_block
 Number of words per database block. More...
 
PercyMode mode
 Protocol being used. More...
 
nservers_t _tau
 Level of tau-independence. More...
 
dbsize_t _num_virtual_blocks
 Number of virtual blocks when part of a recursive protocol. More...
 
dbsize_t _virtual_block_size
 Number of actual blocks per virtual block when part of a recursive protocol. More...
 

Member Function Documentation

virtual bool check_compatible ( std::istream &  is) const
protectedvirtual

Read the parameters from a stream (as written by write()) and check that they are compatible with these parameters.

Parameters
isStream to read from.
Returns
Return true if the read parameters are compatitble with these parameters; false otherwise.

Reimplemented from PercyParams.

virtual std::vector<const PercyParams*> create_worker_params ( std::vector< Dimension worker_dims) const
virtual

Create protocol parameters for threads/workers.

worker_dims The database dimensions for each thread/worker.

Returns
The protocol parameters for each thread/worker.

Implements PercyParams.

virtual dbsize_t request_size ( nqueries_t  num_queries = 1) const
virtual

Get the size of a client to server request.

Parameters
num_queriesThe number of queries in the request. (Default: 1)

Implements PercyParams.

virtual dbsize_t response_size ( nqueries_t  num_queries = 1) const
virtual

Get the size of a server to client response.

Parameters
num_queriesThe number of queries in the request. (Default: 1)

Implements PercyParams.

virtual dbsize_t server_block_size ( ) const
inlinevirtual

Get the size of each block in the database that the datastore will actually use.

This may be different than block_size() when tau-independence is used.

Reimplemented from PercyParams.

virtual void write ( std::ostream &  os) const
protectedvirtual

Write the parameters to a stream to check compatibility.

Parameters
osStream to write to.

Reimplemented from PercyParams.


The documentation for this class was generated from the following file: