

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS CloudHSM 客户端 SDK 3 的 PKCS \$111 库中的关键属性
<a name="pkcs11-v3-attributes"></a>

密钥对象可以是公有、私有或秘密密钥。通过属性指定密钥对象上允许的操作。属性是在创建密钥对象时定义的。当您使用 PKCS \$111 库时 AWS CloudHSM，我们会按照 PKCS \$111 标准指定的方式分配默认值。

AWS CloudHSM 不支持 PKCS \$111 规范中列出的所有属性。对于我们支持的所有属性，我们符合此规范。这些属性列在各自的表中。

创建、修改或复制对象的加密函数（如 `C_CreateObject`、`C_GenerateKey`、`C_GenerateKeyPair`、`C_UnwrapKey` 和 `C_DeriveKey`）将属性模板作为它们的一个参数。有关在对象创建期间传递属性模板的更多信息，请参阅[通过 PKCS \$111 库生成密钥](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/generate)样例。

以下主题提供了有关客户端 SDK 3 AWS CloudHSM 关键属性的更多信息。

**Topics**
+ [属性表](pkcs11-v3-attributes-interpreting.md)
+ [修改属性](pkcs11-v3-modify-attr.md)
+ [解释 AWS CloudHSM 客户端 SDK 3 的 PKCS \$111 库错误代码](pkcs11-v3-attr-errors.md)

# PKCS \$111 AWS CloudHSM 客户端 SDK 3 的库属性表
<a name="pkcs11-v3-attributes-interpreting"></a>

 AWS CloudHSM 客户端 SDK 3 的 PKCS \$111 库表包含因密钥类型而异的属性列表。它表示在使用特定加密函数时，特定密钥类型是否支持给定属性。 AWS CloudHSM

**图例：**
+ ✔ 表示 CloudHSM 对特定密钥类型支持此属性。
+ ✖ 表示 CloudHSM 对特定密钥类型不支持此属性。
+ R 表示特定密钥类型的属性值设置为只读的。
+ S 表示无法通过 `GetAttributeValue` 读取该属性，因为它是敏感属性。
+ 默认值列中的空单元格表示没有给该属性分配特定的默认值。

## GenerateKeyPair
<a name="pkcs11-v3-generatekeypair"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloudhsm/latest/userguide/pkcs11-v3-attributes-interpreting.html)

## GenerateKey
<a name="pkcs11-v3-generatekey"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloudhsm/latest/userguide/pkcs11-v3-attributes-interpreting.html)

## CreateObject
<a name="pkcs11-v3-createobject"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloudhsm/latest/userguide/pkcs11-v3-attributes-interpreting.html)

## UnwrapKey
<a name="pkcs11-v3-unwrapkey"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloudhsm/latest/userguide/pkcs11-v3-attributes-interpreting.html)

## DeriveKey
<a name="pkcs11-v3-derivekey"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloudhsm/latest/userguide/pkcs11-v3-attributes-interpreting.html)

## GetAttributeValue
<a name="pkcs11-v3-getattributevalue"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloudhsm/latest/userguide/pkcs11-v3-attributes-interpreting.html)

**属性注释**
+ [1] 此属性由固件部分支持且必须明确地仅设置为默认值。
+ [2] 必需属性。
+ [3] **仅客户端软件开发工具包 3**。`CKA_SIGN_RECOVER` 属性派生自 `CKA_SIGN` 属性。如果要设置它，只能将其设置为与为 `CKA_SIGN` 设置的值相同。如果不设置，它获得默认值 `CKA_SIGN`。由于 CloudHSM 仅支持基于 RSA 的可恢复签名机制，此属性目前仅适用于 RSA 公有密钥。
+ [4] **仅客户端软件开发工具包 3**。`CKA_VERIFY_RECOVER` 属性派生自 `CKA_VERIFY` 属性。如果要设置它，只能将其设置为与为 `CKA_VERIFY` 设置的值相同。如果不设置，它获得默认值 `CKA_VERIFY`。由于 CloudHSM 仅支持基于 RSA 的可恢复签名机制，此属性目前仅适用于 RSA 公有密钥。

# 修改 AWS CloudHSM 客户端 SDK 3 的 PKCS \$111 库属性
<a name="pkcs11-v3-modify-attr"></a>

对象的一些属性可以在对象创建后修改，有一些则不能。若要修改属性，请使用 cloudhsm\$1mgmt\$1util [中的 setAttribute](cloudhsm_mgmt_util-setAttribute.md) 命令。您还可通过 cloudhsm\$1mgmt\$1util 中的 [listAttribute](cloudhsm_mgmt_util-listAttributes.md) 命令派生出属性列表和代表这些属性的常量。

以下列表显示了对象创建后允许修改的属性：
+ `CKA_LABEL`
+ `CKA_TOKEN`
**注意**  
修改仅允许将会话密钥更改为令牌密钥。使用 key\$1mgmt\$1util 中的 [setAttribute](key_mgmt_util-setAttribute.md) 命令更改属性值。
+ `CKA_ENCRYPT`
+ `CKA_DECRYPT`
+ `CKA_SIGN`
+ `CKA_VERIFY`
+ `CKA_WRAP`
+ `CKA_UNWRAP`
+ `CKA_LABEL`
+ `CKA_SENSITIVE`
+ `CKA_DERIVE`
**注意**  
此属性支持密钥派生。它对所有公有密钥必须为 `False`，并且无法设置为 `True`。对于秘密和 EC 私有密钥，它可以设置为 `True` 或 `False`。
+ `CKA_TRUSTED`
**注意**  
此属性仅可通过加密员（CO) 设置为 `True` 或 `False`。
+ `CKA_WRAP_WITH_TRUSTED`
**注意**  
将此属性应用于可导出的数据密钥，以表示此密钥只能更换为标记`CKA_TRUSTED`的密钥。将 `CKA_WRAP_WITH_TRUSTED` 设置为 true 后，该属性将变为只读，并且您无法更改或移除该属性。

# 解释 AWS CloudHSM 客户端 SDK 3 的 PKCS \$111 库错误代码
<a name="pkcs11-v3-attr-errors"></a>

在模板中指定特定密钥不支持的 PKCS \$111 库属性会导致错误。下表包含当您违反规范时生成的错误代码：

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloudhsm/latest/userguide/pkcs11-v3-attr-errors.html)