你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

KeyClient 类

  • java.lang.Object
    • com.azure.security.keyvault.keys.KeyClient

public final class KeyClient

KeyClient提供用于在 Azure 密钥保管库中管理的KeyVaultKey同步方法。 客户端支持创建、检索、更新、删除、清除、备份、还原、列出、释放和旋转 KeyVaultKey。 客户端还支持DeletedKey列出已启用软删除的 Azure 密钥保管库。

入门

若要与 Azure 密钥保管库 服务交互,需要创建 类的KeyClient实例、保管库 URL 和凭据对象。

本文档中显示的示例使用名为 DefaultAzureCredential 的凭据对象进行身份验证,该对象适用于大多数方案,包括本地开发和生产环境。 此外,我们建议使用 托管标识 在生产环境中进行身份验证。 可以在 Azure 标识文档中找到有关不同身份验证方式及其相应凭据类型的详细信息。

示例:构造同步密钥客户端

下面的代码示例演示如何创建 KeyClient,使用 KeyClientBuilder 对其进行配置。

KeyClient keyClient = new KeyClientBuilder()
     .vaultUrl("<your-key-vault-url>")
     .credential(new DefaultAzureCredentialBuilder().build())
     .buildClient();

创建加密密钥

KeyClient可用于在密钥保管库中创建密钥。

代码示例:

以下代码示例演示如何使用 createKey(String name, KeyType keyType) API 在密钥保管库中同步创建加密密钥。

KeyVaultKey key = keyClient.createKey("keyName", KeyType.EC);
 System.out.printf("Created key with name: %s and id: %s%n", key.getName(), key.getId());

注意: 有关异步示例,请参阅 KeyAsyncClient


获取加密密钥

KeyClient可用于从密钥保管库检索密钥。

代码示例:

以下代码示例演示如何使用 getKey(String name) API 从密钥保管库同步检索密钥。

KeyVaultKey keyWithVersionValue = keyClient.getKey("keyName");

 System.out.printf("Retrieved key with name: %s and: id %s%n", keyWithVersionValue.getName(),
     keyWithVersionValue.getId());

注意: 有关异步示例,请参阅 KeyAsyncClient


删除加密密钥

KeyClient可用于从密钥保管库中删除密钥。

代码示例:

以下代码示例演示如何使用 API 同步删除密钥保管库中的 beginDeleteKey(String name) 密钥。

SyncPoller<DeletedKey, Void> deleteKeyPoller = keyClient.beginDeleteKey("keyName");
 PollResponse<DeletedKey> deleteKeyPollResponse = deleteKeyPoller.poll();

 // Deleted date only works for SoftDelete Enabled Key Vault.
 DeletedKey deletedKey = deleteKeyPollResponse.getValue();

 System.out.printf("Key delete date: %s%n", deletedKey.getDeletedOn());
 System.out.printf("Deleted key's recovery id: %s%n", deletedKey.getRecoveryId());

 // Key is being deleted on the server.
 deleteKeyPoller.waitForCompletion();
 // Key is deleted

注意: 有关异步示例,请参阅 KeyAsyncClient

方法摘要

修饰符和类型 方法和描述
byte[] backupKey(String name)

请求将指定 KeyVaultKey 的备份下载到客户端。

Response<byte[]> backupKeyWithResponse(String name, Context context)

请求将指定 KeyVaultKey 的备份下载到客户端。

SyncPoller<DeletedKey,Void> beginDeleteKey(String name)

KeyVaultKey从密钥保管库中删除任何类型的 。

SyncPoller<KeyVaultKey,Void> beginRecoverDeletedKey(String name)

KeyVaultKey 密钥保管库中的 恢复到其最新版本,并且只能在启用了软删除的保管库上执行。

KeyVaultKey createEcKey(CreateEcKeyOptions createEcKeyOptions)

创建新的 KeyVaultKey 并将其存储在密钥保管库中。

Response<KeyVaultKey> createEcKeyWithResponse(CreateEcKeyOptions createEcKeyOptions, Context context)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。

KeyVaultKey createKey(CreateKeyOptions createKeyOptions)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。

KeyVaultKey createKey(String name, KeyType keyType)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。

Response<KeyVaultKey> createKeyWithResponse(CreateKeyOptions createKeyOptions, Context context)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。

KeyVaultKey createOctKey(CreateOctKeyOptions createOctKeyOptions)

在密钥保管库中创建并存储新的 KeyVaultKey

Response<KeyVaultKey> createOctKeyWithResponse(CreateOctKeyOptions createOctKeyOptions, Context context)

在密钥保管库中创建并存储新的 KeyVaultKey

KeyVaultKey createRsaKey(CreateRsaKeyOptions createRsaKeyOptions)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。

Response<KeyVaultKey> createRsaKeyWithResponse(CreateRsaKeyOptions createRsaKeyOptions, Context context)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。

CryptographyClient getCryptographyClient(String keyName)

CryptographyClient为给定密钥的最新版本创建 。

CryptographyClient getCryptographyClient(String keyName, String keyVersion)

CryptographyClient为给定密钥版本创建 。

DeletedKey getDeletedKey(String name)

获取 的公共部分 KeyVaultKey

Response<DeletedKey> getDeletedKeyWithResponse(String name, Context context)

获取 的公共部分 KeyVaultKey

KeyVaultKey getKey(String name)

获取指定 KeyVaultKey 和密钥版本的公共部分。

KeyVaultKey getKey(String name, String version)

获取指定 KeyVaultKey 和密钥版本的公共部分。

KeyRotationPolicy getKeyRotationPolicy(String keyName)

KeyRotationPolicy获取具有提供的名称的 KeyVaultKey

Response<KeyRotationPolicy> getKeyRotationPolicyWithResponse(String keyName, Context context)

KeyRotationPolicy获取具有提供的名称的 KeyVaultKey

Response<KeyVaultKey> getKeyWithResponse(String name, String version, Context context)

获取指定 KeyVaultKey 和密钥版本的公共部分。

byte[] getRandomBytes(int count)

从托管 HSM 获取包含随机值的请求字节数。

Response<byte[]> getRandomBytesWithResponse(int count, Context context)

从托管 HSM 获取包含随机值的请求字节数。

String getVaultUrl()

获取服务请求发送到的保管库终结点 URL。

KeyVaultKey importKey(ImportKeyOptions importKeyOptions)

导入外部创建的 JsonWebKey ,并将其存储在密钥保管库中。

KeyVaultKey importKey(String name, JsonWebKey keyMaterial)

导入外部创建的 JsonWebKey ,并将其存储在密钥保管库中。

Response<KeyVaultKey> importKeyWithResponse(ImportKeyOptions importKeyOptions, Context context)

导入外部创建的 JsonWebKey ,并将其存储在密钥保管库中。

PagedIterable<DeletedKey> listDeletedKeys()

密钥保管库的列表 DeletedKey

PagedIterable<DeletedKey> listDeletedKeys(Context context)

密钥保管库的列表 DeletedKey

PagedIterable<KeyProperties> listPropertiesOfKeyVersions(String name)

列出指定 KeyVaultKey的所有版本。

PagedIterable<KeyProperties> listPropertiesOfKeyVersions(String name, Context context)

列出指定 KeyVaultKey的所有版本。

PagedIterable<KeyProperties> listPropertiesOfKeys()

密钥保管库中的列表 KeyVaultKey

PagedIterable<KeyProperties> listPropertiesOfKeys(Context context)

密钥保管库中的列表 KeyVaultKey

void purgeDeletedKey(String name)

永久删除指定的 KeyVaultKey ,且无法恢复。

Response<Void> purgeDeletedKeyWithResponse(String name, Context context)

永久删除指定的 KeyVaultKey ,且无法恢复。

ReleaseKeyResult releaseKey(String name, String targetAttestationToken)

发布最新版本。KeyVaultKey

ReleaseKeyResult releaseKey(String name, String version, String targetAttestationToken)

发布 特定版本的 KeyVaultKey

Response<ReleaseKeyResult> releaseKeyWithResponse(String name, String version, String targetAttestationToken, ReleaseKeyOptions releaseKeyOptions, Context context)

