Skip to main content

Module secrets

Module secrets 

Source
Expand description

Cifragem at-rest de segredos no config.toml (GAP-009 / R-SECRETS-DEFAULT).

Ordem de resolução da chave mestra (32 bytes):

  1. SSH_CLI_SECRETS_KEY — 64 hex chars
  2. SSH_CLI_SECRETS_KEY_FILE — arquivo com 64 hex chars
  3. OS keyring (service=ssh-cli, user=secrets-master-key) se SSH_CLI_USE_KEYRING=1
  4. Arquivo XDG secrets.key (ao lado do config.toml), criado automaticamente na 1ª gravação

Opt-out (testes/debug): SSH_CLI_ALLOW_PLAINTEXT_SECRETS=1 — não auto-cria chave; serialização permanece em texto se nenhuma fonte 1–3 estiver definida.

Com chave: serialização grava sshcli-enc:v1:<base64(nonce||ciphertext)>.

Nunca logar ou retornar a chave ou o plaintext em erros públicos.

Structs§

StatusSegredos
Relatório de modo de segredos (sem material sensível).

Enums§

FonteChave
Fonte da chave mestra (sem expor material).

Constants§

NOME_ARQUIVO_CHAVE
Nome do arquivo de chave mestra no diretório de config.
PREFIXO_ENC
Prefixo de blobs cifrados no TOML.

Functions§

caminho_secrets_key
Path canônico do arquivo de chave mestra local.
carregar_chave_mestra
Resolve chave mestra e origem (não auto-cria).
definir_diretorio_config
Define o diretório de config para resolver secrets.key (one-shot; chamado no executar).
deserializar_segredo
Desserializa de TOML: decifra blobs sshcli-enc:v1:; senão devolve como está.
diretorio_config_segredos
Diretório de config usado para secrets.key (override > SSH_CLI_HOME > XDG).
eh_blob_cifrado
True se a string já é blob cifrado.
garantir_chave_para_escrita
Garante chave para escrita: carrega existente ou auto-cria secrets.key (salvo opt-out plaintext).
gerar_hex_chave
Gera 32 bytes aleatórios como hex 64.
gravar_chave_arquivo
Grava chave hex em arquivo com 0o600 (quando suportado).
gravar_chave_no_keyring
Grava chave mestra (hex) no OS keyring. Não imprime a chave.
init_master_key
Inicializa master-key em arquivo XDG ou keyring. Nunca imprime a chave.
plaintext_permitido
True se SSH_CLI_ALLOW_PLAINTEXT_SECRETS pede plaintext.
serializar_segredo
Serializa um segredo para TOML: cifra se houver (ou auto-criar) chave; senão plaintext.
status_segredos
Status atual (sem carregar material em logs).