feat: Implement end-to-end encryption for channels

- Added EncryptionSalt and WrappedRoomKey properties to Channel model.
- Introduced RoomCrypto class for client-side encryption and decryption.
- Updated ChannelService to handle encrypted channels, including creation and rekeying.
- Modified ChannelsController to expose crypto metadata and rekey functionality.
- Enhanced IrcCommandHandler to block joining encrypted channels over IRC.
- Updated database schema with migration for new encryption fields.
- Refactored file validation and image processing services to accommodate encrypted channels.
- Added unit tests for RoomCrypto functionality and updated existing tests for channel services.
This commit is contained in:
HueByte
2026-07-16 03:50:23 +02:00
parent ea8e583ee5
commit e05b420ce9
36 changed files with 1400 additions and 67 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
- [ ] fix the chat trailing; when user scrolls up, and somebody sends a message the chat instantly "teleports" to the very bottom
- [x] disable the autorun of files (maybe keep for mp4? gotta do some sec research on it)
- [x] when user creates a new channel, he gets moved to that channel; but the userlist does not refresh the state on that it refreshes when user re-enters the channel again
- [x] password protected rooms
- [x] password protected rooms (end-to-end encrypted — server cannot read contents)
- [ ] better audio lib, current one (NetCoreAudio) does not support seek or other audio actions
- [ ] Use options pattern for both client & server
- ref: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options?view=aspnetcore-10.0