PKCS11加密密钥类
tokencrypt的Python项目详细描述
此模块提供与加密兼容的代理类,以便使用 加密智能卡(如Yubi密钥或PKCS 11令牌) 处理实际的加密工作负载。
这些通常被认为是“安全”令牌和私有 密钥它们通常被配置为不可提取私钥 从代币的硬件。因此,您需要请求令牌 执行任何通常使用 私钥。
在本模块中,您将发现密码的新抽象 rsaprivatekey类,称为rsaprivatetoken而不是使用 后端提供的普通加密使用硬件令牌 直接的。
目前,这意味着pkcs 11api由 opensc-pkcs11[1]包。tokencrypt使用pykcs11库 要包装opensc pkcs 11库并需要一个环境变量 设置以便可以在Debian上找到库,该库将
exportPYKCS11LIB=/usr/lib/x86_64-linux-gnu/opensc-pkcs11.so
这个库的一个用例是使用一个yubikey来提供oauth 使用请求的python应用程序的标识服务-oauth2 图书馆。如果要访问第三方API 云服务系统。
在这种情况下,可以向图书馆提供rsaprivatetoken 通常的rsaprivatekey。
许多库示例显示提供了一个pem编码的字符串,但它们也 使用密码学的rsaprivatekey的一个子类,如下所示。
示例
importTokenCryptfromThierAPIimportAPIConection,PrivateCredentials# Not a working example.rsa_key=TokenCrypt.RSAPrivateToken(slot=0,key=0,pin='123456')withrsa_key:credentials=PrivateCredentials(args.consumer_key,rsa_key)api=APIConection(credentials)do_something_with(api)
[1] | This is the package name in debian Stretch, Buster, Bullseye(so far), your distribution may vary. |
当前状态
这是概念发布的初步证明,其设计足以 支持作为OAuth客户机工作的代码。因此,目前唯一的行动 在密钥上实现的是签名。
但是有很多todo,pull请求和bug报告都是受欢迎的。
待办事项
- Implement RSAPublicToken .
- Dynamically select the signing mechanism based to the provided padding and hash.
- Implement decrypt.
- Implement certificate extraction.