Skip to content

feat: interop enc:v1 — decifra e re-cifra o armazenamento do gateway - #6

Merged
elielsousa-pathbit merged 2 commits into
masterfrom
feat/enc-v1-field-decryption
Oct 20, 2026
Merged

elielsousa-pathbit merged 2 commits into
masterfrom
feat/enc-v1-field-decryption

Conversation

@logins-pathbit

@logins-pathbit logins-pathbit commented Sep 12, 2026 •

Copy link
Copy Markdown
Contributor

O que muda

O gateway cifra credenciais em repouso com AES-256-GCM (enc:v1:<iv>:<ct>:<tag>). A leitura passa a decifrar com STORAGE_ENCRYPTION_KEY e a escrita re-cifra no mesmo formato. Sem chave, ou sem a biblioteca, nada muda: o valor cifrado volta intacto e o painel segue dizendo 'nao verificavel daqui'.

Por que o PR falhava

  • O Dockerfile do commit original vinha de outro repositorio (COPY apps/ominirtksync/..., rotulo TalqueeAI, WEB_HOST=127.0.0.1): quebrava o build da imagem. Foi descartado.
  • A branch estava 68 commits atras do master, com o pacote antigo omini_rtksync (renomeado para omni_rtksync no fix(naming): corrige grafia OminiRTkSync para OmniRTkSync #25) e o database.py, que virou gateway.py.
  • O job de testes roda PYTHONPATH=src sem instalar dependencias; um import Crypto no topo derrubava a coleta da suite inteira.

Conteudo (refeito sobre o master atual)

  • gateway.py: derivacao scrypt (sal = contexto estatico medido no bundle), decrypt/encrypt, ligados a get_all_connections e update_connection. Fica no modulo de dominio do gateway, como manda o teste de identidade.
  • pyproject.toml: pycryptodome==3.23.0 pinada, importada sob demanda.
  • ci.yml: instala o pacote antes da suite, para os testes de cifra rodarem de verdade.
  • .env.example e wiki: documentam STORAGE_ENCRYPTION_KEY.
  • tests/test_enc_v1.py: vetor de interop gerado pelo Node, ciclo leitura/escrita contra SQLite real e degradacao sem a biblioteca.

Validacao local

  • unittest: 465 OK (1 pulado); valida_docs.py: 0 divergencias
  • imagem Docker reconstruida, pycryptodome 3.23.0 presente, teste de container OK

O gateway cifra credenciais em repouso com AES-256-GCM
(enc:v1:<iv>:<ct>:<tag>). A leitura passa a decifrar com
STORAGE_ENCRYPTION_KEY e a escrita re-cifra no mesmo formato; sem chave ou
sem a biblioteca o comportamento anterior permanece (valor cifrado intacto,
tratado como 'nao verificavel daqui').

- gateway.py: derivacao scrypt (sal = contexto estatico medido no bundle),
  decrypt/encrypt, integrados a get_all_connections e update_connection.
  Fica no modulo de dominio do gateway, como manda o contrato de identidade.
- pyproject.toml: pycryptodome==3.23.0 pinada. Importada sob demanda.
- ci.yml: instala o pacote antes da suite para os testes de cifra rodarem.
- .env.example e wiki: documentam STORAGE_ENCRYPTION_KEY.
- tests/test_enc_v1.py: vetor de interop gerado pelo Node, ciclo
  leitura/escrita contra SQLite real e degradacao sem a biblioteca.

Substitui a versao anterior deste PR, cujo Dockerfile vinha de outro
repositorio (COPY apps/...) e quebrava o build da imagem.
@elielsousa-pathbit
elielsousa-pathbit force-pushed the feat/enc-v1-field-decryption branch from 452a1c6 to af89324 Compare October 20, 2026 01:08
@elielsousa-pathbit elielsousa-pathbit changed the title feat: interop enc:v1 — decifra e re-cifra o armazenamento do OmniRoute feat: interop enc:v1 — decifra e re-cifra o armazenamento do gateway Oct 20, 2026
Comment thread tests/test_enc_v1.py Fixed

@elielsousa-pathbit elielsousa-pathbit left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Revisado e refeito sobre o master atual (Dockerfile de outro repositorio descartado, import da pycryptodome sob demanda, testes de integracao). CI verde em 3.11-3.14, CodeQL e build Docker/testcontainers.

@elielsousa-pathbit elielsousa-pathbit left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok

@elielsousa-pathbit
elielsousa-pathbit merged commit c4ae886 into master Oct 20, 2026
6 checks passed
@elielsousa-pathbit
elielsousa-pathbit deleted the feat/enc-v1-field-decryption branch October 20, 2026 01:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants