Клиентская библиотека Azure Key Vault Key для JavaScript версии 4.8.0

Azure Key Vault — это служба, которая позволяет шифровать ключи проверки подлинности, ключи учетной записи хранения, ключи шифрования данных, PFX-файлы и пароли с помощью защищенных ключей. Если вы хотите узнать больше о Key Vault Azure, ознакомьтесь со статьей Что такое azure Key Vault?

Управляемый модуль HSM Azure Key Vault — это полностью управляемая высокодоступная облачная служба с одним клиентом, соответствующая стандартам, которая позволяет защищать криптографические ключи для облачных приложений с помощью модулей HSM, проверенных fiPS 140-2 уровня 3. Если вы хотите узнать больше об Управляемом устройстве HSM Azure Key Vault, ознакомьтесь со статьей Что такое azure Key Vault управляемых HSM?

Клиент библиотеки ключей Azure Key Vault поддерживает ключи RSA, ключи на основе эллиптических кривых (EC), а также симметричные ключи (oct) при выполнении в управляемом модуле HSM, каждый из которых имеет соответствующую поддержку в аппаратных модулях безопасности (HSM). Он предлагает операции по созданию, извлечению, обновлению, удалению, очистке, резервному копированию, восстановлению и перечислению ключей и их версий.

Используйте клиентную библиотеку для Ключей Key Vault Azure в приложении Node.js, чтобы:

  • Создайте ключи с помощью эллиптической кривой или шифрования RSA, при необходимости на основе аппаратных модулей безопасности (HSM).
  • Импорт, удаление и обновление ключей.
  • Получение одного или нескольких ключей и удаленных ключей с их атрибутами.
  • Восстановление удаленного ключа и резервного копирования ключа.
  • Получение версий ключа.

Используя клиент шифрования, доступный в этой библиотеке, у вас также есть доступ к:

  • Шифрование
  • Расшифровки
  • Сертификат для подписи маркера
  • Проверка
  • Упаковка ключей
  • Распакувание ключей

Примечание. Этот пакет нельзя использовать в браузере из-за ограничений службы Azure Key Vault. Инструкции см. в этом документе.

Основные ссылки:

Начало работы

Поддерживаемые в настоящее время среды

Предварительные требования

Установка пакета

Установка клиентской библиотеки Azure Key Vault Key с помощью npm

npm install @azure/keyvault-keys

Установка библиотеки удостоверений

Клиенты Key Vault Azure проходят проверку подлинности с помощью библиотеки удостоверений Azure. Установите его также с помощью npm.

npm install @azure/identity

Настройка TypeScript

Для пользователей TypeScript необходимо установить определения типов Node:

npm install @types/node

Также необходимо включить compilerOptions.allowSyntheticDefaultImports в tsconfig.json. Обратите внимание, что если вы включили compilerOptions.esModuleInterop, allowSyntheticDefaultImports параметр включен по умолчанию. Дополнительные сведения см. в руководстве по параметрам компилятора TypeScript .

Основные понятия

  • Клиент Key — это основной интерфейс для взаимодействия с методами API, связанными с ключами в API Key Vault Azure из приложения JavaScript. После инициализации он предоставляет базовый набор методов, которые можно использовать для создания, чтения, обновления и удаления ключей.
  • Версия ключа — это версия ключа в Key Vault. Каждый раз, когда пользователь присваивает значение уникальному имени ключа, создается новая версия этого ключа. При получении ключа по имени всегда возвращается последнее назначенное значение, если в запросе не указана определенная версия.
  • Обратимое удаление позволяет Key Vault поддерживать удаление и очистку в виде двух отдельных шагов, поэтому удаленные ключи не теряются сразу. Это происходит, только если в Key Vault включено обратимое удаление.
  • Резервную копию ключа можно создать из любого созданного ключа. Эти резервные копии поступают в виде двоичных данных и могут использоваться только для повторного создания ранее удаленного ключа.
  • Клиент шифрования — это отдельный интерфейс, взаимодействующий с методами API ключей в API Key Vault. Этот клиент фокусируется только на операциях шифрования, которые могут быть выполнены с помощью ключа, который уже был создан в Key Vault. Дополнительные сведения об этом клиенте см. в разделе Криптография .

