The Cryptimeleon Math library provides the mathematical foundation for the other Cryptimeleon libraries. It implements basics such as mathematical groups, rings and fields, e.g. Zn, as well as implementations of cryptographic pairings. Furthermore, it offers serialization support for the implemented structures.
WARNING: This library is meant to be used for prototyping and as a research tool only. It has not been sufficiently vetted for use in security-critical production environments. All implementations are to be considered experimental.
Below we give a more detailed list of features.
Math offers the following algebraic groups:
Secp256k1
Math offers the following algebraic rings and fields:
Math also implements a number of other features:
To add the newest Math version as a dependency, add this to your project's POM:
<dependency>
<groupId>org.cryptimeleon</groupId>
<artifactId>math</artifactId>
<version>[3.0,)</version>
</dependency>
Math is published via Maven Central.
Therefore, you need to add mavenCentral()
to the repositories
section of your project's build.gradle
file.
Then, add implementation group: 'org.cryptimeleon', name: 'math', version: '3.+'
to the dependencies
section of your build.gradle
file.
For example:
repositories {
mavenCentral()
}
dependencies {
implementation group: 'org.cryptimeleon', name: 'math', version: '3.+'
}
We recommend you go through our short Math tutorial to get started.
We also provide a walkthrough where we show you how to implement a pairing-based signature scheme here.
The included java pairings are not optimized for performance. We recommend you use our Mcl wrapper library if you care about pairing performance. It includes an optimized type 3 pairing.
The library was implemented at Paderborn University in the research group "Codes und Cryptography".