为密钥对提供OSX密钥链后端
项目描述
这个库是keyring的后端插件,它提供了一个用于管理OSX密钥链密钥类项的后端。
支持的功能
通过SecKeyCreateRandomKey自动生成密钥
通过SecItemAdd导入各种格式的现有密钥
在密钥链中存储密钥或生成临时密钥
在安全区域(T2芯片 - 'TPM')中存储密钥;用于代码签名的解释器
限制密钥管理到特定的访问组;用于代码签名的解释器
使密钥不可提取,因此无法检索密钥内容,但只能用于签名或加密
安装
在darwin机器上运行以下命令
$ pip install keyrings.osx_keychain_keys
使用此后端
可以通过编程方式或从CLI使用此后端
import keyring
from keyrings.osx_keychain_keys.backend import OSXKeychainKeysBackend, OSXKeychainKeyType, OSXKeyChainKeyClassType
backend = OSXKeychainKeysBackend(
key_type=OSXKeychainKeyType.RSA, # Key type, e.g. RSA, RC, DSA, ...
key_class_type=OSXKeyChainKeyClassType.Private, # Private key, Public key, Symmetric-key
key_size_in_bits=4096,
is_permanent=True, # If set, saves the key in keychain; else, returns a transient key
use_secure_enclave=False, # Saves the key in the T2 (TPM) chip, requires a code-signed interpreter
access_group=None, # Limits key management and retrieval to set group, requires a code-signed interpreter
is_extractable=True # If set, private key is extractable; else, it can't be retrieved, but only operated against
)
keyring.set_keyring(backend)
# If password is not set - a key is generated
keyring.set_password('some-label', 'some-tag', password=None)
# If password is set - it could be a file path to a key to import to keychain
keyring.set_password('some-label', 'some-tag', '/tmp/my-private.key')
# It could also be the key-data itself
keyring.set_password('some-label', 'some-tag', '-----BEGIN RSA PRIVATE KEY----\n....')
# Returns a python-wrapped (using hazmat cryptography lib) private / public key
keyring.get_password('some-label', 'some-tag')
# Deletes a key from keychain
keyring.delete_password('some-label', 'some-tag')
在keyrings/osx_keychain_keys/examples和keyrings/osx_keychain_keys/tests中查看更多示例。
命令行工具
还可以使用keyring CLI来操作此后端
$ keyring -b keyrings.osx_keychain_keys.backend.OSXKeychainKeysBackend set "some-label" "some-tag"
安全注意事项
使用mac的密钥链有一些需要注意的问题,具体如下
某些密钥链API要求调用应用程序(在这种情况下是Python解释器)带有特定的Apple权限,即
将密钥保存到安全区域(T2 / TPM芯片)
通过访问控制限制访问(例如,在检索密钥之前要求touch-id / 密码)
将密钥管理限制到特定的访问组
默认情况下,所有插入的密钥都可供可执行的可运行程序访问,这意味着您使用的解释器可以管理生成的或导入的密钥。
如果您使用 virtualenv,您可以使用 $> venv --copies 创建一个,以限制对特定 venv python 二进制文件的访问。
制作发布版本
在 github 上设置了 CI/CD 流水线 - 一旦将 PR 合并到 master,就会自动部署预发布版本到 github;当标记发布版本时,它将自动部署到 pypi。
运行测试
要本地运行测试(需要 darwin 机器),请安装并调用 tox。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
keyrings.osx_keychain_keys-1.0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f3e6a4bcf0ed708e97d2b8cabd161b1519900752a6aa47cd2b5dbc5f59a91dab |
|
MD5 | 52d56786e2e678d2e3c1bcd5b9d27d39 |
|
BLAKE2b-256 | 8546a5d1b57d7680e9c89383cbc618d86394816d9b341b4c5079c758af82f9af |
keyrings.osx_keychain_keys-1.0.1-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b1c57ddeddaa9eb271c8ec872df94dfc3941c435baacccafcd262ed701631f5f |
|
MD5 | e5a85163b34e92d1f984f5facd7eb667 |
|
BLAKE2b-256 | 4cb2e6693b8c81b644c1d491b37c7a89f17313cc1553bfb8e091b57fbaf36d45 |