Skip to content

KeePass Core

Fork of KeePass 2.61.1, migrated to .NET 10 only (no .NET Framework, no Mono).

The main goal is a multiplatform library (Windows, Linux, macOS) that reads and writes KeePass databases, free of any user interface. The applications around it are demos that prove the library works.

Codefloe

KeePass Core on Wine

Rules

  • Never break KDBX 4.x databases. The most obvious. Files written by KeePass Core must still open in KeePassXC, KeePassDX, Strongbox, KeePass 2.x, ...
  • KDBX 4.x only. KeePass 1.x (KDB) and KDBX 3.1 and older are being removed. This is a deliberate choice. I don't want to maintain legacy code, start from fresh, latest implementation.
  • Prefer the stronger, modern option (Argon2, AES-256, ChaCha20) wherever the format allows it.
  • No native C/C++ library to ship. Only calls to libraries of the operating system.

Projects

Project Role Platforms Roadmap
KeePassCoreLib The library (main goal) Windows, Linux, macOS Roadmap
KeePassCore WinForms application Windows (tested on Wine) Roadmap
KeePassCore.CLI Terminal application with TUI library Windows, Linux, macOS (tested on Linux) Roadmap
KeePassCore.Security.Memory Protection of secrets in process memory, future NuGet package Windows, Linux, macOS (tested on Linux) Roadmap
TrlUtil Translation tool of the WinForms application Windows Roadmap

Items shared by several projects: repository roadmap.

Versions

  • 3.0.x -> 3.3.x - Mass refactoring. Pre-alpha, crashing behavior, regressions everywhere
  • 3.4.x -> 3.7.x - Code improvement, bug fixes, tests, cleanup, memory leaks
  • 3.8.x -> 3.9.x - Polish, open to issues and merge requests
  • 4.0.x -> ∞ - Production ready

Status

  • .NET 10 only, net481 target removed. I don't want to maintain dual code.
  • CancellationToken instead of the obsolete Thread.Abort (see SYSLIB0006)
  • Code Access Security code removed (see SYSLIB0003)
  • Mono code removed (workarounds, Unix branches of the WinForms application, libgcrypt)
  • .editorconfig file for coherence, and dotnet format utility
  • WinForms application can still run on Wine (crashes can still happen)
  • WinForms application settings in JSON, with the enforced configuration
  • No graphics library in the library; SkiaSharp in the WinForms application. The library has not need to graphics manipulation
  • Argon2d is the default key derivation for new databases, managed code only (see Security)
  • Atomic save: a failed save never loses the database.
  • Terminal application: create, open, browse, edit and save databases. Basic layout. For now.
  • Library free of Windows-specific code (DPAPI and the Windows user account key remain)
  • HttpClient / FluentFTP instead of the obsolete web code (draft, not used yet). WebRequest is obsolete.
  • KDBX 3.1 and older removed (WinForms application done; library writes KDBX 4 only, still reads KDBX 3.1)
  • Memory protection of the library based on KeePassCore.Security.Memory
  • Unit tests (in progress: library, WinForms helpers, memory protection)
  • Debug.Assert replaced by tests, exceptions or logs
  • CI (Forgejo Actions) on Windows, Linux and macOS
  • Run on real Windows (only Wine so far)

Pages

This is a hobby project, with everything that this implies.