导入
方法
标记为是的每个方法都接受两个只能以关键字传入的参数:
auth_key_id=1 和 password。密码是必需的。驱动不会保存它,也不会把它写入异常信息。
方法参考
Net.get(name, type=NetType.Hsm)
按名称获取一个 HSM Net。
YubiHsm2
每次调用都会打开设备、执行一个操作,然后再次关闭设备。驱动在两次调用之间不会占用该 USB 设备。
info()
firmware、serial、log_used、log_size、part_number 和 algorithms 的 dict
generate_key(object_id, algorithm, label='', domains=(1,), capabilities=None, *, auth_key_id=1, password)
在 HSM 内生成一个非对称密钥。
返回: 包含
id 和 public_key_pem 的 dict
生成 RSA 密钥可能需要几分钟。对 RSA 密钥,调用最多等待 300 秒。
sign(object_id, data, mechanism, *, auth_key_id=1, password)
用已存储的密钥对 data 签名。
mechanism 取值为 ecdsa-sha256、ecdsa-sha384、ecdsa-sha512、eddsa、rsa-pkcs1-sha256、rsa-pkcs1-sha384、rsa-pkcs1-sha512、rsa-pss-sha256、rsa-pss-sha384 或 rsa-pss-sha512。
返回: bytes - 签名
import_key(object_id, private_key_pem, label='', domains=(1,), capabilities=None, *, auth_key_id=1, password)
导入一个未加密的 PEM 私钥。返回: int - 对象 ID
list_objects(type=None, label=None, *, auth_key_id=1, password)
返回: list[dict],每项包含 id、type、label、algorithm、domains、capabilities、size 和 sequence。get_object_info() 返回一个这样的 dict。
type 和 object_type 取值为 asymmetric-key、authentication-key、opaque、wrap-key、hmac-key、template 或 otp-aead-key。
reset(*, auth_key_id=1, password)
将 HSM 恢复出厂设置,并最多等待 10 秒让它恢复。这会删除 HSM 上的所有密钥。
session(*, auth_key_id=1, password)
一个上下文管理器,产出 yubihsm 包的已登录会话,用于本驱动未封装的操作。
错误
说明
- 请从环境变量或文件读取密码,不要写在脚本源码中
- 对应的 CLI 命令是
lager hsm - 对应的 Rust 接口见 Rust HSM 参考