Проверка подлинности с помощью Azure Active Directory

Служба Key Vault использует Azure Active Directory для проверки подлинности запросов к своим API. Пакет @azure/identity предоставляет различные типы учетных данных, которые приложение может использовать для этого. Файл сведений для @azure/identity содержит дополнительные сведения и примеры для начала работы.

Чтобы взаимодействовать со службой azure Key Vault, необходимо создать экземпляр KeyClient класса , URL-адрес хранилища и объект учетных данных. В примерах, приведенных в этом документе, используется объект учетных данных с именем DefaultAzureCredential, который подходит для большинства сценариев, включая локальные среды разработки и рабочие среды. Кроме того, мы рекомендуем использовать управляемое удостоверение для проверки подлинности в рабочих средах.

Дополнительные сведения о различных способах проверки подлинности и соответствующих типах учетных данных см. в документации по удостоверениям Azure.

Вот краткий пример. Сначала импортируйте DefaultAzureCredential и KeyClient:

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");

После импорта мы можем подключиться к службе Key Vault:

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");

const credential = new DefaultAzureCredential();

// Build the URL to reach your key vault
const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`; // or `https://${vaultName}.managedhsm.azure.net` for managed HSM.

// Lastly, create our keys client and connect to the service
const client = new KeyClient(url, credential);

Указание версии API службы Key Vault Azure

По умолчанию этот пакет использует последнюю версию службы azure Key Vault, которая — 7.2. Вы можете изменить используемую версию службы, задав параметр serviceVersion в конструкторе клиента, как показано ниже:

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

// Change the Azure Key Vault service API version being used via the `serviceVersion` option
const client = new KeyClient(url, credential, {
  serviceVersion: "7.0", // Or 7.1
});

Примеры

В следующих разделах содержатся фрагменты кода, охватывающие некоторые распространенные задачи с помощью Ключей Key Vault Azure. Здесь рассматриваются следующие сценарии:

Создание ключа

createKeyсоздает ключ для хранения в Key Vault Azure. Если ключ с тем же именем уже существует, создается новая версия ключа.

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new KeyClient(url, credential);

const keyName = "MyKeyName";

async function main() {
  const result = await client.createKey(keyName, "RSA");
  console.log("result: ", result);
}

main();

Второй параметр, отправляемый в createKey , — это тип ключа. Тип поддерживаемых ключей будет зависеть от номера SKU и от того, используете ли вы Key Vault Azure или управляемый модуль HSM Azure. Актуальный список поддерживаемых типов ключей см. в разделе Сведения о ключах.

Получение ключа

Самый простой способ чтения ключей из хранилища — получить ключ по имени. При этом будет получена последняя версия ключа. При необходимости можно получить другую версию ключа, если указать ее как часть необязательных параметров.

getKeyизвлекает предыдущие хранилища ключей в Key Vault.

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new KeyClient(url, credential);

const keyName = "MyKeyName";

async function main() {
  const latestKey = await client.getKey(keyName);
  console.log(`Latest version of the key ${keyName}: `, latestKey);
  const specificKey = await client.getKey(keyName, { version: latestKey.properties.version! });
  console.log(`The key ${keyName} at the version ${latestKey.properties.version!}: `, specificKey);
}

main();

Создание и обновление ключей с помощью атрибутов

Следующие атрибуты также можно назначить любому ключу в Key Vault:

  • tags: любой набор значений "ключ-ключ", который можно использовать для поиска и фильтрации ключей.
  • keyOps: массив операций, которые этот ключ сможет выполнять (encrypt, , decryptsign, verify, wrapKey, ). unwrapKey
  • enabled: логическое значение, определяющее, можно ли считать значение ключа.
  • notBefore: заданная дата, после которой можно получить значение ключа.
  • expires: заданная дата, после которой невозможно получить значение ключа.

Объект с этими атрибутами можно отправить в качестве третьего createKeyпараметра , сразу после имени и значения ключа, как показано ниже:

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new KeyClient(url, credential);

const keyName = "MyKeyName";

async function main() {
  const result = await client.createKey(keyName, "RSA", {
    enabled: false,
  });
  console.log("result: ", result);
}

main();

При этом будет создана новая версия того же ключа, которая будет иметь последние предоставленные атрибуты.

