Assinaturas Digitais XAdES & PAdES em Delphi | sgcSign | eSeGeCe

Assinaturas Digitais XAdES & PAdES em Delphi

O sgcSign produz assinaturas digitais de nível eIDAS a partir de código Delphi, C++Builder e .NET: XAdES para XML, PAdES para PDF, CAdES para qualquer conteúdo binário e contêineres ASiC para empacotar documentos com suas assinaturas. Os quatro níveis AdES, 10 provedores de chave e 21 perfis de países da UE pré-configurados, com criptografia nativa CNG/BCrypt e sem DLLs externas.

Todos os formatos ETSI, do B-B ao B-LTA

Um motor de assinatura por trás de quatro famílias de assinaturas. Escolha o formato que seu regulador ou contraparte espera; o perfil faz o resto.

Um componente de assinatura digital XAdES / PAdES para Delphi tem um único trabalho: produzir uma saída que o portal receptor de fato aceite. O sgcSign cobre as quatro famílias de assinatura ETSI: XAdES (EN 319 132, XML), PAdES (EN 319 142, PDF), CAdES (EN 319 122, CMS/PKCS#7) e contêineres ASiC-S / ASiC-E (EN 319 162), em todos os níveis AdES, do B-B (básico), passando pelo B-T (com timestamp) e B-LT (longo prazo, com cadeia e dados de revogação embutidos), até o B-LTA (longo prazo com timestamps de arquivo).

As chaves vêm de onde quer que as suas morem: arquivos locais PFX/PKCS#12 e PEM, o repositório de certificados do Windows, smart cards e HSMs PKCS#11, ou serviços em nuvem (Azure Trusted Signing, AWS KMS, Google Cloud KMS, HashiCorp Vault, Certum SimplySign, QTSPs remotos CSC v2). Cada provedor implementa a mesma interface IsgcKeyProvider, então trocar de um arquivo PFX para um HSM em nuvem é uma mudança de um componente.

XAdES

Assinaturas XML enveloped, enveloping e detached: TsgcSignXML + TsgcSignProfile_XAdES

PAdES

Assinaturas PDF com aparência visível, compatíveis com Adobe Acrobat: TsgcSignPDF + TsgcSignProfile_PAdES

CAdES & ASiC

Assinaturas CMS/PKCS#7 sobre qualquer arquivo, mais contêineres ASiC-S / ASiC-E baseados em ZIP

Compiladores

Do Delphi 7 ao RAD Studio 13, C++Builder e .NET

Feito para o trabalho de conformidade na UE

As peças que transformam uma assinatura crua em um documento que uma administração pública aceita.

Timestamps RFC 3161

Aponte TSA.URL para qualquer autoridade de timestamp e os níveis B-T e acima embutem um timestamp de assinatura automaticamente.

Validação de longo prazo

Para B-LT / B-LTA, OCSP.AutoFetch e CRL.AutoFetch recuperam e embutem a cadeia completa e os dados de revogação, então o documento verifica por anos sem chamadas de rede.

21 perfis de países

VeriFactu, TicketBAI, Facturae, FatturaPA, KSeF, Factur-X / ZUGFeRD, e-Factura, SAF-T PT, Peppol e mais. Cada perfil pré-ajusta hash, canonicalização, nível, timestamp e política de revogação para o regulador alvo.

Contratos de trabalho

Nove perfis de contrato de trabalho da UE (Alemanha, Itália, Espanha, França, Áustria, Bélgica, Portugal, Países Baixos, Polônia) pré-definem o nível AdES / QES que cada jurisdição espera.

Verificação & relatórios

TsgcSignatureVerifier valida digests, cadeias, revogação OCSP e timestamps, e retorna um relatório estruturado com o nível detectado, o signatário e o status.

EU Trust List

TsgcEUTrustList interpreta a LOTL ao vivo e as Trusted Lists de cada Estado-Membro, então você pode classificar qualquer certificado como qualificado eIDAS contra o registro oficial da UE.

Assinaturas PDF visíveis

Nome do signatário, motivo, local, informações de contato e um retângulo de assinatura configurável em qualquer página, compatível com Adobe Acrobat.

Criptografia nativa

Windows CNG/BCrypt por baixo. Nenhuma DLL do OpenSSL para implantar junto com seu executável.

Biblioteca ou servidor

O mesmo motor é distribuído como biblioteca de componentes in-process e como sgcSign Server, um daemon REST de assinatura auto-hospedado para build farms e pipelines de CI.

Assine uma nota fiscal XML, depois um PDF

Carregue um provedor de chave, configure um perfil, assine. O mesmo padrão de três passos para todos os formatos.

uses
  sgcSign_KeyProvider_PFX, sgcSign_XML, sgcSign_Profile_XAdES;

var
  vKeyProvider: TsgcPFXKeyProvider;
  vProfile: TsgcSignProfile_XAdES;
  vSigner: TsgcSignXML;
  vXML, vSigned: string;
begin
  vXML := TFile.ReadAllText('invoice.xml', TEncoding.UTF8);

  vKeyProvider := TsgcPFXKeyProvider.Create(nil);
  vKeyProvider.FileName := 'certificate.pfx';
  vKeyProvider.Password := 'secret';
  vKeyProvider.LoadFromFile;

  vProfile := TsgcSignProfile_XAdES.Create(nil);
  vProfile.Level := xalT;            // or xalLT, xalLTA
  vProfile.Packaging := xpkEnveloped;
  vProfile.HashAlgorithm := shaSHA256;
  vProfile.TSA.URL := 'https://freetsa.org/tsr';

  vSigner := TsgcSignXML.Create(nil);
  try
    vSigner.KeyProvider := vKeyProvider;
    vSigner.Profile := vProfile;
    vSigned := vSigner.SignXML(vXML);
    TFile.WriteAllText('invoice-signed.xml', vSigned, TEncoding.UTF8);
  finally
    vSigner.Free;
  end;
end;
var
  vProfile: TsgcSignProfile_PAdES;
  vSigner: TsgcSignPDF;
begin
  vProfile := TsgcSignProfile_PAdES.Create(nil);
  vProfile.Level := palT;
  vProfile.HashAlgorithm := shaSHA256;
  vProfile.TSA.URL := 'http://timestamp.digicert.com';

  // Optional visible signature widget
  vProfile.SignatureField.Visible := True;
  vProfile.SignatureField.Page := 1;
  vProfile.SignatureField.Rect := Rect(50, 50, 250, 120);
  vProfile.SignatureField.Reason := 'Approved';
  vProfile.SignatureField.Location := 'Madrid';

  vSigner := TsgcSignPDF.Create(nil);
  try
    vSigner.KeyProvider := vKeyProvider;
    vSigner.Profile := vProfile;
    vSigner.SignFile('invoice.pdf', 'invoice-signed.pdf');
  finally
    vSigner.Free;
  end;
end;

Verifique antes de enviar

Todo fluxo de assinatura deveria terminar com uma passada de verificação. O TsgcSignatureVerifier recebe o XML ou PDF assinado e retorna um relatório por assinatura: o nível AdES realmente alcançado, o subject do signatário, o timestamp e quaisquer problemas de cadeia ou revogação. Se você pediu B-T e o relatório diz B-B, a requisição de timestamp falhou e você descobre na sua máquina, não na fila de erros do regulador.

Para checagens de qualificação eIDAS, combine o verificador com o componente EU Trust List: o sgcSign valida assinaturas da mesma forma que a UE as valida, contra a LOTL ao vivo, e pode produzir um relatório de validação padronizado.

Continue com o sgcSign

Tutorial: assinatura XAdES

De uma nota fiscal XML simples ao XAdES-B-T: modos de empacotamento, timestamps e verificação, passo a passo.

Tutorial: assinatura de PDF

O mesmo passo a passo para PAdES: perfis, assinaturas visíveis e atualizações incrementais.

Perfis de países

Os 21 perfis da UE pré-configurados para faturamento eletrônico e contratos de trabalho.

Provedores de chave

PFX, PEM, repositório do Windows, tokens PKCS#11 e os provedores KMS em nuvem em detalhe.

sgcSign Server

Assinatura remota centralizada via REST. Pronto para GitHub Actions, Azure DevOps, Docker e Helm.

Preços

Licenças para a biblioteca de componentes e o servidor, mais o pacote All-Access.

Best value: All-AccessEvery eSeGeCe product, Premium Support included, from €1,059/year.
See All-Access pricing

Assine seu primeiro documento hoje

Baixe o trial, rode o tutorial de XAdES com sua própria nota fiscal e verifique o resultado de ponta a ponta.