VerifySignedByAsymKey (Transact-SQL)
Verifica se i dati con firma digitale sono stati modificati dopo la firma.
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