Releases: rbenzing/LibEmiddle
Releases · rbenzing/LibEmiddle
LibEmiddle v2.6.0
🎯 Overview
Production-readiness sprint delivering security hardening, encrypted persistence, structured error handling, and comprehensive test coverage across the full Signal Protocol stack.
✨ What's New
🔒 Security Hardening
- NEW: Group session replay attack protection — per-sender message ID tracking with 1,000-entry cap
- NEW: Chat session replay protection — 500-message sliding window FIFO ring buffer
- NEW: Post-removal forward secrecy — automatic chain key rotation when a group member is removed
- NEW: Encrypted device list persistence — AES-GCM authenticated storage with atomic writes
📡 API & Messaging
- NEW:
StartListeningAsync()now auto-starts mailbox polling — no extra call needed - NEW: O(1) message routing via
SenderIdentityKeyfield onEncryptedMessage— replaces O(n) brute-force session scan - NEW:
CreateChatSessionAsync(byte[] identityKey)overload — cache-first, transport fallback - NEW:
SendToDeviceAsync(deviceId, message)— device-to-device encrypted message routing - NEW:
FetchRecipientKeyBundleAsync()— validates bundle signature before caching - NEW: OPKManager one-time prekey consumption tracking with automatic replenishment
🗄️ Persistence & Lifecycle
- NEW:
DeviceStorage— survives process restarts with encrypted device list files - NEW:
IAsyncDisposableonLibEmiddleClient— safeawait usingcleanup - NEW:
LibEmiddleExceptionwith typedLibEmiddleErrorCode— 12 structured error codes replacing generic exceptions
🧪 Testing
- NEW: Concurrency tests — 7 tests covering multi-thread encrypt/decrypt, session isolation, nonce uniqueness
- NEW: Stress tests — 10 sessions × 50 messages, 5 group sessions × 20 messages, error path coverage
⚠️ Important Changes
- Password KDF migrated from HKDF + fixed salt to Argon2id (64 MB, 2 passes) — stronger brute-force resistance
SecureWebSocketClientnow throwsLibEmiddleException(TransportError)instead of bareException- Fixed AES-GCM detached decryption P/Invoke signature (was silently failing all decryption)
- Fixed
MessageSigning.VerifyObject<T>()reversed argument order (was failing all signature verification)
✅ Compatibility
Fully backward compatible with v2.5.1 — drop-in replacement, no code changes needed for existing integrations.
📊 Testing
- ✅ 532 tests passing (up from 388 baseline)
- ✅ No breaking changes
- ✅ No new failures
v2.5.1
LibEmiddle v2.5.1 - Documentation & Refactoring Release
🎯 Overview
Documentation and code quality release addressing user feedback about the mailbox transport system.
✨ What's New
📚 Comprehensive Documentation
- NEW: Mailbox Transport Guide - 500+ line complete guide
- NEW: Message Flow Diagrams - Visual Mermaid sequence diagrams
- Enhanced README with dedicated transport section and examples
🔧 Code Improvements
- Refactored polling logic, eliminated ~120 lines of duplicate code
- Created
StartPollingLoopAsync()helper inBaseMailboxTransport - Improved maintainability across transport implementations
⚠️ Important Clarifications
- WebRTC Transport: Clarified as stub only (not production-ready), planned for v3.0
- Updated all documentation to reflect accurate feature status
✅ Compatibility
Fully backward compatible with v2.5.0 - Drop-in replacement, no code changes needed!
📊 Testing
- ✅ All 275 tests passing (improved from 273 baseline)
- ✅ No breaking changes
- ✅ No new failures
v2.5.0
v2.0.0
Full Changelog: https://github.com/rbenzing/LibEmiddle/commits/v2.0.0