VerifySignedByAsymKey (Transact-SQL)

Verifica se i dati con firma digitale sono stati modificati dopo la firma.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

VerifySignedByAsymKey( Asym_Key_ID , clear_text , signature )

Argomenti

  • Asym_Key_ID
    ID di un certificato con chiave asimmetrica nel database.

  • clear_text
    Dati non crittografati che si desidera verificare.

  • signature
    Firma allegata ai dati firmati. signature è di tipo varbinary.

Tipi restituiti

int

Restituisce 1 se le firme corrispondono; in caso contrario, 0.

Osservazioni

VerifySignedByAsymKey consente di decrittografare la firma dei dati utilizzando la chiave pubblica della chiave asimmetrica specificata e di confrontare il valore decrittografato con un nuovo hash MD5 dei dati calcolato. Se i valori corrispondono, viene confermata la validità della firma.

Autorizzazioni

È richiesta l'autorizzazione VIEW DEFINITION per la chiave asimmetrica.

Esempi

A. Verifica dei dati contenenti una firma valida

Nell'esempio seguente viene restituito 1 se i dati selezionati non sono stati modificati dopo la firma tramite la chiave asimmetrica WillisKey74. Viene restituito 0 se invece i dati sono stati alterati.

SELECT Data,
     VerifySignedByAsymKey( AsymKey_Id( 'WillisKey74' ), SignedData,
     DataSignature ) as IsSignatureValid
FROM [Adventureworks].[SignedData04] 
WHERE Description = N'data encrypted by asymmetric key ''WillisKey74'''
GO
RETURN

B. Restituzione di un set di risultati contenente dati con una firma valida

Nell'esempio seguente vengono restituite le righe di SignedData04 contenenti dati che non sono stati modificati dopo la firma con la chiave asimmetrica WillisKey74. Nell'esempio viene chiamata la funzione AsymKey_ID per recuperare l'ID della chiave asimmetrica dal database.

SELECT Data 
FROM [Adventureworks].[SignedData04] 
WHERE VerifySignedByAsymKey( AsymKey_Id( 'WillisKey74' ), Data,
     DataSignature ) = 1
AND Description = N'data encrypted by asymmetric key ''WillisKey74'''
GO