java for HElib
jHElib is "java for HElib", which makes java could use homomorphic encryption HElib.
It provides two ways to connect java and HElib c++ lib, one is based on jnr-ffi and the other uses native JNI.
NOTE: The first version of jHElib is not optimized and does not check poiter. It only makes "java for HElib" practical and runnable.
The api now implemented are:
java | HElib |
---|---|
initContext | Context constructor |
buildModChain | buildModChain |
printContext | zMStar.printOut |
securityLevel | securityLevel |
initSecKey | SecKey constructor |
genSecKey | genSecKey |
printSecKey | SecKey print |
addSome1DMatrices | addSome1DMatrices |
eaSize | ea.size |
initCtxt | Ctxt constructor |
eaEncrypt | ea.encrypt |
eaDecrypt | ea.decrypt |
mul | ctxt.mul |
add | ctxt.add |
makeBootstrappable | makeBootstrappable |
isBootstrappable | isBootstrappable |
genRecryptData | genRecryptData |
buildUnpackSlotEncoding1 | buildUnpackSlotEncoding |
multTwoNumbers | multTwoNumbers |
addTwoNumbers | addTwoNumbers |
decryptBinaryNums | decryptBinaryNums |
addManyNumbers | addManyNumbers |
fifteenOrLess4Four | fifteenOrLess4Four |
The TestHelibJNI.java
implements the example of BGV_general_example
in HElib.
The BinaryApiTest.java
implements the example of binaryArith_example
in HElib.
Usage:
javac -h . HelibJNIApi.java
mkdir build
cd build
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home (cmake use JAVA_HOME as include base path)
cmake -Dhelib_DIR=<helib install prefix>/share/cmake/helib ..
make
cd ..
javac TestHelibJNI.java
java -Djava.library.path=<helib install prefix>/lib/:./build TestHelibJNI
jnr-ffi usage:
cd jnr
mkdir build
cd build
cmake -Dhelib_DIR=<helib install prefix>/share/cmake/helib ..
make
make install
cd ..