Giter Club home page Giter Club logo

ibm / fhe-toolkit-linux Goto Github PK

View Code? Open in Web Editor NEW
1.4K 57.0 151.0 58.58 MB

IBM Fully Homomorphic Encryption Toolkit For Linux. This toolkit is a Linux based Docker container that demonstrates computing on encrypted data without decrypting it! The toolkit ships with two demos including a fully encrypted Machine Learning inference with a Neural Network and a Privacy-Preserving key-value search.

License: MIT License

Shell 16.33% CMake 2.06% C++ 76.26% C 0.24% Python 4.26% Roff 0.44% Makefile 0.42%
security security-tools cryptography crypto research research-tool encryption encryption-algorithms encryption-decryption ibm

fhe-toolkit-linux's Introduction


IBM Fully Homomorphic Encryption (HELayers) SDK for Linux

HELayers

Last year, we introduced FHE to Linux with our FHE Toolkit. Today, we are announcing the next evolution of the FHE Toolkit called IBM HElayers, a software development kit (SDK) for the practical and efficient execution of encrypted workloads using fully homomorphic encrypted data. HElayers enables application developers and data scientists to seamlessly use advanced privacy preserving techniques without having to be a specialist in cryptography - all while working in a newly integrated Python environment. 

HELayers is packaged as Docker containers that make it easier to get started and experimenting with FHE. It is written in C++ and includes a Python API that enables data scientists and application developers to easily use the power of FHE by supporting a wide array of analytics such as linear regression, logistic regression, and neural networks.

It is delivered as an open platform that is capable of using the latest FHE schemes and libraries for a given use case. HElayers currently ships with 15 tutorials and sample applications that highlight the basics of FHE and how to use this technology in a practical way. Sample applications include credit card fraud detection, encrypted database search, heart disease detection, image classification and more.

In this repository is a script that you can run to install and run the pre-packaged SDKs, cpp or python, as a docker container.

 ./StartHELayers.sh 

If you are instead looking for the IBM Fully Homomorphic Encryption Toolkit for Linux README, it can be found here.

Try it for yourself

To run the script in this reposistory, clone the repo, open a Terminal and navigate to the root of this repo (cd fhe-toolkit-linux/).

To run the Python HELayers:

 ./StartHELayers.sh python

For the C++ version:

 ./StartHELayers.sh cpp

The script will pull & download the latest version that works on your machine's architecture. It will run locally in its own container for you to view in your web browser. The script will tell you where to point your browser to in the Terminal after completing the setup. The c++ version uses VSCode integrated into the browser for an IDE, using port 8443, and the python relies on a self-contained jupyter notebook on port 8888.

To try HELayers out from the IBM Container Registry directly, follow the instructions below:

Take a look at our in-depth walkthrough video on how to download and get started with HElayers.

Fully Homomorphic Encryption

To learn more about FHE in general, and what it can be used for, you can check out our FAQ/Content Solutions page.

System Requirements

HElayers is a Linux based Docker container and can be implemented entirely in software; there is no hardware dependency. The only software that is required is Docker version 19 or higher with the necessary user privileges to run docker commands. It is also assumed you have a working internet connection.

Runtimes tested include Linux, Linux on IBM Z (z15 and LinuxONE III and later), z/OS Container Extensions (v2.4 & v2.5), Windows 10 subsystem for Linux and MacOS. Today, the only distribution we support is Ubuntu 20.04 which is included as the base image.

Older versions have not been thoroughly tested and there are no plans to support older versions in the future.

License

This image is provided under a community edition license for non-commercial use. Customers who want to work directly with IBM Research, access advanced features, and plan for commercial-grade deployment using HElayers can engage through the Premium Edition Program by contacting the IBM FHE team at [email protected].

Feedback Survey

HELayers is the next step in the advancement of FHE at IBM. If you are moving from the Toolkit, you will see familiar code that helped get your applications up and running built around the HElib library. We have extended that and now offer much more in this edition. We invite all the Toolkit users to try out HELayers and let us know what you think by taking the survey below and providing feedback on how we can improve and serve you better. We will only use your feedback to improve the HELayers experience and inform future IBM security-focused products and services. IBM will not share your response data with any third parties. We look forward to your valuable feedback to improve the IBM FHE experience.

https://www.surveygizmo.com/s3/6494169/IBM-HElayers-SDK-Survey

fhe-toolkit-linux's People

Contributors

aehud avatar boland25 avatar deanthomasson avatar dependabot[bot] avatar dimhotepus avatar dowem avatar dubek avatar faberga avatar guvenc avatar harirai avatar imgbot[bot] avatar justin-f-perez avatar rosielickorish avatar ry-is-me avatar stevemar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fhe-toolkit-linux's Issues

Separate Library Version Constants file

Feature description
Currently we have to go into the main scripts and manually edit them to change the library version numbers that we are building against. We should pull them out and maintain a separate constants file so they can easily be changed

Acceptance criteria

  1. Build the toolkit and change the versions it builds against in the separate file
  2. If it runs, you were successful

How can I separate the small size public key for encryption only and secret key for decryption only from the public evaluation keys and save them separately?

I have just started to try to use the toolkit. I am very impressed that it is very easy to bring up and well maintained.

I have been using a different library which can save the small size public key for data encryption and secret key for decryption of FHE computing results, while other large size public keys for evaluation/computation such as relinarazation key and rotation Galios key can be saved as separated files, and that makes it is very easy to manage and distribute the keys. In general, that works well.

