1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//! A collection of utilities used by our other crypto libraries. Some examples are Pedersen commitment,
//! Elgamal encryption, some finite field utilities like inner product, weighted inner product, hadamard product,
//! etc, multiscalar multiplication (MSM) like Fixed Base MSM, polynomial utilities like multiplying polynomials,
//! creating polynomial from roots, etc, efficient way of checking several pairing relations in a single multi-pairing.
//!

#![cfg_attr(not(feature = "std"), no_std)]

extern crate alloc;
extern crate core;

pub mod aliases;
pub mod extend_some;
// TODO: Feature gate this
#[macro_use]
pub mod serde_utils;
pub mod ecies;

/// Elgamal encryption
pub mod elgamal;

/// Finite field utilities like inner product, weighted inner product, hadamard product, etc
#[macro_use]
pub mod ff;

/// Pedersen commitment
pub mod commitment;

/// Hashing utilities like hashing arbitrary bytes to field element or group element
pub mod hashing_utils;
pub mod iter;
pub mod macros;
pub mod misc;
/// Multiscalar multiplication (MSM) like Fixed Base MSM
pub mod msm;
pub mod owned_pairs;
pub mod pairs;
/// Polynomial utilities like multiplying polynomials, creating polynomial from roots, etc
pub mod poly;
/// An efficient way to check several equality relations involving pairings by combining the relations
/// in a random linear combination and doing a multi-pairing check. Relies on Schwartz–Zippel lemma.
pub mod randomized_pairing_check;
pub mod signature;
/// Solving discrete log using Baby Step Giant Step
pub mod solve_discrete_log;
pub mod transcript;
pub mod try_iter;