public class DecryptResponse
extends java.lang.Object
Constructor and Description |
---|
DecryptResponse(Response responseInput,
Querier querierInput) |
Modifier and Type | Method and Description |
---|---|
java.util.Map<java.lang.String,java.util.List<QueryResponseJSON>> |
decrypt() |
java.util.Map<java.lang.String,java.util.List<QueryResponseJSON>> |
decrypt(int numThreads)
Method to decrypt the response elements and reconstructs the data elements
|
public java.util.Map<java.lang.String,java.util.List<QueryResponseJSON>> decrypt() throws java.lang.InterruptedException, PIRException
java.lang.InterruptedException
PIRException
public java.util.Map<java.lang.String,java.util.List<QueryResponseJSON>> decrypt(int numThreads) throws java.lang.InterruptedException, PIRException
Each element of response.getResponseElements() is an encrypted column vector E(Y_i)
To decrypt and recover data elements:
(1) Decrypt E(Y_i) to yield
Y_i, where Y_i = \sum_{j = 0}^{numSelectors} 2^{j*dataPartitionBitSize} D_j
such that D_j is dataPartitionBitSize-many bits of data corresponding to selector_k for j = H_k(selector_k), for some 0 <= k < numSelectors
(2) Reassemble data elements across columns where, hit r for selector_k, D^k_r, is such that
D^k_r = D^k_r,0 || D^k_r,1 || ... || D^k_r,(numPartitionsPerDataElement - 1)
where D^k_r,l = Y_{r*numPartitionsPerDataElement + l} & (2^{r*numPartitionsPerDataElement} * (2^numBitsPerDataElement - 1))
java.lang.InterruptedException
PIRException