# Package net.i2p.crypto

Core cryptographic primitives and algorithms used throughout I2P.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  EntropyHarvester | Allow various components with some entropy to feed that entropy back into some PRNG.
  KeyFactory | Factory interface for generating I2P cryptographic key pairs.
  KeyRing | A backend for storing and retrieving SigningPublicKeys to be used for verifying signatures.
  TagSetHandle | An opaque handle to a TagSet returned by the SessionKeyManager, so that OCMOSJ can report that the tags were later acked, or not.

- Class Summary
  Class | Description
  --- | ---
  AESEngine | Abstract base class for AES cipher operations in I2P.
  Blinding | Utilities for Blinding EdDSA keys.
  CertUtil | Java X.509 certificate utilities, consolidated from various places.
  ChaCha20 | ChaCha20, wrapper around Noise ChaChaCore.
  CryptixAESEngine | AES encryption engine using Cryptix's Rijndael implementation with CBC mode.
  CryptixAESKeyCache | Cache the objects used in CryptixRijndael_Algorithm.makeKey to reduce memory churn.
  CryptixRijndael_Algorithm | Rijndael AES algorithm implementation.
  CryptoCheck | Moved from CryptixAESEngine and net.i2p.router.tasks.CryptoChecker.
  CryptoConstants | Prime for ElGamal from http://tools.ietf.org/html/rfc3526 Primes for DSA: Generated by TheCrypto http://article.gmane.org/gmane.comp.security.invisiblenet.iip.devel/343 See also: ECConstants, RSAConstants
  DirKeyRing | Simple storage of each cert in a separate file in a directory.
  DSAEngine | Digital signature algorithm engine supporting DSA, ECDSA, RSA, and EdDSA.
  ECConstants | Constants for elliptic curves, from NIST FIPS 186-4 (2013) / ANSI X9.62
  ECUtil | Elliptic curve utility functions for cryptographic operations.
  Hash384 | SHA-384 secure hash algorithm implementation.
  Hash512 | SHA-512 secure hash algorithm implementation.
  HKDF | HMAC-based Key Derivation Function (HKDF) implementation using HMAC-SHA256.
  HMAC256Generator | HMAC-SHA256 message authentication code generator for I2P cryptographic operations.
  HMAC256Generator.HMACKey | Performance-optimized SecretKey implementation for HMAC operations.
  HMACGenerator | Abstract base class for HMAC (Hash-based Message Authentication Code) operations.
  KeyGenerator | Comprehensive key generation facility for I2P cryptographic operations.
  KeyPair | A pair of I2P cryptographic keys consisting of a public key and corresponding private key.
  KeyStoreUtil | Keystore utilities, consolidated from various places.
  RSAConstants | Constants for RSA
  RSASigningPrivateCrtKey | A SigningPrivateKey that retains the Chinese Remainder Theorem parameters, so it can be converted back to a Java CRT key.
  SelfSignedGenerator | Generate keys and a selfsigned certificate, suitable for storing in a Keystore with KeyStoreUtil.storePrivateKey().
  SessionKeyManager | Manage the session keys and session tags used for encryption and decryption.
  SHA1 | Implementation of the SHA-1 secure hash algorithm as specified in FIPS PUB 180-2.
  SHA1Hash | I2P data structure for SHA-1 hash values.
  SHA256Generator | Defines a wrapper for SHA-256 operation.
  SigContext.SigContextSpec | Algorithm parameter specification for personalized hash contexts in digital signatures.
  SigUtil | Comprehensive utility class for I2P signing keys and digital signatures.
  SipHashInline | SipHash implementation with hand inlining the SIPROUND.
  SU3File | I2P update file format handler for .su3 files.
  TrustedUpdate | Handles signing and verification of I2P update files.
  YKGenerator | Precalculate the Y and K for ElGamal encryption operations.

- Enum Summary
  Enum | Description
  --- | ---
  EncAlgo | Base encryption algorithm type
  EncType | Defines the properties for various encryption types that I2P supports or may someday support.
  SigAlgo | Base signature algorithm type
  SigContext | Defines the context for signing with personalized hashes.
  SigType | Defines the properties for various signature types that I2P supports or may someday support.

## Package net.i2p.crypto Description

Core cryptographic primitives and algorithms used throughout I2P.

This package provides the fundamental cryptographic building blocks for I2P's security and privacy features, including:

- Asymmetric Encryption: ElGamal, ECIES, and post-quantum algorithms
- Digital Signatures: DSA, EdDSA, and related signature schemes
- Symmetric Encryption: AES and other block ciphers
- Hash Functions: SHA-256, SHA-3, and cryptographic digests
- Key Derivation: HKDF and other key derivation functions
- Random Number Generation: Cryptographically secure RNG
- Mathematical Primitives: Big integer operations and field arithmetic

All cryptographic operations are designed to provide strong security guarantees while maintaining performance suitable for high-throughput routing operations. The implementation follows established cryptographic standards and best practices.

Note: This package contains low-level cryptographic primitives. For higher-level I2P-specific cryptographic operations, see the net.i2p.crypto.eddsa and net.i2p.crypto.x25519 packages.