epir

EllipticPIR client library (Node.js / TypeScript bindings).
1,418 2
Install
npm install epir
Latest Version:0.0.15
License:MIT
Last Updated:Mar 6, 2023
Links: GitHub  ·  npm
Maintainer: visvirial

libepir - EllipticPIR client library

CMake Node.js CI codecov

EllipticPIR is a private information retrieval (PIR) implementation backed by the EC-ElGamal encryption.

Try online WebAssembly demo: https://demo.ellipticpir.com/

This library contains cryptographic functions which are required to encrypt a query (a selector) to the EllipticPIR server and to decrypt a reply from the EllipticPIR server.

This repository provides native C library and bindings for C++, JavaScript and TypeScript programming languages.

C / C++

The C implementation has no runtime heap memory allocation. The C++ bindings is a header-only library.

Install

$ git clone https://github.com/EllipticPIR/libepir.git
$ cd libepir
$ mkdir build_c
$ cd build_c
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make -j4  # (change the number "4" to your physical CPU cores to parallelize the build).
$ sudo make install

Generate mG.bin

$ epir_genm

Usage

Include epir.h (C) or epir.hpp (C++) in your source code.

For general usage, see ./src_c/bench_*.(c|cpp) files.

Node.js / TypeScript

This library both includes Node.js native addons (faster, no browser support) and WebAssembly builds (slower, browser support).

Install

npm
$ npm install epir
Build your own
$ git clone https://github.com/EllipticPIR/libepir.git
$ cd libepir
$ npm ci

Usage

See ./src_ts/types.ts for Node.js binding definitions.

For general usage, see files under the ./src_ts/__tests__ directory and ./pages/index.vue.

FAQs

What is mG.bin?

To decrypt a server's reply, you need to generate the mG.bin file. This file contains the pre-computation values of (G, 2*G, .., (0xFFFFFF)*G), where G is the generater of the Ed25519 curve.

To generate mG.bin, run

$ epir_genm

or

$ npm run epir_genm

The computation may take tens of seconds to finish. The computation time depends on the CPU power of your machine. (For comparison, on my desktop (Intel Core i7-7700K) it takes about ~15sec.)

The generated file will be located in $HOME/.EllipticPIR/mG.bin. The file size will be ~576MiB.

If you will not decrypt a server's reply, you can skip this step.

Related Packages

@sebastienrousseau/crypto-vue

Vue 3 composables for client-side cryptography: key generation, encryption, sign...

1,809 9
cr-numeral

cr-numeral is a lightweight and versatile npm package designed to effortlessly c...

8,248 3
nehoid

NehoID is a high-performance TypeScript library designed for generating, validat...

7,605 1

Version History

Version Released License
0.0.15 MIT
0.0.14 MIT
0.0.13 MIT
0.0.12 MIT
0.0.11 MIT