charm

December 19, 2025 ยท View on GitHub

A tiny, self-contained cryptography library, implementing authenticated encryption and keyed hashing.

Charm uses the Xoodoo[12] (paper, presentation) permutation, which can be replaced by AES-based simpira384, Areion, or Gimli, in a duplex mode.

The Xoodoo implementations in Charm are formally verified against a Cryptol specification.

Users:

  • dsvpn: a Dead Simple VPN, designed to address the most common use case for using a VPN.

Other implementations:

  • zig-charm: an implementation of Charm in the Zig language.
  • charm.js: a JavaScript (TypeScript) implementation.
  • go-charm: a Go implementation.