sgcSign 功能参考
sgcSign 数字签名套件完整功能目录——签名标准、密钥提供者、国家配置文件、验证、EU 信任列表集成和 ETSI 验证报告,支持 Delphi 7 至 Delphi 13、C++Builder 和 .NET。
sgcSign 数字签名套件完整功能目录——签名标准、密钥提供者、国家配置文件、验证、EU 信任列表集成和 ETSI 验证报告,支持 Delphi 7 至 Delphi 13、C++Builder 和 .NET。
sgcSign 将密钥管理、签名操作和输出格式分离。任意密钥提供者可与任意签名器组合使用;只需更换一个组件,即可在本地 PFX 和云 KMS 之间切换。
通过单一接口抽象证书和私钥访问。支持本地文件、Windows 证书存储、PKCS#11 硬件令牌、Azure / AWS / Google Cloud KMS、HashiCorp Vault、Certum SimplySign 和 CSC v2 远程 QTSP。
针对每种 ETSI 格式的专用签名器:TsgcXAdESSigner、TsgcPAdESSigner、TsgcCAdESSigner、TsgcAuthenticodeSigner。还有 TsgcDocumentSigner——一个统一的高层 API,可根据国家配置文件自动选择并配置正确的签名器。
TsgcTSAClient(RFC 3161 时间戳)、TsgcOCSPClient(吐销)、TsgcSignatureVerifier(验证)、TsgcEUTrustList(LOTL/EUTL)、TsgcASiCContainer(ASiC-S/ASiC-E ZIP 打包)。
全面覆盖所有四个 AdES 等级(B-B、B-T、B-LT、B-LTA)的 ETSI 签名格式,以及用于代码签名的 Microsoft Authenticode。
XML 高级电子签名。支持封装、分离和包裹模式。B-B / B-T / B-LT / B-LTA 等级。SignatureParentElement 用于固定签名位置的信封格式(KSeF /v2/auth/xades-signature)。在 Delphi 7+ 上通过 WideString 重载支持波兰语、西班牙语和德语带逆字符。
PDF 高级电子签名。签名嵌入 PDF 内部;可见签名外观含签名者姓名、理由、位置、联系信息和可配置矩形。与 Adobe Acrobat 兼容。通过 TSA + OCSP 支持 PAdES-T、-LT 等级。
对任意文件或数据流的 CMS/PKCS#7 二进制签名。支持分离和附属形式。CAdES-BES、CAdES-T(带时间戳)、CAdES-XL(含吐销值的长期签名)。
关联签名容器。ZIP 格式归档,将一个或多个文档与 XAdES 或 CAdES 签名打包。简单形式(apASiCS,单个文档)或扩展形式(apASiCE,清单 + 多个文档)。ZIP 的第一个条目是未压缩的 mimetype 标记,使验证器可在前约 50 字节内检测到容器。
Microsoft Authenticode,适用于 Windows PE 文件(.exe、.dll、.sys、.ocx、.cpl、.scr)。支持 SHA-1、SHA-256(默认)、SHA-384 和 SHA-512 哈希算法。RFC 3161 时间戳令牌。嵌套(双重)签名兼容旧版和现代验证器。在 sgcSign 服务器中提供。
每种格式均支持所有四个 ETSI 合规等级:B-B(基础)、B-T(时间戳)、B-LT(长期,含吐销值)、B-LTA(归档,含归档时间戳)。通过添加 TSA 客户端和 OCSP 响应器,可将签名从 B-B 提升至 B-LT。
每个提供者均实现 IsgcKeyProvider。无需修改签名代码即可在任意密钥源之间切换。
| 组件 | 类型 | 用途 |
|---|---|---|
TsgcPFXKeyProvider |
本地文件(PKCS#12) | 密码保护的 PFX/.p12 文件。原生 Windows CNG 支持。 |
TsgcPEMKeyProvider |
本地文件(PEM) | PEM 证书和加密 PKCS#8 密钥。原生 PBES2 / PBKDF2 / AES-CBC 解密——无需 OpenSSL DLL。 |
TsgcWindowsCertStoreProvider |
Windows 存储 | 本地计算机和当前用户存储。Active Directory 和组策略集成。 |
TsgcPKCS11Provider |
硬件令牌 | 通过 PKCS#11 驱动使用智能卡和 HSM——SafeNet、YubiKey、Nitrokey、Thales、Utimaco 等。 |
TsgcAzureTrustedSigningProvider |
云(Microsoft) | Azure Trusted Signing——Microsoft 认证签名服务。OAuth2 客户端凭据。与 Azure Key Vault 不同。 |
TsgcAWSKMSKeyProvider |
云(AWS) | AWS 密钥管理服务。密钥保存在 AWS 中;只有文档哈希离开网络。 |
TsgcGCloudKMSKeyProvider |
云(Google) | Google Cloud 密钥管理。服务账户认证。 |
TsgcHashiCorpVaultKeyProvider |
云(自托管) | HashiCorp Vault 传输签名引擎。密钥永远不离开 Vault 集群。 |
TsgcCertumSimplySignProvider |
远程 QTSP | Certum SimplySign——波兰资质电子签名提供商。兼容 KSeF、ZUS、PUE。 |
TsgcCSCKeyProvider |
远程 QTSP(CSC v2) | 通用云签名联盟 v2 客户端——Universign、D-Trust sign-me、A-Trust、FNMT Cl@ve Firma、Evrotrust、Intesi Group 以及任何提供 CSC v2 API 的 QTSP。 |
每个配置文件均预先设置哈希算法、规范化、签名等级、RFC 3161 时间戳策略和 OCSP 吐销预期,以满足目标国家监管机构的要求。一行代码即可切换司法管辖区域。
| 配置文件 | 国家 | 系统 | 格式 | 等级 |
|---|---|---|---|---|
spVeriFactu | 西班牙 | VeriFactu (AEAT) | XAdES-EPES | B-B |
spTicketBAI | Spain (Basque) | TicketBAI | XAdES-EPES | B-B |
spFacturaeB2B | 西班牙 | Facturae 3.x / FACe | XAdES-EPES | B-T |
spFatturaPA | 意大利 | FatturaPA (SDI) | XAdES-BES | B-B |
spSAFTPT | 葡萄牙 | SAF-T PT | RSA-SHA256 | B-B |
spKSeF | 波兰 | KSeF (Krajowy System e-Faktur) | XAdES | B-T |
spFacturX | France / Germany | Factur-X / ZUGFeRD | XAdES | B-B |
spEFactura | Romania | e-Factura (ANAF) | XAdES | B-T |
spNAVOnline | Hungary | NAV Online | XML-DSig | B-B |
spFiskalizacija | Croatia | Fiskalizacija | XML-DSig | B-B |
spPeppolBE | 比利时 | Peppol UBL 2.0 | XAdES | B-T |
spPeppolBG | Bulgaria | Peppol UBL 2.1 | XAdES | B-T |
spMyDATA | Greece | myDATA (AADE) | XAdES | B-B |
符合 eIDAS 规范的签名,满足各成员国劳动法要求(如德国 § 126a BGB、意大利 FEQ)。按司法管辖区域预先设置;通过 Profile.LoadProfile(spEmploymentXX) 加载到 TsgcXAdESSigner。
| 配置文件 | 国家 | 等级 | 哈希 | 时间戳 | OCSP | 备注 |
|---|---|---|---|---|---|---|
spEmploymentDE | 德国 | B-LT | SHA-256 | 是 | 是 | 书面形式合同依据 § 126a BGB 需要 QES。 |
spEmploymentIT | 意大利 | B-LT | SHA-256 | 是 | 是 | FEQ 资质签名;INPS 门户支持 XAdES 和 CAdES。 |
spEmploymentES | 西班牙 | B-T | SHA-256 | 是 | 否 | AdES 即可。SEPE / TGSS 门户需要 FNMT 或 DNIe。 |
spEmploymentFR | 法国 | B-T | SHA-256 | 是 | 否 | AdES 可行;DSP2 / RGS 远程签名首选 QES。 |
spEmploymentAT | 奥地利 | B-LT | SHA-256 | 是 | 是 | 常用 Handy-Signatur / ID Austria 的 QES。 |
spEmploymentBE | 比利时 | B-LT | SHA-256 | 是 | 是 | 通过 eID 卡(BeID)的 QES。 |
spEmploymentPT | 葡萄牙 | B-LT | SHA-256 | 是 | 是 | 通过 Cartão do Cidadão / Chave Móvel Digital 的 QES。 |
spEmploymentNL | 荷兰 | B-T | SHA-256 | 是 | 否 | AdES 普遍被接受;某些 HR 门户(UWV)需要 QES。 |
spEmploymentPL | 波兰 | B-T | SHA-256 | 是 | 否 | 合同提交至 ZUS / PUE 时需要通过 Profil Zaufany 或资质证书的 QES。 |
完整验证流程,结合 EU 信任列表集成和标准化 ETSI TS 119 102-2 XML 验证报告——被 EU 劳动法院和公共行政验证机构接受为签名有效性的法律证明。
TsgcSignatureVerifier 覆盖完整流程:摘要校验、RSA / ECDSA 签名验证、证书链验证、OCSP 吐销检查、嵌入式长期验证 RevocationValues 以及基于 ID 的 SignedProperties 片段查找。
TsgcEUTrustList 解析 ETSI TS 119 612 信任列表的列表以及约 31 个成员国信任列表。通过与实时 EU 注册表匹配,对任意 X.509 证书进行 eIDAS 资质分类。支持离线模式缓存,适用于隔离网络部署。
每次验证均生成标准化 XML 验证报告(v1.2.1)——被 EU 劳动法院和公共行政验证机构接受为签名有效性的法律证明。
TsgcTSAClient 可连接到任意 RFC 3161 时间戳机构。将签名从 B-B 提升至 B-T、B-LT 和 B-LTA——即使签名证书过期后仍可验证。
TsgcOCSPClient 执行 RFC 6960 在线证书状态协议检查。实时吐销验证,并将 OCSP 响应嵌入 B-LT 签名中,即使响应器后来离线,文档仍可验证。
包容性 C14N(xml-c14n11)和排他性 C14N(xml-exc-c14n),确保 XML 签名处理一致性。每个国家配置文件选择其监管机构所期望的规范化方式。
全程使用 Windows CNG / BCrypt 加密——无需 OpenSSL DLL。原生 PBES2 / PBKDF2 / AES-CBC 用于加密 PKCS#8 PEM。WinHTTP 用于网络操作。
支持从 Delphi 7 到 RAD Studio 13 的所有 Delphi 编译器,以及 C++Builder。现代单元带有旧版兼容保护(如 TsgcASiCContainer 需要 D2010+ 泛型;在 D7 上优雅地编译为空单元)。
适用于 .NET Framework 2.0–4.8、.NET Core、.NET 5–9 和 .NET Standard 的镜像 C# 移植版本。相同的 Tsgc* 类名;与 Delphi 库相同的 API 接口。
每个许可证均包含完整源代码。可检查、自定义、审计和扩展。组件类名已注册用于设计时 IDE 集成。
所有 X.509 / CRL / OCSP / TSA 时间戳均以 UTC TDateTime 值存储,符合 RFC 5280、RFC 3161 和 RFC 6960。通过每个组件的 *Local 属性进行本地时间转换。
免费二进制再分发。无限制地签署文档,无需按文档收费,也无需按部署许可。
spFatturaPA for Italy, spKSeF for Poland
// Sign Spanish VeriFactu invoice
var
vKeyProvider: TsgcPFXKeyProvider;
vSigner: TsgcDocumentSigner;
begin
vKeyProvider := TsgcPFXKeyProvider.Create(nil);
try
vKeyProvider.FileName := 'certificate.pfx';
vKeyProvider.Password := 'secret';
vKeyProvider.LoadFromFile;
vSigner := TsgcDocumentSigner.Create(nil);
try
vSigner.KeyProvider := vKeyProvider;
vSigner.Profile := spVeriFactu;
memoSigned.Text := vSigner.SignXML(memoXML.Text);
finally
vSigner.Free;
end;
finally
vKeyProvider.Free;
end;
end;
// Authenticode-sign with Azure Trusted Signing
var
vKeyProvider: TsgcAzureTrustedSigningProvider;
vSigner: TsgcAuthenticodeSigner;
begin
vKeyProvider := TsgcAzureTrustedSigningProvider.Create(nil);
vSigner := TsgcAuthenticodeSigner.Create(nil);
try
vKeyProvider.AccountName := 'my-trusted-signing-account';
vKeyProvider.CertificateProfileName := 'public-trust';
vKeyProvider.Endpoint := 'https://eus.codesigning.azure.net';
vSigner.KeyProvider := vKeyProvider;
vSigner.SignFile('myapp.exe', 'myapp-signed.exe');
finally
vSigner.Free;
vKeyProvider.Free;
end;
end;
// PAdES-T with visible signature appearance
var
vKeyProvider: TsgcWindowsCertStoreProvider;
vSigner: TsgcPAdESSigner;
vTSA: TsgcTSAClient;
begin
vKeyProvider := TsgcWindowsCertStoreProvider.Create(nil);
vSigner := TsgcPAdESSigner.Create(nil);
vTSA := TsgcTSAClient.Create(nil);
try
vKeyProvider.SubjectName := 'CN=Acme Corp';
vKeyProvider.LoadFromStore;
vTSA.URL := 'https://freetsa.org/tsr';
vSigner.KeyProvider := vKeyProvider;
vSigner.TSAClient := vTSA;
vSigner.Reason := 'Approved';
vSigner.Location := 'Madrid, Spain';
vSigner.VisibleSignature.Enabled := True;
vSigner.SignPDF('contract.pdf', 'contract-signed.pdf');
finally
vTSA.Free;
vSigner.Free;
vKeyProvider.Free;
end;
end;