Skip to content
This repository was archived by the owner on Jun 18, 2026. It is now read-only.

APTlantis/AegisDesktop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SonarQube Cloud

Bugs Code Smells Reliability Rating Security Rating Vulnerabilities

Quality Gate Status Windows App SDK C++ WinUI 3 Platform


Aegis

A post-quantum cryptographic keyring manager for Windows. Aegis stores and manages public/private key pairs inside a local AES-256-GCM encrypted vault, with full support for NIST PQC standard algorithms alongside traditional cryptography.


Features

Key Generation

  • Post-Quantum KEMs — ML-KEM-512, ML-KEM-768, ML-KEM-1024 (NIST FIPS 203)
  • Post-Quantum Signatures — ML-DSA-44, ML-DSA-65, ML-DSA-87 (NIST FIPS 204), Falcon-512, Falcon-1024
  • Traditional Algorithms — RSA (2048 / 4096-bit), Ed25519, Curve25519 (X25519)

Encryption & Signatures

  • Hybrid PQ Encryption — ML-KEM key encapsulation + AES-256-GCM payload encryption
  • Traditional PGP Encryption — RSA-OAEP, ephemeral-static X25519 + AES-256-GCM
  • Digital Signatures — PQ (ML-DSA, Falcon) and traditional (RSA-SHA256, Ed25519)

Key Export Formats

  • PEM — OpenSSL-compatible PKCS#8 / SubjectPublicKeyInfo
  • OpenPGP / GnuPG — compatible ASCII-armored format for RSA and Ed25519 keys
  • Aegis Armor — custom CRC24-checksummed Base64 armor format
  • Hex / Base64 — raw byte inspection

Key Import Formats

  • PEM — traditional RSA, Ed25519, and X25519 public/private key material
  • OpenPGP — limited v4 RSA and Ed25519 public keys plus unencrypted secret keys
  • Aegis Armor — Aegis-native armored key blocks with CRC24 validation

Vault

  • Master-password protected vault stored at %LOCALAPPDATA%\Aegis\keyring.enc
  • Key derived with PBKDF2-HMAC-SHA256 (100,000 iterations) + 16-byte random salt
  • Vault content encrypted with AES-256-GCM; salt, IV, and authentication tag prepended to ciphertext
  • In-memory session key zeroed with SecureZeroMemory on lock
  • Read-only vault health inspection for malformed, truncated, missing, and valid-looking vault files
  • Encrypted vault backup/import, purge, and master password change workflows

Keyring Workflow

  • Search, algorithm-family filtering, lifecycle filtering, and key sorting
  • Editable lifecycle state, purpose, provenance/source, notes, tags, and review dates
  • Dashboard review queues and lifecycle counts
  • Persisted settings for lock timeout, lock-on-minimize, export confirmation, clipboard clearing, warning policy, default algorithms, and backup folder

Architecture

Aegis/
├── App.xaml(.h/.cpp)           — WinUI 3 application entry point
├── MainWindow.xaml(.h/.cpp)    — Navigation shell: Dashboard, Keygen,
│                                  Keyring, Crypto, Settings views
├── CryptoService.h/.cpp        — All cryptographic operations
│   ├── Key generation          (OpenSSL EVP + liboqs)
│   ├── Hybrid PQ encryption    (ML-KEM + AES-256-GCM)
│   ├── PGP-style encryption    (RSA-OAEP, X25519 ECDH + AES-256-GCM)
│   ├── Digital signatures      (ML-DSA, Falcon, RSA, Ed25519)
│   ├── Key formatting          (PEM, OpenPGP, Aegis Armor, Base64, Hex)
│   └── Symmetric vault crypto  (PBKDF2 + AES-256-GCM)
├── StorageService.h/.cpp       — Encrypted JSON vault read/write
│   ├── Keyring lifecycle       (create, unlock, lock)
│   ├── Vault health/recovery   (safe inspection, atomic writes)
│   └── Key CRUD + metadata     (add, list, update, delete, decrypt private key)
├── AppSettings.h/.cpp          — Non-secret persisted operator preferences
├── AegisTests/                 — Visual Studio unit tests for crypto and storage
├── pch.h                       — Precompiled header (WinRT, WIL)
└── test_crypto.cpp             — Standalone cryptography smoke tests