释放 KeyVaultKey

KeyVaultKey restoreKeyBackup(byte[] backup)

将备份 KeyVaultKey 还原到保管库。

Response<KeyVaultKey> restoreKeyBackupWithResponse(byte[] backup, Context context)

将备份 KeyVaultKey 还原到保管库。

KeyVaultKey rotateKey(String name)

旋转 KeyVaultKey

Response<KeyVaultKey> rotateKeyWithResponse(String name, Context context)

旋转 KeyVaultKey

KeyVaultKey updateKeyProperties(KeyProperties keyProperties, KeyOperation[] keyOperations)

汇报 KeyPropertiesKeyOperation指定的 KeyVaultKey关联,但不是密钥保管库中指定 KeyVaultKey 的加密密钥材料。

Response<KeyVaultKey> updateKeyPropertiesWithResponse(KeyProperties keyProperties, Context context, KeyOperation[] keyOperations)

汇报 KeyPropertiesKeyOperation指定的 KeyVaultKey关联,但不是密钥保管库中指定 KeyVaultKey 的加密密钥材料。

KeyRotationPolicy updateKeyRotationPolicy(String keyName, KeyRotationPolicy keyRotationPolicy)

使用提供的名称汇报 KeyRotationPolicyKeyVaultKey

Response<KeyRotationPolicy> updateKeyRotationPolicyWithResponse(String keyName, KeyRotationPolicy keyRotationPolicy, Context context)

使用提供的名称汇报KeyRotationPolicy密钥的 。

方法继承自 java.lang.Object

方法详细信息

backupKey

public byte[] backupKey(String name)

请求将指定 KeyVaultKey 的备份下载到客户端。 密钥备份操作以受保护的形式从 Azure 密钥保管库导出 KeyVaultKey 。 请注意,此操作不会以可在 Azure 密钥保管库 系统外部使用的形式返回密钥材料,返回的密钥材料要么受到 Azure 密钥保管库 HSM 的保护,要么保护给 Azure 密钥保管库本身。 此操作的目的是允许客户端在一个 KeyVaultKey Azure 密钥保管库 实例中生成 ,备份 KeyVaultKey,然后将其还原到另一个 Azure 密钥保管库 实例中。 备份操作可用于以受保护的形式从 Azure 密钥保管库导出任何KeyType内容。 无法备份 的 KeyVaultKey 单个版本。 Backup/Restore 只能在地理边界内执行;这意味着无法将一个地理区域的备份还原到另一个地理区域。 例如,无法在欧洲地理区域还原美国地理区域中的备份。 此操作需要 key/backup 权限。

示例代码

从密钥保管库备份 KeyVaultKey

byte[] keyBackup = keyClient.backupKey("keyName");

 System.out.printf("Key backup byte array length: %s%n", keyBackup.length);

Parameters:

name - KeyVaultKey 的名称。

Returns:

备份的密钥 Blob。

backupKeyWithResponse

public Response backupKeyWithResponse(String name, Context context)

请求将指定 KeyVaultKey 的备份下载到客户端。 密钥备份操作以受保护的形式从 Azure 密钥保管库导出 KeyVaultKey 。 请注意,此操作不会以可在 Azure 密钥保管库 系统外部使用的形式返回密钥材料,返回的密钥材料要么受到 Azure 密钥保管库 HSM 的保护,要么保护给 Azure 密钥保管库本身。 此操作的目的是允许客户端在一个 KeyVaultKey Azure 密钥保管库 实例中生成 ,备份 KeyVaultKey,然后将其还原到另一个 Azure 密钥保管库 实例中。 备份操作可用于以受保护的形式从 Azure 密钥保管库导出任何KeyType内容。 无法备份 的 KeyVaultKey 单个版本。 Backup/Restore 只能在地理边界内执行;这意味着无法将一个地理区域的备份还原到另一个地理区域。 例如,无法在欧洲地理区域还原美国地理区域中的备份。 此操作需要 key/backup 权限。

示例代码

从密钥保管库备份 KeyVaultKey ,并输出 中返回的密钥备份字节数组的 Response<T>长度。

Response<byte[]> backupKeyResponse = keyClient.backupKeyWithResponse("keyName", new Context("key1", "value1"));

 System.out.printf("Key backup byte array length: %s%n", backupKeyResponse.getValue().length);

Parameters:

name - KeyVaultKey 的名称。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

一个 Response<T> ,它 value 包含备份的密钥 Blob。

beginDeleteKey

public SyncPoller beginDeleteKey(String name)

KeyVaultKey从密钥保管库中删除任何类型的 。 如果在密钥保管库上启用了软删除, KeyVaultKey 则会将 置于已删除状态,并且需要清除以永久删除, KeyVaultKey 否则将永久删除 。 删除操作适用于 Azure 密钥保管库中存储的任何KeyVaultKey操作,但不能应用于 的单个版本KeyVaultKey。 此操作将删除与 KeyVaultKey关联的加密材料,这意味着 KeyVaultKey 不能用于 Sign/VerifyWrap/UnwrapEncrypt/Decrypt 操作。 此操作需要 keys/delete 权限。

示例代码

KeyVaultKey从密钥保管库中删除 。 输出 的恢复 ID KeyVaultKey

SyncPoller<DeletedKey, Void> deleteKeyPoller = keyClient.beginDeleteKey("keyName");
 PollResponse<DeletedKey> deleteKeyPollResponse = deleteKeyPoller.poll();

 // Deleted date only works for SoftDelete Enabled Key Vault.
 DeletedKey deletedKey = deleteKeyPollResponse.getValue();

 System.out.printf("Key delete date: %s%n", deletedKey.getDeletedOn());
 System.out.printf("Deleted key's recovery id: %s%n", deletedKey.getRecoveryId());

 // Key is being deleted on the server.
 deleteKeyPoller.waitForCompletion();
 // Key is deleted

Parameters:

name - 要删除的 的名称 KeyVaultKey

Returns:

SyncPoller<T,U> 轮询和检索的 DeletedKey

beginRecoverDeletedKey

public SyncPoller beginRecoverDeletedKey(String name)

KeyVaultKey 密钥保管库中的 恢复到其最新版本,并且只能在启用了软删除的保管库上执行。 尝试恢复 将 KeyVaultKey 返回错误。 将此视为对已启用软删除的保管库执行删除操作的反函数。 此操作需要 keys/recover 权限。

示例代码

KeyVaultKey从启用软删除的密钥保管库恢复 。

SyncPoller<KeyVaultKey, Void> recoverKeyPoller = keyClient.beginRecoverDeletedKey("deletedKeyName");

 PollResponse<KeyVaultKey> recoverKeyPollResponse = recoverKeyPoller.poll();

 KeyVaultKey recoveredKey = recoverKeyPollResponse.getValue();
 System.out.printf("Recovered key name: %s%n", recoveredKey.getName());
 System.out.printf("Recovered key id: %s%n", recoveredKey.getId());

 // Key is being recovered on the server.
 recoverKeyPoller.waitForCompletion();
 // Key is recovered

Parameters:

name - 要恢复的 的名称 KeyVaultKey

Returns:

一个 SyncPoller<T,U> ,用于轮询和检索 KeyVaultKey

createEcKey

public KeyVaultKey createEcKey(CreateEcKeyOptions createEcKeyOptions)

创建新的 KeyVaultKey 并将其存储在密钥保管库中。 创建 EC 密钥操作可用于在 Azure 密钥保管库中创建任何 ECKeyTypeKeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库 会创建 新版本。KeyVaultKey 它需要 keys/create 权限。

CreateEcKeyOptions 参数是必需的。 getCurveName()可以选择性地指定 。 如果未指定,Azure 密钥保管库将使用默认值P_256。 和 expiresnotBefore 值是可选的。 enabled如果未指定字段,则由 Azure 密钥保管库 设置为 true

指示 keyType 要创建的密钥的类型 KeyVaultKey 。 可能的值包括: ECEC_HSM

示例代码

