************************* Prerequisite: Java runtime need to be installed. In our tests, we used Java 1.7. Lower versions might work, although performance might be different. If you want high security, you need to download and install "Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy" files. You can find the files for your Java runtime from Oracle website. ************************* How to Use: You can run the server by invoking the main method of the Server class. You need to supply arguments to the method, e.g. -n 1000000 -k 80 -t 1 -v 0 -d 10 You can run the client by invoking the main method of the Client class. You need to supply arguments to the method, e.g. -a 127.0.0.1 -n 1000000 -k 80 -t 1 -v 0 -d 10 The server's and the client's arguments need to match (except -a). The meaning of the arguments: -a Specify the server's IP address. This is mandatory when invoking the client. Not a valid option for the server program. -n The number of elements in the set. The program generates a random int set of size n and run the protocol. -k The security parameter. The value can be 80, 128, 192, 256. The option can be omitted, if so, 80 will be used as the default security parameter. -t Threading mode. The following value can be 1 or 0. If the value is 1, then the program runs in the parallel mode and all cores on the computer will be used. If the value is 0, then the program runs in the pipelined mode and uses 1 thread for computation and 1 thread for communication. -v Verification. The following value can be 1 or 0. If the value is 1, the server sends its set to the client and the output of the protocol will be verified against the original sets. If the value is 0, the verification step is skipped. The option can be omitted, if so, the verification step is skipped. -d Multipart OT. Split the OT into multiple parts. The value supplied can be an integer > 1. If used, the memory usage can be lowered because the bit matrix used in the OT is smaller. However the protocol also runs longer. Run the program without this option if you have enough RAM. You also need to configure JVM parameters, e.g. to set -Xms and -Xmx.