Menandatangani dan memverifikasi data menggunakan kunci di Azure Key Vault dengan JavaScript

Buat KeyClient dengan kredensial autentikasi terprogram yang sesuai, lalu buat CryptographyClient menggunakan klien untuk mengatur, memperbarui, dan memutar kunci di Azure Key Vault.

Menandatangani data

Beberapa saran untuk menandatangani data:

  • Hash data besar sebelum penandatanganan
  • Hash data satu arah sebelum menandatangani seperti kata sandi
  • Data 2 arah kecil dapat ditandatangani secara langsung

Menandatangani dan memverifikasi data besar atau satu arah dengan kunci

Untuk menandatangani dan memverifikasi pesan yang Anda cerna, gunakan metode berikut:

Untuk pesan yang dicerna:

  • tanda tangani untuk menandatangani hash pesan. Ini berguna untuk data besar atau data satu arah seperti kata sandi.
  • verifikasi untuk memverifikasi hash pesan.
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'}.`);
}

Menandatangani dan memverifikasi data kecil dengan kunci

Untuk menandatangani dan memverifikasi data Anda, gunakan metode berikut:

Untuk data:

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'}.`);
}

Langkah berikutnya