Dependencies

Library Purpose
OpenSSL RSA, Ed25519, X25519, AES-256-GCM, PBKDF2, PEM, Base64
liboqs ML-KEM, ML-DSA, Falcon (NIST PQC round-4 / FIPS standards)
Windows App SDK 2.1 WinUI 3 runtime, XAML, WinRT projection
C++/WinRT WinRT language projection
WIL Windows Implementation Library helpers

Requirements

  • Windows 10 version 1809 (build 17763) or later
  • Visual Studio 2022 v17.4+ with the Desktop development with C++ and Windows application development workloads
  • OpenSSL static libraries built for the target platform (x64 / ARM64)
  • liboqs static library built for the target platform

Building

  1. Clone the repository

    git clone https://github.com/APTlantis/AegisDesktop.git
    cd AegisDesktop
    
  2. Build OpenSSL (static, no-shared) and liboqs for your target platform and point the project's include/library paths at them. The .vcxproj expects them under external\.

  3. Restore NuGet packages

    nuget restore Aegis.sln
    
  4. Open Aegis.sln in Visual Studio 2022 and build in Release | x64.


Local MSIX Release

Aegis v0.2.0 has a private local MSIX release path for installing the app on this machine without publishing a GitHub release. Dependency provenance is recorded in docs/dependency-provenance.md, and platform validation status is recorded in docs/platform-validation-matrix.md.

Build the local package:

powershell -ExecutionPolicy Bypass -File installer\build-msix.ps1 -Version 0.2.0.0 -Configuration Release -Platform x64

Install the signed local package:

powershell -ExecutionPolicy Bypass -File installer\install-msix.ps1 -Version 0.2.0.0

The package is signed with a self-signed local certificate and is intended for local development use only. Uninstalling the MSIX removes the app package, not %LOCALAPPDATA%\Aegis\keyring.enc.


Usage

  1. Launch Aegis.exe.
  2. On first run, enter a master password (minimum 8 characters) and click Enter Password Above to Create Vault to initialize the encrypted vault.
  3. On subsequent runs, enter your master password and click Unlock Keyring.
  4. Navigate the sidebar:
    • Dashboard — summary of stored keys
    • Keygen — generate new PQ or traditional key pairs
    • Keyring — browse, export, and delete stored keys
    • Crypto — encrypt, decrypt, sign, and verify data using keys from the ring
  5. Click the lock icon to wipe the session key from memory and return to the unlock screen.

Roadmaps and Design Notes


Security Notes

  • Private keys are stored encrypted at rest inside the vault; the vault key is never persisted.
  • The session key exists only in memory and is wiped with SecureZeroMemory on lock.
  • Post-quantum algorithms implemented via Open Quantum Safe / liboqs and conform to NIST FIPS 203 (ML-KEM) and FIPS 204 (ML-DSA).
  • Backend Cryptographic Orchestration: Aegis triggers system-installed tools (gpg.exe, openssl.exe) to perform operations. Users are responsible for verifying the integrity of these external binaries; Aegis scans and computes host binary hashes to assist in auditing.
  • Experimental PQ OpenPGP: Standard OpenPGP (RFC 9580) does not define standard packets for post-quantum algorithms. Pure PQ keys inside Aegis are non-standard and use custom native serialization formats. Do not attempt to use them as standard interoperable PGP keys.
  • This project is under active development and has not been independently audited. Do not use it for production key material until a security review has been completed.

License

MIT — see LICENSE for details.

About

No description, website, or topics provided.

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors