# Botan

# Getting Started

If you need to build the library first, start with Building The Library. Some Linux distributions include packages for Botan, so building from source may not be required on your system.

The Index and Search Page may be useful to get started.

## Examples

Examples of usage are included in this documentation, some of which are listed below:

- Block Ciphers

- Cipher Modes

- Hash Functions

- KDFs

- MACs

- PBKDFs

- Key Agreement

- ECDSA

- ML-KEM

- RSA

- XMSS

- Stream Ciphers

- TLS Client

- TLS Client (PQC/hybrid)

- HTTPS Client

- TLS Server

- X.509

You’ll find additional examples of usage in the src/examples directory.

An additional source for example code is in the implementation of the command line interface, which was intentionally written to act as practical examples of usage.

## Books and other references

You should have some knowledge of cryptography before trying to use the library. This is an area where it is very easy to make mistakes, and where things are often subtle and/or counterintuitive. Obviously the library tries to provide things at a high level precisely to minimize the number of ways things can go wrong, but naive use will almost certainly not result in a secure system.

Especially recommended are:

- Cryptography Engineering by Niels Ferguson, Bruce Schneier, and Tadayoshi Kohno

- Security Engineering – A Guide to Building Dependable Distributed Systems by Ross Anderson

- Handbook of Applied Cryptography by Alfred J. Menezes, Paul C. Van Oorschot, and Scott A. Vanstone

If you’re doing something non-trivial or unique, you might want to at the very least ask for review/input at a place such as the cryptography stack exchange. And (if possible) pay a professional cryptographer or security company to review your design and code.