Main Deployment (Google Cloud): https://webauthnlab.tech
Backup Deployment (Render): https://pqcwebauthn.onrender.com
Note: Due to the serverβs automatic shut down during inactivity, a few seconds of cold start is expected.
This project provides an end-to-end platform for exploring WebAuthn user flows secured by post-quantum cryptography. The hosted demo and local setup instructions help you register authenticators, run authentication process, and compare PQC signature suites in a realistic WebAuthn environment. Decoder is integrated for decoding attestation objects, WebAuthn type CBOR responses, authenticator metadata, etc. A FIDO MDS explorer is also built for direct retrieval of authenticator metadata information, and conducting root certificate verification.
Scope - Includes: Python, virtual environment, Flask, python-fido2, and Post-Quantum Crypto (PQC) algorithms. - Currently supporting ML-DSA 44/65/87 for PQC
- 
Windows 10/11 (64-bit)
 - 
macOS (Intel or Apple Silicon)
 
A modern browser with WebAuthn support is required: - Edge, Chrome, Safari, Firefox
- 
Git: (https://git-scm.com/)
 - 
Python 3.12+ (64-bit) with pip (https://www.python.org/downloads/)
 
git clone https://github.com/FeitianTech/postquantum-webauthn-platform.git
cd postquantum-webauthn-platform# Create and activate a virtual environment
py -3.12 -m venv .venv
.\.venv\scripts\activate
# Upgrade pip and install runtime dependencies
python -m pip install --upgrade pip
pip install -r requirements.txt
# Optional: PC/SC smart card extras
pip install "fido2[pcsc]"Windows (PowerShell):
.\.venv\scripts\activatemacOS:
source .venv/bin/activateUsing pip / virtualenv
pip install ".[pqc]"
python -c "import oqs"# Clone liboqs
git clone --branch main https://github.com/open-quantum-safe/liboqs.git
cd liboqs
# Configure build
cmake -S . -B build -DOQS_BUILD_SHARED_LIBS=ON -DOQS_USE_OPENSSL=OFF
# Build in Release mode
cmake --build build --config ReleaseOutput: build\bin\Release\oqs.dll
Copy the DLL into your Python venv so oqs can find it:
copy build\bin\Release\oqs.dll C:\path\to\your\venv\Lib\site-packages\oqs\Or add the folder to your PATH.
# Clone liboqs
git clone --branch main https://github.com/open-quantum-safe/liboqs.git
cd liboqs
# Configure build
cmake -S . -B build -DOQS_BUILD_SHARED_LIBS=ON -DOQS_USE_OPENSSL=OFF
# Build in Release mode
cmake --build build --config Release
# Install the library (requires sudo)
sudo cmake --install buildMake sure you already built and installed liboqs (the C library). Now, clone and install the Python wrapper:
# Go to home directory
cd ~
# Clone liboqs-python
git clone https://github.com/open-quantum-safe/liboqs-python.git
cd liboqs-python
# Install into your active virtual environment
pip install .From your project root (where your .venv is located):
cd ~/postquantum-webauthn-platform
python -c "import oqs; print(oqs.get_version()); print(oqs.get_enabled_sigs())"If installed correctly, you should see something like:
0.14.0-dev
['ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', ...]This indicates the version number and supported algorithms. Make sure every PQC algorithm that you plan to use appears in the list above.
# Install Chocolatey
Set-ExecutionPolicy Bypass -Scope Process -Force; `
  [System.Net.ServicePointManager]::SecurityProtocol = `
  [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; `
  iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
# Install mkcert via Chocolatey
choco install mkcert -yWindows (PowerShell)
cd C:\path\to\your\project
mkcert demo.ftsafe.demomacOS (Terminal)
cd /path/to/your/project
mkcert demo.ftsafe.demodemo.ftsafe.demo.pem
  - demo.ftsafe.demo-key.pem
  Otherwise, the program will fail to run.
Windows (PowerShell)
py -3 -m venv .venv
.\.venv\scripts\activatemacOS
python3 -m venv .venv
source .venv/bin/activatepython server/server/app.pyThe first launch writes a Flask session secret to instance/session-secret.key. Keep that file alongside the application so
multiple restarts reuse the same secret; delete it if you need to rotate the key.
Expected output:
Running on https://demo.ftsafe.demo:5000/Click the link to open the test app in your browser.