Skip to content
mobius1qwe edited this page Nov 13, 2026 · 1 revision

Home > E-mail > OpenPGP

Assinar e cifrar com OpenPGP

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.

Chaves

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
  • KeyRing guarda 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) ou GenerateRSA (3072 bits); exporte e publique a parte pública.
  • Chave secreta protegida por frase-senha: Passphrase.

Assinar, cifrar, abrir

  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');
  • Encrypt e SignAndEncrypt sem lista de destinatários procuram no KeyRing a chave de cada endereço de To, Cc e Bcc; há também a forma com a lista de chaves.
  • EncryptToSelf cifra também para a sua chave (para abrir a cópia guardada).
  • TRALPGPInfo diz 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, VerifyDetached e VerifyClearSigned (o texto -----BEGIN PGP SIGNED MESSAGE-----).

O que fica de fora

  • Os pacotes AEAD/OCB que o GnuPG 2.4 usa com chaves que os anunciam: chaves do GnuPG com preferência AEAD precisam de setpref sem AEAD para o RAL abrir o que elas cifram.
  • Mensagens cifradas só com senha, chaves v5/v6 (RFC 9580), DSA, ElGamal, curvas NIST, BZip2.

Erros comuns

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

Veja também

Começar

Servidor

MQTT 🚧

E-mail 🚧

Chatbot 🚧

Cliente

Motores

Avançado

Ajuda

🚧 = em desenvolvimento, pode mudar

Clone this wiki locally