life_cycle-pkey
名称
life_cycle-pkey - PKEY 算法生命周期
描述
所有公钥 (PKEY) 在其生命周期中都会经历多个阶段
- 开始
-
此状态表示 PKEY 在分配之前。它是任何生命周期转换的起始状态。
- 已分配
-
此状态表示 PKEY 已分配后。
- 解封装
-
此状态表示 PKEY 准备好执行私钥解封装操作时。
- 解密
-
此状态表示 PKEY 准备好解密某些密文时。
- 派生
-
此状态表示 PKEY 准备好派生共享密钥时。
- 摘要签名
-
此状态表示 PKEY 准备好执行私钥签名操作时。
- 封装
-
此状态表示 PKEY 准备好执行公钥封装操作时。
- 加密
-
此状态表示 PKEY 准备好加密某些明文时。
- 密钥生成
-
此状态表示 PKEY 准备好生成新的公钥/私钥时。
- 参数生成
-
此状态表示 PKEY 准备好生成密钥参数时。
- 验证
-
此状态表示 PKEY 准备好验证公钥签名时。
- 验证恢复
-
此状态表示 PKEY 准备好恢复公钥签名数据时。
- 已释放
-
当 PKEY 被释放时,将进入此状态。它是所有生命周期转换的终止状态。
状态转换图
说明了 PKEY 对象的常用生命周期
正式状态转换
本节定义了所有合法状态转换。这是规范列表。
函数调用 | 当前状态 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
开始 | 已分配 | 摘要 签名 |
验证 | 验证 恢复 |
加密 | 解密 | 派生 | 封装 | 解封装 | 参数 生成 |
密钥 生成 |
已释放 | |
EVP_PKEY_CTX_new | 已分配 | ||||||||||||
EVP_PKEY_CTX_new_id | 已分配 | ||||||||||||
EVP_PKEY_CTX_new_from_name | 已分配 | ||||||||||||
EVP_PKEY_CTX_new_from_pkey | 已分配 | ||||||||||||
EVP_PKEY_sign_init | 摘要 签名 |
摘要 签名 |
摘要 签名 |
摘要 签名 |
摘要 签名 |
摘要 签名 |
摘要 签名 |
摘要 签名 |
摘要 签名 |
摘要 签名 |
摘要 签名 |
||
EVP_PKEY_sign | 摘要 签名 |
||||||||||||
EVP_PKEY_verify_init | 验证 | 验证 | 验证 | 验证 | 验证 | 验证 | 验证 | 验证 | 验证 | 验证 | 验证 | ||
EVP_PKEY_verify | 验证 | ||||||||||||
EVP_PKEY_verify_recover_init | 验证 恢复 |
验证 恢复 |
验证 恢复 |
验证 恢复 |
验证 恢复 |
验证 恢复 |
验证 恢复 |
验证 恢复 |
验证 恢复 |
验证 恢复 |
验证 恢复 |
||
EVP_PKEY_verify_recover | 验证 恢复 |
||||||||||||
EVP_PKEY_encrypt_init | 加密 | 加密 | 加密 | 加密 | 加密 | 加密 | 加密 | 加密 | 加密 | 加密 | 加密 | ||
EVP_PKEY_encrypt | 加密 | ||||||||||||
EVP_PKEY_decrypt_init | 解密 | 解密 | 解密 | 解密 | 解密 | 解密 | 解密 | 解密 | 解密 | 解密 | 解密 | ||
EVP_PKEY_decrypt | 解密 | ||||||||||||
EVP_PKEY_derive_init | 派生 | 派生 | 派生 | 派生 | 派生 | 派生 | 派生 | 派生 | 派生 | 派生 | 派生 | ||
EVP_PKEY_derive_set_peer | 派生 | ||||||||||||
EVP_PKEY_derive | 派生 | ||||||||||||
EVP_PKEY_encapsulate_init | 封装 | 封装 | 封装 | 封装 | 封装 | 封装 | 封装 | 封装 | 封装 | 封装 | 封装 | ||
EVP_PKEY_encapsulate | 封装 | ||||||||||||
EVP_PKEY_decapsulate_init | 解封装 | 解封装 | 解封装 | 解封装 | 解封装 | 解封装 | 解封装 | 解封装 | 解封装 | 解封装 | 解封装 | ||
EVP_PKEY_decapsulate | 解封装 | ||||||||||||
EVP_PKEY_paramgen_init | 参数 生成 |
参数 生成 |
参数 生成 |
参数 生成 |
参数 生成 |
参数 生成 |
参数 生成 |
参数 生成 |
参数 生成 |
参数 生成 |
参数 生成 |
||
EVP_PKEY_paramgen | 参数 生成 |
||||||||||||
EVP_PKEY_keygen_init | 密钥 生成 |
密钥 生成 |
密钥 生成 |
密钥 生成 |
密钥 生成 |
密钥 生成 |
密钥 生成 |
密钥 生成 |
密钥 生成 |
密钥 生成 |
密钥 生成 |
||
EVP_PKEY_keygen | 密钥 生成 |
||||||||||||
EVP_PKEY_gen | 参数 生成 |
密钥 生成 |
|||||||||||
EVP_PKEY_CTX_get_params | 已分配 | 摘要 签名 |
验证 | 验证 恢复 |
加密 | 解密 | 派生 | 封装 | 解封装 | 参数 生成 |
密钥 生成 |
||
EVP_PKEY_CTX_set_params | 已分配 | 摘要 签名 |
验证 | 验证 恢复 |
加密 | 解密 | 派生 | 封装 | 解封装 | 参数 生成 |
密钥 生成 |
||
EVP_PKEY_CTX_gettable_params | 已分配 | 摘要 签名 |
验证 | 验证 恢复 |
加密 | 解密 | 派生 | 封装 | 解封装 | 参数 生成 |
密钥 生成 |
||
EVP_PKEY_CTX_settable_params | 已分配 | 摘要 签名 |
验证 | 验证 恢复 |
加密 | 解密 | 派生 | 封装 | 解封装 | 参数 生成 |
密钥 生成 |
||
EVP_PKEY_CTX_free | 已释放 | 已释放 | 已释放 | 已释放 | 已释放 | 已释放 | 已释放 | 已释放 | 已释放 | 已释放 | 已释放 | 已释放 |
注意
在某个时间点,EVP 层将开始强制执行此处描述的转换。
参见
EVP_PKEY_new(3),EVP_PKEY_decapsulate(3),EVP_PKEY_decrypt(3),EVP_PKEY_encapsulate(3),EVP_PKEY_encrypt(3),EVP_PKEY_derive(3),EVP_PKEY_keygen(3),EVP_PKEY_sign(3),EVP_PKEY_verify(3),EVP_PKEY_verify_recover(3)
历史
提供程序 PKEY 接口是在 OpenSSL 3.0 中引入的。
版权
版权所有 2021-2022 OpenSSL 项目作者。保留所有权利。
根据 Apache 许可证 2.0(“许可证”)许可。除非符合许可证,否则您不得使用此文件。您可以在源代码分发中的 LICENSE 文件或 https://www.openssl.org/source/license.html 中获取副本。