Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cpeikert/Lol
Λ ⚬ λ: Functional Lattice Cryptography
https://github.com/cpeikert/Lol
cryptography fully-homomorphic-encryption haskell-library lattices lol ring-lwe
Last synced: about 1 month ago
JSON representation
Λ ⚬ λ: Functional Lattice Cryptography
- Host: GitHub
- URL: https://github.com/cpeikert/Lol
- Owner: cpeikert
- Created: 2015-09-29T21:04:20.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2021-03-22T14:10:51.000Z (almost 4 years ago)
- Last Synced: 2024-10-14T06:27:18.756Z (2 months ago)
- Topics: cryptography, fully-homomorphic-encryption, haskell-library, lattices, lol, ring-lwe
- Language: Haskell
- Homepage:
- Size: 3.96 MB
- Stars: 224
- Watchers: 17
- Forks: 45
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-fhe - Λ ○ λ - "Lol" Haskell library for ring-based lattice cryptography that supports FHE. (Libraries / [Sunscreen](https://sunscreen.tech/))
- awesome-he - Λ ○ λ - "Lol" Haskell library for ring-based lattice cryptography that supports FHE. (Libraries)
README
[![Build Status](https://travis-ci.org/cpeikert/Lol.svg?branch=master)](https://travis-ci.org/cpeikert/Lol)
This branch is master. It should always be compiling!
--------------------------------------------------------------------------------
This repository contains several Haskell libraries:
* The `lol` directory contains the Haskell library Λ ⚬ λ (Lol),
described in the paper
[Λ ⚬ λ: Functional Lattice Cryptography](https://eprint.iacr.org/2015/1134). More
documentation can be found on
[Hackage](https://hackage.haskell.org/package/lol). This is the
core of the project, and you'll need to install it to use anything
else.* The `lol-apps` directory contains example cryptographic applications
built using Lol. If you are interested in using our example
applications, you will need this library. It is on Hackage
[here](https://hackage.haskell.org/package/lol-apps). If you are
just writing your own applications, you don't need to install this
library.* The `lol-cpp` directory contains a C++ backend "tensor"
implementation.Developing in the Lol ecosystem:
Compiling the Lol packages takes a long time. If you are just doing
development, you probably don't need to compile (with optimizations)
the whole ecosystem. Instead, you can develop interactively. Run
```
> stack build lol lol-cpp lol-apps lol-tests lol-benches --dependencies-only
```
to build all third-party dependencies of the Lol ecosystem, then you can
develop with
```
> ./ghci path/to/file
```
This command builds the C++ library for `lol-cpp` and loads all
imported files from the Lol ecosystem from source.You can load all top-level executables with `./ghci AllMain.hs`.
Installing Lol:
If you want to run benchmarks or tests, you'll need to compile the ecosystem
with optimizations. The easiest way to do this is to use stack, which is
included in the [Haskell Platform](https://www.haskell.org/platform/).
```
> stack setup
> stack build lol
```
or
```
> stack setup
> stack install lol-apps
```
You can run unit tests with `stack test `. You can run
microbenchmarks with `stack bench `. Currently `lol-cpp`
and `lol-apps` have tests and benchmarks.The `lol-apps` package includes examples of how to use each
application. These are built automatically when you install
`lol-apps`.