When I tried to use the toolkit's simple ML APIs with HelibCkksContext, I noticed that it creates similar size contexts with or without the secret key. Those contexts are very large size (over 7G bytes for instances) and the size make the APIs not very practical in manage and distribute the keys.

Could you let me know how can I save the keys to different files, and still can do the public evaluation with the encrypted data or is there finer control APIs please? Thanks.

No way to access ckks tutorials

So I after fresh helib installation i can see fhe-toolkit-linux/samples/mlhelib_tutorial but don't know how to compile those samples from inside browser IDE, or even how to access them as the only folders in my fhe-workspace are 'build', 'examples' (old ones, excluding ckks examples/tutorials), '.vscode' and a file called 'cpptools-linux.vsix'.

Also after i 'cmake .' from inside BGV_binary_arithmetic i try to compile with 'make' but this results in following error:

[ 50%] Building CXX object CMakeFiles/BGV_binary_arithmetic.dir/BGV_binary_arithmetic.cpp.o
In file included from /usr/local/include/helib/helib.h:21,
from /opt/IBM/FHE-Workspace/examples/BGV_binary_arithmetic/BGV_binary_arithmetic.cpp:19:
/usr/local/include/helib/Context.h:156:22: error: 'optional' in namespace 'std' does not name a template type
156 | const std::optional& mparams,
| ^~~~~~~~
/usr/local/include/helib/Context.h:156:17: note: 'std::optional' is only available from C++17 onwards
156 | const std::optional& mparams,
| ^~~
/usr/local/include/helib/Context.h:156:30: error: expected ',' or '...' before '<' token
156 | const std::optional& mparams,
| ^
/usr/local/include/helib/Context.h:966:24: error: 'optional' is not a member of 'std'
966 | const std::pair<std::optionalContext::ModChainParams,
| ^~~~~~~~
/usr/local/include/helib/Context.h:966:24: note: 'std::optional' is only available from C++17 onwards
/usr/local/include/helib/Context.h:966:24: error: 'optional' is not a member of 'std'
/usr/local/include/helib/Context.h:966:24: note: 'std::optional' is only available from C++17 onwards
/usr/local/include/helib/Context.h:966:56: error: wrong number of template arguments (1, should be 2)
966 | const std::pair<std::optionalContext::ModChainParams,
| ^
In file included from /usr/include/c++/9/bits/stl_algobase.h:64,
from /usr/include/c++/9/bits/char_traits.h:39,
from /usr/include/c++/9/ios:40,
from /usr/include/c++/9/ostream:38,
from /usr/include/c++/9/iostream:39,
from /opt/IBM/FHE-Workspace/examples/BGV_binary_arithmetic/BGV_binary_arithmetic.cpp:17:
/usr/include/c++/9/bits/stl_pair.h:208:12: note: provided for 'template<class _T1, class _T2> struct std::pair'
208 | struct pair
| ^~~~
In file included from /usr/local/include/helib/helib.h:21,
from /opt/IBM/FHE-Workspace/examples/BGV_binary_arithmetic/BGV_binary_arithmetic.cpp:19:
/usr/local/include/helib/Context.h:966:57: error: expected unqualified-id before ',' token
966 | const std::pair<std::optionalContext::ModChainParams,
| ^
make[2]: *** [CMakeFiles/BGV_binary_arithmetic.dir/build.make:63: CMakeFiles/BGV_binary_arithmetic.dir/BGV_binary_arithmetic.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/BGV_binary_arithmetic.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

And is helib 2.0.0 coming to linux soon?

CMakeList.txt of the BGV_database_lookup points to the old HElib version

The CMakeList.txt of the BGV_database_lookup points to the old HElib version.

It should be find_package(helib ${HELIB_VERSION} REQUIRED)

# Use -std=c++14 as default.
set(CMAKE_CXX_STANDARD 14)
# Disable C++ extensions
set(CMAKE_CXX_EXTENSIONS OFF)
# Require full C++ standard
set(CMAKE_CXX_STANDARD_REQUIRED ON)
project(BGV_database_lookup LANGUAGES CXX)
#find_package(helib 1.0.0 REQUIRED)
find_package(helib ${HELIB_VERSION} REQUIRED)
add_executable(BGV_database_lookup BGV_database_lookup.cpp)
target_link_libraries(BGV_database_lookup helib)

Persistent Data Mode isn't working as expected on zCX

Describe the bug
Persistent mode isn't working as expected on zCX or WLS, instead the toolkit displays a message that its couldn't create CMakeLists.txt file and keeps on searching for it.

To Reproduce
Steps to reproduce the behavior:

  1. After fetching the pre-built container, run the ./RunToolkit.sh -p ubuntu
  2. At the VSCode editor you will see the error.

Expected behavior
The docs should be updated to point out the workaround which is too run in sandbox mode with the -s flag -> ./RunToolkit.sh -p -s ubuntu.

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname -
      Linux lnxsec1 4.18.0-193.6.3.el8_2.s390x #1 SMP Mon Jun 1 20:38:45 UTC 2020 s390x s390x s390x GNU/Linux
    • ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 15275
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 15275
virtual memory (kbytes, -v) unlim
  • Docker version (run docker -v in Terminal): podman version 1.6.4
  • Toolkit platform (Fedora, CentOS, Ubuntu): ubuntu

API issue with saving secret Key

There is an issue where the following code does not behave as expected. Both saved output files are identical and we would expect one to be much smaller:

bool withSecretKey = true;
hePtr->saveToFile(clientContext, withSecretKey); // save client context
hePtr->saveSecretKeyToFile(clientSecretKey); // Change add to save the secret key

@aehud indicated in issue #126 he would try to put something out for that soon. Thanks to @YangJudy for reporting it in that other bug.

Question about sending BinaryIO of context and pubKey to another party

Hi, @boland25 @deanthomasson .
I have a question: when I generate a new context by reading from stringstream, these two context should be equal. But if I encrypt the vector using the oldContext.publickey, then decrypt it using the newContext.seckey. It failed due to different context.
Could you give me some suggestions?

context.writeTo(ss);
Context newContext = Context::readFrom(ss);
cout << "Context isEqual: " << (newContext == meta.data->context) << endl; // result:1

SecKey secret_key(newContext);
secret_key.GenSecKey();
addSome1DMatrices(secret_key);
const PubKey& public_key = secret_key;
const helib::EncryptedArray& newEa = newContext.getEA();

cout << "PublicKey isEqual: " << (public_key == meta.data->publicKey) << endl; // result:0

vector<long> inputtest(256);
    for (long i = 0; i< 256; i++) {
        inputtest[i] = i;
    }
    
// oldContext.publicKey
Ctxt inputCtxt(meta.data->publicKey);
ea.encrypt(inputCtxt, meta.data->publicKey, inputtest);

//newContext.seckey
vector<long> outputtest1;
newEa.decrypt(inputCtxt, secret_key, outputtest1); // error: cannot decrypt due to different context

Skip uncompression if the dependencies are already there and uncompressed

Feature description
The build script currently uncompresses the dependencies, even when they have already been uncompressed. This isn't so bad for HElib and NTL but boost takes an appreciable time to uncompress. The build script should do something to check that if the directory is there, and if it is don't uncompress.

Acceptance criteria

  1. Build script should not uncompress dependencies if the files already exist.

Permission denied during kit configuration

Describe the bug
After following the 4 first steps of the GettingStarted.md and selecting the "kit" in the toolkit, the configuration outputs the following error:

[main] Configuring folder: FHE-Workspace 
[rollbar] Unhandled exception: Failed writing to file /opt/IBM/FHE-Workspace/build/.cmake/api/v1/query/client-vscode/query.json Error: EACCES: permission denied, mkdir '/opt/IBM/FHE-Workspace/build' {}
[driver] Failed to configure project

I tried to restart the container but the issue persists.

To Reproduce
Steps to reproduce the behavior:

  1. Clone the IBM FHE Toolkit Repository
  2. Fetch the Toolkit Docker Images by running ./FetchDockerImage.sh ubuntu
  3. Rune the toolkit by running ./RunToolkit.sh -p ubuntu
  4. Open toolkit in browser by visiting https://127.0.0.1:8443/
  5. Select any of the kits that the toolkit prompts you to select
  6. See error in the Output window at the end of configuration

Expected behavior
Expected to see the kit configuration end with no error.

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname - output: Linux daniel-ThinkPad 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    • ulimit -a output:
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 29316
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 29316
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
  • Docker version (run docker -v in Terminal): Docker version 19.03.12, build 48a66213fe
  • Toolkit platform (Fedora, CentOS, Ubuntu): Ubuntu

Set the colour theme to a consistent theme

Feature description
The toolkit colour theme should stay consistent.

Acceptance criteria

  1. The toolkit colour theme doesn't change as a result of an upstream dependency change.

Alpine Docker on S390x does not autoload and setup the BGV_country_world example

Describe the bug
When running the toolkit in the alpine docker, when it loads in the browser, it should auto-load/build the BGV_world_country_db_lookup, and currently it does not.

To Reproduce
Steps to reproduce the behavior:
1../RunToolkit -l alpine
2. Go to 127.0.0.1:8443
3. should see the BGV_world_country_db_lookup

Expected behavior
It should load the BGV_world_country_db_lookup example

Add more info to the Interactive Wizard

Describe the bug
at the point of time where it says....

"Enter Passphrase for the root signing key"

Add before it prints that out, this information..

Now we'll need to generate some keys, a Root key which is the root key of the docker content trust to store a tagged image, a
Repository key (aka "target key"); allows you to sign image tags and manage delegations (including delegated keys or permitted delegation paths), an Encryption key for the HPVS registration definition file (generated automatically in the background) and a Vendor key, required for signing the HPVS registration definition file

adding_info_to_this_section

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname -
    • ulimit -a
  • Docker version (run docker -v in Terminal):
  • Toolkit platform (Fedora, CentOS, Ubuntu):

Additional context
Add any other context about the problem here.

EACCES: permission denied, mkdir '/opt/IBM/FHE-Workspace/build' {}

Describe the bug
A clear description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname -
    • ulimit -a
  • Docker version (run docker -v in Terminal):
  • Toolkit platform (Fedora, CentOS, Ubuntu):

Additional context
Add any other context about the problem here.

Fold Lab Guide for Mac into the Getting_Started.md file

Describe the bug
We have the Lab Guide for macOS and we have the Lab Guides for linux left over from THINK 21. We need to take the juice important bits out there and make it into a nice easy to follow .md file called GettingStarted.md. We already have a Getting Started so I think it should be easy enough to merge the Lab guide and the Getting Started.

mention in the guide the blurb from the GettingStarted.md. the NOTE: this requires a credit card for it to be free mention

Also at the part where the keys are required to be added, we should mention what each one is for. That part Is under The Keys section https://github.com/IBM/fhe-toolkit-linux/blob/master/automation/DeployToHyperProtect.md#the-keys

ML-HElib training a model from scratch

I've been through the documentation of the ML-HElib library and I haven't seen anything that allows for training a model.
Is training a model from scratch possible with the fhe-toolkit you released ? Or is this just for inference and you have a library in-house to train the models ?

Thanks

Boost gets unpacked more than once

Describe the bug
When building the toolkit locally, the boost dependency is unpacked even if the dependency isn't freshly downloaded.

To Reproduce
Steps to reproduce the behavior:

  1. Run ./BuildDockerImage.sh ubuntu twice
  2. One the second build, notice that there is a nested set of directories, DEPENDENCIES > boost > boost > boost_1_72_0 > boost.

Expected behavior
Boost should only be unpacked when it has been freshly downloaded.

Screenshots
Screenshot 2020-09-29 at 21 36 35

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname - Darwin Kernel Version 19.5.0: Tue May 26 20:41:44 PDT 2020; root:xnu-6153.121.2~2/RELEASE_X86_64 x86_64
    • ulimit -a
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-v: address space (kbytes)          unlimited
-l: locked-in-memory size (kbytes)  unlimited
-u: processes                       2784
-n: file descriptors                12800
  • Docker version (run docker -v in Terminal): Docker version 19.03.12, build 48a66213fe
  • Toolkit platform (Fedora, CentOS, Ubuntu): All

Additional context
N/A

Credit Card Demo reports incorrect number of inference steps

Describe the bug
When running the credit card example there is an output line showing something like this:

** *** Performing inference on batch 23/184 *** **

But the demo by default actually does 24 iterations. The output line should be updated to reflect the number of interations performed.

To Reproduce
Steps to reproduce the behavior:

  1. Run the credit card fraud example
  2. See the output from the demo

Expected behavior
The output from the credit card fraud example should say

** *** Performing inference on batch 23/24 *** **

Screenshots
N/A

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    MacBook-Pro.local 19.5.0 Darwin Kernel Version 19.5.0: Tue May 26 20:41:44 PDT 2020; root:xnu-6153.121.2~2/RELEASE_X86_64 x86_64
ulimit -a
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-v: address space (kbytes)          unlimited
-l: locked-in-memory size (kbytes)  unlimited
-u: processes                       2784
-n: file descriptors                256
  • Docker version (run docker -v in Terminal): Docker version 19.03.12, build 48a66213fe
  • Toolkit platform (Fedora, CentOS, Ubuntu): all

Alpine x64 arch missing extensions

Feature description
Toolkit version for Alpine x64 is missing cpptools and cmake extensions.

Acceptance criteria

  1. cpptools and cmake extensions added to Alpine x64 Toolkit

Deploy to Hyper Protect interactive Wizard could be more helpful, explanative

Describe the bug
When deploying to hyper protect, the ./DeployToHyperProtect.sh -c config_file interactive option asks for many things. When it does that, it does not fully explain why, and if you don't have a copy of a user guide handy, its confusing. We need to integrate some of the user guide instructions into the interactive prompts to help nudge people into entering the correct items.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '`fhe-toolkit-linux/automation'
  2. Run the './DeployToHyperProtect.sh -c` option
  3. try to follow the instructions and make sense of it
  4. Get confused

Rely on the user guide/getting started sections, and the DeployToHyperProtect.ms that helps explain what things are needed and why to fill in the missing data

DOC SPRINT - CKKS examples

Hi, could you maybe provide some examples how to use ckks scheme inside helib?
Also is bgv/ckks bootstrapping supported?
Also to choose safe encryption parameters should i just refer to the publicly published tables or is there some helper function?
And is there any actual documentation?

update readme of Deploy to HyperProtect

Describe the bug
We currently don't have any information in the deploy to hyper protect section that states how to get an ibmcloud account up and running with the abilities to create/deploy instances to hyper protect. That ability is not available to free ibm cloud accounts. In order to access that feature, an account needs to add a credit card to move to the pay as you go level of account. However, it should be noted that every account in that level gets access to 1 hosted hyper protect instance without a credit card being charged.

We need to explicitly state this somewhere in the repo, its confusing and mis-leading to not say anything about it now.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname -
    • ulimit -a
  • Docker version (run docker -v in Terminal):
  • Toolkit platform (Fedora, CentOS, Ubuntu):

Additional context
Add any other context about the problem here.

[rollbar] Unhandled exception: Unhandled Promise rejection: Post-folder-open Error: EACCES: permission denied, mkdir '/opt/IBM/FHE-Workspace/build'

Describe the bug

When I access https://127.0.0.1:8443/, Firefox always output an error like:

[rollbar] Unhandled exception: Unhandled Promise rejection: Post-folder-open Error: EACCES: permission denied, mkdir '/opt/IBM/FHE-Workspace/build' {"folder":{"uri":{"$mid":1,"fsPath":"/opt/IBM/FHE-Workspace","external":"file:///opt/IBM/FHE-Workspace","path":"/opt/IBM/FHE-Workspace","scheme":"file"},"name":"FHE-Workspace","index":0}}

To Reproduce
Steps to reproduce the behavior:

  1. git clone https://github.com/IBM/fhe-toolkit-linux.git
  2. ./FetchDockerImage.sh centos
  3. ./RunToolkit.sh -p centos
  4. Access https://127.0.0.1:8443/ with Firefox
  5. See this error.

Screenshots
If applicable, add screenshots to help explain your problem.
image

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:

    • uname -a
      Linux localhost.localdomain 4.18.0-193.14.2.el8_2.x86_64 #1 SMP Sun Jul 26 03:54:29 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    • ulimit -a
      core file size (blocks, -c) unlimited
      data seg size (kbytes, -d) unlimited
      scheduling priority (-e) 0
      file size (blocks, -f) unlimited
      pending signals (-i) 6978
      max locked memory (kbytes, -l) 64
      max memory size (kbytes, -m) unlimited
      open files (-n) 1024
      pipe size (512 bytes, -p) 8
      POSIX message queues (bytes, -q) 819200
      real-time priority (-r) 0
      stack size (kbytes, -s) 8192
      cpu time (seconds, -t) unlimited
      max user processes (-u) 6978
      virtual memory (kbytes, -v) unlimited
      file locks (-x) unlimited
  • Docker version (run docker -v in Terminal):
    Docker version 19.03.12, build 48a66213fe

  • Toolkit platform (Fedora, CentOS, Ubuntu):
    CentOS

Additional context
Add any other context about the problem here.

Illegal instruction (core dumped)

Even though I proceeded with the advanced installation. I found the same error when I click on "launch selected target"

I am using ubuntu in vmware machine

To Reproduce
Steps to reproduce the behavior:

  1. Go to '127.0.0.1:8443'
  2. choose the kits from the dropdown.
  3. Click on Build
  4. click on launch the selected target'
  5. See error

Expected behavior

A clear and concise description of what you expected to happen.

Screenshots
image

If applicable, add screenshots to help explain your problem.
image

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
  • uname -a : Linux myhost 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
  • ulimit -a

image

  • Docker version (run docker -v in Terminal): Docker version 20.10.2, build 20.10.2-0ubuntu1~18.04.2
  • Toolkit platform (Fedora, CentOS, Ubuntu): Ubuntu

Additional context
Add any other context about the problem here.

on MLHelib branch tests fail

Describe the bug
Tests Fail on S390x all linux versions on CTileIntTest specifically when trying to square, sumExpBySquaringRightToLeft, and sumExpBySquaringLeftToRight. This is also happening in the same place on the x86, alpine version.
To Reproduce
Steps to reproduce the behavior:

  1. Run Test suite on any s390x machine or x86 alpine linux container
  2. Wait for tests to fail at CTileIntTst

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname -
    • ulimit -a
  • Docker version (run docker -v in Terminal):
  • Toolkit platform (Fedora, CentOS, Ubuntu):

Additional context
Add any other context about the problem here.

FHE Examples are failing - Illegal instruction (core dumped)

Describe the bug
Illegal instruction (core dumped) error is coming when I am trying to make and run any included examples.
hePtr = HelibContext::create(HELIB_NOT_SECURE_CKKS_512_FAST); line is failing with that error.

To Reproduce
Steps to reproduce the behaviour:

  1. Go to 'CKKS_credit_card_fraud dir'
  2. Run cmake . && make
  3. Run ./CKKS_credit_card_fraud
  4. The following error is displayed in the terminal
    *** Starting inference demo ***
    Initializing HElib . . .
    Illegal instruction (core dumped)

Upon checking
hePtr = HelibContext::create(HELIB_NOT_SECURE_CKKS_512_FAST);
line is failing with that error.

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
image

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:

    • uname -

    • [vishnudev@arch ~]$ uname -a
      Linux arch 5.11.14-arch1-1 #1 SMP PREEMPT Wed, 14 Apr 2021 12:06:34 +0000 x86_64 GNU/Linux

    • ulimit -a
      [vishnudev@arch ~]$ ulimit -a
      real-time non-blocking time (microseconds, -R) unlimited
      core file size (blocks, -c) unlimited
      data seg size (kbytes, -d) unlimited
      scheduling priority (-e) 0
      file size (blocks, -f) unlimited
      pending signals (-i) 31385
      max locked memory (kbytes, -l) 64
      max memory size (kbytes, -m) unlimited
      open files (-n) 1024
      pipe size (512 bytes, -p) 8
      POSIX message queues (bytes, -q) 819200
      real-time priority (-r) 0
      stack size (kbytes, -s) 8192
      cpu time (seconds, -t) unlimited
      max user processes (-u) 31385
      virtual memory (kbytes, -v) unlimited
      file locks (-x) unlimited

  • Docker version (run docker -v in Terminal):

  • Toolkit platform (Fedora, CentOS, Ubuntu):

Additional context
I ran ./RunToolkit.sh -p ubuntu command with sudo because it was failing with some permission issues when I ran without admin privilege.

Demo fails to run in succession

Describe the bug
When running a demo, and then clicking the play button, choose the other demo, and it does not run.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Toolkit
  2. Click on Play button, choose demo 1
  3. After finished, click on play button again
  4. Choose other demo, demo 2, nothing happens

Expected behavior
Expected the other demo to run

Screenshots
If applicable, add screenshots to help explain your problem.

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname -
    • ulimit -a
  • Docker version (run docker -v in Terminal):
  • Toolkit platform (Fedora, CentOS, Ubuntu):

Additional context
Add any other context about the problem here.

Question

Where

For the next step, one should be aware of a mathematical result known as
Fermat's little theorem (FLT). FLT states that given any non-zero integer a
and a prime number p then a raised to the power p-1 always results in a
number pn + 1 where n is an integer.

What

This is a problem. What is n?
FLT:a^p-1=p^(n+1)?Is it real FLT?

How

It should "any non-zero integer a
and a prime number p then a raised to the power p-1 always results in anumber 1 mod p "

C/C++ Extension failing to install

Describe the bug
Shortly after starting a locally built instance of the toolkit on macOS, an error sometimes inteprets the compiler configuration, build or launch of the demos saying:

[Error - 7:02:21 PM] Connection to server got closed. Server will not be restarted.
/lib/ld-linux-aarch64.so.1: No such file or directory

At this point, it's still possible to build and run the demos. There is alway a warning saying that the C/C++ extention fails to install. Attempting to repair results in the above error and the toolkit then needing to be restarted. The behaviour isn't constant but and sometimes doesn't appear to be an issue, but other times the error continues to interrupt buildng and launching the demo.

To Reproduce
Steps to reproduce the behavior:

  1. Run the toolkit locally built toolkit using ./RunToolkit.sh -l ubuntu,
  2. Open the toolkit and see the error appear in Output and in the bottom right corner of the toolkit (see screenshot).
  3. If the appear doesn't appear straight away, refreshing the toolkit seems to make it appear.

Expected behavior
The toolkit should start without errors and it should be possible to build and launch the demos.

Screenshots
If applicable, add screenshots to help explain your problem.
Screenshot 2020-09-29 at 19 57 39
Screenshot 2020-09-29 at 20 00 51

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname -Darwin Kernel Version 19.5.0: Tue May 26 20:41:44 PDT 2020; root:xnu-6153.121.2~2/RELEASE_X86_64 x86_64
    • ulimit -a
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-v: address space (kbytes)          unlimited
-l: locked-in-memory size (kbytes)  unlimited
-u: processes                       2784
-n: file descriptors                12800
  • Docker version (run docker -v in Terminal): Docker version 19.03.12, build 48a66213fe
  • Toolkit platform (Fedora, CentOS, Ubuntu): Ubuntu (not tested on other platforms)

Additional context
ms-vscode.cpptools v1.0.1
coder/code-server#2120

Change bats library to bats-core

Describe the bug
Currently our ubuntu, fedora, and alpine libraries rely on bats in the package managers to install bats. However, we should be using bats-core
To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname -
    • ulimit -a
  • Docker version (run docker -v in Terminal):
  • Toolkit platform (Fedora, CentOS, Ubuntu):

Additional context
Add any other context about the problem here.

Deploy To Hyper Protect script, if IBM Cloud user has max 1 image in registry, script returns different error

Describe the bug
When using deploy to hyper protect script, and trying to add another image to a ibm cloud registry that already has one, in the case where the user has a max 1 account, the error is this...

   `Initializing signed repository for us.icr.io/fhe-hpvs-789-user/fhe-toolkit-fedora-s390x...
   unable to reach trust server at this time: 403.
   
   Failed to add signer to: us.icr.io/fhe-hpvs-789-user/fhe-toolkit-fedora-s390x
   FATAL:   Failed to initiate repository 'us.icr.io/fhe-hpvs-789-user/fhe-toolkit-fedora-s390x' in notary`

This should be replaced with a proper error. I am not certain that we are getting the proper error back from ibm cloud. Most likely we are just passing back the error messaging from ibmcloud to the user, however I think there needs to be some intercepting on our part to make it more user friendly.

To Reproduce
Steps to reproduce the behavior:

  1. Run the script, add an image to your ibm cloud free or ibm employee account
  2. Re-run the script
  3. Script fails with the above error jibberish

Expected behavior
It should tell you that your account can only handle one image at a time, unless you upgrade

Screenshots
If applicable, add screenshots to help explain your problem.

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname -
    • ulimit -a
  • Docker version (run docker -v in Terminal):
  • Toolkit platform (Fedora, CentOS, Ubuntu):

Additional context
Add any other context about the problem here.

BGV_country_db_lookup example fails locating dataset

Describe the bug
The BGV_country_db_lookup example is failing to locate the countries_dataset.csv and failing with the following error:

what():  Error: This example failed trying to open the data file: ./examples/BGV_country_db_lookup/countries_dataset.csv
              Please check this file exists and try again.

To Reproduce
Steps to reproduce the behavior:

  1. Start the toolkit hit Build
  2. Launch the BGV_country_db_lookup demo using the Launch button
  3. See the demo start to run but then fail trying to open the data file countries_dataset.csv

Expected behavior
The demo should run successfully after the toolkit is open and the Build, then Launch buttons are hit.

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname - Darwin Kernel Version 19.5.0: Tue May 26 20:41:44 PDT 2020; root:xnu-6153.121.2~2/RELEASE_X86_64 x86_64
    • ulimit -a
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-v: address space (kbytes)          unlimited
-l: locked-in-memory size (kbytes)  unlimited
-u: processes                       2784
-n: file descriptors                10496
  • Docker version (run docker -v in Terminal): Docker version 19.03.12, build 48a66213fe
  • Toolkit platform (Fedora, CentOS, Ubuntu): All

Additional context
ms-vscode.cmake-tools version v1.4.2

Curl (77) error on zCX in BuildDockerImage.sh

Describe the bug
On zCX the default curl invocations fails complaining about certificate locations. I had to add -k (or the more obvious --insecure) flag to ignore checking keys. It would seem the system I am running is not capable of comparing to a key store.

To Reproduce
Steps to reproduce the behavior:

  1. Run ./BuildDocker <platform> on zCX
  2. See error:
Checking for cached NTL download...
INFO: Attempting to download NTL with the curl command...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (77) error setting certificate verify locations:
CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
FATAL: There was an issue downloading NTL-11.4.3 from 

Expected behavior
The BuildDockerImage.sh script should run on zCX without needing to alter the curl command

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname - Linux CB8ACX1 4.15.0-99-generic #100-Ubuntu SMP Wed Apr 22 20:31:47 UTC 2020 s390x s390x s390x GNU/Linux
    • ulimit -a
 ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 46934
max locked memory       (kbytes, -l) 16384
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
  • Docker version (run docker -v in Terminal): Docker version 19.03.6, build 369ce74a3c
  • Toolkit platform (Fedora, CentOS, Ubuntu): Fedora and Ubuntu

Advanced Image Build fails on Tiger Lake processor

Problem

Advanced Image Build fails on Tiger Lake processor (= 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz).
OS is Ubuntu 20.04 which comes with gcc/g++ version 9 as default.

Most likely cause

It appears that gcc/g++ version 9 does not support Tiger Lake, instead one needs gcc/g++ version 10. I figured this out when trying to compile helib on the same machine (see Issue 434). Unfortunately, gcc/g++ version 10 does not seem to do the trick when trying to build an image from scratch of the fhe-toolkit.

To reproduce

  • See machine specs above: Ubuntu 20.04, Tiger lake processor architecture.
  • I took a fresh clone of the repo, then ran ./BuildDockerImage.sh ubuntu which crashes with a reference to the tiger lake processor.
[...]
-- Found NTL: /usr/local/lib/libntl.so (found suitable version "11.4.3", minimum required is "11.0.0") 
-- Looking for NTL_THREADS
-- Looking for NTL_THREADS - found
-- Configuring done
-- Generating done
-- Build files have been written to: /opt/IBM/FHE-distro/HElib/build
Scanning dependencies of target helib
[  8%] Building CXX object src/CMakeFiles/helib.dir/binaryCompare.cpp.o
[  8%] Building CXX object src/CMakeFiles/helib.dir/binio.cpp.o
[  8%] Building CXX object src/CMakeFiles/helib.dir/BenesNetwork.cpp.o
[  8%] Building CXX object src/CMakeFiles/helib.dir/binaryArith.cpp.o
cc1plus: error: bad value ('tigerlake') for '-march=' switch
cc1plus: error: bad value ('tigerlake') for '-march=' switch
cc1plus: note: valid arguments to '-march=' switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client icelake-server cascadelake bonnell atom silvermont slm goldmont goldmont-plus tremont knl knm x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 btver1 btver2 native
cc1plus: error: bad value ('tigerlake') for '-mtune=' switch
cc1plus: note: valid arguments to '-march=' switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client icelake-server cascadelake bonnell atom silvermont slm goldmont goldmont-plus tremont knl knm x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 btver1 btver2 native
cc1plus: note: valid arguments to '-mtune=' switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client icelake-server cascadelake bonnell atom silvermont slm goldmont goldmont-plus tremont knl knm intel x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 btver1 btver2 generic native
cc1plus: error: bad value ('tigerlake') for '-mtune=' switch
cc1plus: note: valid arguments to '-mtune=' switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client icelake-server cascadelake bonnell atom silvermont slm goldmont goldmont-plus tremont knl knm intel x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 btver1 btver2 generic native
cc1plus: error: bad value ('tigerlake') for '-march=' switch
cc1plus: note: valid arguments to '-march=' switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client icelake-server cascadelake bonnell atom silvermont slm goldmont goldmont-plus tremont knl knm x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 btver1 btver2 native
cc1plus: error: bad value ('tigerlake') for '-mtune=' switch
cc1plus: note: valid arguments to '-mtune=' switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client icelake-server cascadelake bonnell atom silvermont slm goldmont goldmont-plus tremont knl knm intel x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 btver1 btver2 generic native
make[2]: *** [src/CMakeFiles/helib.dir/build.make:63: src/CMakeFiles/helib.dir/BenesNetwork.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [src/CMakeFiles/helib.dir/build.make:89: src/CMakeFiles/helib.dir/binaryCompare.cpp.o] Error 1
cc1plus: error: bad value ('tigerlake') for '-march=' switch
cc1plus: note: valid arguments to '-march=' switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client icelake-server cascadelake bonnell atom silvermont slm goldmont goldmont-plus tremont knl knm x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 btver1 btver2 native
cc1plus: error: bad value ('tigerlake') for '-mtune=' switch
cc1plus: note: valid arguments to '-mtune=' switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client icelake-server cascadelake bonnell atom silvermont slm goldmont goldmont-plus tremont knl knm intel x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 btver1 btver2 generic native
make[2]: *** [src/CMakeFiles/helib.dir/build.make:102: src/CMakeFiles/helib.dir/binio.cpp.o] Error 1
make[2]: *** [src/CMakeFiles/helib.dir/build.make:76: src/CMakeFiles/helib.dir/binaryArith.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:94: src/CMakeFiles/helib.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

Alpine Docker returns no results found on Privacy Preserving Search

Describe the bug
Alpine x86 Docker build, returns no results found the first time though the Privacy Preserving Search, however if you run it again, it works fine.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname -
    • ulimit -a
  • Docker version (run docker -v in Terminal):
  • Toolkit platform (Fedora, CentOS, Ubuntu):

Additional context
Add any other context about the problem here.

Toolkit Failing to Build on CentOS container

Describe the bug
Build the centOS version of the toolkit on the master branch, but it fails to build

To Reproduce
Steps to reproduce the behavior:

  1. on master branch, run `./BuildDockerImage.sh centos
  2. it will attempt to build and fail when trying to compile mlhelib

Here is the error:

 > [29/34] RUN /bin/bash ./install_system_wide.sh &&     ldconfig:                                                                                                                                                          
 #34 0.361 -- The CXX compiler identification is GNU 8.3.1
 #34 0.366 -- Check for working CXX compiler: /usr/bin/c++
 #34 0.454 -- Check for working CXX compiler: /usr/bin/c++ -- works
 #34 0.455 -- Detecting CXX compiler ABI info
 #34 0.537 -- Detecting CXX compiler ABI info - done
 #34 0.541 -- Detecting CXX compile features
 #34 0.897 -- Detecting CXX compile features - done
 #34 0.898 CMake Error at CMakeLists.txt:35 (cmake_policy):
 #34 0.898   Policy "CMP0074" is not known to this version of CMake.
 #34 0.898 
 #34 0.898 
 #34 0.898 CMake Warning (dev) at CMakeLists.txt:55 (find_package):
 #34 0.898   Ignoring EXACT since no version is requested.
 #34 0.898 This warning is for project developers.  Use -Wno-dev to suppress it.
 #34 0.898 
 #34 1.104 -- Boost  found.
 #34 1.104 -- Found Boost components:
 #34 1.104    filesystem;system;thread
 #34 1.415 -- HDF5: Using hdf5 compiler wrapper to determine CXX configuration
 #34 1.419 -- Found HDF5: /usr/lib64/libhdf5_cpp.so;/usr/lib64/libhdf5.so;/usr/lib64/libsz.so;/usr/lib64/libz.so;/usr/lib64/libdl.so;/usr/lib64/libm.so (found version "1.10.5") found components:  CXX 
 #34 1.476 -- Configuring done
 #34 1.478 -- Generating done
 #34 1.479 -- Build files have been written to: /opt/IBM/FHE-distro/ML-HElib/make/googletest-download
 #34 1.505 Scanning dependencies of target googletest
 #34 1.512 [ 11%] Creating directories for 'googletest'
 #34 1.553 [ 22%] Performing download step (git clone) for 'googletest'
 #34 1.565 Cloning into 'googletest-src'...
 #34 3.122 Already on 'master'
 #34 3.122 Your branch is up to date with 'origin/master'.
 #34 3.234 [ 33%] No patch step for 'googletest'
 #34 3.248 [ 44%] Performing update step for 'googletest'
 #34 3.427 Current branch master is up to date.
 #34 3.477 [ 55%] No configure step for 'googletest'
 #34 3.493 [ 66%] No build step for 'googletest'
 #34 3.508 [ 77%] No install step for 'googletest'
 #34 3.524 [ 88%] No test step for 'googletest'
 #34 3.541 [100%] Completed 'googletest'
 #34 3.562 [100%] Built target googletest
 #34 3.626 -- The C compiler identification is GNU 8.3.1
 #34 3.630 -- Check for working C compiler: /usr/bin/cc
 #34 3.688 -- Check for working C compiler: /usr/bin/cc -- works
 #34 3.689 -- Detecting C compiler ABI info
 #34 3.749 -- Detecting C compiler ABI info - done
 #34 3.756 -- Detecting C compile features
 #34 3.927 -- Detecting C compile features - done
 #34 3.938 -- Could NOT find PythonInterp (missing: PYTHON_EXECUTABLE) 
 #34 3.940 -- Found Threads: TRUE  
 #34 3.948 -- Configuring incomplete, errors occurred!
 #34 3.948 See also "/opt/IBM/FHE-distro/ML-HElib/make/CMakeFiles/CMakeOutput.log".

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname -
    • ulimit -a
  • Docker version (run docker -v in Terminal): Docker version 20.10.2, build 2291f61
  • Toolkit platform (Fedora, CentOS, Ubuntu):CentOS

Additional context
Add any other context about the problem here.

Additional tar file included in Dependency directory

Describe the bug
HElib tar file should be pulled in during build rather than existing in the Dependency directory.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Dependency directory and see that HElib-v1.1.0.tar.gz exists

Expected behavior
All the dependencies should be brought it at build time.

Screenshots
N/A

Environment (please complete the following information):

  • Host Info (The machine hosting the FHE Toolkit Docker container), please provide the output of running the following commands in a termina window:
    • uname - Darwin Rosies-MacBook-Pro.local 19.5.0 Darwin Kernel Version 19.5.0: Tue May 26 20:41:44 PDT 2020; root:xnu-6153.121.2~2/RELEASE_X86_64 x86_64
    • ulimit -a
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8192
-c: core file size (blocks)         0
-v: address space (kbytes)          unlimited
-l: locked-in-memory size (kbytes)  unlimited
-u: processes                       2784
-n: file descriptors                10496
  • Docker version (run docker -v in Terminal): Docker version 19.03.13, build 4484c46d9d
  • Toolkit platform (Fedora, CentOS, Ubuntu): all

Additional context
N/A

Test script for BGV_country_lookup example

Feature description
Automated test script to run BGV_country_lookup example needed to provide stability as development continues.

Acceptance criteria

  1. Test script successfully run on test Jenkins service

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.