四个签名家族背后是同一个签名引擎。选择监管机构或对方期望的格式,其余交给配置文件。
Delphi XAdES / PAdES 数字签名组件只有一个任务:产出接收门户真正接受的结果。sgcSign 覆盖四个 ETSI 签名家族:XAdES(EN 319 132,XML)、PAdES(EN 319 142,PDF)、CAdES(EN 319 122,CMS/PKCS#7)以及 ASiC-S / ASiC-E 容器(EN 319 162),支持从 B-B(基础)、B-T(带时间戳)、B-LT(长期,内嵌证书链和吊销数据)到 B-LTA(带存档时间戳的长期)的每一个 AdES 级别。
您的密钥在哪里都可以:本地 PFX/PKCS#12 和 PEM 文件、Windows 证书存储、PKCS#11 智能卡和 HSM,或云服务(Azure Trusted Signing、AWS KMS、Google Cloud KMS、HashiCorp Vault、Certum SimplySign、CSC v2 远程 QTSP)。每个提供程序都实现同一个 IsgcKeyProvider 接口,因此从 PFX 文件切换到云 HSM 只是更换一个组件的事。
包封式、包封内和分离式 XML 签名:TsgcSignXML + TsgcSignProfile_XAdES
带可见外观的 PDF 签名,兼容 Adobe Acrobat:TsgcSignPDF + TsgcSignProfile_PAdES
对任何文件的 CMS/PKCS#7 签名,以及基于 ZIP 的 ASiC-S / ASiC-E 容器
Delphi 7 至 RAD Studio 13、C++Builder 和 .NET
把原始签名变成公共管理部门接受的文档所需的各个部分。
把 TSA.URL 指向任意时间戳机构,B-T 及以上级别会自动嵌入签名时间戳。
对于 B-LT / B-LTA,OCSP.AutoFetch 和 CRL.AutoFetch 获取并嵌入完整证书链和吊销数据,使文档多年后无需联网也能验证。
VeriFactu、TicketBAI、Facturae、FatturaPA、KSeF、Factur-X / ZUGFeRD、e-Factura、SAF-T PT、Peppol 等。每个配置文件都为目标监管机构预调好哈希、规范化、级别、时间戳和吊销策略。
九个欧盟雇佣合同配置文件(德国、意大利、西班牙、法国、奥地利、比利时、葡萄牙、荷兰、波兰)预设了各司法辖区期望的 AdES / QES 级别。
TsgcSignatureVerifier 验证摘要、证书链、OCSP 吊销和时间戳,并返回包含检测到的级别、签名者和状态的结构化报告。
TsgcEUTrustList 解析实时 LOTL 和各成员国信任列表,让您能够依据欧盟官方登记册判定任意证书是否为 eIDAS 合格证书。
签名者姓名、原因、地点、联系信息以及任意页面上可配置的签名矩形,兼容 Adobe Acrobat。
底层使用 Windows CNG/BCrypt。无需随可执行文件部署 OpenSSL DLL。
同一引擎既作为进程内组件库提供,也作为 sgcSign Server 提供:一个面向构建集群和 CI 流水线的自托管 REST 签名守护进程。
加载密钥提供程序,配置一个配置文件,然后签名。每种格式都是同样的三步模式。
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;
每个签名工作流都应以一次验证收尾。TsgcSignatureVerifier 接收已签名的 XML 或 PDF,并为每个签名返回一份报告:实际达到的 AdES 级别、签名者主题、时间戳以及任何证书链或吊销问题。如果您要求 B-T 而报告显示 B-B,说明时间戳请求失败了,而您会在自己的机器上发现这一点,而不是在监管机构的错误队列里。
对于 eIDAS 合格性检查,可将验证器与欧盟信任列表组件结合使用:sgcSign 按照欧盟自己的方式(依据实时 LOTL)验证签名,并能生成标准化的验证报告。
从普通 XML 发票到 XAdES-B-T:打包模式、时间戳和验证,循序渐进。
PAdES 的同款演练:配置文件、可见签名和增量更新。
21 个预配置的欧盟电子发票和雇佣合同配置文件。
详解 PFX、PEM、Windows 存储、PKCS#11 令牌和云 KMS 提供程序。
通过 REST 的集中式远程签名。支持 GitHub Actions、Azure DevOps、Docker 和 Helm。
组件库和服务器的许可,以及 All-Access 捆绑包。