export async function generateDataKey()

in modules/kms-keyring/src/helpers.ts [23:48]


export async function generateDataKey<Client extends AwsEsdkKMSInterface>(
  clientProvider: KmsClientSupplier<Client> | Client,
  NumberOfBytes: number,
  KeyId: string,
  EncryptionContext: EncryptionContext,
  GrantTokens?: string[]
): Promise<RequiredGenerateDataKeyResponse | false> {
  const client =
    typeof clientProvider === 'function'
      ? clientProvider(getRegionFromIdentifier(KeyId))
      : clientProvider

  /* Check for early return (Postcondition): clientProvider did not return a client for generateDataKey. */
  if (!client) return false
  const v2vsV3Response = client.generateDataKey({
    KeyId,
    GrantTokens,
    NumberOfBytes,
    EncryptionContext,
  })
  const v2vsV3Promise =
    'promise' in v2vsV3Response ? v2vsV3Response.promise() : v2vsV3Response
  const dataKey = await v2vsV3Promise

  return safeGenerateDataKey(dataKey)
}