QuantaCore SDK Installation Guide

QCSDK-INS-001 Rev 1.0 — January 2026

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 #

ComponentMinimumRecommended
Operating SystemLinux (kernel 5.4+), Windows 10Ubuntu 22.04 LTS, RHEL 9, Windows 11
Architecturex86_64 or ARM64 (aarch64)x86_64 with AVX2
Memory4 GB RAM8 GB+ for development builds
Disk Space500 MB (runtime)2 GB (full SDK + build tools)
PCIe SlotGen3 x16 (for hardware)Gen4 x16 (full bandwidth)
Power Supply75W auxiliary (for hardware)See QUAC 100 Guide

Supported Platforms

PlatformArchitectureDriverSimulator
Ubuntu 20.04 / 22.04 / 24.04x86_64, aarch64✅ DKMS✅
Debian 11 / 12x86_64, aarch64✅ DKMS✅
RHEL 8 / 9, Rocky, Almax86_64, aarch64✅ kmod✅
Fedora 38+x86_64✅ kmod✅
SUSE 15 SP4+x86_64✅ kmod✅
Windows 10 / 11x86_64✅ KMDF✅
Windows Server 2019 / 2022x86_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:

LocationContents
/usr/local/include/quac100*.hC/C++ header files (9 headers)
/usr/local/lib/libquac100.soShared library
/usr/local/lib/libquac100.aStatic library
/usr/local/bin/quac100-cliCommand-line tool
/usr/local/bin/quac100-benchBenchmark tool
/usr/local/bin/quac100-diagDiagnostics 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:

LanguagePackageInstall CommandRequirements
Pythonquantacore-sdkpip install quantacore-sdkPython 3.8+
Rustquantacore-sdkcargo add quantacore-sdkRust 1.70+
Goquantacore-gogo get github.com/dyber-pqc/quantacore-goGo 1.21+
Javaquantacore-sdkMaven Central: com.dyber:quantacore-sdk:1.0.0Java 11+
Node.js@dyber/quantacorenpm install @dyber/quantacoreNode 18+
C#Dyber.QuantaCoredotnet 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.

ImageSizeUse Case
dyber/quantacore-sdk:1.0.01.2 GBFull SDK with all build tools and simulator
dyber/quantacore-sim:1.0.0340 MBSimulator only (CI/CD, development)
dyber/quantacore-runtime:1.0.085 MBProduction 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

DependencyVersionRequired For
CMake3.16+Build system (required)
C Compiler (C11)GCC 7+, Clang 6+, MSVC 2019+Core library (required)
C++ Compiler (C++17)Same as aboveC++ bindings
Python3.8+Python bindings
Rust1.70+Rust bindings
OpenSSL3.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 #

OptionDefaultDescription
BUILD_SHARED_LIBSONBuild shared (.so/.dll) libraries
QUAC_BUILD_SIMULATORONInclude software simulator
QUAC_BUILD_TESTSONBuild test suite (unit, integration, KAT)
QUAC_BUILD_EXAMPLESONBuild example programs
QUAC_BUILD_TOOLSONBuild CLI tools (quac100-cli, bench, diag)
QUAC_BUILD_OPENSSLONBuild OpenSSL 3.x provider module
QUAC_BUILD_PKCS11ONBuild PKCS#11 module
QUAC_BUILD_PYTHONONBuild Python ctypes bindings
QUAC_BUILD_RUSTOFFBuild Rust crate
QUAC_BUILD_JAVAOFFBuild Java JNI bindings
QUAC_BUILD_GOOFFBuild Go bindings (cgo)
QUAC_BUILD_DOCSOFFBuild Doxygen documentation
QUAC_ENABLE_FIPS_MODEOFFEnable FIPS 140-3 strict mode
QUAC_ENABLE_ZEROIZEONSecure memory zeroization on free
QUAC_ENABLE_COVERAGEOFFEnable 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