Postagem em destaque

Huguinho e Zezinho surfando com granizo

Imagem
Certa vez, em outubro de 2023, Huguinho e seu amigo Zezinho foram surfar no final da tarde. O vento estava forte e a chuva, constante. Quando chegaram perto da praia, mal conseguiam segurar suas pranchas. O mar estava bem mexido, e ainda tiveram que andar cerca de 1 km até o pico. Quando estavam se aproximando, começou a cair granizo! Dava para ouvir claramente o barulho das pedras contra as pranchas. Eles se abrigaram embaixo do posto avançado dos salva-vidas, mas não adiantou muito. Ficaram olhando o mar — que estava bem agitado e quebrando bem longe — e perceberam que estava difícil passar a arrebentação. Como o granizo não parava, decidiram entrar assim mesmo. Logo que entraram no mar, o granizo cessou, mas aí começou o verdadeiro desafio: passar a arrebentação. Depois de levar várias séries na cabeça e quase sem forças, finalmente conseguiram. E começaram os raios! Quando estavam quase decidindo sair por causa deles, os raios pararam. Ufa! É algo estranho: você está lá, só você (c...

Assinando arquivos PDF com certificado digital em Go

Desenvolver uma solução para assinar PDFs com certificado digital (PFX) em Go se mostrou um desafio considerável, apesar do escopo inicial parecer simples. Após a conclusão, a implementação aparenta ser direta (são apenas 180 linhas), mas o processo exigiu várias iterações e entendimento detalhado sobre as limitações das ferramentas e bibliotecas disponíveis.

A primeira abordagem consistiu em tentar, de forma monolítica, ler o PDF, aplicar o carimbo visual e assinar digitalmente em uma única etapa. No entanto, surgiram diversos entraves — em especial, a perda da assinatura digital após a inserção do carimbo, e erros decorrentes da manipulação do documento. Adicionalmente, muitas soluções baseadas em IA indicavam bibliotecas pagas ou APIs externas, ou ainda métodos inexistentes nas bibliotecas, tornando a busca por alternativas viáveis um processo repetitivo e pouco produtivo.

O fluxo mais robusto — e funcional — consolidou-se apenas após dividir o processo em etapas claras, conforme observado no código do projeto:

  1. Leitura do PDF bruto: carregamento do arquivo a ser assinado;
  2. Leitura e parsing do certificado PFX: extração das chaves necessárias para assinatura;
  3. Inserção do carimbo (imagem): a adição do elemento visual que representa a assinatura, por demanda de reconhecimento prático do usuário final, ocorre antes da assinatura digital,
  4. Normalização do PDF: ajuste do documento após inserção da imagem, garantindo a integridade estrutural e a compatibilidade com o processo de assinatura;
  5. Assinatura digital do PDF: aplicação efetiva da assinatura criptográfica utilizando o certificado PFX.

Um ponto importante, que é óbvio, mas não custa lembrar, é que qualquer modificação posterior à assinatura — como a inclusão de imagens ou objetos — invalida a assinatura digitalizada, tornando mandatório inserir o carimbo antes do processo criptográfico. Além disso, a necessidade de normalização após manipular o PDF se fez evidente para corrigir eventuais inconsistências introduzidas no fluxo.

O resultado final é um pipeline previsível e robusto, fiel às boas práticas de assinatura digital de documentos PDF — solução já disponível para uso público em: https://github.com/alexsetta/pdfsigner.







Comentários

Postagens mais visitadas deste blog

Google Hacking

Netflix não mostra ícone de streaming

Radar no KM 175 da BR101