This implementation is based on the protocol of Peikert, Vaikuntanathan and Waters (CRYPTO 2008) for achieving UC-secure OT.
This is implementation in BYTE ARRAY mode, derived from OTUCDDHSenderAbs and implements the functionality related to the byte array inputs.
The pseudo code of this protocol can be found in Protocol 4.6 of pseudo codes document at http://cryptobiu.github.io/scapi/SDK_Pseudocode.pdf.
|Constructor and Description|
Constructor that sets the given common reference string composed of a DLOG description (G,q,g0) and (g0,g1,h0,h1) which is a randomly chosen non-DDH tuple, kdf and random.
public OTUCDDHOnByteArraySender(DlogGroup dlog, GroupElement g0, GroupElement g1, GroupElement h0, GroupElement h1, KeyDerivationFunction kdf, java.security.SecureRandom random) throws SecurityLevelException
dlog- must be DDH secure.
SecurityLevelException- if the given DlogGroup is not DDH secure.
public void transfer(Channel channel, OTSInput input) throws java.io.IOException, java.lang.NullPointerException, java.lang.ClassNotFoundException
This is the part of the protocol where the sender's input is necessary as follows:
Transfer Phase (with inputs x0,x1)
WAIT for message from R
DENOTE the values received by (g,h)
COMPUTE (u0,v0) = RAND(g0,g,h0,h)
COMPUTE (u1,v1) = RAND(g1,g,h1,h)
COMPUTE c0 = x0 XOR KDF(|x0|,v0)
COMPUTE c1 = x1 XOR KDF(|x1|,v1)
SEND (u0,c0) and (u1,c1) to R
channel- each call should get a different one.
input- The parameters given in the input must match the DlogGroup member of this class, which given in the constructor.
java.io.IOException- if there was a problem during the communication.
java.lang.ClassNotFoundException- if there was a problem in the serialization mechanism.