Firmas digitales XAdES y PAdES en Delphi | sgcSign | eSeGeCe

Firmas digitales XAdES y PAdES en Delphi

sgcSign produce firmas digitales de nivel eIDAS desde código Delphi, C++Builder y .NET: XAdES para XML, PAdES para PDF, CAdES para cualquier contenido binario y contenedores ASiC para empaquetar documentos con sus firmas. Los cuatro niveles AdES, 10 proveedores de claves y 21 perfiles de país de la UE preconfigurados, con criptografía nativa CNG/BCrypt y sin DLLs externas.

Todos los formatos ETSI, de B-B a B-LTA

Un motor de firma detrás de cuatro familias de firma. Elige el formato que espera tu regulador o tu contraparte; el perfil hace el resto.

Un componente de firma digital XAdES / PAdES para Delphi tiene un único trabajo: producir una salida que el portal receptor realmente acepte. sgcSign cubre las cuatro familias de firma ETSI: XAdES (EN 319 132, XML), PAdES (EN 319 142, PDF), CAdES (EN 319 122, CMS/PKCS#7) y los contenedores ASiC-S / ASiC-E (EN 319 162), en todos los niveles AdES desde B-B (básico) pasando por B-T (con sello de tiempo) y B-LT (largo plazo, con cadena y datos de revocación embebidos) hasta B-LTA (largo plazo con sellos de tiempo de archivo).

Las claves vienen de donde vivan las tuyas: ficheros locales PFX/PKCS#12 y PEM, el almacén de certificados de Windows, tarjetas inteligentes y HSMs PKCS#11, o servicios en la nube (Azure Trusted Signing, AWS KMS, Google Cloud KMS, HashiCorp Vault, Certum SimplySign, QTSPs remotos CSC v2). Todos los proveedores implementan la misma interfaz IsgcKeyProvider, así que pasar de un fichero PFX a un HSM en la nube es cambiar un componente.

XAdES

Firmas XML enveloped, enveloping y detached: TsgcSignXML + TsgcSignProfile_XAdES

PAdES

Firmas PDF con apariencia visible, compatibles con Adobe Acrobat: TsgcSignPDF + TsgcSignProfile_PAdES

CAdES y ASiC

Firmas CMS/PKCS#7 sobre cualquier fichero, más contenedores ASiC-S / ASiC-E basados en ZIP

Compiladores

De Delphi 7 a RAD Studio 13, C++Builder y .NET

Pensado para el trabajo de cumplimiento en la UE

Las piezas que convierten una firma en bruto en un documento que una administración pública acepta.

Sellos de tiempo RFC 3161

Apunta TSA.URL a cualquier autoridad de sellado de tiempo y los niveles B-T y superiores embeben un sello de tiempo de firma automáticamente.

Validación a largo plazo

Para B-LT / B-LTA, OCSP.AutoFetch y CRL.AutoFetch recuperan y embeben la cadena completa y los datos de revocación, de modo que el documento se verifica durante años sin llamadas de red.

21 perfiles de país

VeriFactu, TicketBAI, Facturae, FatturaPA, KSeF, Factur-X / ZUGFeRD, e-Factura, SAF-T PT, Peppol y más. Cada perfil preajusta hash, canonicalización, nivel, sello de tiempo y política de revocación para el regulador de destino.

Contratos laborales

Nueve perfiles de contrato laboral de la UE (Alemania, Italia, España, Francia, Austria, Bélgica, Portugal, Países Bajos, Polonia) preestablecen el nivel AdES / QES que espera cada jurisdicción.

Verificación e informes

TsgcSignatureVerifier valida digests, cadenas, revocación OCSP y sellos de tiempo, y devuelve un informe estructurado con el nivel detectado, el firmante y el estado.

Lista de confianza de la UE

TsgcEUTrustList parsea la LOTL en vivo y las Trusted Lists de cada Estado miembro, así que puedes clasificar cualquier certificado como cualificado eIDAS contra el registro oficial de la UE.

Firmas PDF visibles

Nombre del firmante, motivo, ubicación, datos de contacto y un rectángulo de firma configurable en cualquier página, compatible con Adobe Acrobat.

Criptografía nativa

Windows CNG/BCrypt por debajo. Sin DLL de OpenSSL que desplegar junto a tu ejecutable.

Biblioteca o servidor

El mismo motor se distribuye como biblioteca de componentes in-process y como sgcSign Server, un demonio REST de firma auto-alojado para build farms y pipelines de CI.

Firma una factura XML y después un PDF

Carga un proveedor de claves, configura un perfil, firma. El mismo patrón de tres pasos para todos los 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;

Verifica antes de entregar

Todo flujo de firma debería terminar con una pasada de verificación. TsgcSignatureVerifier toma el XML o el PDF firmado y devuelve un informe por firma: el nivel AdES realmente alcanzado, el sujeto firmante, el sello de tiempo y cualquier problema de cadena o revocación. Si pediste B-T y el informe dice B-B, la petición de sello de tiempo falló y te enteras en tu máquina, no en la cola de errores del regulador.

Para comprobaciones de cualificación eIDAS, combina el verificador con el componente de la lista de confianza de la UE: sgcSign valida las firmas igual que las valida la UE, contra la LOTL en vivo, y puede producir un informe de validación estandarizado.

Sigue avanzando con sgcSign

Tutorial: Firma XAdES

De una factura XML en claro a XAdES-B-T: modos de empaquetado, sellos de tiempo y verificación, paso a paso.

Tutorial: Firma de PDF

El mismo recorrido para PAdES: perfiles, firmas visibles y actualizaciones incrementales.

Perfiles de país

Los 21 perfiles de la UE preconfigurados para facturación electrónica y contratos laborales.

Proveedores de claves

PFX, PEM, almacén de Windows, tokens PKCS#11 y los proveedores KMS en la nube, en detalle.

sgcSign Server

Firma remota centralizada sobre REST. Listo para GitHub Actions, Azure DevOps, Docker y Helm.

Precios

Licencias para la biblioteca de componentes y el servidor, más el paquete All-Access.

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

Firma tu primer documento hoy mismo

Descarga la versión de prueba, ejecuta el tutorial de XAdES con tu propia factura y verifica el resultado de extremo a extremo.