{"id":14978995,"url":"https://github.com/openmined/tenseal","last_synced_at":"2026-10-19T17:21:48.156Z","repository":{"id":36955635,"uuid":"236181743","full_name":"OpenMined/TenSEAL","owner":"OpenMined","description":"A library for doing homomorphic encryption operations on tensors","archived":false,"fork":false,"pushed_at":"2026-10-07T15:38:07.000Z","size":5581,"stargazers_count":1040,"open_issues_count":135,"forks_count":176,"subscribers_count":18,"default_branch":"main","last_synced_at":"2026-10-17T02:59:18.663Z","etag":null,"topics":["cpp","cryptography","deep-learning","docker-image","encryption","hacktoberfest","homomorphic-encryption","microsoft-seal","python","tensor"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenMined.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null},"funding":{"github":"openmined"}},"created_at":"2020-01-25T14:36:55.000Z","updated_at":"2026-10-01T17:55:19.000Z","dependencies_parsed_at":"2026-09-17T17:35:27.288Z","dependency_job_id":null,"html_url":"https://github.com/OpenMined/TenSEAL","commit_stats":{"total_commits":247,"total_committers":21,"mean_commits":"11.761904761904763","dds":0.5506072874493927,"last_synced_commit":"13486592953f82ca60502fd196016f815891e25a"},"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/OpenMined/TenSEAL","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMined%2FTenSEAL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMined%2FTenSEAL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMined%2FTenSEAL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMined%2FTenSEAL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenMined","download_url":"https://codeload.github.com/OpenMined/TenSEAL/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMined%2FTenSEAL/sbom","scorecard":{"id":105431,"data":{"date":"2025-08-11","repo":{"name":"github.com/OpenMined/TenSEAL","commit":"29eb3d6452202775be7aec37aa0516e1e4e16dba"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Code-Review","score":4,"reason":"Found 12/30 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/bazel_tests.yml:1","Warn: no topLevel permission defined: .github/workflows/benchmarks.yml:1","Warn: no topLevel permission defined: .github/workflows/ossar-analysis.yml:1","Warn: no topLevel permission defined: .github/workflows/publish_wheels.yml:1","Warn: no topLevel permission defined: .github/workflows/tests.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: containerImage not pinned by hash: docker-images/Dockerfile-py36:1: pin your Docker image by updating python:3.6-slim-buster to python:3.6-slim-buster@sha256:e10aa83604948c6d8d9f72a9a20193d84bb2dbe550b725eb5208387117fde065","Warn: containerImage not pinned by hash: docker-images/Dockerfile-py37:1: pin your Docker image by updating python:3.7-slim-buster to python:3.7-slim-buster@sha256:9bd2bfc822a533f99cbe6b1311d5bf0ff136f776ebac9b985407829f17278935","Warn: containerImage not pinned by hash: docker-images/Dockerfile-py38:1: pin your Docker image by updating python:3.8-slim-buster to python:3.8-slim-buster@sha256:8799b0564103a9f36cfb8a8e1c562e11a9a6f2e3bb214e2adc23982b36a04511","Warn: containerImage not pinned by hash: docker-images/Dockerfile-py39:1: pin your Docker image by updating python:3.9-slim-buster to python:3.9-slim-buster@sha256:320a7a4250aba4249f458872adecf92eea88dc6abd2d76dc5c0f01cac9b53990","Warn: pipCommand not pinned by hash: docker-images/Dockerfile-py36:13","Warn: pipCommand not pinned by hash: docker-images/Dockerfile-py37:13","Warn: pipCommand not pinned by hash: docker-images/Dockerfile-py38:13","Warn: pipCommand not pinned by hash: docker-images/Dockerfile-py39:13","Warn: pipCommand not pinned by hash: .github/workflows/scripts/build_nix.sh:4","Warn: pipCommand not pinned by hash: .github/workflows/scripts/install_req_docker.sh:15","Warn: pipCommand not pinned by hash: .github/workflows/scripts/install_req_docker.sh:16","Warn: pipCommand not pinned by hash: .github/workflows/scripts/install_req_docker.sh:17","Warn: pipCommand not pinned by hash: .github/workflows/scripts/install_req_macos.sh:5","Warn: pipCommand not pinned by hash: .github/workflows/scripts/install_req_macos.sh:6","Warn: pipCommand not pinned by hash: .github/workflows/scripts/install_req_macos.sh:8","Warn: pipCommand not pinned by hash: .github/workflows/scripts/install_req_ubuntu.sh:8","Warn: pipCommand not pinned by hash: .github/workflows/scripts/install_req_ubuntu.sh:9","Warn: pipCommand not pinned by hash: .github/workflows/scripts/install_req_ubuntu.sh:10","Warn: pipCommand not pinned by hash: .github/workflows/publish_wheels.yml:57","Info:  16 out of  16 GitHub-owned GitHubAction dependencies pinned","Info:   6 out of   6 third-party GitHubAction dependencies pinned","Info:   0 out of   4 containerImage dependencies pinned","Info:   0 out of  15 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":0,"reason":"22 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-48 / GHSA-fj7x-q9j7-g6q6","Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: PYSEC-2020-92 / GHSA-hj5v-574p-mj7c","Warn: Project is vulnerable to: PYSEC-2022-42969","Warn: Project is vulnerable to: PYSEC-2013-22 / GHSA-27x4-j476-jp5f","Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cx63-2mw6-8hw5","Warn: Project is vulnerable to: PYSEC-2022-43012 / GHSA-r9hx-vwmv-q579","Warn: Project is vulnerable to: GHSA-3749-ghw9-m3mg","Warn: Project is vulnerable to: PYSEC-2022-43015 / GHSA-47fc-vmwq-366v","Warn: Project is vulnerable to: PYSEC-2025-41 / GHSA-53q9-r3pm-6pq6","Warn: Project is vulnerable to: PYSEC-2024-252 / GHSA-5pcm-hx3q-hm94","Warn: Project is vulnerable to: GHSA-887c-mr87-cxwp","Warn: Project is vulnerable to: PYSEC-2024-251 / GHSA-pg7h-5qx3-wjr3","Warn: Project is vulnerable to: PYSEC-2024-250","Warn: Project is vulnerable to: PYSEC-2024-259"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-15T11:00:06.726Z","repository_id":36955635,"created_at":"2025-08-15T11:00:06.726Z","updated_at":"2025-08-15T11:00:06.726Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38362920,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-19T02:00:06.414Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","cryptography","deep-learning","docker-image","encryption","hacktoberfest","homomorphic-encryption","microsoft-seal","python","tensor"],"created_at":"2024-09-24T13:58:52.747Z","updated_at":"2026-10-19T17:21:48.151Z","avatar_url":"https://github.com/OpenMined.png","language":"C++","funding_links":["https://github.com/sponsors/openmined","https://opencollective.com/openmined"],"categories":[],"sub_categories":[],"readme":"\n\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://www.openmined.org/\"\u003e\u003cimg src=\"https://github.com/OpenMined/design-assets/raw/master/logos/OM/mark-primary-trans.png\" alt=\"TenSEAL\" width=\"200\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  TenSEAL\n  \u003cbr\u003e\n\u003c/h1\u003e\n\n\u003ch3 align=\"center\"\u003e\n  \u003cbr\u003e\n  A library for doing homomorphic encryption operations on tensors\n  \u003cbr\u003e\n\u003c/h3\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![Tests](https://github.com/OpenMined/TenSEAL/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/OpenMined/TenSEAL/actions/workflows/tests.yml?query=branch%3Amain)\n[![Benchmarks](https://github.com/OpenMined/TenSEAL/actions/workflows/benchmarks.yml/badge.svg?branch=main)](https://github.com/OpenMined/TenSEAL/actions/workflows/benchmarks.yml?query=branch%3Amain)\n\n[![Downloads](https://img.shields.io/pypi/dd/tenseal)](https://pypi.org/project/tenseal/)\n[![Version](https://img.shields.io/pypi/v/tenseal)](https://pypi.org/project/tenseal/)\n[![Python versions](https://img.shields.io/pypi/pyversions/tenseal)](https://pypi.org/project/tenseal/)\n[![OpenCollective](https://img.shields.io/opencollective/all/openmined)](https://opencollective.com/openmined)\n[![Slack](https://img.shields.io/badge/chat-on%20slack-7A5979.svg)](https://openmined.slack.com/messages/support)\n\n\n\u003c/div\u003e\n\nTenSEAL is a library for doing homomorphic encryption operations on tensors, built on top of [Microsoft SEAL](https://github.com/Microsoft/SEAL). It provides ease of use through a Python API, while preserving efficiency by implementing most of its operations using C++.\n\n## Features\n\n- :key: Encryption/Decryption of vectors of integers using BFV\n- :old_key: Encryption/Decryption of vectors of real numbers using CKKS\n- :fire: Element-wise addition, subtraction and multiplication of encrypted-encrypted vectors and encrypted-plain vectors\n- :cyclone: Dot product and vector-matrix multiplication\n- :bar_chart: N-dimensional encrypted tensors (`CKKSTensor`, `BFVTensor`) with reshape, broadcast and transpose\n- :floppy_disk: Serialization of contexts, keys and encrypted tensors\n- :zap: Complete SEAL API under `tenseal.sealapi`\n\n## Usage\n\nWe show the basic operations over encrypted data, more advanced usage for machine learning applications can be found on our [tutorial section](#tutorials)\n\nTenSEAL is a binding over Microsoft SEAL plus a tensor layer on top, so the encryption parameters below (`poly_modulus_degree`, `coeff_mod_bit_sizes`, `global_scale`) carry exactly their SEAL meaning. Choosing them determines both the security level and how many operations you can chain before the noise budget is exhausted — see the [SEAL documentation](https://github.com/microsoft/SEAL#getting-started) and its [CKKS examples](https://github.com/microsoft/SEAL/blob/main/native/examples/5_ckks_basics.cpp) for what the values mean and how to pick them.\n\n```python\nimport tenseal as ts\n\n# Setup TenSEAL context\ncontext = ts.context(\n            ts.SCHEME_TYPE.CKKS,\n            poly_modulus_degree=8192,\n            coeff_mod_bit_sizes=[60, 40, 40, 60]\n          )\ncontext.generate_galois_keys()\ncontext.global_scale = 2**40\n\nv1 = [0, 1, 2, 3, 4]\nv2 = [4, 3, 2, 1, 0]\n\n# encrypted vectors\nenc_v1 = ts.ckks_vector(context, v1)\nenc_v2 = ts.ckks_vector(context, v2)\n\nresult = enc_v1 + enc_v2\nresult.decrypt() # ~ [4, 4, 4, 4, 4]\n\nresult = enc_v1.dot(enc_v2)\nresult.decrypt() # ~ [10]\n\nmatrix = [\n  [73, 0.5, 8],\n  [81, -5, 66],\n  [-100, -78, -2],\n  [0, 9, 17],\n  [69, 11 , 10],\n]\nresult = enc_v1.matmul(matrix)\nresult.decrypt() # ~ [157, -90, 153]\n```\n\n## Installation\n\nTenSEAL requires **Python 3.11 or newer** and depends on [NumPy](https://numpy.org/).\n\n#### Using pip\n\n```bash\npip install tenseal\n```\n\nPrebuilt wheels are published for every supported Python version on:\n\n| Platform | Wheel |\n| --- | --- |\n| Linux, glibc (x86-64) | `manylinux_2_28_x86_64` |\n| Linux, musl (x86-64) | `musllinux_1_2_x86_64` |\n| Linux, glibc (aarch64) | `manylinux_2_28_aarch64` |\n| macOS (Apple Silicon) | `macosx_14_0_arm64` |\n| Windows (x64) | `win_amd64` |\n\nLinux wheels come in two flavours: `manylinux` for glibc-based distributions and\n`musllinux` for musl-based ones such as Alpine, including the `-alpine` container\nimages. pip picks the right one for your platform automatically.\n\nA source distribution is published as well, so `pip install tenseal` also works on platforms without a prebuilt wheel — it will compile from source, which needs the build requirements listed below. If your platform is missing a wheel you would like us to publish, please open an [issue](https://github.com/OpenMined/TenSEAL/issues).\n\nTo check that the installation worked:\n\n```python\nimport tenseal as ts\nprint(ts.__version__)\n```\n\n#### Using a specific Python version\n\nIf your Python is older than 3.11, or you would rather leave your system Python alone, [uv](https://docs.astral.sh/uv/getting-started/installation/) can download a Python for you and keep TenSEAL in its own environment.\n\nCreate an environment and install into it:\n\n```bash\nuv venv --python 3.13\nsource .venv/bin/activate        # Windows: .venv\\Scripts\\activate\nuv pip install tenseal\n```\n\nOr start a one-off Python session without setting anything up — uv fetches Python 3.13 and TenSEAL, and discards the environment afterwards:\n\n```bash\nuv run --python 3.13 --with tenseal python\n```\n\nReplace `3.13` with any version from 3.11 to 3.14.\n\n#### Using conda\n\nTenSEAL is not published on conda-forge, so install it with pip inside the environment:\n\n```bash\nconda create -n tenseal python=3.13\nconda activate tenseal\npip install tenseal\n```\n\n#### Build from Source\n\nBuilding requires a C++17 toolchain and [CMake](https://cmake.org/install/) 3.14 or newer:\n\n- **Linux:** GCC \u003e= 7 or Clang \u003e= 5\n- **macOS:** Xcode 15.x command line tools\n- **Windows:** Visual Studio 2017 or newer\n\nAll third-party dependencies — including Microsoft SEAL and Protocol Buffers — are fetched and built automatically by CMake. There is nothing to install by hand and no submodules to initialise.\n\n```bash\npip install .\n```\n\n\u003e **Note:** with CMake 4.0 or newer the build fails with `Compatibility with CMake \u003c 3.5 has been removed`, because some vendored dependencies still declare a pre-3.5 minimum. Until those are upgraded, set `CMAKE_POLICY_VERSION_MINIMUM=3.5` in your environment before building.\n\n\u003e **Note:** on macOS, AppleClang 17 and newer (Xcode 16+) currently fail to compile the vendored xtensor. Use Xcode 15.x, or install the published wheel instead.\n\n#### Use Docker\n\n\u003e **TODO:** the images on [Docker Hub](https://hub.docker.com/r/openmined/tenseal) are unmaintained — the newest was published in 2021 for v0.3.4, and both `openmined/tenseal` and `openmined/tenseal:dev` are far behind the current release. The `docker-images/` directory targets Python 3.6–3.9, all of which are end-of-life and below the supported minimum. Do not rely on these images. Refreshing or retiring them is tracked as future work.\n\n#### Using Bazel\n\n\u003e **TODO:** the Bazel build is currently broken and its workflow runs on demand only. Its dependency pins have drifted from the CMake build, and it has not been migrated to bzlmod. Use the CMake build (`pip install .`) in the meantime. Restoring Bazel support is tracked as future work.\n\n## Benchmarks\n\nBenchmark results from every merge to `main` are published [on GitHub Pages](https://openmined.github.io/TenSEAL/benchmarks/), for Linux, macOS and Windows.\n\nThe benchmark suite runs with pytest:\n\n```bash\npytest tests/python/benchmarks/\n```\n\n\u003e **TODO:** the C++ microbenchmarks under `tests/cpp/benchmarks/` are only wired up through Bazel, so they cannot currently be run. See the Bazel note above.\n\n## Tutorials\n\n- [Getting Started](tutorials%2FTutorial%200%20-%20Getting%20Started.ipynb)\n- [Tutorial 1 - Training and Evaluation of Logistic Regression on Encrypted Data](tutorials%2FTutorial%201%20-%20Training%20and%20Evaluation%20of%20Logistic%20Regression%20on%20Encrypted%20Data.ipynb)\n- [Tutorial 2 - Working with Approximate Numbers](tutorials%2FTutorial%202%20-%20Working%20with%20Approximate%20Numbers.ipynb)\n- [Tutorial 3 - Benchmarks](tutorials%2FTutorial%203%20-%20Benchmarks.ipynb)\n- [Tutorial 4 - Encrypted Convolution on MNIST](tutorials%2FTutorial%204%20-%20Encrypted%20Convolution%20on%20MNIST.ipynb)\n\n## Publications\n\nA. Benaissa, B. Retiat, B. Cebere, A.E. Belfedhal, [\"TenSEAL: A Library for Encrypted Tensor Operations Using Homomorphic Encryption\"](https://arxiv.org/abs/2104.03152), ICLR 2021 Workshop on Distributed and Private Machine Learning (DPML 2021).\n\n```\n@misc{tenseal2021,\n    title={TenSEAL: A Library for Encrypted Tensor Operations Using Homomorphic Encryption},\n    author={Ayoub Benaissa and Bilal Retiat and Bogdan Cebere and Alaa Eddine Belfedhal},\n    year={2021},\n    eprint={2104.03152},\n    archivePrefix={arXiv},\n    primaryClass={cs.CR}\n}\n```\n\n## Support\n\nFor support in using this library, please join the **#support** Slack channel. [Click here to join our Slack community!](https://slack.openmined.org)\n\n## Contributing\n\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for how to set up a development environment, build the library, and run the tests. Please make sure to update tests as appropriate.\n\n## License\n\n[Apache License 2.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenmined%2Ftenseal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenmined%2Ftenseal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenmined%2Ftenseal/lists"}