Атрибуты также можно обновить до существующей версии ключа с updateKeyPropertiesпомощью , как показано ниже.

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new KeyClient(url, credential);

const keyName = "MyKeyName";

async function main() {
  const result = await client.createKey(keyName, "RSA");
  await client.updateKeyProperties(keyName, result.properties.version, {
    enabled: false,
  });
}

main();

Удаление ключа

Метод beginDeleteKey запускает удаление ключа. Этот процесс будет выполняться в фоновом режиме, как только будут доступны необходимые ресурсы.

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new KeyClient(url, credential);

const keyName = "MyKeyName";

async function main() {
  const poller = await client.beginDeleteKey(keyName);
  await poller.pollUntilDone();
}

main();

Если для Key Vault включено обратимое удаление, эта операция пометит ключ только как удаленный. Удаленный ключ не может быть обновлен. Они могут быть только прочитаны, восстановлены или очищены.

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new KeyClient(url, credential);

const keyName = "MyKeyName";

async function main() {
  const poller = await client.beginDeleteKey(keyName);

  // You can use the deleted key immediately:
  const deletedKey = poller.getResult();

  // The key is being deleted. Only wait for it if you want to restore it or purge it.
  await poller.pollUntilDone();

  // You can also get the deleted key this way:
  await client.getDeletedKey(keyName);

  // Deleted keys can also be recovered or purged:

  // recoverDeletedKey also returns a poller, just like beginDeleteKey.
  const recoverPoller = await client.beginRecoverDeletedKey(keyName);
  await recoverPoller.pollUntilDone();

  // And here is how to purge a deleted key
  await client.purgeDeletedKey(keyName);
}

main();

Так как для полного удаления ключей требуется некоторое время, возвращается объект Poller, beginDeleteKey который отслеживает базовую долго выполняющуюся операцию в соответствии с нашими рекомендациями: https://azure.github.io/azure-sdk/typescript_design.html#ts-lro

Полученное средство опроса позволит получить удаленный ключ путем вызова poller.getResult(). Вы также можете дождаться завершения удаления, выполнив отдельные вызовы служб до удаления ключа или дождавшись завершения процесса:

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new KeyClient(url, credential);

const keyName = "MyKeyName";

async function main() {
  const poller = await client.beginDeleteKey(keyName);

  // You can use the deleted key immediately:
  let deletedKey = poller.getResult();

  // Or you can wait until the key finishes being deleted:
  deletedKey = await poller.pollUntilDone();
  console.log(deletedKey);
}

main();

Еще один способ дождаться полного удаления ключа — выполнить отдельные вызовы следующим образом:

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");
const { delay } = require("@azure/core-util");

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new KeyClient(url, credential);

const keyName = "MyKeyName";

async function main() {
  const poller = await client.beginDeleteKey(keyName);

  while (!poller.isDone()) {
    await poller.poll();
    await delay(5000);
  }

  console.log(`The key ${keyName} is fully deleted`);
}

main();

Настройка автоматического поворота ключей

С помощью KeyClient можно настроить автоматическую смену ключа, указав политику смены. Кроме того, KeyClient предоставляет метод для смены ключа по запросу путем создания новой версии данного ключа.

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");

const url = `https://<YOUR KEYVAULT NAME>.vault.azure.net`;
const client = new KeyClient(url, new DefaultAzureCredential());

async function main() {
  const keyName = "MyKeyName";

  // Set the key's automated rotation policy to rotate the key 30 days before expiry.
  const policy = await client.updateKeyRotationPolicy(keyName, {
    lifetimeActions: [
      {
        action: "Rotate",
        timeBeforeExpiry: "P30D",
      },
    ],
    // You may also specify the duration after which any newly rotated key will expire.
    // In this case, any new key versions will expire after 90 days.
    expiresIn: "P90D",
  });

  // You can get the current key rotation policy of a given key by calling the getKeyRotationPolicy method.
  const currentPolicy = await client.getKeyRotationPolicy(keyName);

  // Finally, you can rotate a key on-demand by creating a new version of the given key.
  const rotatedKey = await client.rotateKey(keyName);
}

main();

Итерации списков ключей

