JavaScript ile Azure Key Vault'ta anahtar kullanarak verileri imzalama ve doğrulama

KeyClient'ı uygun programlı kimlik doğrulaması kimlik bilgileriyle oluşturun, ardından CryptographyClient oluşturmak için istemciyi kullanarak Azure Key Vault'ta bir anahtarı ayarlayın, güncelleştirin ve döndürün.

İmzalama verileri

İmzalama verileri için birkaç öneri:

  • İmzalamadan önce büyük verileri karma olarak oluşturma
  • Parolalar gibi imzalamadan önce tek yönlü verileri karma yapma
  • Küçük 2 yönlü veriler doğrudan imzalanabilir

Anahtarla büyük veya tek yönlü verileri imzalama ve doğrulama

Özetlenen iletinizi imzalamak ve doğrulamak için aşağıdaki yöntemleri kullanın:

Özetlenen iletiler için:

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

Anahtarla küçük verileri imzalama ve doğrulama

Verilerinizi imzalamak ve doğrulamak için aşağıdaki yöntemleri kullanın:

Veriler için:

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

Sonraki adımlar