Repository navigation
Home
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 |
- Getting Started
- Transport Layer Security (TLS)
- Credentials Manager
- X.509 Certificates and CRLs
- OCSP
- Public Key Cryptography
- AEAD Modes
- The Low Level Interface
- Pipe and Filter Message Processing
- Key Derivation Functions
- PBKDF Algorithms
- Password Hashing
- Random Number Generators
- Memory Container
- Cryptobox
- Format Preserving Encryption
- Secure Remote Password
- BigInt
In-tree notes for this port (not compiled) live under
architecture/.
API docs: GitHub Pages.
- 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
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.
Botan 3.13.0 (D)
TLS / PKI
Keys and primitives
- Public Key Cryptography
- AEAD Modes
- The Low Level Interface
- Pipe and Filter Message Processing
- Key Derivation Functions
- PBKDF Algorithms
- Password Hashing
- Random Number Generators
- Memory Container
- BigInt
Other