Skip to content
etcimon edited this page Aug 17, 2026 · 8 revisions

Botan (D)

etcimon/botan is a D crypto and TLS library. The DUB package, git tag, and BOTAN_VERSION_* are 3.13.0. The tree is a translation of C++ Botan synced toward the 3.13 line.

Memory comes from memutils (Vector, SecureVector, Unique) instead of the C++ STL. Wrap every new of a Botan class in Unique!T (or another owner). Tests use checkMemutilsRepeat to catch lockless leaks.

The TLS API is still the 1.12-era callback / delegate surface. There is no C++ 3 Callbacks type. A TLS client/server with ALPN, SNI, HTTP/2, TLS 1.2 and opt-in TLS 1.3 lives in vibe.0.

Fact Value
DUB / git tag 3.13.0
BOTAN_VERSION_* 1.12.3 (C++ lineage; do not lie)
Default TLS offer 1.2 (latestTlsVersion() stays 1.2)
TLS 1.3 Compile version(TLS_13), offer TLS_V13, use a policy that accepts 1.3
Default dub config full (include-all). standard is the popular subset without TLS 1.3 / PQC
Compilers DMD 2.099.1+, LDC 1.31+ (CI uses LDC 1.42+). SIMD / AES-NI is LDC x86_64 only

Pages

In-tree notes for this port (not compiled) live under architecture/. API docs: GitHub Pages.

Recommended primitives

  • In motion: TLS 1.2, or TLS 1.3 when both peers opt in
  • Encryption: AES-256/GCM or ChaCha20-Poly1305
  • Hash / MAC: SHA-256 or SHA-512, HMAC-SHA-256
  • Signatures: ECDSA P-256, Ed25519, or RSA-2048+ with PSS
  • Key agreement: X25519 or ECDH P-256; ML-KEM-768 when post-quantum is required

Reading

Know some cryptography before using the library. Especially:

  • Cryptography Engineering — Ferguson, Schneier, Kohno
  • Security Engineering — Ross Anderson
  • Handbook of Applied Cryptography (online)

D-port issues go on this tracker. Defects that also exist in C++ Botan belong at randombit/botan.

Clone this wiki locally