intro.rst 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. About OpenFHE-rs
  2. ================
  3. ☀️ *OpenFHE-rs is a joint project by `FairMath <https://fairmath.xyz/>`__ & `OpenFHE <https://www.openfhe.org/>`__.*
  4. ---
  5. 🔔 *Keep in mind that the library is WIP and may contain some unpolished interfaces. If you encounter any issues or have any suggestions, feel free to ping us on our Discord server or open a new issue in the `GitHub repository <https://github.com/fairmath/openfhe-rs/tree/master>`__.*
  6. ---
  7. OpenFHE-rs is a Rust interface for the OpenFHE library, which is renowned for its comprehensive suite of Fully Homomorphic Encryption (FHE) schemes, all implemented in C++. By providing a Rust wrapper for OpenFHE, we aim to make these advanced FHE capabilities easily accessible to Rust developers.
  8. Whether you're developing secure data processing applications or privacy-focused tools, OpenFHE-rs enables you to leverage the powerful encryption technologies of OpenFHE seamlessly within your Rust projects.
  9. Installation
  10. ============
  11. To use OpenFHE-rs, you'll need to install several dependencies and follow the installation steps for both the core OpenFHE library and the Rust crate.
  12. Prerequisites
  13. -------------
  14. Ensure you have the following dependencies installed:
  15. - `CMake >= 3.5.1`
  16. - `Clang >= 12.0` or `GCC >= 11.4`
  17. - `Rust >= 1.78`
  18. - `Git`
  19. Unix
  20. ~~~~
  21. On Debian-based systems, you can install the necessary dependencies using:
  22. .. code-block:: bash
  23. sudo apt install build-essential libssl-dev cmake clang git
  24. Installation process
  25. ---------------------
  26. Core OpenFHE library installation
  27. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  28. To build and install the OpenFHE library, follow the steps below or refer to `OpenFHE's installation documentation <https://openfhe-development.readthedocs.io/en/latest/sphinx_rsts/intro/installation/installation.html>`__.
  29. 1. Clone the repository
  30. .. code-block:: bash
  31. git clone https://github.com/openfheorg/openfhe-development.git
  32. cd openfhe-development
  33. 2. Configure CMake
  34. .. code-block:: bash
  35. cmake -B ${OPENFHE_BUILD:-build} -DBUILD_SHARED=ON .
  36. 3. Build and install the C++ OpenFHE library
  37. .. code-block:: bash
  38. make -C ${OPENFHE_BUILD:-build} -j$(nproc)
  39. make -C ${OPENFHE_BUILD:-build} install
  40. 4. Update the cache for the linker
  41. .. code-block:: bash
  42. sudo ldconfig
  43. Configuring your project to use the crate
  44. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  45. To use the OpenFHE crate in your Rust project, add it as a dependency from `crates.io <https://crates.io/crates/openfhe>`__:
  46. .. code-block:: bash
  47. cargo add openfhe
  48. You also need to add a small piece of code for the core dependencies' configuration in your `build.rs` file:
  49. .. code-block:: rust
  50. fn main
  51. {
  52. // linking openFHE
  53. println!("cargo::rustc-link-arg=-L/usr/local/lib");
  54. println!("cargo::rustc-link-arg=-lOPENFHEpke");
  55. println!("cargo::rustc-link-arg=-lOPENFHEbinfhe");
  56. println!("cargo::rustc-link-arg=-lOPENFHEcore");
  57. // linking OpenMP
  58. println!("cargo::rustc-link-arg=-fopenmp");
  59. // necessary to avoid LD_LIBRARY_PATH
  60. println!("cargo::rustc-link-arg=-Wl,-rpath=/usr/local/lib");
  61. }
  62. Template repository
  63. ~~~~~~~~~~~~~~~~~~~
  64. Instead of doing it manually, you can start your project by forking our `template repository <https://github.com/fairmath/openfhe-rs-template/tree/main>`__.
  65. Custom crate installation from the source
  66. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  67. You can adjust the installation process by building the crate manually. In that case, you need to clone the Fair Math's `openfhe-rs <https://github.com/fairmath/openfhe-rs>`__ repo to your local machine and build it:
  68. 1. Clone the repository
  69. .. code-block:: bash
  70. git clone https://github.com/fairmath/openfhe-rs.git
  71. cd openfhe-rs
  72. 2. Build the library
  73. .. code-block:: bash
  74. cargo build
  75. 3. Run tests
  76. .. code-block:: bash
  77. cargo test -- --test-threads=1
  78. 4. Run the examples
  79. .. code-block:: bash
  80. cargo run --example function_evaluation
  81. cargo run --example polynomial_evaluation
  82. cargo run --example simple_integers
  83. cargo run --example simple_real_integers
  84. Contributing
  85. ============
  86. Contributions are always welcome! If you find bugs, have feature requests, or want to contribute code, please open an issue or pull request on the `GitHub repository <https://github.com/fairmath/openfhe-rs/tree/master>`__.
  87. License
  88. =======
  89. `OpenFHE-rs` is licensed under the **BSD 2-Clause License**. See the `LICENSE <LICENSE>`__ file for more details.