markkurossi/pkcs11-provider
GitHub: markkurossi/pkcs11-provider
基于Go语言实现的PKCS #11提供者库和软件HSM,通过RPC架构支持密码学令牌接口标准。
Stars: 10 | Forks: 1
# PKCS #11 Provider
本项目实现了 [PKCS #11 Cryptographic Token Interface
Base Specification Version
3.0](https://docs.oasis-open.org/pkcs11/pkcs11-base/v3.0/pkcs11-base-v3.0.html)
API,并通过 Unix domain sockets 提供 RPC 接口以与 token 实现进行通信。该实现包含以下组件:
- [library](library/) 将 PKCS #11 接口实现为一个共享库。PKCS #11 函数定义在 `.rpc` 文件中,并通过 [RPC compiler](cmd/rpcc/) 转换为 `.c` 文件。
- [RPC Compiler](cmd/rpcc/) 用于根据 RPC 定义生成 PKCS #11 桩函数。RPC Compiler 使用 [Go](https://golang.org/) 编程语言实现。
- [PKCS #11](pkcs11/) token 库(Go 语言版)。
- [Software Token](cmd/token/) 实现了 PKCS #11 操作。该 token 使用 Go 实现,(将)支持所有现代 PKCS #11 密码学操作。
- [Java PKCS #11 Test](java/) 用于从 Java 测试 PKCS #11 接口。
# 示例用法
启动 token:
```
$ cd cmd/token
$ ./token
```
运行 [pkcs11-testing](https://github.com/markkurossi/pkcs11-testing)
测试程序:
```
$ cd ~/work/pkcs11-testing
$ ./pkcs11-testing --module ~/go/src/github.com/markkurossi/pkcs11-provider/library/libvpkcs11.so --slot 0 --pin 1111 --test-all
```
Java 的 SunPKCS11 provider:
```
$ cd java
$ javac PKCS11Test
$ java PKCS11Test
```
AWS CloudHSM 示例:
```
$ cd aws-cloudhsm-pkcs11-examples
$ make
$ make test
```
# 待办事项
- [ ] Framework:
- [ ] 从 `libvpkcs11.so` 启动 token
- [ ] 非易失性 token 存储
- [ ] Token 配置文件
- [ ] 测试与 Firefox 的兼容性
- [ ] 测试与 [aws-cloudhsm-pkcs11-examples](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples) 的兼容性
- [ ] tools/import_pub_key.c
- [ ] tools/wrap_with_imported_rsa_key.c
- [ ] derivation/ecdh.c
- [ ] derivation/hmac_kdf.c
- [ ] wrapping/unwrap_with_template.c
- [ ] wrapping/aes_wrapping.c
- [ ] wrapping/rsa_wrapping.c
- [ ] wrapping/aes_gcm_wrapping.c
- [ ] wrapping/wrap_with_template.c
- [ ] wrapping/aes_no_padding_wrapping.c
- [ ] wrapping/aes_zero_padding_wrapping.c
- [ ] encrypt/des_ecb.c
- [ ] Crypto provider with Go:
- [ ] Ed25519 公钥算法
- [ ] 消息签名与验证
- [ ] 双功能
- [X] RPC 编译器(虽然丑但能用):
- [ ] 清理字段输入/输出处理及类型
- [ ] 移除旧的未使用的输入/输出代码
# 文档
- [PKCS #11 Cryptographic Token Interface
Base Specification Version
3.0](https://docs.oasis-open.org/pkcs11/pkcs11-base/v3.0/pkcs11-base-v3.0.html)
- [Cryptographic Token Interface
Standard](https://www.cryptsoft.com/pkcs11doc/v230/)
标签:AWS, CloudHSM, CVE, C语言接口, DNS 反向解析, DPI, GHAS, Go语言, HSM, HTTP工具, Java安全, JS文件枚举, PKCS#11, Prisma Cloud, ProjectDiscovery, RPC, SamuraiWTF, Unix域套接字, 中间件, 令牌, 加密库, 安全组件, 客户端加密, 密码学, 手动系统调用, 数字签名, 数据保护, 日志审计, 程序破解, 网络安全, 软件HSM, 隐私保护