使用 P_384 Web 密钥曲线创建新的 KeyVaultKey 。 密钥在一天内激活,一年后过期。 输出 的详细信息 KeyVaultKey

CreateEcKeyOptions createEcKeyOptions = new CreateEcKeyOptions("keyName")
     .setCurveName(KeyCurveName.P_384)
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));
 KeyVaultKey ecKey = keyClient.createEcKey(createEcKeyOptions);

 System.out.printf("Created key with name: %s and id: %s%n", ecKey.getName(), ecKey.getId());

Parameters:

createEcKeyOptions - 包含 CreateEcKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。

Returns:

createEcKeyWithResponse

public Response createEcKeyWithResponse(CreateEcKeyOptions createEcKeyOptions, Context context)

创建新的 KeyVaultKey 并将其存储在密钥保管库中。 创建 EC 密钥操作可用于在 Azure 密钥保管库中创建任何 ECKeyTypeKeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库 会创建 新版本。KeyVaultKey 它需要 keys/create 权限。

CreateEcKeyOptions 参数是必需的。 getCurveName()可以选择性地指定 。 如果未指定,Azure 密钥保管库将使用默认值P_256。 和 expiresnotBefore 值是可选的。 enabled如果未指定字段,则由 Azure 密钥保管库 设置为 true

指示 keyType 要创建的密钥的类型 KeyVaultKey 。 可能的值包括: ECEC_HSM

示例代码

使用 P_384 Web 键曲线创建新的 KeyVaultKey 。 密钥在一天内激活,一年后过期。 输出 的详细信息 KeyVaultKey

CreateEcKeyOptions createEcKeyOptions = new CreateEcKeyOptions("keyName")
     .setCurveName(KeyCurveName.P_384)
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));
 Response<KeyVaultKey> createEcKeyResponse =
     keyClient.createEcKeyWithResponse(createEcKeyOptions, new Context("key1", "value1"));

 System.out.printf("Created key with name: %s and: id %s%n", createEcKeyResponse.getValue().getName(),
     createEcKeyResponse.getValue().getId());

Parameters:

createEcKeyOptions - 包含 CreateEcKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

一个 Response<T> 包含 的 valueKeyVaultKey

createKey

public KeyVaultKey createKey(CreateKeyOptions createKeyOptions)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。 创建密钥操作可用于在 Azure 密钥保管库中创建任何KeyType项。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库会创建 新版本。KeyVaultKey 它需要 keys/create 权限。

CreateKeyOptions 参数是必需的。 getExpiresOn()getNotBefore() 值是可选的。 如果未指定,则 isEnabled() Azure 密钥保管库 将 enabled} 字段设置为 true

指示 getKeyType() 要创建的 的类型 KeyVaultKey 。 可能的值包括:EC、、EC_HSMRSARSA_HSMOCT、 和 OCT_HSM

示例代码

创建一个在一天内激活并在一年后过期的新 KeyVaultKey 。 输出 的详细信息 KeyVaultKey

CreateKeyOptions createKeyOptions = new CreateKeyOptions("keyName", KeyType.RSA)
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));
 KeyVaultKey optionsKey = keyClient.createKey(createKeyOptions);

 System.out.printf("Created key with name: %s and id: %s%n", optionsKey.getName(), optionsKey.getId());

Parameters:

createKeyOptions - 包含 CreateKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。

Returns:

createKey

public KeyVaultKey createKey(String name, KeyType keyType)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。 创建密钥操作可用于在 Azure 密钥保管库中创建任何KeyType项。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库会创建 新版本。KeyVaultKey 它需要 keys/create 权限。

指示 KeyType 要创建的 的类型 KeyVaultKey 。 可能的值包括:EC、、EC_HSMRSARSA_HSMOCT、 和 OCT_HSM

示例代码

创建一个新的 KeyVaultKey。 输出 的详细信息 KeyVaultKey

KeyVaultKey key = keyClient.createKey("keyName", KeyType.EC);
 System.out.printf("Created key with name: %s and id: %s%n", key.getName(), key.getId());

Parameters:

name - 正在创建的 的名称 KeyVaultKey
keyType - 要创建的 的类型 KeyVaultKey 。 有关有效值,请参阅 KeyType

Returns:

createKeyWithResponse

public Response createKeyWithResponse(CreateKeyOptions createKeyOptions, Context context)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。 创建密钥操作可用于在 Azure 密钥保管库中创建任何KeyType项。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库会创建 新版本。KeyVaultKey 它需要 keys/create 权限。

CreateKeyOptions 参数是必需的。 getExpiresOn()getNotBefore() 值是可选的。 isEnabled()如果未指定,则 Azure 密钥保管库 将字段设置为 true

指示 getKeyType() 要创建的 的类型 KeyVaultKey 。 可能的值包括:EC、、EC_HSMRSARSA_HSMOCT、 和 OCT_HSM

示例代码

创建一个在一天内激活并在一年后过期的新 KeyVaultKey 。 输出 的详细信息 KeyVaultKey

CreateKeyOptions createKeyOptions = new CreateKeyOptions("keyName", KeyType.RSA)
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));
 Response<KeyVaultKey> createKeyResponse =
     keyClient.createKeyWithResponse(createKeyOptions, new Context("key1", "value1"));

 System.out.printf("Created key with name: %s and: id %s%n", createKeyResponse.getValue().getName(),
     createKeyResponse.getValue().getId());

Parameters:

createKeyOptions - 包含 CreateKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

一个 Response<T> 包含 的 valueKeyVaultKey

createOctKey

public KeyVaultKey createOctKey(CreateOctKeyOptions createOctKeyOptions)

在密钥保管库中创建并存储新的 KeyVaultKeyKeyVaultKey如果已存在具有所提供的名称的 ,Azure 密钥保管库会创建密钥的新版本。 此操作需要 keys/create 权限。

CreateOctKeyOptions 参数是必需的。 expiresnotBefore 值是可选的。 enabled如果未指定,则 Azure 密钥保管库 将字段设置为 true

指示 keyType 要创建的密钥的类型 KeyVaultKey 。 可能的值包括: OCTOCT_HSM

示例代码

创建一个新的 KeyVaultKey。 在 KeyVaultKey 一天内激活,并在一年后过期。 输出新 KeyVaultKey的详细信息。

CreateOctKeyOptions createOctKeyOptions = new CreateOctKeyOptions("keyName")
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));
 KeyVaultKey octKey = keyClient.createOctKey(createOctKeyOptions);

 System.out.printf("Created key with name: %s and id: %s%n", octKey.getName(), octKey.getId());

Parameters:

createOctKeyOptions - 包含 CreateOctKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。

Returns:

createOctKeyWithResponse

public Response createOctKeyWithResponse(CreateOctKeyOptions createOctKeyOptions, Context context)

在密钥保管库中创建并存储新的 KeyVaultKeyKeyVaultKey如果已存在具有所提供的名称的 ,Azure 密钥保管库会创建密钥的新版本。 此操作需要 keys/create 权限。

CreateOctKeyOptions 参数是必需的。 expiresnotBefore 值是可选的。 enabled如果未指定,则 Azure 密钥保管库 将字段设置为 true

指示 keyType 要创建的密钥的类型 KeyVaultKey 。 可能的值包括: OCTOCT_HSM

示例代码

创建一个新的 KeyVaultKey。 在 KeyVaultKey 一天内激活,并在一年后过期。 输出新 KeyVaultKey的详细信息。

CreateOctKeyOptions createOctKeyOptions = new CreateOctKeyOptions("keyName")
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));
 Response<KeyVaultKey> createOctKeyResponse =
     keyClient.createOctKeyWithResponse(createOctKeyOptions, new Context("key1", "value1"));

 System.out.printf("Created key with name: %s and: id %s%n", createOctKeyResponse.getValue().getName(),
     createOctKeyResponse.getValue().getId());

Parameters:

createOctKeyOptions - 包含 CreateOctKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

一个 Response<T> 包含 的 valueKeyVaultKey

createRsaKey

