## PurpleI2P/i2pd — 2.56.0…2.57.0

_132 commits._

### Features
- **Add settunneltype parameter to BOB API for i2pd to configure proxy tunnel type** (1b06861)
- **[i18n] add Hebrew and Hindi translations, add rtl support (testing)** (aab8296)
- **keep receving new data from socket while previous is being sent to stream** (b03ec65)
- **handle ML-KEM section for new session and create for new session reply** (78d9717)
- **send path challenge of 8 bytes. add Ack block** (ad3b999)
- **Support v1 datagram sessions without port** (d93a80c)
- **support local sockets for I2PControl** (c113241)
- **create new tunnel immediately if last one failed** (3d19fa1)

### Fixes
- **Fix FORWARD session host handling in SAM; refactor SAMSocket::ProcessStreamForward** (d440b5b)
- **Fix the calculation of the window drop size** (251605e)

### Backend
- **2.57.0** (56bd94a)
- **disable post-quantum for release** (021431d)
- **Merge pull request #2192 from nobs2p/openssl** (e6b742a)
- **fixed newkeys crash** (7ec0c98)
- **changed log level frm warning to info for some messages** (9573b21)
- **increase message expiration timeout in SSU2** (35ba14d)
- **fill phony record for inbound tunnel with x25519 public key** (6068818)
- **disable loss-control** (4c6be3b)
- **Merge pull request #2191 from nobs2p/fix_SAM_FORWARD** (f93b354)
- **read more data from socket if available and stream buffer is not full** (246bc43)
- **fixed choked stream hanging** (209eb17)
- **probing resistance** (0d278d2)
- **don't exceed stream max send buffer size** (aece5bb)
- **max i2p stream buffer size** (539cd5a)
- **correct receive buffer size** (0cbada2)
- **fixed private key size and publishing for crypto type 1** (855e111)
- **connection max stream buffer size** (d9f64c6)
- **remove reseed.memcpy.io** (fdbf436)
- **cubicchaos.net reseed added** (f164b42)
- **encrypted LeaseSet never comes through a session** (929ff6e)
- **fixed #2183. Give more time to close streams after session disconnect if needed** (9d44a32)
- **compare LeaseSet's static keys with ratchets session it was received from** (a5fa4dd)
- **handle incoming packets with ML-DSA signature** (724d8bd)
- **create and handle ML-DSA identities and signatures** (9bd2b8d)
- **cleanup NSR keys** (2afdd5b)
- **[gha] Update docker containers build** (9b96705)
- **correct NSR size** (5881851)
- **handle any incoming  post quantum crypto type** (bbfe81c)
- **get preferred crypto key type from ratchets session** (67fe6fa)
- **get preferred crypto key type from ratchets session** (1c162f9)
- **publish preferred key first** (e69b56c)
- **common LocalEncryptionKey to pass to loacl LeaseSet** (f6c93f7)
- **Initial Noise states and encryptors/decryptors for ML-KEM-768 and ML-KEM-1024** (9c46ff2)
- **common InitNoiseIKState for all ML-KEM crypto** (1a04b59)
- **common MLKEMKeys for all types** (828cd9d)
- **moved ML-KEM code to PostQuntum.h/.cpp** (4c5d011)
- **correct sequence of MixKey for ML-KEM NSR** (459be02)
- **all ML-KEM crypto types** (a83cd99)
- **common ML-KEM names and key lengths** (9ab1a67)
- **Use noise state Encrypt/Decrypt operations** (f6abbe5)
- **store ML-KEM section for possible next NSR** (711f5bc)
- **Noise state Encrypt/Decrypt operations** (6b38085)
- **reset nonce to 0 before payload encrypt/decrypt for ML-KEM-512** (3afe645)
- **correct key type and message size for ML-KEM-512** (2f2ecc3)
- **all ratchets types are eligible for ECIESx25519** (bce0ccf)
- **[systemd] Wait for network-online target when starting service (#2169)** (8ca74a3)
- **move buffer when insert to buffer queue. clean entire queue in one call** (3be4c72)
- **datetime, address, ack blocks in path response packet** (2280338)
- **use g++-x86 for 32-bits platform** (00920a0)
- **non-copyable RouterInfo** (5671836)
- **send datetime and address blocks with path challenge** (c2f68d7)
- **update session's remote enpoint after receiving path response** (7404ce7)
- **ML-KEM section for NS and NSR outgoing sessions** (871fc14)
- **use find_directory to detect data dir in Haiku** (81ba19e)
- **skip post-quantum keys if not supported** (ecf1927)
- **Merge pull request #2165 from asciimoth/openssl** (a40fa57)
- **Update dates range in licence** (d3cfbbd)
- **ML-KEM-512 encaps/decaps** (22d854a)
- **use EVP interface for DSA sign/verify with OpenSSL 3** (75d5c60)
- **MLKEM512 keygen added** (a193186)
- **fixed warning** (4119726)
- **fixed typo** (029e279)
- **c++20** (af5d2a4)
- **pass type with static key** (7b98dd8)
- **calculate preferred crypto based i2cp.leaseSetEncType** (9fdbb14)
- **encryptor/decryptor/keygen for ECIES_MLKEM512_X25519_AEAD** (935c055)
- **changed ML-DSA-44 code** (9769ab0)
- **select key with max key type if no preferred. Changed default preferred type to 4** (9684c86)
- **map of encryption keys** (b2fd30d)
- **MLKEM512_X25519 crypto key added** (9ce515f)
- **persist temporary keys of actual size** (46f530b)
- **calculate crypto key length from key type** (bd2b966)
- **don't calculate key's base64 if not used** (609cd40)
- **ByteStreamToBase64 always returns std::string** (bbf5c16)
- **use ToBase64 for incoming stream accept** (8e6b937)
- **fixed warning** (9cc625b)
- **use string/string_view for base64** (93cc810)
- **use string/string_view for base32** (e0a21cf)
- **don't use fixed size buffer for local destination's keys** (c2f6731)
- **make Base64EncodingBufferSize constexpr** (706b9c5)
- **pass n by value** (c0b5f2d)
- **replace more strings to string_view** (960a85e)
- **implement strsplit using string_view instead stringstream** (67ab4fe)
- **use array instead vector for reserved ranges** (2def747)
- **use array/string_view for HTTP methods and versions** (6a65680)
- **store translation as string_view** (ede8244)
- **use array/string_view for exluded HTTP headers in server tunnel** (c3d4d1b)
- **enable encoding of ML-DSA-44 messages** (ad7ca42)
- **correct ML-DSA-44 signature verification params** (cd9427d)
- **MLDSA44 signer and keygen** (e3227ee)
- **Post-Quantum. MLDSA44 verifier** (dd58b2f)
- **don't delete trusted routers from netdb** (972c685)
- **don't grow window too fast** (4ddfe9c)
- **don't create profile for every single router when save to disk** (4e8b846)
- **use ends_with to recognize .i2p addresses** (4d9b5e6)
- **recognize keys=shareddest** (b500374)
- **reduced profile persist interval** (fe3e7b1)
- **load profile for SSU2 priority only** (66a52a1)
- **removed test crypto/signature types** (9c97909)
- **Ed25519ph** (c816d3e)
- **replace boost::lexical_cast by std::to_string. std::unique_ptr for thread** (4f82fe2)
- **Solaris build added** (a1794cc)
- **move BOB incoming connection logic from I2PTunnelConnection to BOB** (5f76284)
- **reduce I2PTunnelConnection buffer size** (539e7e9)
- **lazy creation of TunnelEnpoint for transit tunnel** (2a4403f)
- **use common constants for babdwidth limits** (dcd15cc)
- **check PeerTest buffer size** (9432202)
- **fixed typo** (bf050ac)
- **replace boost::lexical_cast by std::from_chars and std::to_string** (81dae19)
- **use plain buffer instead stream for SignedData** (7e3d964)
- **use plain buffer instead stream for SignedData** (9ba0162)
- **check RelayRequest, RelayIntro, RelayResponse buffer size. Use assign instead memcpy** (7791b39)
- **const ExtractString and ExtractMapping** (b97f09c)
- **fixed typo** (aedf59d)
- **always pass RouterInfo param values as string_view** (d09367d)
- **update router caps** (70f99cc)
- **parse RouterInfo from buffer** (ef72ba3)
- **set max padding size to 32 bytes** (fa2178c)
- **check outbound tunnels only for LeaseSet request** (48aaeca)
- **don't request LeaseSet until destination if ready** (4bb86b6)
- **make token always non-zero** (0588116)
- **changed some log levels** (78a37cc)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/PurpleI2P/i2pd?utm_source=github-action)._