Pkcs11Interop/Pkcs11Interop
GitHub: Pkcs11Interop/Pkcs11Interop
为 .NET 应用提供托管代码访问 PKCS#11 加密硬件标准接口的跨平台封装库
Stars: 301 | Forks: 93
# Pkcs11Interop
**用于非托管 PKCS#11 库的托管 .NET 包装器**
[](https://github.com/Pkcs11Interop/Pkcs11Interop/blob/master/LICENSE.md)
[](https://www.nuget.org/packages/Pkcs11Interop/)
[](https://stackoverflow.com/questions/tagged/pkcs11interop)
[](https://twitter.com/p11interop)
[](https://github.com/Pkcs11Interop/Pkcs11Interop/actions/workflows/windows.yml)
[](https://github.com/Pkcs11Interop/Pkcs11Interop/actions/workflows/linux.yml)
[](https://github.com/Pkcs11Interop/Pkcs11Interop/actions/workflows/macos.yml)
## 概述
PKCS#11 是由 OASIS PKCS 11 技术委员会维护的加密标准(最初由 RSA Laboratories 发布)。它定义了一个 ANSI C API 来访问智能卡和其他类型的加密硬件。
Pkcs11Interop 是一个用 C# 编写的托管库,它将 PKCS#11 API 的全部功能引入 .NET 环境。它加载由加密设备供应商提供的非托管 PKCS#11 库,并使其功能可供 .NET 应用程序使用。
下图展示了 .NET 应用程序中 Pkcs11Interop 库的典型用法:

Pkcs11Interop 库:
- 实现了用于非托管 PKCS#11 库的 .NET 包装器。
- 符合 [PKCS#11 v2.40](https://github.com/Pkcs11Interop/PKCS11-SPECS/tree/master/v2.40) 规范和 [RFC 7512](https://github.com/Pkcs11Interop/PKCS11-SPECS/tree/master/RELATED/RFC7512) 中定义的 PKCS#11 URI 方案。
- 兼容 .NET Framework 2.0 及更高版本、.NET Core、Mono 和 Xamarin。
- 支持 Windows、Linux、macOS、Android 和 iOS。
- 支持 32 位和 64 位平台。
- 开源且完全免费用于商业用途。
- 被多家信息安全和金融组织用于生产环境。
- 使用 100% 托管且完全文档化的代码。
- 包含涵盖 PKCS#11 API 所有方法的代码示例。
Pkcs11Interop 已确认可用于以下设备:
- Atos CardOS(前身为 Siemens CardOS)智能卡
- Thales nShield Solo(前身为 nCipher nShield)HSM
- SoftHSM(来自 OpenDNSSEC 项目的虚拟 HSM)
- 飞天 (Feitian) ePass 2003 令牌
- SafeNet ProtectServer HSM
- SafeNet Luna SA HSM
- Utimaco CryptoServer HSM
- 比利时和斯洛伐克 eID 卡
- SmartCard-HSM
- 带有 PIV 应用程序的 YubiKey
## 文档
Pkcs11Interop API 通过内联 XML 文档进行了完整记录,大多数现代 IDE 在应用程序开发过程中都会显示这些文档。
在开始使用 Pkcs11Interop 之前,强烈建议您至少熟悉 [PKCS#11 v2.20](https://github.com/Pkcs11Interop/PKCS11-SPECS/tree/master/v2.20) 规范的以下章节(或任何先前或后续规范版本的等效章节):
- *第 2 章 - 范围*
- *第 6 章 - 一般概述*
- *第 10 章 - 对象*
以下主题通过独立文档涵盖:
- [PKCS#11 术语简介](doc/01_TERMINOLOGY.md)
- [PKCS#11 对象简介](doc/02_OBJECTS.md)
- [PKCS#11 会话简介](doc/03_SESSIONS.md)
- [Pkcs11Interop 库架构](doc/04_ARCHITECTURE.md)
- [Pkcs11Interop 接口](doc/05_INTERFACES.md)
- [Pkcs11Interop 入门](doc/06_GETTING_STARTED.md)
- [Pkcs11Interop 代码示例](doc/07_CODE_SAMPLES.md)
- [使用 PKCS11-LOGGER 对 Pkcs11Interop 进行故障排除](doc/08_TROUBLESHOOTING.md)
- [常见问题解答](doc/09_FAQ.md)
## 下载
官方 [NuGet 包](https://www.nuget.org/packages/Pkcs11Interop/)发布在 nuget.org 仓库中。
包含源代码和二进制文件的压缩包可以从[我们的发布页面](https://github.com/Pkcs11Interop/Pkcs11Interop/releases/)下载。
所有官方项目均使用 [Jaroslav Imrich 的 GnuPG 密钥或代码签名证书](https://www.jimrich.sk/crypto/)签名,并通过[公开邮件列表](https://groups.google.com/d/forum/pkcs11interop)公布。
## 许可证
Pkcs11Interop 根据 [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0) 的条款提供。
tldrlegal.com 上提供了[人性化的许可证摘要](https://www.tldrlegal.com/license/apache-license-2-0-apache-2-0),但[完整许可证文本](LICENSE.md)始终优先适用。
## 支持
如果您需要帮助,请选择最适合您需求的选项之一:
- GitHub 上提供的公开 [Issue 追踪器](https://github.com/Pkcs11Interop/Pkcs11Interop/issues)。
- StackOverflow 上发布的带有 [pkcs#11 标签](https://stackoverflow.com/questions/tagged/pkcs%2311)和 [pkcs11interop 标签](https://stackoverflow.com/questions/tagged/pkcs11interop)的问题。
- 原开发者提供的商业支持和咨询,可通过 [info@pkcs11interop.net](mailto:info@pkcs11interop.net) 根据请求获取。
## 相关项目
* [Pkcs11Admin](https://www.pkcs11admin.net/)
用于管理基于 Pkcs11Interop 库的启用 PKCS#11 设备的 GUI 工具。
* [PKCS11-LOGGER](https://github.com/Pkcs11Interop/pkcs11-logger)
PKCS#11 日志代理模块,适用于启用 PKCS#11 的应用程序的调试。
* [SoftHSM2-for-Windows](https://github.com/disig/SoftHSM2-for-Windows)
可通过 PKCS#11 接口访问的加密存储的纯软件实现。
* [Bouncy HSM](https://github.com/harrison314/BouncyHsm)
具有 HTML UI、REST API 和 PKCS#11 接口的 HSM 和智能卡模拟器。
## 关于
Pkcs11Interop 由 [Jaroslav Imrich](https://www.jimrich.sk) 编写。
请访问项目网站 - [pkcs11interop.net](https://www.pkcs11interop.net) - 了解更多信息。
标签:API封装, CryptoAPI, CVE, HSM, NuGet, P/Invoke, PKCS#11, ProjectDiscovery, StruQ, 互操作, 令牌, 加密, 密码学, 手动系统调用, 数字签名, 数据保护, 智能卡, 漏洞扫描器, 硬件安全模块, 网络安全, 跨语言调用, 隐私保护, 非托管库封装