Yandex Cloud
Search
Contact UsGet started
  • Blog
  • Pricing
  • Documentation
  • All Services
  • System Status
    • Featured
    • Infrastructure & Network
    • Data Platform
    • Containers
    • Developer tools
    • Serverless
    • Security
    • Monitoring & Resources
    • ML & AI
    • Business tools
  • All Solutions
    • By industry
    • By use case
    • Economics and Pricing
    • Security
    • Technical Support
    • Customer Stories
    • Gateway to Russia
    • Cloud for Startups
    • Education and Science
  • Blog
  • Pricing
  • Documentation
Yandex project
© 2025 Yandex.Cloud LLC
Yandex Key Management Service
  • Getting started
  • Access management
  • Pricing policy
  • Terraform reference
    • Authentication with the API
      • Overview
        • Overview
        • Encrypt
        • Decrypt
        • ReEncrypt
        • GenerateDataKey
  • Monitoring metrics
  • Audit Trails events
  • FAQ

In this article:

  • gRPC request
  • GenerateDataKeyRequest
  • GenerateDataKeyResponse
  1. API reference
  2. gRPC
  3. SymmetricCrypto
  4. GenerateDataKey

Key Management Service API, gRPC: SymmetricCryptoService.GenerateDataKey

Written by
Yandex Cloud
Updated at November 26, 2024
  • gRPC request
  • GenerateDataKeyRequest
  • GenerateDataKeyResponse

Generates a new symmetric data encryption key (not a KMS key) and returns
the generated key as plaintext and as ciphertext encrypted with the specified symmetric KMS key.

gRPC requestgRPC request

rpc GenerateDataKey (GenerateDataKeyRequest) returns (GenerateDataKeyResponse)

GenerateDataKeyRequestGenerateDataKeyRequest

{
  "key_id": "string",
  "version_id": "string",
  "aad_context": "bytes",
  "data_key_spec": "SymmetricAlgorithm",
  "skip_plaintext": "bool"
}

Field

Description

key_id

string

Required field. ID of the symmetric KMS key that the generated data key should be encrypted with.

version_id

string

ID of the key version to encrypt the generated data key with.
Defaults to the primary version if not specified.

aad_context

bytes

Additional authenticated data (AAD context), optional.
If specified, this data will be required for decryption with the SymmetricDecryptRequest.
Should be encoded with base64.

data_key_spec

enum SymmetricAlgorithm

Encryption algorithm and key length for the generated data key.

  • SYMMETRIC_ALGORITHM_UNSPECIFIED
  • AES_128: AES algorithm with 128-bit keys.
  • AES_192: AES algorithm with 192-bit keys.
  • AES_256: AES algorithm with 256-bit keys.
  • AES_256_HSM: AES algorithm with 256-bit keys hosted by HSM

skip_plaintext

bool

If true, the method won't return the data key as plaintext.
Default value is false.

GenerateDataKeyResponseGenerateDataKeyResponse

{
  "key_id": "string",
  "version_id": "string",
  "data_key_plaintext": "bytes",
  "data_key_ciphertext": "bytes"
}

Field

Description

key_id

string

ID of the symmetric KMS key that was used to encrypt the generated data key.

version_id

string

ID of the key version that was used for encryption.

data_key_plaintext

bytes

Generated data key as plaintext.
The field is empty, if the GenerateDataKeyRequest.skip_plaintext parameter
was set to true.

data_key_ciphertext

bytes

The encrypted data key.

Was the article helpful?

Previous
ReEncrypt
Next
Overview
Yandex project
© 2025 Yandex.Cloud LLC