

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

# 使用 KM AWS CloudHSM U 获取关键属性
<a name="key_mgmt_util-getAttribute"></a>

使用 AWS CloudHSM key\_mgmt\_util 中的**getAttribute**命令将密钥的一个或全部属性值写入文件。 AWS CloudHSM 如果密钥类型不存在您指定的属性（如 AES 密钥的模数），则 **getAttribute** 将返回错误。

*密钥属性*是密钥的属性。它们包括各种特征 (如密钥类型、类、标签和 ID) 以及表示您可使用密钥执行的操作 (如加密、解密、包装、签名和验证) 的值。

您只能对您拥有的密钥和与您共享的密钥使用 **getAttribute**。你可以在 cloudhsm\_mgmt\_ [util 中运行这个命令或 get](cloudhsm_mgmt_util-getAttribute.md) Attribute 命令，它会从集群 HSMs 中的所有密钥中获取一个属性值，然后将其写入 stdout 或文件中。

要获取包含属性和表示属性的常量的列表，请使用 [listAttributes](key_mgmt_util-listAttributes.md) 命令。要更改现有密钥的属性值，请使用 key\_mgmt\_util 中的 [setAttribute](key_mgmt_util-setAttribute.md) 和 cloudhsm\_mgmt\_util 中的 [setAttribute](cloudhsm_mgmt_util-setAttribute.md)。有关解释密钥属性的帮助，请参阅 [AWS CloudHSM KMU 的关键属性参考](key-attribute-table.md)。

