Note: For the latest information, see:
history.txtfor changelog entriescore/c/jbigi/README.mdfor build instructionsNativeBigInteger.javaandCPUID.javafor technical details
JBIGI provides native JNI bindings for the GNU Multiple Precision Arithmetic Library (GMP) to accelerate cryptographic operations in I2P, including:
modPow)modPowCT) - resistant to timing attacksmodInverse)| Component | Version |
|---|---|
| GMP | 6.3.0 |
| JBIGI | 4 |
The JBIGI version can be queried at runtime via nativeJbigiVersion().
libjbigi-linux-none_64.so - Generic 64-bit Linux build (GMP 6.3.0)jbigi-windows-none_64.dll - Generic 64-bit Windows build (GMP 6.3.0)The product is 64-bit only. All binaries carry a _64 suffix (for jbigi) or
x86_64 (for jcpuid).
none core2 corei coreisbr coreihwl coreibwl
athlon64 k10 bobcat jaguar bulldozer piledriver steamroller excavator
atom nano pentium4 zen zen2 zen3 skylake silvermont goldmont
armv8 armv8.2 cortex-a72 cortex-a76
none core2 corei coreisbr coreihwl armv8
Same architectures as Linux (compiled via MinGW cross-compilation)
none atom nano k10 pentium4 core2 corei coreisbr coreihwl
bobcat bulldozer piledriver
-fPIC compatibilitylibjbigi-linux-viac3.sojbigi-win-athlon64.dlllibjcpuid-x86-linux.so to pure C (removed libg++.so.5 dependency)libjbigi-linux-athlon64.soTo rebuild jbigi for your specific architecture:
# Linux 64-bit
cd core/c/jbigi
./build-linux64.sh -a
# Windows 64-bit (cross-compile with MinGW)
./build-win64.sh -a
# ARM64 (cross-compile with aarch64-linux-gnu-gcc)
./build-arm64.sh -a
For more options, see core/c/jbigi/README.md.
The library naming follows {lib}jbigi-{OS}-{CPU}.{ext}:
| OS | Prefix | Extension |
|---|---|---|
| Linux | libjbigi | .so |
| FreeBSD | libjbigi | .so |
| macOS | libjbigi | .jnilib |
| Windows | jbigi | .dll |
The CPUID library at runtime selects the optimal binary for your CPU based on detected features.