sgcSign

适用于 Delphi、C++Builder 和 .NET 的企业级数字签名套件。支持 10 个密钥提供者和 21 个预配置国家配置文件,可生成 XAdES、PAdES、CAdES 和 ASiC 签名——可作为进程内组件库或自托管远程签名服务器使用。

XAdES / PAdES / CAdES / ASiC
10 个密钥提供者
21 个国家配置文件
符合 EU eIDAS 规范

组件库或服务器——相同的签名引擎

sgcSign 提供两种互补形态,共享相同的签名引擎、密钥提供者和国家配置文件。可选择嵌入式库、集中式服务器,或同时使用两者。

sgcSign 组件库

可直接嵌入应用程序的 Delphi / C++Builder / .NET 组件,可生成 XAdES、PAdES、CAdES 和 ASiC 签名。原生 CNG/BCrypt 加密,无需外部 DLL,包含完整源代码。

组件库功能 →

sgcSign 服务器

自托管远程签名服务器——REST API、Bootstrap Web 管理台、Windows 服务安装程序。在文档格式基础上增加 Authenticode、ClickOnce、NuGet 和 VSIX 签名。内置 GitHub Actions、Azure DevOps、Jenkins、Docker 和 Helm 流水线。

服务器概览 →

全部 ETSI 格式,B-B 到 B-LTA

全面支持四种 ETSI 签名类型以及适用于 PE 二进制文件的 Microsoft Authenticode。支持所有四个 AdES 等级。

</>

XAdES

ETSI EN 319 132 — XML Advanced Electronic Signatures

支持 XML 封装、分离和包裹签名。等级 B-B / B-T / B-LT / B-LTA。在 Delphi 7+ 上通过 WideString 重载无损处理波兰语、西班牙语和德语带逆字符。

PAdES

ETSI EN 319 142 — PDF Advanced Electronic Signatures

将数字签名嵌入 PDF 文档。可见签名外观包含签名者姓名、理由、位置、联系信息和可配置矩形。与 Adobe Acrobat 兼容。

CAdES

ETSI EN 319 122 — CMS/PKCS#7 Advanced Electronic Signatures

对任意文件或数据流的 CMS/PKCS#7 二进制签名。支持分离和附属形式。BES、T 和 XL 层级。

ASiC-S / ASiC-E

ETSI EN 319 162 — Associated Signature Containers

将一个或多个文档以及关联的 XAdES 或 CAdES 签名打包到一个 ZIP 档案中。简单形式(一个文档)或扩展形式(清单 + 多个文档)。

Authenticode + ClickOnce + NuGet + VSIX

代码签名——sgcSign 服务器

对 Windows PE 文件(.exe、.dll、.sys、.ocx)、ClickOnce 清单、NuGet 包和 VSIX 包进行签名。支持 SHA-256(默认)、SHA-384、SHA-512 以及双签名兼容老系统。

本地文件、硬件令牌、云 KMS

每个提供者均实现相同的 IsgcKeyProvider 接口,密钥源可无缝切换无需修改签名器。仅需更换一个组件,即可从 PFX 文件切换至 AWS KMS。

PFX / PKCS#12

TsgcPFXKeyProvider

本地密码保护 PFX 文件。原生 Windows CNG 支持,无需 OpenSSL DLL。

PEM Files

TsgcPEMKeyProvider

PEM 编码的证书和加密 PKCS#8 私钥。原生 PBES2 / PBKDF2 / AES-CBC 解密——无需外部库。

Windows Certificate Store

TsgcWindowsCertStoreProvider

本地计算机和当前用户证书存储。与 Windows PKI 和 Active Directory 无缝集成。

PKCS#11 Hardware Tokens

TsgcPKCS11Provider

通过标准 PKCS#11 接口使用智能卡和 HSM——SafeNet、YubiKey、Nitrokey 以及任何提供 PKCS#11 驱动的厂商。

Azure Trusted Signing

TsgcAzureTrustedSigningProvider

Microsoft 认证签名服务。OAuth2 客户端凭据,私钥永远不离开 Azure。与 Azure Key Vault 不同。

AWS KMS

TsgcAWSKMSKeyProvider

AWS 密钥管理服务。使用 AWS 中的密钥进行签名;发送文档哈希,返回原始签名。

Google Cloud KMS

TsgcGCloudKMSKeyProvider

Google Cloud 密钥管理。服务账户认证,密钥托管于 Google Cloud。

HashiCorp Vault

TsgcHashiCorpVaultKeyProvider

Vault 传输签名引擎。密钥始终存放在 Vault 中;文档哈希通过经过认证的 REST API 发送。

Certum SimplySign

TsgcCertumSimplySignProvider

波兰资质电子签名提供商。基于云的远程签名,适用于 KSeF、ZUS 和其他波兰政务门户。

CSC v2 (Cloud Signature Consortium)

TsgcCSCKeyProvider

通用 CSC v2 客户端,适用于远程 QTSP——Universign、D-Trust sign-me、A-Trust、FNMT Cl@ve Firma、Evrotrust、Intesi Group 等。

欧洲电子发票和劳动合同

每个配置文件均预先设置哈希算法、规范化、签名级别、时间戳和 OCSP 吐销策略,以匹配目标国家的监管要求。一行代码即可切换司法管辖区域。

电子发票配置文件(12 个)