在运行任何 key\_mgmt\_util 命令之前，您必须启动[ key\_mgmt\_util](key_mgmt_util-setup.md#key_mgmt_util-start) 并以加密用户（CU）身份[登录](key_mgmt_util-log-in.md)到 HSM。

## 语法
<a name="getAttribute-syntax"></a>

```
getAttribute -h 

getAttribute -o {{<key handle>}} 
             -a {{<attribute constant>}} 
             -out {{<file>}}
```

## 示例
<a name="getAttribute-examples"></a>

这些示例说明了**getAttribute**如何使用获取中密钥的属性 HSMs。

**Example ：获取密钥类型**  
此示例将获取密钥的类型 (如 AES、3DES、通用密钥、RSA 或椭圆曲线密钥对)。  
第一个命令运行 [listAttributes](key_mgmt_util-listAttributes.md)，以获取密钥属性和表示它们的常量。输出显示，密钥类型的常量为 `256`。有关解释密钥属性的帮助，请参阅 [AWS CloudHSM KMU 的关键属性参考](key-attribute-table.md)。  

```
Command: listAttributes

Description
===========
The following are all of the possible attribute values for getAttributes.

      OBJ_ATTR_CLASS                  = 0
      OBJ_ATTR_TOKEN                  = 1
      OBJ_ATTR_PRIVATE                = 2
      OBJ_ATTR_LABEL                  = 3
      OBJ_ATTR_KEY_TYPE               = 256
      OBJ_ATTR_ID                     = 258
      OBJ_ATTR_SENSITIVE              = 259
      OBJ_ATTR_ENCRYPT                = 260
      OBJ_ATTR_DECRYPT                = 261
      OBJ_ATTR_WRAP                   = 262
      OBJ_ATTR_UNWRAP                 = 263
      OBJ_ATTR_SIGN                   = 264
      OBJ_ATTR_VERIFY                 = 266
      OBJ_ATTR_LOCAL                  = 355
      OBJ_ATTR_MODULUS                = 288
      OBJ_ATTR_MODULUS_BITS           = 289
      OBJ_ATTR_PUBLIC_EXPONENT        = 290
      OBJ_ATTR_VALUE_LEN              = 353
      OBJ_ATTR_EXTRACTABLE            = 354
      OBJ_ATTR_KCV                    = 371
```
第二个命令运行 **getAttribute**。它请求密钥句柄 `524296` 的密钥类型 (属性 `256`) 并将其写入到 `attribute.txt` 文件。  

```
Command: getAttribute -o 524296 -a 256 -out attribute.txt
Attributes dumped into attribute.txt file
```
最后一个命令获取密钥文件的内容。输出显示，密钥类型为 `0x15` 或 `21`，这是一个三重 DES (3DES) 密钥。有关类和类型值的定义，请参阅[密钥属性参考](key-attribute-table.md)。  

```
$  cat attribute.txt
OBJ_ATTR_KEY_TYPE
0x00000015
```

**Example ：获取密钥的所有属性**  
此命令将获取密钥句柄为 `6` 的密钥的所有属性并将这些属性写入到 `attr_6` 文件中。它使用表示所有属性的属性值 `512`。  

```
Command: getAttribute -o 6 -a 512 -out attr_6
        
got all attributes of size 444 attr cnt 17
Attributes dumped into attribute.txt file

        Cfm3GetAttribute returned: 0x00 : HSM Return: SUCCESS>
```
此命令将显示包含所有属性值的示例属性文件的内容。在这些值中，它报告密钥是一个具有 ID `test_01` 和标签 `aes256` 的 256 位 AES 密钥。此密钥是可提取的永久密钥 (也就是说，它不是仅会话密钥)。有关解释密钥属性的帮助，请参阅 [AWS CloudHSM KMU 的关键属性参考](key-attribute-table.md)。  

```
$  cat attribute.txt

OBJ_ATTR_CLASS
0x04
OBJ_ATTR_KEY_TYPE
0x15
OBJ_ATTR_TOKEN
0x01
OBJ_ATTR_PRIVATE
0x01
OBJ_ATTR_ENCRYPT
0x01
OBJ_ATTR_DECRYPT
0x01
OBJ_ATTR_WRAP
0x01
OBJ_ATTR_UNWRAP
0x01
OBJ_ATTR_SIGN
0x00
OBJ_ATTR_VERIFY
0x00
OBJ_ATTR_LOCAL
0x01
OBJ_ATTR_SENSITIVE
0x01
OBJ_ATTR_EXTRACTABLE
0x01
OBJ_ATTR_LABEL
aes256
OBJ_ATTR_ID
test_01
OBJ_ATTR_VALUE_LEN
0x00000020
OBJ_ATTR_KCV
0x1a4b31
```

## 参数
<a name="getAttribute-parameters"></a>

**-h**  
显示该命令的帮助信息。  
是否必需：是

**-o**  
指定目标密钥的密钥句柄。您在每个命令中只能指定一个密钥。要获取密钥的密钥句柄，请使用 [findKey](key_mgmt_util-findKey.md)。  
此外，您必须拥有指定密钥或必须与您共享此密钥。要查找密钥的用户，请使用[getKeyInfo](key_mgmt_util-getKeyInfo.md)。  
是否必需：是

**-a**  
标识属性。输入表示属性的常量，或表示所有属性的 `512`。例如，要获取密钥类型，请键入 `256` (`OBJ_ATTR_KEY_TYPE` 属性的常量)。  
要列出属性及其常量，请使用 [listAttributes](key_mgmt_util-listAttributes.md)。有关解释密钥属性的帮助，请参阅 [AWS CloudHSM KMU 的关键属性参考](key-attribute-table.md)。  
是否必需：是

**-out**  
将输出写入到指定文件。键入文件路径。您不能将输出写入到 `stdout`。  
如果指定文件存在，**getAttribute** 将覆盖此文件而不发出警告。  
是否必需：是

## 相关主题
<a name="getAttribute-seealso"></a>
+ cloudhsm\_mgmt\_util 中的 [getAttribute](cloudhsm_mgmt_util-getAttribute.md)
+ [listAttributes](key_mgmt_util-listAttributes.md)
+ [setAttribute](key_mgmt_util-setAttribute.md)
+ [findKey](key_mgmt_util-findKey.md)
+ [密钥属性引用](key-attribute-table.md)