public KeyVaultKey createRsaKey(CreateRsaKeyOptions createRsaKeyOptions)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。 创建 RSA 密钥操作可用于在 Azure 密钥保管库中创建任何 RSA 密钥类型。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库会创建 新版本。KeyVaultKey 它需要 keys/create 权限。

CreateRsaKeyOptions 参数是必需的。 getKeySize()可以选择指定 。 expiresnotBefore 值是可选的。 enabled如果未指定,则 Azure 密钥保管库 将字段设置为 true

指示 keyType 要创建的 的类型 KeyVaultKey 。 可能的值包括: RSARSA_HSM

示例代码

创建一个大小为 2048 的新 KeyVaultKey ,该大小在一天内激活,并在一年内过期。 输出 的详细信息 KeyVaultKey

CreateRsaKeyOptions createRsaKeyOptions = new CreateRsaKeyOptions("keyName")
     .setKeySize(2048)
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));
 KeyVaultKey rsaKey = keyClient.createRsaKey(createRsaKeyOptions);

 System.out.printf("Created key with name: %s and id: %s%n", rsaKey.getName(), rsaKey.getId());

Parameters:

createRsaKeyOptions - 包含 CreateRsaKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。

Returns:

createRsaKeyWithResponse

public Response createRsaKeyWithResponse(CreateRsaKeyOptions createRsaKeyOptions, Context context)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。 创建 RSA 密钥操作可用于在 Azure 密钥保管库中创建任何 RSA 密钥类型。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库会创建 新版本。KeyVaultKey 它需要 keys/create 权限。

CreateRsaKeyOptions 参数是必需的。 getKeySize()可以选择指定 。 expiresnotBefore 值是可选的。 enabled如果未指定,则 Azure 密钥保管库 将字段设置为 true

指示 keyType 要创建的 的类型 KeyVaultKey 。 可能的值包括: RSARSA_HSM

示例代码

创建一个大小为 2048 的新 KeyVaultKey ,该大小在一天内激活,并在一年内过期。 输出 的详细信息 KeyVaultKey

CreateRsaKeyOptions createRsaKeyOptions = new CreateRsaKeyOptions("keyName")
     .setKeySize(2048)
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));
 Response<KeyVaultKey> createRsaKeyResponse =
     keyClient.createRsaKeyWithResponse(createRsaKeyOptions, new Context("key1", "value1"));

 System.out.printf("Created key with name: %s and: id %s%n", createRsaKeyResponse.getValue().getName(),
     createRsaKeyResponse.getValue().getId());

Parameters:

createRsaKeyOptions - 包含 CreateRsaKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

一个 Response<T> 包含 的 valueKeyVaultKey

getCryptographyClient

public CryptographyClient getCryptographyClient(String keyName)

CryptographyClient为给定密钥的最新版本创建 。

若要确保在执行 和 等DecryptUnwrapVerify操作时的正确行为,建议分别为用于相应反运算的特定密钥版本使用CryptographyClient创建的 :EncryptWrap或 。Sign

可以通过 或 提供密钥版本getCryptographyClient(String keyName, String keyVersion),方法是在生成客户端之前确保它包含在传递给 keyIdentifier(String keyId) 的 中keyIdentifier

Parameters:

keyName - 键的名称。

Returns:

与具有所提供的名称的密钥的最新版本关联的 实例 CryptographyClient

getCryptographyClient

public CryptographyClient getCryptographyClient(String keyName, String keyVersion)

CryptographyClient为给定密钥版本创建 。

Parameters:

keyName - 键的名称。
keyVersion - 密钥版本。

Returns:

与具有所提供的名称和版本的密钥关联的 实例 CryptographyClient 。 如果 keyVersionnull 或 为空,则客户端将使用最新版本的密钥。

getDeletedKey

public DeletedKey getDeletedKey(String name)

获取 的公共部分 KeyVaultKey。 获取删除密钥操作适用于已启用软删除的保管库。 此操作需要 keys/get 权限。

示例代码

KeyVaultKey从启用软删除的密钥保管库中获取 。 输出 的详细信息 KeyVaultKey

DeletedKey deletedKey = keyClient.getDeletedKey("keyName");

 System.out.printf("Deleted key's recovery id: %s%n", deletedKey.getRecoveryId());

Parameters:

name - 已删除 KeyVaultKey的名称。

Returns:

getDeletedKeyWithResponse

public Response getDeletedKeyWithResponse(String name, Context context)

获取 的公共部分 KeyVaultKey。 获取删除密钥操作适用于已启用软删除的保管库。 此操作需要 keys/get 权限。

示例代码

KeyVaultKey从启用软删除的密钥保管库中获取 。 输出 中Response<T>返回的 KeyVaultKey 的详细信息。

Response<DeletedKey> deletedKeyResponse =
     keyClient.getDeletedKeyWithResponse("keyName", new Context("key1", "value1"));

 System.out.printf("Deleted key with recovery id: %s%n", deletedKeyResponse.getValue().getRecoveryId());

Parameters:

name - 已删除 KeyVaultKey的名称。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

一个 Response<T> 包含 的 valueDeletedKey

getKey

public KeyVaultKey getKey(String name)

获取指定 KeyVaultKey 和密钥版本的公共部分。 获取密钥操作适用于所有 KeyType 操作,并且需要 keys/get 权限。

示例代码

获取密钥保管库中 的特定版本 KeyVaultKey 。 输出 的详细信息 KeyVaultKey

KeyVaultKey keyWithVersionValue = keyClient.getKey("keyName");

 System.out.printf("Retrieved key with name: %s and: id %s%n", keyWithVersionValue.getName(),
     keyWithVersionValue.getId());

Parameters:

name - KeyVaultKey的名称不能为 null

Returns:

请求的 KeyVaultKey。 密钥的内容为 null (如果 namenull 或 为空)。

getKey

public KeyVaultKey getKey(String name, String version)

获取指定 KeyVaultKey 和密钥版本的公共部分。 获取密钥操作适用于所有 KeyType 操作,并且需要 keys/get 权限。

示例代码

获取密钥保管库中 的特定版本 KeyVaultKey 。 输出 的详细信息 KeyVaultKey

String keyVersion = "6A385B124DEF4096AF1361A85B16C204";
 KeyVaultKey keyWithVersion = keyClient.getKey("keyName", keyVersion);

 System.out.printf("Retrieved key with name: %s and: id %s%n", keyWithVersion.getName(),
     keyWithVersion.getId());

Parameters:

name - KeyVaultKey的名称不能为 null
version - 要检索的 的版本 KeyVaultKey 。 如果这是一个空字符串或 null,则此调用等效于调用 getKey(String name),并正在检索最新版本。

Returns:

请求的 KeyVaultKey。 如果 和 都为或为空,KeyVaultKeynull则 的内容为 。nullnameversion

getKeyRotationPolicy

public KeyRotationPolicy getKeyRotationPolicy(String keyName)

KeyRotationPolicy获取具有提供的名称的 KeyVaultKey 。 此操作需要 keys/get 权限。

示例代码

检索 KeyRotationPolicy 给定 KeyVaultKey的 。 KeyRotationPolicy输出详细信息。

KeyRotationPolicy keyRotationPolicy = keyClient.getKeyRotationPolicy("keyName");

 System.out.printf("Retrieved key rotation policy with id: %s%n", keyRotationPolicy.getId());

Parameters:

keyName - KeyVaultKey 的名称。

Returns:

getKeyRotationPolicyWithResponse

public Response getKeyRotationPolicyWithResponse(String keyName, Context context)

KeyRotationPolicy获取具有提供的名称的 KeyVaultKey 。 此操作需要 keys/get 权限。

示例代码

检索 KeyRotationPolicy 给定 KeyVaultKey的 。 Response<T>输出 和 KeyRotationPolicy 详细信息。

Response<KeyRotationPolicy> keyRotationPolicyResponse =
     keyClient.getKeyRotationPolicyWithResponse("keyName", new Context("key1", "value1"));

 System.out.printf("Response received successfully with status code: %d. Retrieved key rotation policy"
     + "with id: %s%n", keyRotationPolicyResponse.getStatusCode(), keyRotationPolicyResponse.getValue().getId());

