Botan 3.12.0
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
  IP address typesIP address types
  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