Profile Country System Format Level
spVeriFactuSpainVeriFactu (AEAT)XAdES-EPESB-B
spTicketBAISpain (Basque)TicketBAIXAdES-EPESB-B
spFacturaeB2BSpainFacturae 3.x / FACeXAdES-EPESB-T
spFatturaPAItalyFatturaPA (SDI)XAdES-BESB-B
spSAFTPTPortugalSAF-T PTRSA-SHA256B-B
spKSeFPolandKSeF (Krajowy System e-Faktur)XAdESB-T
spFacturXFrance / GermanyFactur-X / ZUGFeRDXAdESB-B
spEFacturaRomaniae-Factura (ANAF)XAdESB-T
spNAVOnlineHungaryNAV OnlineXML-DSigB-B
spFiskalizacijaCroatiaFiskalizacijaXML-DSigB-B
spPeppolBE / spPeppolBGEU (Belgium, Bulgaria)Peppol UBL 2.xXAdESB-T
spMyDATAGreecemyDATA (AADE)XAdESB-B

EU 劳动合同配置文件(9 个)

符合 eIDAS 规范的签名,满足各成员国对劳动合同的劳动法要求。根据各司法管辖区域预先设置 AdES / QES 等级、哈希、规范化、时间戳和 OCSP 吐销策略。被劳动行政验证机构接受。

德国 — spEmploymentDE

等级 B-LT,书面形式合同(如定期超过 24 个月、合同后竞业禁止)依据 § 126a BGB 需要 QES。

意大利 — spEmploymentIT

等级 B-LT,FEQ 资质签名。CAdES(.p7m)广泛使用;XAdES 同样被接受。INPS 门户均支持。

西班牙 — spEmploymentES

等级 B-T,AdES 即可。SEPE / TGSS 门户需要 FNMT 或 DNIe 证书;CRL 通过 FNMT 信任列表获取。

法国 — spEmploymentFR

等级 B-T,AdES 可行。DSP2 / RGS 远程签名流程首选 QES。

奥地利 — spEmploymentAT

等级 B-LT。常用 Handy-Signatur / ID Austria 的 QES。

比利时 — spEmploymentBE

等级 B-LT。通过 eID 卡(BeID)的 QES。

葡萄牙 — spEmploymentPT

等级 B-LT。通过 Cartão do Cidadão / Chave Móvel Digital 的 QES。

荷兰 — spEmploymentNL

等级 B-T。AdES 普遍被接受;某些 HR 门户(UWV)需要 QES。

波兰 — spEmploymentPL

等级 B-T。合同提交至 ZUS / PUE 时需要通过 Profil Zaufany 或资质证书的 QES。

EU 信任列表、ETSI 验证报告和 LTV

sgcSign 采用与 EU 相同的方式验证签名——对照实时 LOTL,生成劳动法院和公共行政机构接受的标准化 XML 报告作为法律证明。

带 LTV 的签名验证

完整验证流程——摘要校验、RSA/ECDSA 签名验证、证书链验证、OCSP 吐销检查、内嵌长期验证 RevocationValues、基于 ID 的 SignedProperties 片段查找。

EU 信任列表(LOTL / EUTL)

TsgcEUTrustList 解析 ETSI TS 119 612 信任列表的列表以及约 31 个成员国信任列表。通过将证书签发 TSP 服务与实时 EU 注册表匹配,对任意 X.509 证书进行 eIDAS 资质分类。

ETSI TS 119 102-2 验证报告

每次验证均生成标准化 XML 验证报告(v1.2.1)——被 EU 劳动法院和公共行政验证机构接受为签名有效性的法律证明。

RFC 3161 时间戳

内置 TsgcTSAClient,支持任意 RFC 3161 时间戳机构。可将签名提升至 XAdES-T、XAdES-LT 和 XAdES-LTA——即使签名证书过期后仍可验证。

从本地 PFX 到云 KMS——相同的 API

使用本地 PFX 对 VeriFactu 发票进行签名

  • 从 PFX 文件加载证书(带密码)
  • 自动应用 VeriFactu 配置文件
  • 一个方法调用即可返回已签名的 XML
SignVeriFactu.pas
// 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;

使用 Azure Trusted Signing 对 EXE 进行 Authenticode 签名

  • 无需本地 PFX,无需 USB 令牌
  • 私钥始终存储在 Azure
  • Microsoft 额发的公共信任证书
SignWithAzure.pas
// 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-LT——带时间戳的可见签名

  • 来自 Windows 证书存储的证书
  • RFC 3161 TSA 将签名提升为 PAdES-T
  • 含理由和位置的可见签名
SignPDFVisible.pas
// 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;

为构建场提供集中式签名

需要为构建流水线提供集中式签名?sgcSign 服务器将相同的引擎封装在 REST API 和 Bootstrap Web 管理台背后——Windows 服务安装程序、内置 GitHub Actions / Azure DevOps / Jenkins / Docker / Helm 流水线、多租户项目模型、两步审批工作流、SHA-256 哈希链审计日志、Prometheus 指标和 HMAC 签名的 Webhook。

  • Authenticode、ClickOnce、NuGet、VSIX 签名
  • REST API、Web 管理台、Windows 服务安装程序
  • 默认包含全部功能
了解更多关于 sgcSign 服务器
github-actions.yml
name: Sign Release
on: [push]

jobs:
  sign:
    runs-on: windows-latest
    steps:
      - uses: esegece/sgcsign-action@v1
        with:
          server: https://sign.acme.local
          project: acme-release
          file: myapp.exe
          format: authenticode

立即部署符合 eIDAS 规范的签名

将 XAdES、PAdES、CAdES 和 ASiC 签名添加到您的 Delphi、C++Builder 或 .NET 应用程序——或为构建场部署集中式签名服务。