Parameters:

keyName - KeyVaultKey 的名称。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

此操作的 , Response<T> 包含 KeyRotationPolicyKeyVaultKey

getKeyWithResponse

public Response getKeyWithResponse(String name, String version, Context context)

获取指定 KeyVaultKey 和密钥版本的公共部分。 获取密钥操作适用于所有 KeyType 操作,并且需要 keys/get 权限。

示例代码

获取密钥保管库中 的特定版本 KeyVaultKey 。 输出 的详细信息 KeyVaultKey

String keyVersion = "6A385B124DEF4096AF1361A85B16C204";
 Response<KeyVaultKey> getKeyResponse =
     keyClient.getKeyWithResponse("keyName", keyVersion, new Context("key1", "value1"));

 System.out.printf("Retrieved key with name: %s and: id %s%n", getKeyResponse.getValue().getName(),
     getKeyResponse.getValue().getId());

Parameters:

name - KeyVaultKey的名称不能为 null
version - 要检索的 的版本 KeyVaultKey 。 如果这是一个空字符串或 null,则此调用等效于调用 getKey(String name),并正在检索最新版本。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

一个 Response<T> ,它 value 包含请求的 KeyVaultKey。 如果 和 都为或为空,KeyVaultKeynull则 的内容为 。nullnameversion

getRandomBytes

public byte[] getRandomBytes(int count)

从托管 HSM 获取包含随机值的所请求字节数。

示例代码

从托管 HSM 获取包含随机值的字节数。 以 base64Url 格式打印检索到的字节。

int amount = 16;
 byte[] randomBytes = keyClient.getRandomBytes(amount);

 System.out.printf("Retrieved %d random bytes: %s%n", amount, Arrays.toString(randomBytes));

Parameters:

count - 请求的随机字节数。

Returns:

包含来自托管 HSM 的随机值的字节数。

getRandomBytesWithResponse

public Response getRandomBytesWithResponse(int count, Context context)

从托管 HSM 获取包含随机值的请求字节数。

示例代码

从托管 HSM 获取包含随机值的字节数。 Response<T>以 base64Url 格式输出详细信息和检索的字节。

int amountOfBytes = 16;
 Response<byte[]> response =
     keyClient.getRandomBytesWithResponse(amountOfBytes, new Context("key1", "value1"));

 System.out.printf("Response received successfully with status code: %d. Retrieved %d random bytes: %s%n",
     response.getStatusCode(), amountOfBytes, Arrays.toString(response.getValue()));

Parameters:

count - 请求的随机字节数。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

Response<T>此操作的 ,以及包含来自托管 HSM 的随机值的请求字节数。

getVaultUrl

public String getVaultUrl()

获取服务请求发送到的保管库终结点 URL。

Returns:

保管库终结点 URL。

importKey

public KeyVaultKey importKey(ImportKeyOptions importKeyOptions)

导入外部创建的 JsonWebKey ,并将其存储在密钥保管库中。 导入密钥操作可用于将任何KeyType项导入 Azure 密钥保管库。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库 会创建 新版本。KeyVaultKey 此操作需要 keys/import 权限。

ImportKeyOptions 是必需的,并且其字段 name 不能 getKey()null。 中的 expireskeyImportOptionsnotBefore 值是可选的。 如果未指定,则不为字段设置任何值。 enabled如果未指定字段trueisHardwareProtected(),则 Azure 密钥保管库 将 字段设置为 ,并将 字段设置为 false

示例代码

将新的 KeyVaultKey 导入密钥保管库。 输出 的详细信息 KeyVaultKey

ImportKeyOptions options = new ImportKeyOptions("keyName", jsonWebKeyToImport)
     .setHardwareProtected(false);
 KeyVaultKey importedKey = keyClient.importKey(options);

 System.out.printf("Imported key with name: %s and id: %s%n", importedKey.getName(),
     importedKey.getId());

Parameters:

importKeyOptions - 包含 ImportKeyOptions 有关 JsonWebKey 正在导入的 的信息。

Returns:

importKey

public KeyVaultKey importKey(String name, JsonWebKey keyMaterial)

导入外部创建的 JsonWebKey ,并将其存储在密钥保管库中。 导入密钥操作可用于将任何KeyType项导入 Azure 密钥保管库。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库 会创建 新版本。KeyVaultKey 此操作需要 keys/import 权限。

示例代码

将新的 KeyVaultKey 导入密钥保管库。 输出 的详细信息 KeyVaultKey

KeyVaultKey key = keyClient.importKey("keyName", jsonWebKeyToImport);

 System.out.printf("Imported key with name: %s and id: %s%n", key.getName(), key.getId());

Parameters:

name - KeyVaultKey 的名称。
keyMaterial - JsonWebKey正在导入的 。

Returns:

importKeyWithResponse

public Response importKeyWithResponse(ImportKeyOptions importKeyOptions, Context context)

导入外部创建的 JsonWebKey ,并将其存储在密钥保管库中。 导入密钥操作可用于将任何KeyType项导入 Azure 密钥保管库。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库 会创建 新版本。KeyVaultKey 此操作需要 keys/import 权限。

ImportKeyOptions 是必需的,并且其字段 name 不能 getKey()null。 中的 expireskeyImportOptionsnotBefore 值是可选的。 如果未指定,则不为字段设置任何值。 enabled如果未指定字段trueisHardwareProtected(),则 Azure 密钥保管库 将 字段设置为 ,并将 字段设置为 false

示例代码

将新的 KeyVaultKey 导入密钥保管库。 输出 的详细信息 KeyVaultKey

ImportKeyOptions importKeyOptions = new ImportKeyOptions("keyName", jsonWebKeyToImport)
     .setHardwareProtected(false);
 Response<KeyVaultKey> response =
     keyClient.importKeyWithResponse(importKeyOptions, new Context("key1", "value1"));

 System.out.printf("Imported key with name: %s and id: %s%n", response.getValue().getName(),
     response.getValue().getId());

Parameters:

importKeyOptions - 包含 ImportKeyOptions 有关 JsonWebKey 正在导入的 的信息。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

一个 Response<T> 包含 的 valueKeyVaultKey

listDeletedKeys

public PagedIterable listDeletedKeys()

密钥保管库的列表 DeletedKeyDeletedKey作为包含 的公共部分的结构DeletedKey检索JsonWebKey。 获取已删除密钥操作适用于为软删除启用的保管库。 此操作需要 keys/list 权限。

示例代码

DeletedKey列出密钥保管库中的 ,并为每个 DeletedKey 输出其恢复 ID。

for (DeletedKey deletedKey : keyClient.listDeletedKeys()) {
     System.out.printf("Deleted key's recovery id:%s%n", deletedKey.getRecoveryId());
 }

按页循环访问已删除密钥的代码示例

循环访问 DeletedKey 密钥保管库中的 by 页,并为每个已删除的密钥输出其恢复 ID。

keyClient.listDeletedKeys().iterableByPage().forEach(pagedResponse -> {
     System.out.printf("Got response details. Url: %s. Status code: %d.%n",
         pagedResponse.getRequest().getUrl(), pagedResponse.getStatusCode());
     pagedResponse.getElements().forEach(deletedKey ->
         System.out.printf("Deleted key's recovery id:%s%n", deletedKey.getRecoveryId()));
 });

Returns:

PagedIterable<T> 保管库中所有 DeletedKey 的 。

listDeletedKeys

public PagedIterable listDeletedKeys(Context context)

密钥保管库的列表 DeletedKeyDeletedKey作为包含 的公共部分的结构DeletedKey检索JsonWebKey。 获取已删除密钥操作适用于为软删除启用的保管库。 此操作需要 keys/list 权限。

示例代码

DeletedKey列出密钥保管库中的 ,并为每个 DeletedKey 输出其恢复 ID。

for (DeletedKey deletedKey : keyClient.listDeletedKeys(new Context("key1", "value1"))) {
     System.out.printf("Deleted key's recovery id:%s%n", deletedKey.getRecoveryId());
 }

