电子签名库与 API
从零开发电子签名需要数月时间。使用 eSignature,PDF、XML 和数据签名只需几行代码:您只需添加所需的签名标准、签名硬件或时间戳服务商,每一项都是独立的包。
什么是电子签名库?
电子签名库是一个现成的代码包,让您自己的软件具备创建和验证电子签名的能力。它替您处理签名标准(CAdES、XAdES、PAdES、ASiC)、证书链验证、时间戳以及与签名硬件的通信。eSignature 在 .NET 上以模块化包实现这一切:如果只签署 PDF,一个包就够了。
如何使用?
添加包
将所需标准的包添加到项目中,例如 PDF 签名使用 eSignature.PAdES。
选择签名来源
智能卡、USB Key、网络 HSM、云 HSM 或手机签名——每个服务商都是独立的包。
签名
根据文档、证书和签名级别生成签名;最高支持长期归档级别(LTA)。
验证
同一个库负责验证签名:按 RFC 5280 进行证书链验证、CRL、OCSP、Delta CRL 以及离线验证。
库中包含什么?
模块化结构——39 个包
只安装您用到的部分;没有多余依赖,也不臃肿。
全部 ETSI 配置
CAdES(从 BES 到 A)、XAdES(BES/T/C/X/XL/A)、PAdES(从 B-B 到 B-LTA)以及 ASiC-S/ASiC-E。
智能卡与 USB Key
通过 Windows CNG 和 PKCS#11;支持 AKİS、SafeNet/eToken、Gemalto/Thales、IDEMIA、Feitian、YubiKey、Nitrokey 等设备。
HSM 与云 HSM
Thales Luna、Utimaco、Entrust nShield 网络 HSM;AWS CloudHSM/KMS、Azure Key Vault HSM 和 Google Cloud KMS。
手机签名
支持 Turkcell、Vodafone 和 Türk Telekom 手机签名;每家运营商是独立的包。通过手机号发起,由用户确认。
11 家以上时间戳服务商
KamuSM、GlobalSign、DigiCert、Sectigo、Entrust、FreeTSA 等;每个 TSA 都是独立的包。
完整的证书验证
按 RFC 5280 进行证书链验证、CRL、OCSP、Delta CRL、离线验证——达到银行和公共部门级别的信任链检查。
法规合规
完全符合土耳其第 5070 号《电子签名法》;在欧洲方面,ETSI/eIDAS 配置已投入生产使用。
谁在使用?
软件公司与产品团队
希望在自有应用中加入签名功能,并在几天而非几个月内完成的团队。
政企系统集成商
在电子公文往来、文档管理系统(EBYS)和文档流转中需要签名与验证的项目。
金融与保险
需要大批量签名、通过 HSM 管理密钥以及完整验证链的业务流程。
电子单据与发票解决方案
用 XAdES 签署基于 XML 的文档,并将其提升到归档级别。
常见问题
什么是 PAdES 签名?
PAdES(PDF Advanced Electronic Signatures)是一种将签名嵌入 PDF 文件内部的电子签名格式,由 ETSI EN 319 142 标准定义。签署后的文档仍是 PDF,可在 Adobe Reader 等 PDF 阅读器的签名面板中验证,并可在页面上显示可见的签名域。其级别依次为 B-B、B-T(带时间戳)、B-LT 和 B-LTA(长期归档)。
什么是 CAdES 签名?
CAdES(CMS Advanced Electronic Signatures)是一种基于 CMS/PKCS#7 结构的电子签名格式,由 ETSI EN 319 122 标准定义。它可以签署任何类型的文件;签名通常以 .p7s 形式或放在已签名的封装中随文档传递。在土耳其,它是电子签名公文中最常用的格式。
什么是 XAdES 签名?
XAdES(XML Advanced Electronic Signatures)是专为 XML 文档开发的电子签名格式,由 ETSI EN 319 132 标准定义。签名可以嵌入 XML 中,也可以单独存放。它用于 UBL-TR 格式电子发票等基于 XML 的文档。
什么是电子签名库?
电子签名库是一种开发者组件(SDK),可将电子签名的创建和验证功能嵌入您自己的软件。现成的签名应用会向用户提供界面;而签名库是没有界面的构建模块——由您的应用在您的业务流程中完成签名。它可配合智能卡、USB Key 或 HSM 使用,生成并验证 CAdES、XAdES 和 PAdES 格式。
什么是 e-Yazışma 包?
e-Yazışma 包是与土耳其公共机构进行正式电子公文往来时使用的标准包:已签名的文档、元数据文件以及附件(如有)被打包为一个包。机构之间通常通过 KEP(注册电子邮件)传送。
如何创建 e-Yazışma 包?
正式的 e-Yazışma 包由元数据文件和已签名文档一起打包而成。签名库只需一次调用即可完成:用 CAdES 或 XAdES 签署文档,生成符合架构的元数据,并封装成包。支持 e-Yazışma 1.3 和 2.0 版本,并内置 KamuSM 根证书。指定文件夹后,可批量签署其中的文档。
电子签名库与现成应用有什么区别?
签名库嵌入您自己的软件:由您的业务流程触发签名,界面也属于您。现成应用(İmzacı)在桌面端运行:由用户选择文件并签名。两者使用同一套签名基础设施;哪种适合您,取决于由谁发起签名——您的软件还是用户。
支持哪些签名标准?
CAdES(BES、EPES、T、C、X、XL、A)、XAdES(BES、T、C、X、XL、A)、PAdES(B-B、B-T、B-LT、B-LTA)以及 ASiC-S 和 ASiC-E。一个库即可达到长期归档级别。
我只签署 PDF,需要全部安装吗?
不需要。该库是模块化的;PDF 只需 eSignature.PAdES 包。您不使用的标准、TSA 和硬件服务商根本不会进入项目。
如何在 Web 应用中签署 PDF?
签名不是在浏览器中生成,而是在 Web 应用的服务器端生成:调用 eSignature.PAdES 包,将签好的 PDF 返回给用户。关键在于密钥存放在哪里——使用云 HSM、网络 HSM 或手机签名时,服务器可以访问密钥,整个流程都可在 Web 上完成。如果密钥在用户的智能卡上,浏览器无法访问该卡;这种情况下需在桌面端用 İmzacı 签名。
如果密钥不在智能卡上,而在 HSM 或云端,也能用吗?
可以。签名来源已被抽象化:智能卡和 USB Key(CNG/PKCS#11)、网络 HSM、云 HSM 服务和手机签名都使用同一流程。每个服务商都是独立的包。
它也能验证签名吗?
能。按 RFC 5280 进行证书链验证、CRL、OCSP、Delta CRL 和离线验证都包含在库中;签名的生成和验证由同一组件完成。
有面向希望在桌面端签名的用户的产品吗?
有。无需编写代码即可使用的桌面应用是 İmzacı:用智能卡签署 PDF 和 XML,创建 e-Yazışma 包,并按文件夹批量签名。
为 .NET 或 Java 项目添加电子签名最快的方法是什么?
将所需标准的包添加到项目中:PDF 签名用 eSignature.PAdES,XML 用 XAdES 包。由于该库拆分为 39 个 NuGet 包,您只需安装用到的部分,项目中不会引入单个庞大的依赖。
支持哪些智能卡和 USB Key?
通过 Windows CNG 和 PKCS#11 支持 AKİS、SafeNet/eToken、Gemalto/Thales、IDEMIA、Feitian、YubiKey、Nitrokey 等设备。每个服务商都是独立的包;您不使用的驱动不会进入项目。
能否在服务器端用 HSM 签名?
能。支持 Thales Luna、Utimaco 和 Entrust nShield 网络 HSM,以及 AWS CloudHSM/KMS、Azure Key Vault HSM 和 Google Cloud KMS。这样即可在服务器上搭建自动签名流程,无需用户手持卡片。
验证签名需要单独的库吗?
不需要;签名的生成和验证由同一组件完成。按 RFC 5280 进行证书链验证、CRL、OCSP、Delta CRL 和离线验证都包含在库中。
相关页面
Part of the eSignature family.