Botan
3.11.1
Crypto and TLS for C&
Topics
Here is a list of all topics with brief descriptions:
Build Information
Build version information
Build configurations
Enabled modules and API versions
Ascon-permutation
Ascon-permutation
ASN.1 Handling
ASN.1 Handling
: Process/encode/decode ASN.1 data structures and map OIDs
Base Types
Base Types
: Defines some high level types
Block Ciphers
Block Ciphers
: Implementations of block cipher algorithms
AES
AES
AES ARMv8
AES ARMv8
: AES using ARMv8 crypto instructions
AES-NI
AES-NI
: AES using AES-NI and SIMD instructions
AES Power8
AES Power8
: AES using Power8 instructions
AES-VAES
AES-VAES
: AES using VAES
AES Vector Permutation
AES Vector Permutation
: AES using Vector Permutation Instructions
ARIA
ARIA
ARIA AVX-512/GFNI
ARIA AVX-512/GFNI
ARIA using hardware AES instructions
ARIA using hardware AES instructions
Blowfish
Blowfish
Camellia
Camellia
Camellia using GFNI/AVX2
Camellia using GFNI/AVX2
Camellia AVX-512/GFNI
Camellia AVX-512/GFNI
Camellia using hardware AES instructions
Camellia using hardware AES instructions
Cascade
Cascade
CAST-128
CAST-128
DES
DES
GOST 28147-89
GOST 28147-89
IDEA
IDEA
IDEA AVX2
IDEA AVX2
: IDEA using AVX2 SIMD instructions
IDEA SSE2
IDEA SSE2
: IDEA using SSE2 SIMD instructions
Kuznyechik
Kuznyechik
Lion
Lion
Noekeon
Noekeon
Noekeon SIMD
Noekeon SIMD
: Noekeon using SIMD instructions
SEED
SEED
SEED AVX-512/GFNI
SEED AVX-512/GFNI
SEED using hardware AES instructions
SEED using hardware AES instructions
Serpent
Serpent
Serpent AVX2
Serpent AVX2
: Serpent using AVX2 instructions
Serpent AVX512
Serpent AVX512
: Serpent using AVX512 instructions
Serpent SIMD
Serpent SIMD
: Serpent using SIMD instructions
SHACAL-2
SHACAL-2
SHACAL-2 ARMv8
SHACAL-2 ARMv8
: SHACAL-2 using ARMv8 crypto instructions
SHACAL-2 AVX2
SHACAL-2 AVX2
: SHACAL-2 using AVX2 instructions
SHACAL-2 AVX512
SHACAL-2 AVX512
: SHACAL-2 using AVX512 instructions
SHACAL-2 SIMD
SHACAL-2 SIMD
: SHACAL-2 using SIMD instructions
SHACAL-2 X86
SHACAL-2 X86
: SHACAL-2 using SSE instructions on x86
SM4
SM4
SM4 ARMv8
SM4 ARMv8
: SM4 using ARMv8 crypto instructions
SM4 AVX-512/GFNI
SM4 AVX-512/GFNI
SM4 GFNI
SM4 GFNI
: SM4 using Intel GFNI
SM4 using hardware AES instructions
SM4 using hardware AES instructions
SM4 x86
SM4 x86
: SM4 using Intel SM4 extension
Threefish-512
Threefish-512
Twofish
Twofish
Twofish AVX-512
Twofish AVX-512
: Twofish using AVX-512 and GFNI instructions
Codecs
Codecs
: Helpers for data encoding and decoding
Base32
Base32
: Base32 encoder and decoder
Base58
Base58
: Base58 encoder and decoder
Base64
Base64
: Base64 encoder and decoder
Hex
Hex
: Hex encoder and decoder
Compatibility
Compatibility
: Helpers for compatibility with other libraries
libsodium API
libsodium API
: Partial compatibility implementation of the libsodium API
Compression
Compression
: Wrappers for compression algorithms
BZIP2
BZIP2
ZLib
ZLib
ZLib
ZLib
RSA encryption padding schemes
RSA encryption padding schemes
: Implementations of public key encryption padding schemes
OAEP
OAEP
PKCS #1 v1.5 encryption padding
PKCS #1 v1.5 encryption padding
EME Raw Padding
EME Raw Padding
Entropy Collection
Entropy Collection
: Implementations of entropy sources
getentropy
getentropy
: Wrapper for BSD's getentropy system call
RDSEED
RDSEED
: Wrapper for Intel's RDSEED instruction
Win32 Statistics
Win32 Statistics
: Entropy collection based on Windows statistics counters
Foreign Function Interface
Foreign Function Interface
: C API for
Botan
's functionality
Filters
Filters
: Filter/Pipe API for data transformations
Unix File Descriptor Pipe I/O
Unix File Descriptor Pipe I/O
Hashes
Hashes
: Implementations of hash algorithms
Ascon-Hash256
Ascon-Hash256
BLAKE2b
BLAKE2b
BLAKE2s
BLAKE2s
Checksums
Checksums
: Implementations of checksum algorithms
Adler32
Adler32
CRC24
CRC24
CRC32
CRC32
Comb4P
Comb4P
GOST 34.11
GOST 34.11
Keccak
Keccak
: Pre-standard version of SHA-3 originally proposed during NIST competition
MD4
MD4
MD5
MD5
Merkle-Damgård Helper
Merkle-Damgård Helper
: Helper class for implementing Merkle-Damgård hashes
Parallel Hashes
Parallel Hashes
: Base class for parallel hash functions
RIPEMD-160
RIPEMD-160
SHA-1
SHA-1
SHA-1 ARMv8
SHA-1 ARMv8
: SHA-1 using ARMv8 crypto instructions
SHA-1 AVX2/BMI2
SHA-1 AVX2/BMI2
: SHA-1 using AVX2/BMI2 instructions
SHA-1 SIMD
SHA-1 SIMD
: SHA-1 using SIMD instructions
SHA-1 SIMD
SHA-1 SIMD
: SHA-1 using SIMD instructions on x86
SHA-256 and SHA-224
SHA-256 and SHA-224
SHA-256 ARMv8
SHA-256 ARMv8
: SHA-256 using ARMv8 crypto instructions
SHA-256 using AVX2/BMI2
SHA-256 using AVX2/BMI2
: SHA-256 using AVX2/BMI2 instructions
SHA-256 using SIMD
SHA-256 using SIMD
: SHA-256 using SIMD instructions
SHA-256 SIMD
SHA-256 SIMD
: SHA-256 using SIMD instructions on x86
SHA-512 and SHA-384
SHA-512 and SHA-384
SHA-512 ARMv8
SHA-512 ARMv8
: SHA-512 using ARMv8 crypto instructions
SHA-512 AVX2/BMI2
SHA-512 AVX2/BMI2
: SHA-512 using AVX2/BMI2 instructions
SHA-512 AVX512/BMI2
SHA-512 AVX512/BMI2
: SHA-512 using AVX512/BMI2 instructions
SHA-512 SHA-NI
SHA-512 SHA-NI
: SHA-512 using x86 instructions
SHA-3
SHA-3
SHAKE
SHAKE
Skein-512
Skein-512
SM3
SM3
SM3 ARMv8
SM3 ARMv8
: SM3 using ARMv8 crypto instructions
SM3 using AVX2/BMI2
SM3 using AVX2/BMI2
: SM3 using AVX2/BMI2 instructions
SM3 x86
SM3 x86
: SM3 using Intel SM3 extension
Streebog
Streebog
Truncated Hashes
Truncated Hashes
: Wrapper class to truncate the output of an underlying hash function
Whirlpool
Whirlpool
Whirlpool AVX2
Whirlpool AVX2
Whirlpool using AVX512
Whirlpool using AVX512
: Whirlpool using AVX512 instructions
Hash Function Identification
Hash Function Identification
Key Derivation Functions
Key Derivation Functions
: Implementations of Key Derivation Functions
HKDF
HKDF
KDF1
KDF1
KDF1 (ISO 18033-2)
KDF1 (ISO 18033-2)
KDF2
KDF2
TLS 1.2 PRF
TLS 1.2 PRF
: Implementation of the Pseudo-Random Function as used in TLS 1.2
PRF X9.42
PRF X9.42
NIST SP800-108
NIST SP800-108
NIST SP800-56A
NIST SP800-56A
NIST SP800-56C
NIST SP800-56C
XMD
XMD
: XMD KDF from RFC 9380
Keccak-permutation
Keccak-permutation
Keccak permutation using AVX512
Keccak permutation using AVX512
KECCAK-permutation BMI2
KECCAK-permutation BMI2
: KECCAK-permutation for SHA-3-related functions using BMI2 instructions
Message Authentication Codes
Message Authentication Codes
: Implementations of Message Authentication Codes
Blake2B MAC
Blake2B MAC
CMAC
CMAC
GMAC
GMAC
HMAC
HMAC
KMAC
KMAC
Poly1305
Poly1305
Poly1305 AVX2
Poly1305 AVX2
: Poly1305 using AVX2 instructions
Poly1305 AVX512
Poly1305 AVX512
: Poly1305 using AVX-512 IFMA instructions
SipHash
SipHash
ANSI X9.19 MAC
ANSI X9.19 MAC
Math
Math
: Mathematical helpers; mostly big integer math
Big Integer
Big Integer
: Wrapper classes for handling big integer math
Big Integer (Low-Level)
Big Integer (Low-Level)
: Low level big integer math algorithms
Number Theory
Number Theory
: Number theoretical higher level algorithms for big integer math
Prime Order Curves
Prime Order Curves
: Generalized elliptic curve arithmetic
PCurve brainpool256r1
PCurve brainpool256r1
: brainpool256r1
PCurve brainpool384r1
PCurve brainpool384r1
: brainpool384r1
PCurve brainpool512r1
PCurve brainpool512r1
: brainpool512r1
PCurve frp256v1
PCurve frp256v1
: frp256v1
PCurve generic
PCurve generic
Prime Order Curves Implementation Helpers
Prime Order Curves Implementation Helpers
: Generalized elliptic curve arithmetic
PCurve numsp512d1
PCurve numsp512d1
: numsp512d1
PCurve secp192r1
PCurve secp192r1
: secp192r1
PCurve secp224r1
PCurve secp224r1
: secp224r1
PCurve secp256k1
PCurve secp256k1
: secp256k1
PCurve secp256r1
PCurve secp256r1
: secp256r1
PCurve secp384r1
PCurve secp384r1
: secp384r1
PCurve secp521r1
PCurve secp521r1
: secp521r1
PCurve sm2p256v1
PCurve sm2p256v1
: sm2p256v1
MGF1
MGF1
Miscellaneous
Miscellaneous
: Odds and ends: Algorithms and protocols that don't fit any of the other modules
Crypto Box
Crypto Box
: High-Level API for password-based encryption (deprecated)
FPE FE1
FPE FE1
: Format Preserving Encryption (FE1 scheme)
HOTP/TOTP
HOTP/TOTP
: HMAC/Time based One Time Password implementations
NIST KeyWrap
NIST KeyWrap
: Key Wrapping as described in NIST SP800-38F
RFC 3394 KeyWrap
RFC 3394 KeyWrap
: Key Wrapping as described in RFC 3394
Roughtime
Roughtime
: Authenticated Time Synchronzation Protocol
SRP-6a
SRP-6a
: Secure Remote Password protocol - RFC 5054 compatible
Threshold Secret Sharing
Threshold Secret Sharing
: Implementation based on draft-mcgrew-tss-03
ZFEC
ZFEC
: Forward error correction based on Vandermonde matrices
ZFEC Vector Permutation
ZFEC Vector Permutation
: ZFEC using Vector Permutation Instructions
Block Cipher Modes
Block Cipher Modes
: Implementations of block cipher modes of operation
AEAD Modes
AEAD Modes
: Implementations of Authenticated Encryption Associated Data block cipher modes
Ascon-AEAD128
Ascon-AEAD128
CCM
CCM
ChaCha20Poly1305
ChaCha20Poly1305
EAX
EAX
GCM
GCM
OCB
OCB
SIV
SIV
CBC
CBC
CFB
CFB
CBC Padding Methods
CBC Padding Methods
XTS
XTS
XTS tweak computation using AVX-512/clmul
XTS tweak computation using AVX-512/clmul
Password Hashes
Password Hashes
: Implementations of password hashing algorithms
Argon2 Formatted
Argon2 Formatted
: Generates formatted Argon2 password hash outputs
BCrypt
BCrypt
: BCrypt password hash function
Passhash 9
Passhash 9
: Passhash 9 password hash function
Password Based Key Derivation Functions
Password Based Key Derivation Functions
: Implementations of Password Based Key Derivation Functions
Argon2
Argon2
Argon2 AVX2
Argon2 AVX2
: Argon2 using AVX2 instructions
Argon2 AVX-512
Argon2 AVX-512
: Argon2 using AVX-512 instructions
Argon2 SIMD_2x64
Argon2 SIMD_2x64
: Argon2 using SIMD_2x64
BCrypt
BCrypt
PBKDF2
PBKDF2
S2K
S2K
Scrypt
Scrypt
Providers
Providers
: Adapters to external crypto providers
CommonCrypto
CommonCrypto
: Helpers and Utilities for calling CommonCrypto
PKCS #11
PKCS #11
: Wrapper classes to interact with PKCS #11 modules
TPM v1 Support (deprecated)
TPM v1 Support (deprecated)
: Wrappers and Utilities to interact with TPM v1
TPM2
TPM2
: Wrappers and Utilities to interact with TPM2
TPM2 Crypto Backend
TPM2 Crypto Backend
: Implementation of the TPM2-TSS crypto callbacks
TPM2 ECC Adapter
TPM2 ECC Adapter
: Support for ECC pairs hosted on TPM 2.0
TPM2 RSA Adapter
TPM2 RSA Adapter
: Support for RSA key pairs hosted on TPM 2.0
PSK Database
PSK Database
: Interface for a generic pre-shared key database
Public Key Algorithms
Public Key Algorithms
: Implementations of public key schemes
Public Key Blinding
Public Key Blinding
: Helper for BigInt blinding
Classic McEliece
Classic McEliece
Curve448 Arithmetic
Curve448 Arithmetic
: x448 and Ed448 Arithmetic
Ed448
Ed448
: Ed448 signature algorithm
X448
X448
: X448 key agreement algorithm
Diffie-Hellman
Diffie-Hellman
Dilithium (common)
Dilithium (common)
: Base implementation of CRYSTALS-Dilithium
Dilithium/ML-DSA SHAKE-based XOF adapter
Dilithium/ML-DSA SHAKE-based XOF adapter
Dilithium Round 3
Dilithium Round 3
Dilithium
Dilithium
: as specified in CRYSTALS-Dilithium 3.1
Dilithium (AES)
Dilithium (AES)
: as specified in CRYSTALS-Dilithium 3.1
Discrete Logarithm
Discrete Logarithm
: Classes for discrete logarithm based schemes
DL Group
DL Group
: Wrapper for discrete logarithm groups and named groups
DLIES
DLIES
DSA
DSA
EC Group
EC Group
: Wrapper for elliptic curve groups
Legacy EC Point type
Legacy EC Point type
: Deprecated EC arithmetic interfaces
ECC Key
ECC Key
: Base class for elliptic curve cryptography keys
ECDH
ECDH
ECDSA
ECDSA
ECGDSA
ECGDSA
ECIES
ECIES
ECKCDSA
ECKCDSA
Ed25519
Ed25519
ElGamal
ElGamal
FrodoKEM
FrodoKEM
FrodoKEM (AES)
FrodoKEM (AES)
FrodoKEM (common)
FrodoKEM (common)
: Base implementation of FrodoKEM
GOST 34.10-2001
GOST 34.10-2001
HSS-LMS
HSS-LMS
Hybrid KEM
Hybrid KEM
KEX to KEM adapter
KEX to KEM adapter
: Basic KEX to KEM key transformation
Keypair
Keypair
: Helper functions for key pair and signature consistency checks
Kyber (common)
Kyber (common)
: Base implementation of CRYSTALS-Kyber
Kyber Round 3 Encapsulation
Kyber Round 3 Encapsulation
: Kyber key encapsulation as specified in the Round 3 spec
Kyber
Kyber
Kyber 90s
Kyber 90s
McEliece
McEliece
ML-DSA
ML-DSA
: Module Lattice Digital Signature Algorithm (FIPS 204)
ML-KEM
ML-KEM
: Module Lattice KEM
PBES2
PBES2
PEM
PEM
: Helpers and utilities for handling PEM containers
CRYSTALS
CRYSTALS
: Base utilities for CRYSTALS-Kyber/ML-KEM and CRYSTALS-Dilithium/ML-DSA. CRYptographic SuiTe for Algebraic LatticeS
RFC 6979
RFC 6979
: RFC 6979 Deterministic Nonce Generator
RSA
RSA
SLH-DSA (SHA-256)
SLH-DSA (SHA-256)
SLH-DSA (SHAKE)
SLH-DSA (SHAKE)
SM2
SM2
SLH-DSA (common)
SLH-DSA (common)
: Base implementation of Stateless Hash Function DSA
SLH-DSA/SPHINCS+ (SHA-256) Base
SLH-DSA/SPHINCS+ (SHA-256) Base
: Base module for SLH-DSA and SPHINCS+ with SHA-2
SLH-DSA/SPHINCS+ (SHAKE) Base
SLH-DSA/SPHINCS+ (SHAKE) Base
: Base module for SLH-DSA and SPHINCS+ with SHAKE
SPHINCS+ (SHA-256)
SPHINCS+ (SHA-256)
SPHINCS+ (SHAKE-256)
SPHINCS+ (SHAKE-256)
Stateful Key Index
Stateful Key Index
: Tracks updates for stateful signing algorithms
X25519
X25519
XMSS
XMSS
Raw Hash Function
Raw Hash Function
: Hash Function Used For Signature Schemes
Random Number Generators
Random Number Generators
: Implementations of Random Number Generators
Auto-Seeded RNG
Auto-Seeded RNG
: Userspace RNG that automatically seeds using available entropy sources
ChaCha RNG
ChaCha RNG
ESDM RNG
ESDM RNG
: RNG based on ESDM - Entropy Source and DRNG Manager
HMAC DRBG
HMAC DRBG
: As defined in NIST SP800-90A
CPU Jitter Random Number Generator
CPU Jitter Random Number Generator
Processor RNG
Processor RNG
: Directly invokes a CPU specific instruction to generate random numbers
Stateful RNG
Stateful RNG
: Base class for RNGs that must keep an internal state
System RNG
System RNG
: Wrapper around the system-provided standard RNG
RSA signature padding schemes
RSA signature padding schemes
: Implementations of public key signature padding schemes
PKCS #1 v1.5 signature padding
PKCS #1 v1.5 signature padding
PSS
PSS
: PSS signature padding from PKCS1v2.0
EMSA Raw Padding
EMSA Raw Padding
X9.31
X9.31
ISO-9796-2
ISO-9796-2
Sponge Helper
Sponge Helper
Stream Ciphers
Stream Ciphers
: Implementations of stream cipher algorithms
ChaCha20
ChaCha20
ChaCha20 AVX2
ChaCha20 AVX2
: ChaCha20 using AVX2 instructions
ChaCha20 AVX512
ChaCha20 AVX512
: ChaCha20 using AVX512 instructions
ChaCha20 SIMD
ChaCha20 SIMD
: ChaCha20 using SIMD instructions
Counter Mode
Counter Mode
: CTR-BE block cipher mode
CTR-BE AVX2
CTR-BE AVX2
: AVX2-accelerated CTR-BE counter management and XOR
CTR-BE SIMD
CTR-BE SIMD
: SIMD-accelerated CTR-BE counter management and XOR
OFB
OFB
: OFB block cipher mode
RC4
RC4
Salsa20
Salsa20
SHAKE-based XOFs
SHAKE-based XOFs
: SHAKE-128 and SHAKE-256 XOF presented as stream ciphers
Transport Layer Security
Transport Layer Security
: Common functionality for TLS
TLS ASIO Stream
TLS ASIO Stream
: Boost ASIO stream interface as a wrapper around the TLS implementation
SQL Session Manager
SQL Session Manager
: TLS Session Manager based on an SQL database
SQLite Session Manager
SQLite Session Manager
: TLS Session Manager based on an SQLite database
TLS 1.2
TLS 1.2
: TLS 1.2 protocol implementation
TLS 1.2 CBC AEAD
TLS 1.2 CBC AEAD
: CBC + HMAC AEAD mode of operation for TLS 1.2
TLS 1.2 Null cipher
TLS 1.2 Null cipher
: Null cipher + HMAC AEAD mode of operation for TLS 1.2
TLS 1.3
TLS 1.3
: TLS 1.3 protocol implementation
TLS 1.3 (PQC)
TLS 1.3 (PQC)
: Hybrid Key Exchange for TLS 1.3 with Post-Quantum Algorithms
Utilities
Utilities
: Various utility functions and types
Bitvector utility
Bitvector utility
Boost
Boost
CPUID
CPUID
: Handle runtime feature detection of the current CPU
CPUID for Aarch64
CPUID for Aarch64
CPUID for ARMv7
CPUID for ARMv7
CPUID for LoongArch64
CPUID for LoongArch64
CPUID for POWER/PowerPC
CPUID for POWER/PowerPC
CPUID for RISCV64
CPUID for RISCV64
CPUID for Wasm
CPUID for Wasm
CPUID for x86
CPUID for x86
Dynamic Loader
Dynamic Loader
: Helper class to represent a dynamically loaded library
GHASH
GHASH
GHASH AVX-512 CLMUL
GHASH AVX-512 CLMUL
GHASH SIMD
GHASH SIMD
: GHASH using SIMD instructions
GHASH Vector Permutations
GHASH Vector Permutations
: GHASH using Vector Permutation instructions
HTTP
HTTP
Locking Allocator
Locking Allocator
: STL allocator using mlock to lock memory
Memory Pool
Memory Pool
Operating System Utils
Operating System Utils
: Interfaces for accessing OS functionality
Polynomial Doubling
Polynomial Doubling
SIMD
SIMD
: Wrappers for SIMD operations
SIMD 2x64
SIMD 2x64
: Lightweight wrappers for SIMD 2x64
SIMD 4x32
SIMD 4x32
: Lightweight wrappers for SIMD 4x32
SIMD 4x64
SIMD 4x64
: Lightweight wrappers for SIMD 4x64
SIMD 8x64
SIMD 8x64
: Lightweight wrappers for SIMD 8x64
AVX2
AVX2
: Helpers for working with AVX2 instructions
AVX512
AVX512
: Helpers for working with AVX512 instructions
SIMD hardware AES support
SIMD hardware AES support
Socket
Socket
SQLite 3
SQLite 3
Thread Utilities
Thread Utilities
Tree Hash
Tree Hash
: Generic implementation of Merkle Tree Hashing
UUID
UUID
X.509
X.509
: Handles X.509 certificates and their validation
File Certificate Store
File Certificate Store
: Certificate trust store based on a flat file containing PEM-encoded trusted certificates
SQL Certificate Store
SQL Certificate Store
: Certificate trust store based on an SQL database
SQLite Certificate Store
SQLite Certificate Store
: Certificate trust store based on an SQLite database
System Certificate Store
System Certificate Store
: Certificate trust store backed by the system's trust store
macOS Certificate Store
macOS Certificate Store
: Adapter to access macOS' system trust store
Windows Certificate Store
Windows Certificate Store
: Adapter to access Windows' system trust store
eXtendable Output Function
eXtendable Output Function
: Implementations of XOFs
CRYSTALS XOF
CRYSTALS XOF
: XOF used in Kyber 90s and Dilithium AES
Ascon-XOF128
Ascon-XOF128
cSHAKE XOF
cSHAKE XOF
SHAKE XOF
SHAKE XOF
Generated by
1.17.0