按页循环访问已删除密钥的代码示例

循环访问 DeletedKey 密钥保管库中的 by 页,并为每个已删除的密钥输出其恢复 ID。

keyClient.listDeletedKeys().iterableByPage().forEach(pagedResponse -> {
     System.out.printf("Got response details. Url: %s. Status code: %d.%n",
         pagedResponse.getRequest().getUrl(), pagedResponse.getStatusCode());
     pagedResponse.getElements().forEach(deletedKey ->
         System.out.printf("Deleted key's recovery id:%s%n", deletedKey.getRecoveryId()));
 });

Parameters:

context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

PagedIterable<T> 保管库中所有 DeletedKey 的 。

listPropertiesOfKeyVersions

public PagedIterable listPropertiesOfKeyVersions(String name)

列出指定 KeyVaultKey的所有版本。 通量中的单个键响应由 KeyProperties 表示为仅在响应中提供密钥标识符、属性和标记。 响应中未提供密钥材料值。 此操作需要 keys/list 权限。

可以从此信息中获取 KeyVaultKey 每个版本的密钥材料。 循环访问 KeyProperties 并调用 getKey(String name, String version)。 这将返回 KeyVaultKey ,其中包含指定版本的密钥材料。

for (KeyProperties keyProperties : keyClient.listPropertiesOfKeyVersions("keyName")) {
     KeyVaultKey key = keyClient.getKey(keyProperties.getName(), keyProperties.getVersion());

     System.out.printf("Retrieved key version: %s with name: %s and type: %s%n",
         key.getProperties().getVersion(), key.getName(), key.getKeyType());
 }

按页循环访问关键版本的代码示例

可以从此信息中获取 KeyVaultKey 每个版本的密钥材料。 按页循环访问所有 KeyProperties 并调用 getKey(String name, String version)。 这将返回 KeyVaultKey ,其中包含指定版本的密钥材料。

keyClient.listPropertiesOfKeyVersions("keyName").iterableByPage().forEach(pagedResponse -> {
     System.out.printf("Got response details. Url: %s. Status code: %d.%n",
         pagedResponse.getRequest().getUrl(), pagedResponse.getStatusCode());
     pagedResponse.getElements().forEach(keyProperties ->
         System.out.printf("Key name: %s. Key version: %s.%n", keyProperties.getName(),
             keyProperties.getVersion()));
 });

Parameters:

name - KeyVaultKey 的名称。

Returns:

PagedIterable<T> 保管库 KeyProperties 中指定密钥的所有版本的 。 如果 KeyVaultKey 密钥保管库中不存在具有提供的 name ,则列表为空。

listPropertiesOfKeyVersions

public PagedIterable listPropertiesOfKeyVersions(String name, Context context)

列出指定 KeyVaultKey的所有版本。 通量中的单个键响应由 KeyProperties 表示为仅在响应中提供密钥标识符、属性和标记。 响应中未提供密钥材料值。 此操作需要 keys/list 权限。

可以从此信息中获取 KeyVaultKey 每个版本的密钥材料。 循环访问 KeyProperties 并调用 getKey(String name, String version)。 这将返回 KeyVaultKey ,其中包含指定版本的密钥材料。

for (KeyProperties keyProperties : keyClient.listPropertiesOfKeyVersions("keyName", new Context("key1", "value1"))) {
     KeyVaultKey key = keyClient.getKey(keyProperties.getName(), keyProperties.getVersion());

     System.out.printf("Retrieved key version: %s with name: %s and type: %s%n",
         key.getProperties().getVersion(), key.getName(), key.getKeyType());
 }

按页循环访问关键版本的代码示例

可以从此信息中获取 KeyVaultKey 每个版本的密钥材料。 按页循环访问所有 KeyProperties 并调用 getKey(String name, String version)。 这将返回包含 KeyVaultKey 指定版本的密钥材料的 。

keyClient.listPropertiesOfKeyVersions("keyName").iterableByPage().forEach(pagedResponse -> {
     System.out.printf("Got response details. Url: %s. Status code: %d.%n",
         pagedResponse.getRequest().getUrl(), pagedResponse.getStatusCode());
     pagedResponse.getElements().forEach(keyProperties ->
         System.out.printf("Key name: %s. Key version: %s.%n", keyProperties.getName(),
             keyProperties.getVersion()));
 });

Parameters:

name - KeyVaultKey 的名称。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

PagedIterable<T>KeyProperties保管库中指定 KeyVaultKey 的所有版本的 。 如果 KeyVaultKey 密钥保管库中不存在具有提供的 name ,则列表为空。

listPropertiesOfKeys

public PagedIterable listPropertiesOfKeys()

密钥保管库中的列表 KeyVaultKey 。 检索 KeyVaultKey 密钥保管库中作为 JsonWebKey 结构的列表,这些结构包含存储 KeyVaultKey的公共部分。 列表操作适用于所有 KeyType 项,列表中的单个 KeyVaultKey 响应由 KeyProperties 表示,因为响应中仅提供密钥标识符、属性和标记。 响应中未列出密钥材料和各个密钥版本。 此操作需要 keys/list 权限。

示例代码

可以从此信息获取 KeyVaultKey 关键材料。 循环访问 并 KeyProperties 调用 getKey(String name, String version)。 这将返回 , KeyVaultKey 其中包含其最新版本的密钥材料。

for (KeyProperties keyProperties : keyClient.listPropertiesOfKeys()) {
     KeyVaultKey key = keyClient.getKey(keyProperties.getName(), keyProperties.getVersion());

     System.out.printf("Retrieved key with name: %s and type: %s%n", key.getName(), key.getKeyType());
 }

按页循环访问密钥

可以从此信息获取 KeyVaultKey 关键材料。 按页循环访问所有 KeyProperties 并调用 getKey(String name, String version)。 这将返回 , KeyVaultKey 其中包含其最新版本的密钥材料。

keyClient.listPropertiesOfKeys().iterableByPage().forEach(pagedResponse -> {
     System.out.printf("Got response details. Url: %s. Status code: %d.%n",
         pagedResponse.getRequest().getUrl(), pagedResponse.getStatusCode());
     pagedResponse.getElements().forEach(keyProperties -> {
         KeyVaultKey key = keyClient.getKey(keyProperties.getName(), keyProperties.getVersion());

         System.out.printf("Retrieved key with name: %s and type: %s%n", key.getName(),
             key.getKeyType());
     });
 });

Returns:

PagedIterable<T>KeyProperties保管库中所有 KeyVaultKey 的 。

listPropertiesOfKeys

public PagedIterable listPropertiesOfKeys(Context context)

密钥保管库中的列表 KeyVaultKey 。 检索 KeyVaultKey 密钥保管库中作为 JsonWebKey 结构的列表,这些结构包含存储 KeyVaultKey的公共部分。 列表操作适用于所有 KeyType 项,列表中的单个 KeyVaultKey 响应由 KeyProperties 表示,因为响应中仅提供密钥标识符、属性和标记。 响应中未列出密钥材料和各个密钥版本。 此操作需要 keys/list 权限。

示例代码

可以从此信息获取 KeyVaultKey 关键材料。 循环访问 并 KeyProperties 调用 getKey(String name, String version)。 这将返回 , KeyVaultKey 其中包含其最新版本的密钥材料。

for (KeyProperties keyProperties : keyClient.listPropertiesOfKeys(new Context("key1", "value1"))) {
     KeyVaultKey key = keyClient.getKey(keyProperties.getName(), keyProperties.getVersion());

     System.out.printf("Retrieved key with name: %s and type: %s%n", key.getName(),
         key.getKeyType());
 }

按页迭代

可以从此信息获取 KeyVaultKey 关键材料。 按页循环访问所有 KeyProperties 并调用 getKey(String name, String version)。 这将返回 , KeyVaultKey 其中包含其最新版本的密钥材料。

