feat: implement end-to-end encryption for chat messages and files, including key management and decryption functionality; enhance chat components to support encrypted content display

This commit is contained in:
2025-12-09 01:31:09 -03:00
parent cae6d886de
commit e6f380d7cc
14 changed files with 1443 additions and 203 deletions

View File

@@ -47,3 +47,37 @@ export function abrirConversa(conversaId: Id<'conversas'>) {
export function voltarParaLista() {
conversaAtiva.set(null);
}
// ========== CRIPTOGRAFIA E2E ==========
// Store para chaves de criptografia por conversa
// Mapeia conversaId -> CryptoKey
const chavesCriptografia = new Map<string, CryptoKey>();
/**
* Armazena uma chave de criptografia para uma conversa
*/
export function armazenarChaveCriptografia(conversaId: string, key: CryptoKey): void {
chavesCriptografia.set(conversaId, key);
}
/**
* Obtém uma chave de criptografia para uma conversa
*/
export function obterChaveCriptografia(conversaId: string): CryptoKey | null {
return chavesCriptografia.get(conversaId) || null;
}
/**
* Remove uma chave de criptografia de uma conversa
*/
export function removerChaveCriptografia(conversaId: string): void {
chavesCriptografia.delete(conversaId);
}
/**
* Verifica se uma conversa tem chave de criptografia
*/
export function temChaveCriptografia(conversaId: string): boolean {
return chavesCriptografia.has(conversaId);
}