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)none pentium pentium2 pentium3 pentium4 pentiumm pentiummmx
k6 k62 athlon geode viac3 viac32
none_64 core2 corei coreisbr coreihwl coreibwl
athlon64 k10 bobcat jaguar bulldozer piledriver steamroller excavator
atom nano pentium4 zen zen2 skylake silvermont goldmont
armv5 armv6 armv7 armv7a armcortex8 armcortex9 armcortex15
armv8 armv8_64 aarch64
core2 corei coreisbr coreihwl coreibwl
Same architectures as Linux (compiled via MinGW cross-compilation)
Same architectures as Linux
-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.