keyClient.listPropertiesOfKeys().iterableByPage().forEach(pagedResponse -> {
     System.out.printf("Got response details. Url: %s. Status code: %d.%n",
         pagedResponse.getRequest().getUrl(), pagedResponse.getStatusCode());
     pagedResponse.getElements().forEach(keyProperties -> {
         KeyVaultKey key = keyClient.getKey(keyProperties.getName(), keyProperties.getVersion());

         System.out.printf("Retrieved key with name: %s and type: %s%n", key.getName(),
             key.getKeyType());
     });
 });

Parameters:

context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

PagedIterable<T>KeyProperties保管库中所有 KeyVaultKey 的 。

purgeDeletedKey

public void purgeDeletedKey(String name)

永久删除指定的 KeyVaultKey ,且无法恢复。 清除已删除的密钥操作适用于已启用软删除的保管库。 此操作需要 keys/purge 权限。

示例代码

KeyVaultKey从启用软删除的密钥保管库中清除 。

keyClient.purgeDeletedKey("deletedKeyName");

Parameters:

name - KeyVaultKey 的名称。

purgeDeletedKeyWithResponse

public Response purgeDeletedKeyWithResponse(String name, Context context)

永久删除指定的 KeyVaultKey ,且无法恢复。 清除已删除的密钥操作适用于已启用软删除的保管库。 此操作需要 keys/purge 权限。

示例代码

KeyVaultKey从启用软删除的密钥保管库中清除 。

Response<Void> purgeDeletedKeyResponse = keyClient.purgeDeletedKeyWithResponse("deletedKeyName",
     new Context("key1", "value1"));

 System.out.printf("Purge response status code: %d%n", purgeDeletedKeyResponse.getStatusCode());

Parameters:

name - KeyVaultKey 的名称。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

包含 Response<T> 状态代码和 HTTP 标头的 。

releaseKey

public ReleaseKeyResult releaseKey(String name, String targetAttestationToken)

发布最新版本。KeyVaultKey

KeyVaultKey必须是可导出的。 此操作需要 keys/release 权限。

示例代码

释放 KeyVaultKey。 输出包含释放密钥的已签名对象。

String targetAttestationToken = "someAttestationToken";
 ReleaseKeyResult releaseKeyResult = keyClient.releaseKey("keyName", targetAttestationToken);

 System.out.printf("Signed object containing released key: %s%n", releaseKeyResult);

Parameters:

name - 要释放的 的名称 KeyVaultKey
targetAttestationToken - 发布目标的 KeyVaultKey 证明断言。

Returns:

包含 的 KeyVaultKey密钥释放结果。

releaseKey

public ReleaseKeyResult releaseKey(String name, String version, String targetAttestationToken)

发布 特定版本的 KeyVaultKey

KeyVaultKey必须是可导出的。 此操作需要 keys/release 权限。

示例代码

释放 KeyVaultKey。 输出包含释放密钥的已签名对象。

String myKeyVersion = "6A385B124DEF4096AF1361A85B16C204";
 String myTargetAttestationToken = "someAttestationToken";
 ReleaseKeyResult releaseKeyVersionResult =
     keyClient.releaseKey("keyName", myKeyVersion, myTargetAttestationToken);

 System.out.printf("Signed object containing released key: %s%n", releaseKeyVersionResult);

Parameters:

name - 要释放的 的名称 KeyVaultKey
version - 要释放的密钥的版本。 如果此为空或 null,则此调用等效于调用 releaseKey(String name, String targetAttestationToken),并发布最新的密钥版本。
targetAttestationToken - 发布目标的 KeyVaultKey 证明断言。

Returns:

包含 的 KeyVaultKey密钥释放结果。

releaseKeyWithResponse

public Response releaseKeyWithResponse(String name, String version, String targetAttestationToken, ReleaseKeyOptions releaseKeyOptions, Context context)

释放 KeyVaultKey

密钥必须是可导出的。 此操作需要 keys/release 权限。

示例代码

释放 KeyVaultKeyResponse<T>输出详细信息和包含发布密钥的签名对象。

String releaseKeyVersion = "6A385B124DEF4096AF1361A85B16C204";
 String someTargetAttestationToken = "someAttestationToken";
 ReleaseKeyOptions releaseKeyOptions = new ReleaseKeyOptions()
     .setAlgorithm(KeyExportEncryptionAlgorithm.RSA_AES_KEY_WRAP_256)
     .setNonce("someNonce");

 Response<ReleaseKeyResult> releaseKeyResultResponse =
     keyClient.releaseKeyWithResponse("keyName", releaseKeyVersion, someTargetAttestationToken,
         releaseKeyOptions, new Context("key1", "value1"));

 System.out.printf("Response received successfully with status code: %d. Signed object containing"
         + "released key: %s%n", releaseKeyResultResponse.getStatusCode(),
     releaseKeyResultResponse.getValue().getValue());

Parameters:

name - 要释放的 的名称 KeyVaultKey
version - 要发布的 的版本 KeyVaultKey 。 如果此为空或 null,则此调用等效于调用 releaseKey(String name, String targetAttestationToken),并发布最新的密钥版本。
targetAttestationToken - 密钥发布目标的证明断言。
releaseKeyOptions - 用于释放 的附加ReleaseKeyOptionsKeyVaultKey项。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

Response<T>此操作的 和ReleaseKeyResult包含 的 KeyVaultKey

restoreKeyBackup

public KeyVaultKey restoreKeyBackup(byte[] backup)

将备份 KeyVaultKey 的 还原到保管库。 将以前备份KeyVaultKey的 导入 Azure 密钥保管库,还原 KeyVaultKey其密钥标识符、属性和访问控制策略。 还原操作可用于导入以前备份的 KeyVaultKey。 无法还原 的 KeyVaultKey 单个版本。 使用 KeyVaultKey 与备份时相同的密钥名称完全还原 。 如果密钥名称在目标密钥保管库中不可用,则将拒绝还原操作。 虽然还原期间会保留密钥名称,但如果 还原到其他保管库, KeyVaultKey 则最终密钥标识符将更改。 还原操作会还原所有版本,并保留版本标识符。 还原操作受安全约束:目标密钥保管库必须由源密钥保管库所在的同一 Microsoft Azure 订阅拥有。 用户必须在目标密钥保管库中具有 restore 权限。 此操作需要 keys/restore 权限。

示例代码

KeyVaultKey从其备份还原密钥保管库中的 。

将密钥备份字节数组传递给还原操作。

byte[] keyBackupByteArray = {};
 KeyVaultKey keyResponse = keyClient.restoreKeyBackup(keyBackupByteArray);
 System.out.printf("Restored key with name: %s and: id %s%n", keyResponse.getName(), keyResponse.getId());

Parameters:

backup - 与 关联的 KeyVaultKey备份 Blob。

Returns:

restoreKeyBackupWithResponse

public Response restoreKeyBackupWithResponse(byte[] backup, Context context)

将备份 KeyVaultKey 还原到保管库。 将以前备份KeyVaultKey的 导入到 Azure 密钥保管库,还原 KeyVaultKey、其密钥标识符、属性和访问控制策略。 还原操作可用于导入以前备份的 KeyVaultKey。 无法还原 的各个版本 KeyVaultKeyKeyVaultKey使用与备份时相同的密钥名称完全还原。 如果密钥名称在目标密钥保管库中不可用,还原操作将被拒绝。 虽然在还原期间会保留密钥名称,但如果 还原到其他保管库, KeyVaultKey 则最终密钥标识符将更改。 还原操作会还原所有版本,并保留版本标识符。 还原操作受安全约束:目标密钥保管库必须由与源密钥保管库相同的 Microsoft Azure 订阅拥有。 用户必须在目标密钥保管库中具有 restore 权限。 此操作需要 keys/restore 权限。

示例代码

KeyVaultKey从其备份还原密钥保管库中的 。 输出 中Response<T>返回的 KeyVaultKey 的详细信息。

将密钥备份字节数组传递给还原操作。

Response<KeyVaultKey> keyResponse = keyClient.restoreKeyBackupWithResponse(keyBackupByteArray,
     new Context("key1", "value1"));

 System.out.printf("Restored key with name: %s and: id %s%n",
     keyResponse.getValue().getName(), keyResponse.getValue().getId());

