# Protocol: Tutorial_04
# Java Config File: "Tutorial04.properties"
# Paths
keypath = keystore/
# Cryptographic Engine settings
# see names at https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html
# Symmetric cipher algorithm for static (pre-shared) keys
# https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html#cipher-algorithm-names
cipherScheme = AES
# to test if Bouncy Castle Library is correctly installed
# cipherscheme = Camellia
# default cipher scheme for standard JDK
# cipherscheme = AES
# Key size (in bits) for static symmetric keys (if algorithm supports multiple sizes)
keySize = 256
# -----------------------------
# Symmetric cipher algorithm for ephemeral key generation (used during session)
keyGenerationScheme = AES
# Key size (in bits) for dynamically generated symmetric keys (if algorithm supports multiple sizes)
keyGenerationSize = 192
# -----------------------------
# Secret Key Factory algorithm used for Password-Based Encryption (PBE) dynamic symmetric key generation
# https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html#secretkeyfactory-algorithms
keyGenerationSchemePBE = PBKDF2WithHmacSHA512
# -----------------------------
# Key Pair Generator algorithm for dynamic creation of asymmetric key pairs
# https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html#keypairgenerator-algorithms
keyPairGenerationScheme = RSA
# Key length for dynamic creation of asymmetric key pairs
keyPairGenerationSize = 2048
# -----------------------------
# SecureRandom Number Generation Algorithm
# https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html#securerandom-number-generation-algorithms
secureRandomAlgorithm = DRBG
# Nonce size (in bytes) for randomly generated nonces and sequence numbers
nonceSize = 16
# -----------------------------
# (H)MAC Algorithm, also used for hmac key generation
# https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html#mac-algorithms
hMacAlgorithm = HmacSHA256
# Key length in bits for (H)MAC key generation  (if algorithm supports multiple sizes)
hMacKeySize = 512
# -----------------------------
# MessageDigest Algorithm (Hash)
# https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html#messagedigest-algorithms
messageDigestAlgorithm = SHA-256
# MessageDigest Algorithm used for Signature, as a fallback <digest>with<encryption> if KeyTypeToSignature mapping does not exist
messageDigestSignatureAlgorithm = SHA256
# -----------------------------
# Key Agreement Algorithm, used for key exchange (e.g., Diffie-Hellman)
# https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html#keyagreement-algorithms
keyAgreementAlgorithm = DH
# Key Pair Generation for Key Agreement Algorithm, used for key exchange (e.g., Diffie-Hellman)
# https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html#keypairgenerator-algorithms
keyAgreementKeyPairGenerationScheme = DH
# Length in bits for modulus used in Diffie-Hellman key agreement
dhModulusSize = 4096
# The elliptic curve used for ECDH key agreement
# https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html#parameterspec-names
ecGenParameterSpec = secp521r1
# -----------------------------
# Asymmetric encryption scheme block mode (experimental feature)
asymcipherSchemeBlock = RSA
# -----------------------------
# SSLContext Algorithm
sslContext = TLSv1.3
# -----------------------------
# Mapping of key types to cipher transformations
# Transformations (ciphers) used for encryption, including algorithm name, mode, and padding, separated by /
# https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html#cipher-algorithm-names
# https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html#cipher-algorithm-modes
# https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html#cipher-algorithm-paddings
keyTypeToCipher = AES -> AES/GCM/NoPadding, Blowfish -> Blowfish/CBC/PKCS5Padding, Camellia -> Camellia/CBC/PKCS7Padding, ChaCha -> ChaCha20-Poly1305, EC -> ECIES, ElGamal -> ElGamal/None/PKCS1Padding, RSA -> RSA/ECB/OAEPWithSHA-256AndMGF1Padding
# -----------------------------
# Mapping of key types to signature algorithms
keyTypeToSignature = DSA -> SHA256withDSA, EC -> SHA256withECDSA, Ed25519 -> Ed25519, Ed448 -> Ed448, RSA -> SHA256withRSA, RSASSA-PSS -> RSASSA-PSS
# -----------------------------
# Java Security provider: default uses the java.security settings (preferred option)
# Or select a specific provider (e.g., BC for Bouncy Castle)
securityProvider = BC