Поделиться через


Подписывай и проверяйте данные с помощью ключа в Azure Key Vault с помощью JavaScript

Создайте KeyClient с соответствующими учетными данными программной проверки подлинности, а затем создайте CryptographyClient, чтобы задать, обновить и повернуть ключ в Azure Key Vault.

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

Некоторые варианты подписывания данных:

  • Хэш больших данных перед подписью
  • Хэш односторонняя обработка данных перед подписью, например паролей
  • Небольшие 2-путь данные могут быть подписаны напрямую

Подписывая и проверяйте большие или односторонние данные с помощью ключа

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

Для дайджестированных сообщений:

  • подписать дайджест сообщения. Это полезно для больших данных или односторонних данных, таких как пароли.
  • проверьте дайджест сообщения.
import { createHash } from "crypto";
import { DefaultAzureCredential } from '@azure/identity';
import {
  CryptographyClient,
  KeyClient,
  KnownSignatureAlgorithms
} from '@azure/keyvault-keys';

// get service client
const credential = new DefaultAzureCredential();
const serviceClient = new KeyClient(
    `https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
    credential
);

// get existing key
const keyVaultKey = await serviceClient.getKey('MyRsaKey');

if (keyVaultKey?.name) {

    // get encryption client with key
    const cryptoClient = new CryptographyClient(keyVaultKey, credential);
    
    // get digest
    const digestableData = "MyLargeOrOneWayData";
    const digest = createHash('sha256')
      .update(digestableData)
      .update(process.env.SYSTEM_SALT || '')
      .digest();
    
    // sign digest
    const { result: signature } = await cryptoClient.sign(KnownSignatureAlgorithms.RS256, digest);
   
    // store signed digest in database

    // verify signature
    const { result: verified } = await cryptoClient.verify(KnownSignatureAlgorithms.RS256, digest, signature);
    console.log(`Verification ${verified ? 'succeeded' : 'failed'}.`);
}

Подписывая и проверяйте небольшие данные с помощью ключа

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

Для данных:

  • signData для подписывания блока данных.
  • verifyData для проверки данных.
import { createHash } from "crypto";
import { DefaultAzureCredential } from '@azure/identity';
import {
  CryptographyClient,
  KeyClient,
  KnownSignatureAlgorithms
} from '@azure/keyvault-keys';

// get service client
const credential = new DefaultAzureCredential();
const serviceClient = new KeyClient(
    `https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
    credential
);

// get existing key
const keyVaultKey = await serviceClient.getKey('MyRsaKey');

if (keyVaultKey?.name) {

    // get encryption client with key
    const cryptoClient = new CryptographyClient(keyVaultKey, credential);
    
    const data = 'Hello you bright big beautiful world!';
    
    // sign
    const { result: signature } = await cryptoClient.signData(
        KnownSignatureAlgorithms.RS256,
        Buffer.from(data, 'utf8')
    );
    
    // verify signature
    const { result: verified } = await cryptoClient.verifyData(
        KnownSignatureAlgorithms.RS256,
        Buffer.from(data, 'utf8'),
        signature
    );
    console.log(`Verification ${verified ? 'succeeded' : 'failed'}.`);
}

Следующие шаги