Repository navigation
email openpgp
mobius1qwe edited this page Nov 13, 2026
·
1 revision
Important
Em desenvolvimento (2.0). Ainda não está numa versão lançada e pode mudar.
Nível: intermediário
Em uma frase: TRALOpenPGP assina, cifra, confere e abre mensagens PGP/MIME e
dados com chaves OpenPGP, no formato do GnuPG, do Thunderbird e do Kleopatra.
Você vai precisar: o pacote RALModuleMailPackage (e-mail) e as chaves:
a sua (com a parte secreta) e a pública de cada destinatário, em texto -----BEGIN PGP ... ou em arquivo. Não precisa do GnuPG instalado nem de OpenSSL.
uses RALMailMIME, RALOpenPGP;
FPGP := TRALOpenPGP.Create(Self);
FPGP.KeyFile := 'C:\MeuApp\minha-chave.asc'; // exportada do GnuPG ou gerada pelo RAL
FPGP.Passphrase := 'frase-da-chave';
FPGP.KeyRing.ImportFile('C:\MeuApp\clientes.asc'); // as públicas dos destinatários-
KeyRingguarda as chaves:Import(texto),ImportFile,ImportBytes;Find(impressão digital, ID ou e-mail),FindByEmail. - Gerar uma chave nova:
KeyRing.GenerateEd25519('Ana <ana@exemplo.com>', ...)(chave curta, o padrão do GnuPG atual) ouGenerateRSA(3072 bits); exporte e publique a parte pública. - Chave secreta protegida por frase-senha:
Passphrase.
FPGP.Sign(vMsg, vSaida); // multipart/signed (PGP/MIME)
FPGP.Encrypt(vMsg, vSaida); // para os destinatários da mensagem, pelo e-mail
FPGP.SignAndEncrypt(vMsg, vSaida);
FPGP.Open(vRecebida, vMsg, vInfo); // decifra e confere
if vInfo.Signed and not vInfo.SignatureValid then
Avisar('assinatura inválida');-
EncrypteSignAndEncryptsem lista de destinatários procuram noKeyRinga chave de cada endereço deTo,CceBcc; há também a forma com a lista de chaves. -
EncryptToSelfcifra também para a sua chave (para abrir a cópia guardada). -
TRALPGPInfodiz se veio assinada e se confere (SignatureValid), quem assinou (SignerEmail,SignerFingerprint,SignerKnown), se a chave expirou ou foi revogada, e se veio cifrada. - Para dados fora de e-mail (um arquivo, um texto):
SignData,EncryptData,DecryptData,VerifyDetachedeVerifyClearSigned(o texto-----BEGIN PGP SIGNED MESSAGE-----).
- Os pacotes AEAD/OCB que o GnuPG 2.4 usa com chaves que os anunciam: chaves do GnuPG
com preferência AEAD precisam de
setprefsem AEAD para o RAL abrir o que elas cifram. - Mensagens cifradas só com senha, chaves v5/v6 (RFC 9580), DSA, ElGamal, curvas NIST, BZip2.
| sintoma | causa | o que fazer |
|---|---|---|
| "sem chave pública para ..." | a chave pública do destinatário não está no KeyRing
|
importe a chave dele |
| não abre uma mensagem do GnuPG 2.4 | cifrada com AEAD (OCB) | no GnuPG: gpg --edit-key <id> e setpref sem AEAD |
| "a chave secreta é protegida" ao assinar | chave secreta protegida sem Passphrase
|
informe a frase-senha |
Começar
Servidor
- Rotas e parâmetros
- Rotas avançadas: tipos, grupos, versões 🚧
- Ler o pedido e responder
- Objetos no corpo 🚧
- Resposta em fluxo 🚧
- Plugins 🚧
- Serviços (contêiner de dependências) 🚧
- Barramento de eventos 🚧
- Autenticação
- Banco de dados (DBWare)
- Servir site e arquivos
- JSON-RPC 2.0 🚧
- Servidor MCP (IA) 🚧
-
Protocol Buffers 🚧
- gRPC 🚧
- WebSocket 🚧
- Hubs (WebSocket) 🚧
- Swagger e Postman
- Servidor SOAP 🚧
- WS-Security 🚧
- HTTPS
- Criptografia ponto a ponto
- Segurança para produção
- Colocar no ar
- Desempenho
- Testes em memória 🚧
MQTT 🚧
- O que é e quando usar 🚧
- Cliente MQTT 🚧
- Broker MQTT 🚧
- MQTT-SN 🚧
- Ponte REST 🚧
- Segurança 🚧
- Rede ruim 🚧
E-mail 🚧
- Mensagens 🚧
- Enviar 🚧
- Receber 🚧
- Ler a caixa postal 🚧
- Verificar o que chega 🚧
- Servir caixas postais 🚧
- S/MIME 🚧
- OpenPGP 🚧
Chatbot 🚧
- O robô e os canais 🚧
- Telegram 🚧
- Gateways REST (WhatsApp não oficial) 🚧
- Discord 🚧
- Slack 🚧
- Microsoft Teams 🚧
- Conversa em etapas 🚧
Cliente
Motores
- Qual motor escolher?
- Compatibilidade
- Recursos
- QUIC
- Motor NgHttp2 (HTTP/2) 🚧
- Motor XSocket 🚧
- Motor AdvancedHTTP (experimental) 🚧
Avançado
Ajuda
- Problemas comuns
- Atualizar o Indy
- Várias versões do Delphi
- Vídeos e guias
- Módulos de terceiros
- Licenças
- Contribuir
- Roadmap e changelog
🚧 = em desenvolvimento, pode mudar