snarkyjs-elgamal
Version:
This repository implements Elgmal, a partial homomorphic encryption scheme originally described by [Taher Elgamal in 1985](https://caislab.kaist.ac.kr/lecture/2010/spring/cs548/basic/B02.pdf). This implementation includes the original version of Elgamal,
49 lines • 1.8 kB
JavaScript
import { isReady, shutdown, Field } from 'snarkyjs';
import { modExp } from './lib';
describe('lib', () => {
beforeAll(async () => {
await isReady;
});
afterAll(() => {
setTimeout(() => shutdown(), 0);
});
describe('modExp', () => {
// this works fine for small values, but will get tricky for huge ones
it('Should calculate g^x', () => {
let base = 5;
let exponent = 15;
modExp(Field(base), Field(exponent)).assertEquals(Field(base ** exponent));
});
it('Should calculate g^x', () => {
let base = 85;
let exponent = 8;
modExp(Field(base), Field(exponent)).assertEquals(Field(base ** exponent));
});
it('Should calculate g^x', () => {
let base = 71;
let exponent = 3;
modExp(Field(base), Field(exponent)).assertEquals(Field(base ** exponent));
});
it('Should calculate g^x', () => {
let base = 1;
let exponent = 32;
modExp(Field(base), Field(exponent)).assertEquals(Field(base ** exponent));
});
it('Should calculate g^x', () => {
let base = 2;
let exponent = 32;
modExp(Field(base), Field(exponent)).assertEquals(Field(base ** exponent));
});
it('Should calculate g^x', () => {
let base = 32;
let exponent = 2;
modExp(Field(base), Field(exponent)).assertEquals(Field(base ** exponent));
});
it('Should calculate g^x', () => {
let base = 70;
let exponent = 2;
modExp(Field(base), Field(exponent)).assertEquals(Field(base ** exponent));
});
});
});
//# sourceMappingURL=lib.test.js.map