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-permutationAscon-permutation
 ASN.1 HandlingASN.1 Handling: Process/encode/decode ASN.1 data structures and map OIDs
 Base TypesBase Types: Defines some high level types
 Block CiphersBlock Ciphers: Implementations of block cipher algorithms
 AESAES
 AES ARMv8AES ARMv8: AES using ARMv8 crypto instructions
 AES-NIAES-NI: AES using AES-NI and SIMD instructions
 AES Power8AES Power8: AES using Power8 instructions
 AES-VAESAES-VAES: AES using VAES
 AES Vector PermutationAES Vector Permutation: AES using Vector Permutation Instructions
 ARIAARIA
 ARIA AVX-512/GFNIARIA AVX-512/GFNI
 ARIA using hardware AES instructionsARIA using hardware AES instructions
 BlowfishBlowfish
 CamelliaCamellia
 Camellia using GFNI/AVX2Camellia using GFNI/AVX2
 Camellia AVX-512/GFNICamellia AVX-512/GFNI
 Camellia using hardware AES instructionsCamellia using hardware AES instructions
 CascadeCascade
 CAST-128CAST-128
 DESDES
 GOST 28147-89GOST 28147-89
 IDEAIDEA
 IDEA AVX2IDEA AVX2: IDEA using AVX2 SIMD instructions
 IDEA SSE2IDEA SSE2: IDEA using SSE2 SIMD instructions
 KuznyechikKuznyechik
 LionLion
 NoekeonNoekeon
 Noekeon SIMDNoekeon SIMD: Noekeon using SIMD instructions
 SEEDSEED
 SEED AVX-512/GFNISEED AVX-512/GFNI
 SEED using hardware AES instructionsSEED using hardware AES instructions
 SerpentSerpent
 Serpent AVX2Serpent AVX2: Serpent using AVX2 instructions
 Serpent AVX512Serpent AVX512: Serpent using AVX512 instructions
 Serpent SIMDSerpent SIMD: Serpent using SIMD instructions
 SHACAL-2SHACAL-2
 SHACAL-2 ARMv8SHACAL-2 ARMv8: SHACAL-2 using ARMv8 crypto instructions
 SHACAL-2 AVX2SHACAL-2 AVX2: SHACAL-2 using AVX2 instructions
 SHACAL-2 AVX512SHACAL-2 AVX512: SHACAL-2 using AVX512 instructions
 SHACAL-2 SIMDSHACAL-2 SIMD: SHACAL-2 using SIMD instructions
 SHACAL-2 X86SHACAL-2 X86: SHACAL-2 using SSE instructions on x86
 SM4SM4
 SM4 ARMv8SM4 ARMv8: SM4 using ARMv8 crypto instructions
 SM4 AVX-512/GFNISM4 AVX-512/GFNI
 SM4 GFNISM4 GFNI: SM4 using Intel GFNI
 SM4 using hardware AES instructionsSM4 using hardware AES instructions
 SM4 x86SM4 x86: SM4 using Intel SM4 extension
 Threefish-512Threefish-512
 TwofishTwofish
 Twofish AVX-512Twofish AVX-512: Twofish using AVX-512 and GFNI instructions
 CodecsCodecs: Helpers for data encoding and decoding
 Base32Base32: Base32 encoder and decoder
 Base58Base58: Base58 encoder and decoder
 Base64Base64: Base64 encoder and decoder
 HexHex: Hex encoder and decoder
 CompatibilityCompatibility: Helpers for compatibility with other libraries
 libsodium APIlibsodium API: Partial compatibility implementation of the libsodium API
 CompressionCompression: Wrappers for compression algorithms
 BZIP2BZIP2
 ZLibZLib
 ZLibZLib
 RSA encryption padding schemesRSA encryption padding schemes: Implementations of public key encryption padding schemes
 OAEPOAEP
 PKCS #1 v1.5 encryption paddingPKCS #1 v1.5 encryption padding
 EME Raw PaddingEME Raw Padding
 Entropy CollectionEntropy Collection: Implementations of entropy sources
 getentropygetentropy: Wrapper for BSD's getentropy system call
 RDSEEDRDSEED: Wrapper for Intel's RDSEED instruction
 Win32 StatisticsWin32 Statistics: Entropy collection based on Windows statistics counters
 Foreign Function InterfaceForeign Function Interface: C API for Botan's functionality
 FiltersFilters: Filter/Pipe API for data transformations
 Unix File Descriptor Pipe I/OUnix File Descriptor Pipe I/O
 HashesHashes: Implementations of hash algorithms
 Ascon-Hash256Ascon-Hash256
 BLAKE2bBLAKE2b
 BLAKE2sBLAKE2s
 ChecksumsChecksums: Implementations of checksum algorithms
 Adler32Adler32
 CRC24CRC24
 CRC32CRC32
 Comb4PComb4P
 GOST 34.11GOST 34.11
 KeccakKeccak: Pre-standard version of SHA-3 originally proposed during NIST competition
 MD4MD4
 MD5MD5
 Merkle-Damgård HelperMerkle-Damgård Helper: Helper class for implementing Merkle-Damgård hashes
 Parallel HashesParallel Hashes: Base class for parallel hash functions
 RIPEMD-160RIPEMD-160
 SHA-1SHA-1
 SHA-1 ARMv8SHA-1 ARMv8: SHA-1 using ARMv8 crypto instructions
 SHA-1 AVX2/BMI2SHA-1 AVX2/BMI2: SHA-1 using AVX2/BMI2 instructions
 SHA-1 SIMDSHA-1 SIMD: SHA-1 using SIMD instructions
 SHA-1 SIMDSHA-1 SIMD: SHA-1 using SIMD instructions on x86
 SHA-256 and SHA-224SHA-256 and SHA-224
 SHA-256 ARMv8SHA-256 ARMv8: SHA-256 using ARMv8 crypto instructions
 SHA-256 using AVX2/BMI2SHA-256 using AVX2/BMI2: SHA-256 using AVX2/BMI2 instructions
 SHA-256 using SIMDSHA-256 using SIMD: SHA-256 using SIMD instructions
 SHA-256 SIMDSHA-256 SIMD: SHA-256 using SIMD instructions on x86
 SHA-512 and SHA-384SHA-512 and SHA-384
 SHA-512 ARMv8SHA-512 ARMv8: SHA-512 using ARMv8 crypto instructions
 SHA-512 AVX2/BMI2SHA-512 AVX2/BMI2: SHA-512 using AVX2/BMI2 instructions
 SHA-512 AVX512/BMI2SHA-512 AVX512/BMI2: SHA-512 using AVX512/BMI2 instructions
 SHA-512 SHA-NISHA-512 SHA-NI: SHA-512 using x86 instructions
 SHA-3SHA-3
 SHAKESHAKE
 Skein-512Skein-512
 SM3SM3
 SM3 ARMv8SM3 ARMv8: SM3 using ARMv8 crypto instructions
 SM3 using AVX2/BMI2SM3 using AVX2/BMI2: SM3 using AVX2/BMI2 instructions
 SM3 x86SM3 x86: SM3 using Intel SM3 extension
 StreebogStreebog
 Truncated HashesTruncated Hashes: Wrapper class to truncate the output of an underlying hash function
 WhirlpoolWhirlpool
 Whirlpool AVX2Whirlpool AVX2
 Whirlpool using AVX512Whirlpool using AVX512: Whirlpool using AVX512 instructions
 Hash Function IdentificationHash Function Identification
 Key Derivation FunctionsKey Derivation Functions: Implementations of Key Derivation Functions
 HKDFHKDF
 KDF1KDF1
 KDF1 (ISO 18033-2)KDF1 (ISO 18033-2)
 KDF2KDF2
 TLS 1.2 PRFTLS 1.2 PRF: Implementation of the Pseudo-Random Function as used in TLS 1.2
 PRF X9.42PRF X9.42
 NIST SP800-108NIST SP800-108
 NIST SP800-56ANIST SP800-56A
 NIST SP800-56CNIST SP800-56C
 XMDXMD: XMD KDF from RFC 9380
 Keccak-permutationKeccak-permutation
 Keccak permutation using AVX512Keccak permutation using AVX512
 KECCAK-permutation BMI2KECCAK-permutation BMI2: KECCAK-permutation for SHA-3-related functions using BMI2 instructions
 Message Authentication CodesMessage Authentication Codes: Implementations of Message Authentication Codes
 Blake2B MACBlake2B MAC
 CMACCMAC
 GMACGMAC
 HMACHMAC
 KMACKMAC
 Poly1305Poly1305
 Poly1305 AVX2Poly1305 AVX2: Poly1305 using AVX2 instructions
 Poly1305 AVX512Poly1305 AVX512: Poly1305 using AVX-512 IFMA instructions
 SipHashSipHash
 ANSI X9.19 MACANSI X9.19 MAC
 MathMath: Mathematical helpers; mostly big integer math
 Big IntegerBig Integer: Wrapper classes for handling big integer math
 Big Integer (Low-Level)Big Integer (Low-Level): Low level big integer math algorithms
 Number TheoryNumber Theory: Number theoretical higher level algorithms for big integer math
 Prime Order CurvesPrime Order Curves: Generalized elliptic curve arithmetic
 PCurve brainpool256r1PCurve brainpool256r1: brainpool256r1
 PCurve brainpool384r1PCurve brainpool384r1: brainpool384r1
 PCurve brainpool512r1PCurve brainpool512r1: brainpool512r1
 PCurve frp256v1PCurve frp256v1: frp256v1
 PCurve genericPCurve generic
 Prime Order Curves Implementation HelpersPrime Order Curves Implementation Helpers: Generalized elliptic curve arithmetic
 PCurve numsp512d1PCurve numsp512d1: numsp512d1
 PCurve secp192r1PCurve secp192r1: secp192r1
 PCurve secp224r1PCurve secp224r1: secp224r1
 PCurve secp256k1PCurve secp256k1: secp256k1
 PCurve secp256r1PCurve secp256r1: secp256r1
 PCurve secp384r1PCurve secp384r1: secp384r1
 PCurve secp521r1PCurve secp521r1: secp521r1
 PCurve sm2p256v1PCurve sm2p256v1: sm2p256v1
 MGF1MGF1
 MiscellaneousMiscellaneous: Odds and ends: Algorithms and protocols that don't fit any of the other modules
 Crypto BoxCrypto Box: High-Level API for password-based encryption (deprecated)
 FPE FE1FPE FE1: Format Preserving Encryption (FE1 scheme)
 HOTP/TOTPHOTP/TOTP: HMAC/Time based One Time Password implementations
 NIST KeyWrapNIST KeyWrap: Key Wrapping as described in NIST SP800-38F
 RFC 3394 KeyWrapRFC 3394 KeyWrap: Key Wrapping as described in RFC 3394
 RoughtimeRoughtime: Authenticated Time Synchronzation Protocol
 SRP-6aSRP-6a: Secure Remote Password protocol - RFC 5054 compatible
 Threshold Secret SharingThreshold Secret Sharing: Implementation based on draft-mcgrew-tss-03
 ZFECZFEC: Forward error correction based on Vandermonde matrices
 ZFEC Vector PermutationZFEC Vector Permutation: ZFEC using Vector Permutation Instructions
 Block Cipher ModesBlock Cipher Modes: Implementations of block cipher modes of operation
 AEAD ModesAEAD Modes: Implementations of Authenticated Encryption Associated Data block cipher modes
 Ascon-AEAD128Ascon-AEAD128
 CCMCCM
 ChaCha20Poly1305ChaCha20Poly1305
 EAXEAX
 GCMGCM
 OCBOCB
 SIVSIV
 CBCCBC
 CFBCFB
 CBC Padding MethodsCBC Padding Methods
 XTSXTS
 XTS tweak computation using AVX-512/clmulXTS tweak computation using AVX-512/clmul
 Password HashesPassword Hashes: Implementations of password hashing algorithms
 Argon2 FormattedArgon2 Formatted: Generates formatted Argon2 password hash outputs
 BCryptBCrypt: BCrypt password hash function
 Passhash 9Passhash 9: Passhash 9 password hash function
 Password Based Key Derivation FunctionsPassword Based Key Derivation Functions: Implementations of Password Based Key Derivation Functions
 Argon2Argon2
 Argon2 AVX2Argon2 AVX2: Argon2 using AVX2 instructions
 Argon2 AVX-512Argon2 AVX-512: Argon2 using AVX-512 instructions
 Argon2 SIMD_2x64Argon2 SIMD_2x64: Argon2 using SIMD_2x64
 BCryptBCrypt
 PBKDF2PBKDF2
 S2KS2K
 ScryptScrypt
 ProvidersProviders: Adapters to external crypto providers
 CommonCryptoCommonCrypto: Helpers and Utilities for calling CommonCrypto
 PKCS #11PKCS #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
 TPM2TPM2: Wrappers and Utilities to interact with TPM2
 TPM2 Crypto BackendTPM2 Crypto Backend: Implementation of the TPM2-TSS crypto callbacks
 TPM2 ECC AdapterTPM2 ECC Adapter: Support for ECC pairs hosted on TPM 2.0
 TPM2 RSA AdapterTPM2 RSA Adapter: Support for RSA key pairs hosted on TPM 2.0
 PSK DatabasePSK Database: Interface for a generic pre-shared key database
 Public Key AlgorithmsPublic Key Algorithms: Implementations of public key schemes
 Public Key BlindingPublic Key Blinding: Helper for BigInt blinding
 Classic McElieceClassic McEliece
 Curve448 ArithmeticCurve448 Arithmetic: x448 and Ed448 Arithmetic
 Ed448Ed448: Ed448 signature algorithm
 X448X448: X448 key agreement algorithm
 Diffie-HellmanDiffie-Hellman
 Dilithium (common)Dilithium (common): Base implementation of CRYSTALS-Dilithium
 Dilithium/ML-DSA SHAKE-based XOF adapterDilithium/ML-DSA SHAKE-based XOF adapter
 Dilithium Round 3Dilithium Round 3
 DilithiumDilithium: as specified in CRYSTALS-Dilithium 3.1
 Dilithium (AES)Dilithium (AES): as specified in CRYSTALS-Dilithium 3.1
 Discrete LogarithmDiscrete Logarithm: Classes for discrete logarithm based schemes
 DL GroupDL Group: Wrapper for discrete logarithm groups and named groups
 DLIESDLIES
 DSADSA
 EC GroupEC Group: Wrapper for elliptic curve groups
 Legacy EC Point typeLegacy EC Point type: Deprecated EC arithmetic interfaces
 ECC KeyECC Key: Base class for elliptic curve cryptography keys
 ECDHECDH
 ECDSAECDSA
 ECGDSAECGDSA
 ECIESECIES
 ECKCDSAECKCDSA
 Ed25519Ed25519
 ElGamalElGamal
 FrodoKEMFrodoKEM
 FrodoKEM (AES)FrodoKEM (AES)
 FrodoKEM (common)FrodoKEM (common): Base implementation of FrodoKEM
 GOST 34.10-2001GOST 34.10-2001
 HSS-LMSHSS-LMS
 Hybrid KEMHybrid KEM
 KEX to KEM adapterKEX to KEM adapter: Basic KEX to KEM key transformation
 KeypairKeypair: Helper functions for key pair and signature consistency checks
 Kyber (common)Kyber (common): Base implementation of CRYSTALS-Kyber
 Kyber Round 3 EncapsulationKyber Round 3 Encapsulation: Kyber key encapsulation as specified in the Round 3 spec
 KyberKyber
 Kyber 90sKyber 90s
 McElieceMcEliece
 ML-DSAML-DSA: Module Lattice Digital Signature Algorithm (FIPS 204)
 ML-KEMML-KEM: Module Lattice KEM
 PBES2PBES2
 PEMPEM: Helpers and utilities for handling PEM containers
 CRYSTALSCRYSTALS: Base utilities for CRYSTALS-Kyber/ML-KEM and CRYSTALS-Dilithium/ML-DSA. CRYptographic SuiTe for Algebraic LatticeS
 RFC 6979RFC 6979: RFC 6979 Deterministic Nonce Generator
 RSARSA
 SLH-DSA (SHA-256)SLH-DSA (SHA-256)
 SLH-DSA (SHAKE)SLH-DSA (SHAKE)
 SM2SM2
 SLH-DSA (common)SLH-DSA (common): Base implementation of Stateless Hash Function DSA
 SLH-DSA/SPHINCS+ (SHA-256) BaseSLH-DSA/SPHINCS+ (SHA-256) Base: Base module for SLH-DSA and SPHINCS+ with SHA-2
 SLH-DSA/SPHINCS+ (SHAKE) BaseSLH-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 IndexStateful Key Index: Tracks updates for stateful signing algorithms
 X25519X25519
 XMSSXMSS
 Raw Hash FunctionRaw Hash Function: Hash Function Used For Signature Schemes
 Random Number GeneratorsRandom Number Generators: Implementations of Random Number Generators
 Auto-Seeded RNGAuto-Seeded RNG: Userspace RNG that automatically seeds using available entropy sources
 ChaCha RNGChaCha RNG
 ESDM RNGESDM RNG: RNG based on ESDM - Entropy Source and DRNG Manager
 HMAC DRBGHMAC DRBG: As defined in NIST SP800-90A
 CPU Jitter Random Number GeneratorCPU Jitter Random Number Generator
 Processor RNGProcessor RNG: Directly invokes a CPU specific instruction to generate random numbers
 Stateful RNGStateful RNG: Base class for RNGs that must keep an internal state
 System RNGSystem RNG: Wrapper around the system-provided standard RNG
 RSA signature padding schemesRSA signature padding schemes: Implementations of public key signature padding schemes
 PKCS #1 v1.5 signature paddingPKCS #1 v1.5 signature padding
 PSSPSS: PSS signature padding from PKCS1v2.0
 EMSA Raw PaddingEMSA Raw Padding
 X9.31X9.31
 ISO-9796-2ISO-9796-2
 Sponge HelperSponge Helper
 Stream CiphersStream Ciphers: Implementations of stream cipher algorithms
 ChaCha20ChaCha20
 ChaCha20 AVX2ChaCha20 AVX2: ChaCha20 using AVX2 instructions
 ChaCha20 AVX512ChaCha20 AVX512: ChaCha20 using AVX512 instructions
 ChaCha20 SIMDChaCha20 SIMD: ChaCha20 using SIMD instructions
 Counter ModeCounter Mode: CTR-BE block cipher mode
 CTR-BE AVX2CTR-BE AVX2: AVX2-accelerated CTR-BE counter management and XOR
 CTR-BE SIMDCTR-BE SIMD: SIMD-accelerated CTR-BE counter management and XOR
 OFBOFB: OFB block cipher mode
 RC4RC4
 Salsa20Salsa20
 SHAKE-based XOFsSHAKE-based XOFs: SHAKE-128 and SHAKE-256 XOF presented as stream ciphers
 Transport Layer SecurityTransport Layer Security: Common functionality for TLS
 TLS ASIO StreamTLS ASIO Stream: Boost ASIO stream interface as a wrapper around the TLS implementation
 SQL Session ManagerSQL Session Manager: TLS Session Manager based on an SQL database
 SQLite Session ManagerSQLite Session Manager: TLS Session Manager based on an SQLite database
 TLS 1.2TLS 1.2: TLS 1.2 protocol implementation
 TLS 1.2 CBC AEADTLS 1.2 CBC AEAD: CBC + HMAC AEAD mode of operation for TLS 1.2
 TLS 1.2 Null cipherTLS 1.2 Null cipher: Null cipher + HMAC AEAD mode of operation for TLS 1.2
 TLS 1.3TLS 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
 UtilitiesUtilities: Various utility functions and types
 Bitvector utilityBitvector utility
 BoostBoost
 CPUIDCPUID: Handle runtime feature detection of the current CPU
 CPUID for Aarch64CPUID for Aarch64
 CPUID for ARMv7CPUID for ARMv7
 CPUID for LoongArch64CPUID for LoongArch64
 CPUID for POWER/PowerPCCPUID for POWER/PowerPC
 CPUID for RISCV64CPUID for RISCV64
 CPUID for WasmCPUID for Wasm
 CPUID for x86CPUID for x86
 Dynamic LoaderDynamic Loader: Helper class to represent a dynamically loaded library
 GHASHGHASH
 GHASH AVX-512 CLMULGHASH AVX-512 CLMUL
 GHASH SIMDGHASH SIMD: GHASH using SIMD instructions
 GHASH Vector PermutationsGHASH Vector Permutations: GHASH using Vector Permutation instructions
 HTTPHTTP
 Locking AllocatorLocking Allocator: STL allocator using mlock to lock memory
 Memory PoolMemory Pool
 Operating System UtilsOperating System Utils: Interfaces for accessing OS functionality
 Polynomial DoublingPolynomial Doubling
 SIMDSIMD: Wrappers for SIMD operations
 SIMD 2x64SIMD 2x64: Lightweight wrappers for SIMD 2x64
 SIMD 4x32SIMD 4x32: Lightweight wrappers for SIMD 4x32
 SIMD 4x64SIMD 4x64: Lightweight wrappers for SIMD 4x64
 SIMD 8x64SIMD 8x64: Lightweight wrappers for SIMD 8x64
 AVX2AVX2: Helpers for working with AVX2 instructions
 AVX512AVX512: Helpers for working with AVX512 instructions
 SIMD hardware AES supportSIMD hardware AES support
 SocketSocket
 SQLite 3SQLite 3
 Thread UtilitiesThread Utilities
 Tree HashTree Hash: Generic implementation of Merkle Tree Hashing
 UUIDUUID
 X.509X.509: Handles X.509 certificates and their validation
 File Certificate StoreFile Certificate Store: Certificate trust store based on a flat file containing PEM-encoded trusted certificates
 SQL Certificate StoreSQL Certificate Store: Certificate trust store based on an SQL database
 SQLite Certificate StoreSQLite Certificate Store: Certificate trust store based on an SQLite database
 System Certificate StoreSystem Certificate Store: Certificate trust store backed by the system's trust store
 macOS Certificate StoremacOS Certificate Store: Adapter to access macOS' system trust store
 Windows Certificate StoreWindows Certificate Store: Adapter to access Windows' system trust store
 eXtendable Output FunctioneXtendable Output Function: Implementations of XOFs
 CRYSTALS XOFCRYSTALS XOF: XOF used in Kyber 90s and Dilithium AES
 Ascon-XOF128Ascon-XOF128
 cSHAKE XOFcSHAKE XOF
 SHAKE XOFSHAKE XOF