QuantaCore SDK Installation Guide
This guide covers driver installation, SDK setup, and language binding configuration for all supported platforms. For hardware-specific installation (physically inserting the QUAC 100 card), see the QUAC 100 Hardware Installation Guide.
System Requirements #
| Component | Minimum | Recommended |
|---|---|---|
| Operating System | Linux (kernel 5.4+), Windows 10 | Ubuntu 22.04 LTS, RHEL 9, Windows 11 |
| Architecture | x86_64 or ARM64 (aarch64) | x86_64 with AVX2 |
| Memory | 4 GB RAM | 8 GB+ for development builds |
| Disk Space | 500 MB (runtime) | 2 GB (full SDK + build tools) |
| PCIe Slot | Gen3 x16 (for hardware) | Gen4 x16 (full bandwidth) |
| Power Supply | 75W auxiliary (for hardware) | See QUAC 100 Guide |
Supported Platforms
| Platform | Architecture | Driver | Simulator |
|---|---|---|---|
| Ubuntu 20.04 / 22.04 / 24.04 | x86_64, aarch64 | ✅ DKMS | ✅ |
| Debian 11 / 12 | x86_64, aarch64 | ✅ DKMS | ✅ |
| RHEL 8 / 9, Rocky, Alma | x86_64, aarch64 | ✅ kmod | ✅ |
| Fedora 38+ | x86_64 | ✅ kmod | ✅ |
| SUSE 15 SP4+ | x86_64 | ✅ kmod | ✅ |
| Windows 10 / 11 | x86_64 | ✅ KMDF | ✅ |
| Windows Server 2019 / 2022 | x86_64 | ✅ KMDF | ✅ |
| macOS 12+ (Monterey+) | x86_64, arm64 | ⌠| ✅ |
Linux Driver Installation #
Note: Skip driver installation if you only need the software simulator.
Ubuntu / Debian (DKMS)
# Install prerequisites
sudo apt update
sudo apt install dkms linux-headers-$(uname -r) build-essential
# Install from Dyber repository (recommended)
sudo add-apt-repository ppa:dyber/quantacore
sudo apt update
sudo apt install quac100-driver-dkms
# Or install from tarball
tar xzf quac100-driver-1.0.0-linux.tar.gz
cd quac100-driver-1.0.0/
sudo ./install.sh
# Verify
lspci | grep -i dyber
lsmod | grep quac100
ls /dev/quac100*
RHEL / Fedora / CentOS (kmod)
# Install prerequisites
sudo dnf install kernel-devel kernel-headers gcc make elfutils-libelf-devel
# Install from Dyber repository
sudo dnf config-manager --add-repo https://rpm.dyber.com/quantacore.repo
sudo dnf install quac100-driver
# Load module
sudo modprobe quac100
# Enable at boot
echo "quac100" | sudo tee /etc/modules-load.d/quac100.conf
udev Rules (Permissions)
# Create quac100 group for non-root access
sudo groupadd -r quac100
sudo usermod -aG quac100 $USER
# Install udev rule (auto-installed with driver package)
echo 'SUBSYSTEM=="quac100", GROUP="quac100", MODE="0660"' | \
sudo tee /etc/udev/rules.d/99-quac100.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
# Log out and back in for group to take effect
Linux SDK Installation #
Package Manager (Recommended)
# Ubuntu / Debian
sudo add-apt-repository ppa:dyber/quantacore
sudo apt update
sudo apt install quantacore-sdk quantacore-sdk-dev
# RHEL / Fedora
sudo dnf config-manager --add-repo https://rpm.dyber.com/quantacore.repo
sudo dnf install quantacore-sdk quantacore-sdk-devel
# Verify SDK
quac100-cli --version
pkg-config --cflags --libs quac100
Tarball Installation
# Download and extract
tar xzf quantacore-sdk-1.0.0-linux-x86_64.tar.gz
cd quantacore-sdk-1.0.0/
# Install to /usr/local
sudo ./install.sh
# Or install to custom prefix
sudo ./install.sh --prefix=/opt/quantacore
# Update linker cache
sudo ldconfig
The SDK installs the following components:
| Location | Contents |
|---|---|
/usr/local/include/quac100*.h | C/C++ header files (9 headers) |
/usr/local/lib/libquac100.so | Shared library |
/usr/local/lib/libquac100.a | Static library |
/usr/local/bin/quac100-cli | Command-line tool |
/usr/local/bin/quac100-bench | Benchmark tool |
/usr/local/bin/quac100-diag | Diagnostics tool |
/usr/local/lib/ossl-modules/ | OpenSSL 3.x provider module |
/usr/local/lib/pkcs11/ | PKCS#11 module |
Windows Driver Installation #
Note: Skip driver installation if you only need the software simulator.
The QUAC 100 Windows driver uses the KMDF (Kernel-Mode Driver Framework) and includes a CNG (Cryptography Next Generation) provider for system-wide integration.
# Option 1: Run installer (recommended)
# Download QUAC100_Driver_Setup.exe from dyber.com/downloads
# Run as Administrator → follow wizard → reboot when prompted
# Option 2: PowerShell script
cd drivers\windows
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\Install-QUAC100Driver.ps1
# Verify in Device Manager
# Open Device Manager → Security Devices → "Dyber QUAC 100 Cryptographic Accelerator"
# Verify from PowerShell
Get-PnpDevice -FriendlyName "Dyber QUAC*"
Windows SDK Installation #
MSI Installer (Recommended)
# Download from dyber.com/downloads
# Run QuantaCore-SDK-1.0.0-x64.msi
# Default install: C:\Program Files\Dyber\QuantaCore SDK\
# Adds to PATH automatically. Verify:
quac100-cli --version
vcpkg
vcpkg install quantacore-sdk:x64-windows
Visual Studio Integration
# Open the provided Visual Studio solution
start quantacore-sdk.sln
# Or add to CMake project:
find_package(QuantaCore REQUIRED)
target_link_libraries(myapp PRIVATE QuantaCore::quac100)
macOS (Simulator Only) #
Note: macOS supports the software simulator only. No hardware driver is available for macOS. All cryptographic operations work identically in simulator mode.
# Homebrew (recommended)
brew tap dyber/quantacore
brew install quantacore-sdk
# From source
git clone https://github.com/dyber-pqc/quantacore-sdk.git
cd quantacore-sdk && mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DQUAC_BUILD_SIMULATOR=ON ..
make -j$(sysctl -n hw.ncpu)
sudo make install
Language Bindings #
All language bindings require the native C library (libquac100) to be installed first. Install the bindings for your preferred language:
| Language | Package | Install Command | Requirements |
|---|---|---|---|
| Python | quantacore-sdk | pip install quantacore-sdk | Python 3.8+ |
| Rust | quantacore-sdk | cargo add quantacore-sdk | Rust 1.70+ |
| Go | quantacore-go | go get github.com/dyber-pqc/quantacore-go | Go 1.21+ |
| Java | quantacore-sdk | Maven Central: com.dyber:quantacore-sdk:1.0.0 | Java 11+ |
| Node.js | @dyber/quantacore | npm install @dyber/quantacore | Node 18+ |
| C# | Dyber.QuantaCore | dotnet add package Dyber.QuantaCore | .NET 6+ |
| C++ | libquac100++ | Included with SDK (system package) | C++17 compiler |
# Python — verify
python -c "import quantacore; print(quantacore.__version__)"
# Rust — add to Cargo.toml
[dependencies]
quantacore-sdk = "1.0"
# Go — verify
go list -m github.com/dyber-pqc/quantacore-go
Docker & Containers #
Pre-built Docker images are available for development, testing, and production deployment.
| Image | Size | Use Case |
|---|---|---|
dyber/quantacore-sdk:1.0.0 | 1.2 GB | Full SDK with all build tools and simulator |
dyber/quantacore-sim:1.0.0 | 340 MB | Simulator only (CI/CD, development) |
dyber/quantacore-runtime:1.0.0 | 85 MB | Production runtime (minimal footprint) |
# Development with simulator
docker run -it dyber/quantacore-sdk:1.0.0 bash
quac100-cli --simulator info
# With hardware passthrough (requires host driver)
docker run -it --device=/dev/quac100_0 dyber/quantacore-runtime:1.0.0
# Multi-stage Dockerfile for production
FROM dyber/quantacore-sdk:1.0.0 AS builder
COPY . /app && cd /app && mkdir build && cd build
RUN cmake .. && make
FROM dyber/quantacore-runtime:1.0.0
COPY --from=builder /app/build/myapp /usr/local/bin/
Building from Source #
Prerequisites
| Dependency | Version | Required For |
|---|---|---|
| CMake | 3.16+ | Build system (required) |
| C Compiler (C11) | GCC 7+, Clang 6+, MSVC 2019+ | Core library (required) |
| C++ Compiler (C++17) | Same as above | C++ bindings |
| Python | 3.8+ | Python bindings |
| Rust | 1.70+ | Rust bindings |
| OpenSSL | 3.0+ | OpenSSL provider module |
# Clone and build
git clone https://github.com/dyber-pqc/quantacore-sdk.git
cd quantacore-sdk
mkdir build && cd build
# Linux / macOS
cmake -DCMAKE_BUILD_TYPE=Release \
-DQUAC_BUILD_TESTS=ON \
-DQUAC_BUILD_EXAMPLES=ON \
-DQUAC_BUILD_SIMULATOR=ON \
-DQUAC_BUILD_OPENSSL=ON \
-DQUAC_BUILD_PYTHON=ON \
..
cmake --build . -j$(nproc)
ctest --output-on-failure
sudo cmake --install .
# Windows (Visual Studio 2022)
cmake -G "Visual Studio 17 2022" -A x64 ^
-DQUAC_BUILD_TESTS=ON ^
-DQUAC_BUILD_EXAMPLES=ON ..
cmake --build . --config Release
ctest -C Release --output-on-failure
cmake --install . --config Release
CMake Build Options #
| Option | Default | Description |
|---|---|---|
BUILD_SHARED_LIBS | ON | Build shared (.so/.dll) libraries |
QUAC_BUILD_SIMULATOR | ON | Include software simulator |
QUAC_BUILD_TESTS | ON | Build test suite (unit, integration, KAT) |
QUAC_BUILD_EXAMPLES | ON | Build example programs |
QUAC_BUILD_TOOLS | ON | Build CLI tools (quac100-cli, bench, diag) |
QUAC_BUILD_OPENSSL | ON | Build OpenSSL 3.x provider module |
QUAC_BUILD_PKCS11 | ON | Build PKCS#11 module |
QUAC_BUILD_PYTHON | ON | Build Python ctypes bindings |
QUAC_BUILD_RUST | OFF | Build Rust crate |
QUAC_BUILD_JAVA | OFF | Build Java JNI bindings |
QUAC_BUILD_GO | OFF | Build Go bindings (cgo) |
QUAC_BUILD_DOCS | OFF | Build Doxygen documentation |
QUAC_ENABLE_FIPS_MODE | OFF | Enable FIPS 140-3 strict mode |
QUAC_ENABLE_ZEROIZE | ON | Secure memory zeroization on free |
QUAC_ENABLE_COVERAGE | OFF | Enable code coverage instrumentation |
Verifying Installation #
# 1. Check CLI tools
quac100-cli --version
quac100-bench --version
quac100-diag --version
# 2. Test simulator
quac100-cli --simulator info
# 3. Run self-tests
quac100-diag --simulator --fips-test
# 4. Quick benchmark
quac100-bench --simulator --algorithm ml-kem-768 --iterations 1000
# 5. Check C compilation
echo '#include <quac100.h>
int main() { return quac_version_hex(); }' > test.c
gcc -o test test.c -lquac100 && echo "✅ Build OK" || echo "⌠Build failed"
rm -f test test.c
# 6. Check Python binding
python -c "
import quantacore
quantacore.initialize(flags=quantacore.InitFlags.SIMULATOR)
print('Version:', quantacore.get_version())
dev = quantacore.open_first_device()
kem = dev.kem()
kp = kem.generate_keypair(quantacore.KemAlgorithm.ML_KEM_768)
print('✅ ML-KEM-768 keygen OK, pk =', len(kp.public_key), 'bytes')
dev.close()
quantacore.cleanup()
"
# 7. Check hardware (if installed)
quac100-cli list
quac100-cli info
quac100-diag --full-report
Uninstalling #
# Ubuntu / Debian
sudo apt remove quantacore-sdk quantacore-sdk-dev quac100-driver-dkms
# RHEL / Fedora
sudo dnf remove quantacore-sdk quantacore-sdk-devel quac100-driver
# From source (build directory)
cd build
sudo cmake --build . --target uninstall
# macOS
brew uninstall quantacore-sdk
# Windows
# Use Add/Remove Programs → "QuantaCore SDK"
# Or: msiexec /x QuantaCore-SDK-1.0.0-x64.msi
# Python binding
pip uninstall quantacore-sdk
Was this page helpful? Send feedback to docs@dyber.org