С помощью KeyClient можно получить и выполнить итерацию по всем ключам в Key Vault Azure, а также по всем удаленным ключам и версиям определенного ключа. Доступны следующие методы API:

  • listPropertiesOfKeys выводит список всех неудаляемых ключей по именам, только в последних версиях.
  • listDeletedKeys выводит список всех удаленных ключей по именам, только в последних версиях.
  • listPropertiesOfKeyVersions выводит список всех версий ключа на основе имени ключа.

Который можно использовать следующим образом:

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new KeyClient(url, credential);

const keyName = "MyKeyName";

async function main() {
  for await (let keyProperties of client.listPropertiesOfKeys()) {
    console.log("Key properties: ", keyProperties);
  }
  for await (let deletedKey of client.listDeletedKeys()) {
    console.log("Deleted: ", deletedKey);
  }
  for await (let versionProperties of client.listPropertiesOfKeyVersions(keyName)) {
    console.log("Version properties: ", versionProperties);
  }
}

main();

Все эти методы возвращают все доступные результаты одновременно. Чтобы получить их по страницам, добавьте .byPage() сразу после вызова метода API, который вы хотите использовать, следующим образом:

const { DefaultAzureCredential } = require("@azure/identity");
const { KeyClient } = require("@azure/keyvault-keys");

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const client = new KeyClient(url, credential);

const keyName = "MyKeyName";

async function main() {
  for await (let page of client.listPropertiesOfKeys().byPage()) {
    for (let keyProperties of page) {
      console.log("Key properties: ", keyProperties);
    }
  }
  for await (let page of client.listDeletedKeys().byPage()) {
    for (let deletedKey of page) {
      console.log("Deleted key: ", deletedKey);
    }
  }
  for await (let page of client.listPropertiesOfKeyVersions(keyName).byPage()) {
    for (let versionProperties of page) {
      console.log("Version: ", versionProperties);
    }
  }
}

main();

Шифрование

Эта библиотека также предлагает набор криптографических служебных программ, доступных через CryptographyClient. Как и KeyClient, CryptographyClient будет подключаться к Azure Key Vault с предоставленным набором учетных данных. После подключения CryptographyClient может шифровать, расшифровывать, подписывать, проверять, упаковывать ключи и распаковывать ключи.

Далее мы можем подключиться к службе хранилища ключей KeyClientтак же, как и с . Нам потребуется скопировать некоторые параметры из хранилища ключей, к которому мы подключаемся, в переменные среды. После того как они находятся в нашей среде, мы можем получить к ним доступ с помощью следующего кода:

import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const keysClient = new KeyClient(url, credential);

async function main() {
  // Create or retrieve a key from the keyvault
  let myKey = await keysClient.createKey("MyKey", "RSA");

  // Lastly, create our cryptography client and connect to the service
  const cryptographyClient = new CryptographyClient(myKey, credential);
}

main();

Encrypt

encrypt зашифрует сообщение.

import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const keysClient = new KeyClient(url, credential);

async function main() {
  let myKey = await keysClient.createKey("MyKey", "RSA");
  const cryptographyClient = new CryptographyClient(myKey.id, credential);

  const encryptResult = await cryptographyClient.encrypt({
    algorithm: "RSA1_5",
    plaintext: Buffer.from("My Message"),
  });
  console.log("encrypt result: ", encryptResult.result);
}

main();

Decrypt

decrypt расшифровывает зашифрованное сообщение.

import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const keysClient = new KeyClient(url, credential);

async function main() {
  let myKey = await keysClient.createKey("MyKey", "RSA");
  const cryptographyClient = new CryptographyClient(myKey.id, credential);

  const encryptResult = await cryptographyClient.encrypt({
    algorithm: "RSA1_5",
    plaintext: Buffer.from("My Message"),
  });
  console.log("encrypt result: ", encryptResult.result);

  const decryptResult = await cryptographyClient.decrypt({
    algorithm: "RSA1_5",
    ciphertext: encryptResult.result,
  });
  console.log("decrypt result: ", decryptResult.result.toString());
}

main();

Знак

sign криптографически подписывает хэш сообщения сигнатурой.

import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";
import { createHash } from "crypto";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const keysClient = new KeyClient(url, credential);

