she-wasm

Two-level homomorphic encryption for Node.js by WebAssembly

Usage no npm install needed!

<script type="module">
  import sheWasm from 'https://cdn.skypack.dev/she-wasm';
</script>

README

Build Status

Two-level homomorphic encryption for Node.js by WebAssembly

Abstract

This library supports two kinds of lifted ElGamal encryption,

  • which can add two ciphertexts many times, and
  • can multiply two ciphertexts once.

For two vectors x = (x1, ..., xn) and y = (y1, ..., yn), EncG1(x1) * EncG2(y1) + ... + EncG1(xn) * EncG2(yn) = EncGT(x1 * y1 + ... + xn * yn).

see mcl

News

  • 2020/Dec/27 change file layout
  • 2020/Dec/18 sec.decWithZkpDec(c, aux) returns [m, zkp] that zkp proves dec(c) = m for CipherTextGT c, and aux.verify(c, zkp, m) returns the correctness where aux = pub.getAuxiliaryForZkpDecGT().
  • 2020/Nov/06 sec.decWithZkpDec(c, pub) returns [m, zkp] that zkp proves dec(c) = m for CipherTextG1 c, and pub.verify(c, zkp, m) returns the correctness.

Demo

for Node.js

node test

How to use

The version v0.7.0 breaks backward compatibility of the entry point.

  • Node.js : const she = require('she-wasm')
  • React : const she = require('she-wasm/browser')
  • HTML : <script src="https://herumi.github.io/she-wasm/browser/she.js"></script>

Doc

How to build

Install Emscripten.

git submodule update --init --resurcive
cd src
make

License

modified new BSD License http://opensource.org/licenses/BSD-3-Clause

Author

MITSUNARI Shigeo(herumi@nifty.com)

Sponsors welcome

GitHub Sponsor