Parameters:

backup - 与 关联的 KeyVaultKey备份 Blob。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

一个 Response<T> 包含 的 valueKeyVaultKey

rotateKey

public KeyVaultKey rotateKey(String name)

旋转 KeyVaultKey。 轮换密钥操作将基于 KeyRotationPolicy执行此操作。 此操作需要 keys/rotate 权限。

示例代码

旋转 KeyVaultKeyKeyVaultKey输出详细信息。

KeyVaultKey key = keyClient.rotateKey("keyName");

 System.out.printf("Rotated key with name: %s and version:%s%n", key.getName(),
     key.getProperties().getVersion());

Parameters:

name - 要旋转的 的名称 KeyVaultKey 。 系统将在指定的 KeyVaultKey中生成新版本。

Returns:

已旋转 KeyVaultKey的 的新版本。

rotateKeyWithResponse

public Response rotateKeyWithResponse(String name, Context context)

旋转 KeyVaultKey。 轮换密钥操作将基于 KeyRotationPolicy执行此操作。 此操作需要 keys/rotate 权限。

示例代码

旋转 KeyVaultKeyResponse<T>输出 和 KeyVaultKey 详细信息。

Response<KeyVaultKey> keyResponse = keyClient.rotateKeyWithResponse("keyName", new Context("key1", "value1"));

 System.out.printf("Response received successfully with status code: %d. Rotated key with name: %s and"
         + "version: %s%n", keyResponse.getStatusCode(), keyResponse.getValue().getName(),
     keyResponse.getValue().getProperties().getVersion());

Parameters:

name - 要旋转的 的名称 KeyVaultKey 。 系统将在指定的 KeyVaultKey中生成新版本。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

此操作的 , Response<T> 包含轮换 KeyVaultKey的 新版本。

updateKeyProperties

public KeyVaultKey updateKeyProperties(KeyProperties keyProperties, KeyOperation[] keyOperations)

汇报 KeyPropertiesKeyOperation指定的 KeyVaultKey关联,但不是密钥保管库中指定 KeyVaultKey 的加密密钥材料。 对现有存储KeyVaultKey的指定KeyPropertiesKeyProperties请求中未指定的更新操作将保持不变。 无法更改自身的加密密钥材料 KeyVaultKey 。 此操作需要 keys/set 权限。

示例代码

获取最新版本的 KeyVaultKey,更改其到期时间,并 KeyOperation 更新 KeyVaultKey 密钥保管库中的 。

KeyVaultKey key = keyClient.getKey("keyName");

 key.getProperties().setExpiresOn(OffsetDateTime.now().plusDays(60));

 KeyVaultKey updatedKey = keyClient.updateKeyProperties(key.getProperties(), KeyOperation.ENCRYPT,
     KeyOperation.DECRYPT);

 System.out.printf("Key is updated with name %s and id %s %n", updatedKey.getName(), updatedKey.getId());

Parameters:

keyProperties - KeyProperties具有更新属性的对象。
keyOperations - 更新 KeyOperation 为与密钥关联的 。

Returns:

一个 Response<T> 包含 的 valueKeyVaultKey

updateKeyPropertiesWithResponse

public Response updateKeyPropertiesWithResponse(KeyProperties keyProperties, Context context, KeyOperation[] keyOperations)

汇报 KeyPropertiesKeyOperation指定的 KeyVaultKey关联,但不是密钥保管库中指定 KeyVaultKey 的加密密钥材料。 对现有存储KeyVaultKey的指定KeyPropertiesKeyProperties请求中未指定的更新操作将保持不变。 无法更改自身的加密密钥材料 KeyVaultKey 。 此操作需要 keys/set 权限。

示例代码

获取最新版本的 KeyVaultKey,更改其到期时间,并 KeyOperation 更新 KeyVaultKey 密钥保管库中的 。

KeyVaultKey key = keyClient.getKey("keyName");

 key.getProperties().setExpiresOn(OffsetDateTime.now().plusDays(60));

 Response<KeyVaultKey> updateKeyResponse =
     keyClient.updateKeyPropertiesWithResponse(key.getProperties(), new Context("key1", "value1"),
         KeyOperation.ENCRYPT, KeyOperation.DECRYPT);

 System.out.printf("Updated key with name: %s and id: %s%n", updateKeyResponse.getValue().getName(),
     updateKeyResponse.getValue().getId());

Parameters:

keyProperties - KeyProperties具有更新属性的对象。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。
keyOperations - 更新 KeyOperation 为与密钥关联的 。

Returns:

一个 Response<T> 包含 的 valueKeyVaultKey

updateKeyRotationPolicy

public KeyRotationPolicy updateKeyRotationPolicy(String keyName, KeyRotationPolicy keyRotationPolicy)

使用提供的名称汇报 KeyRotationPolicyKeyVaultKey 。 此操作需要 keys/update 权限。

示例代码

汇报KeyRotationPolicy给定 KeyVaultKey的 。 KeyRotationPolicy输出详细信息。

List<KeyRotationLifetimeAction> lifetimeActions = new ArrayList<>();
 KeyRotationLifetimeAction rotateLifetimeAction = new KeyRotationLifetimeAction(KeyRotationPolicyAction.ROTATE)
     .setTimeAfterCreate("P90D");
 KeyRotationLifetimeAction notifyLifetimeAction = new KeyRotationLifetimeAction(KeyRotationPolicyAction.NOTIFY)
     .setTimeBeforeExpiry("P45D");

 lifetimeActions.add(rotateLifetimeAction);
 lifetimeActions.add(notifyLifetimeAction);

 KeyRotationPolicy keyRotationPolicy = new KeyRotationPolicy()
     .setLifetimeActions(lifetimeActions)
     .setExpiresIn("P6M");

 KeyRotationPolicy updatedPolicy =
     keyClient.updateKeyRotationPolicy("keyName", keyRotationPolicy);

 System.out.printf("Updated key rotation policy with id: %s%n", updatedPolicy.getId());

Parameters:

keyName - KeyVaultKey 的名称。
keyRotationPolicy - ke KeyRotationPolicyKeyVaultKeyy 的 。

Returns:

updateKeyRotationPolicyWithResponse

public Response updateKeyRotationPolicyWithResponse(String keyName, KeyRotationPolicy keyRotationPolicy, Context context)

使用提供的名称汇报KeyRotationPolicy密钥的 。 此操作需要 keys/update 权限。

示例代码

汇报KeyRotationPolicy给定 KeyVaultKey的 。 Response<T>输出 和 KeyRotationPolicy 详细信息。

List<KeyRotationLifetimeAction> myLifetimeActions = new ArrayList<>();
 KeyRotationLifetimeAction myRotateLifetimeAction = new KeyRotationLifetimeAction(KeyRotationPolicyAction.ROTATE)
     .setTimeAfterCreate("P90D");
 KeyRotationLifetimeAction myNotifyLifetimeAction = new KeyRotationLifetimeAction(KeyRotationPolicyAction.NOTIFY)
     .setTimeBeforeExpiry("P45D");

 myLifetimeActions.add(myRotateLifetimeAction);
 myLifetimeActions.add(myNotifyLifetimeAction);

 KeyRotationPolicy myKeyRotationPolicy = new KeyRotationPolicy()
     .setLifetimeActions(myLifetimeActions)
     .setExpiresIn("P6M");

 Response<KeyRotationPolicy> keyRotationPolicyResponse = keyClient.updateKeyRotationPolicyWithResponse(
     "keyName", myKeyRotationPolicy, new Context("key1", "value1"));

 System.out.printf("Response received successfully with status code: %d. Updated key rotation policy"
     + "with id: %s%n", keyRotationPolicyResponse.getStatusCode(), keyRotationPolicyResponse.getValue().getId());

Parameters:

keyName - KeyVaultKey 的名称。
keyRotationPolicy - KeyRotationPolicy键的 。
context - 在服务调用期间通过 HttpPipeline 传递的附加Context项。

Returns:

此操作的 , Response<T> 包含 KeyRotationPolicyKeyVaultKey

适用于