async function main() {
  let myKey = await keysClient.createKey("MyKey", "RSA");
  const cryptographyClient = new CryptographyClient(myKey, credential);

  const signatureValue = "MySignature";
  let hash = createHash("sha256");

  let digest = hash.update(signatureValue).digest();
  console.log("digest: ", digest);

  const signResult = await cryptographyClient.sign("RS256", digest);
  console.log("sign result: ", signResult.result);
}

main();

Подписывая данные

signData будет криптографически подписывать сообщение с помощью подписи.

import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const keysClient = new KeyClient(url, credential);

async function main() {
  let myKey = await keysClient.createKey("MyKey", "RSA");
  const cryptographyClient = new CryptographyClient(myKey, credential);

  const signResult = await cryptographyClient.signData("RS256", Buffer.from("My Message"));
  console.log("sign result: ", signResult.result);
}

main();

Проверка

verify будет криптографически проверять, что подписанный дайджест был подписан заданной сигнатурой.

import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";
import { createHash } from "crypto";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const keysClient = new KeyClient(url, credential);

async function main() {
  let myKey = await keysClient.createKey("MyKey", "RSA");
  const cryptographyClient = new CryptographyClient(myKey, credential);

  const hash = createHash("sha256");
  hash.update("My Message");
  const digest = hash.digest();

  const signResult = await cryptographyClient.sign("RS256", digest);
  console.log("sign result: ", signResult.result);

  const verifyResult = await cryptographyClient.verify("RS256", digest, signResult.result);
  console.log("verify result: ", verifyResult.result);
}

main();

Проверка данных

verifyData будет криптографически проверять, что подписанное сообщение было подписано заданной подписью.

import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const keysClient = new KeyClient(url, credential);

async function main() {
  let myKey = await keysClient.createKey("MyKey", "RSA");
  const cryptographyClient = new CryptographyClient(myKey, credential);

  const buffer = Buffer.from("My Message");

  const signResult = await cryptographyClient.signData("RS256", buffer);
  console.log("sign result: ", signResult.result);

  const verifyResult = await cryptographyClient.verifyData("RS256", buffer, signResult.result);
  console.log("verify result: ", verifyResult.result);
}

main();

Перенос ключа

wrapKey заключит ключ со слоем шифрования.

import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const keysClient = new KeyClient(url, credential);

async function main() {
  let myKey = await keysClient.createKey("MyKey", "RSA");
  const cryptographyClient = new CryptographyClient(myKey, credential);

  const wrapResult = await cryptographyClient.wrapKey("RSA-OAEP", Buffer.from("My Key"));
  console.log("wrap result:", wrapResult.result);
}

main();

Распаковка ключа

unwrapKey раскроет ключ, заключенный в оболочку.

import { DefaultAzureCredential } from "@azure/identity";
import { KeyClient, CryptographyClient } from "@azure/keyvault-keys";

const credential = new DefaultAzureCredential();

const vaultName = "<YOUR KEYVAULT NAME>";
const url = `https://${vaultName}.vault.azure.net`;

const keysClient = new KeyClient(url, credential);

async function main() {
  let myKey = await keysClient.createKey("MyKey", "RSA");
  const cryptographyClient = new CryptographyClient(myKey, credential);

  const wrapResult = await cryptographyClient.wrapKey("RSA-OAEP", Buffer.from("My Key"));
  console.log("wrap result:", wrapResult.result);

  const unwrapResult = await cryptographyClient.unwrapKey("RSA-OAEP", wrapResult.result);
  console.log("unwrap result: ", unwrapResult.result);
}

main();

Устранение неполадок

Дополнительные сведения о диагностике различных сценариев сбоя см. в нашем руководстве по устранению неполадок .

Включение ведения журнала может помочь выявить полезные сведения о сбоях. Чтобы просмотреть журнал HTTP-запросов и ответов, задайте для переменной среды AZURE_LOG_LEVEL значение info. Кроме того, ведение журнала можно включить во время выполнения, вызвав setLogLevel в @azure/logger:

const { setLogLevel } = require("@azure/logger");

setLogLevel("info");

Дальнейшие действия

Дополнительные примеры кода можно найти по следующим ссылкам:

Участие

Если вы хотите вносить изменения в эту библиотеку, ознакомьтесь с руководством по внесению изменений, в котором содержатся сведения о создании и тестировании кода.

Просмотры