VerifySignedByCert (Transact-SQL)
Sprawdzenie, czy danych podpisanych cyfrowo została zmieniona po jego podpisaniu.
Składnia
VerifySignedByCert( Cert_ID , signed_data , signature )
Argumenty
Cert_ID
Jest to identyfikator certyfikat w bazie danych.Cert_IDis int.signed_data
Jest zmienną typu nvarchar, char, varchar, lub nchar zawierający dane, który został podpisany przy użyciu certyfikat.signature
Jest podpis, który był dołączony do podpisane dane.signatureis varbinary.
Zwracane typy
int
Zwraca wartość 1, gdy podpisane dane bez zmian; 0 inaczej.
Uwagi
VerifySignedBycertOdszyfrowuje podpis danych za pomocą publicznego klucz określonego certyfikati porównuje wartość odszyfrowane do nowo obliczone wartości mieszania MD5 danych.Jeżeli wartości pasują do siebie, podpis potwierdza się ważność.
Uprawnienia
Wymaga uprawnień VIEW DEFINITION certyfikat.
Przykłady
A.Weryfikowanie, czy podpisane dane nie została sfałszowana
Następujące badania przykład czy informacje w Signed_Data została zmieniona po jego podpisaniu certyfikat o nazwie Shipping04.Podpis jest przechowywany w DataSignature.certyfikat Shipping04, jest przekazywany do Cert_ID, która zwraca identyfikator certyfikat w bazie danych.Jeśli VerifySignedByCert zwraca wartość 1, podpis jest prawidłowy.Jeśli VerifySignedByCert zwraca wartość 0, dane w Signed_Data jest nie danych, który został użyty do wygenerowania DataSignature.W tym przypadekalbo Signed_Data została zmieniona po jego podpisaniu lub Signed_Data została podpisana z innego certyfikat.
SELECT Data, VerifySignedByCert( Cert_Id( 'Shipping04' ),
Signed_Data, DataSignature ) AS IsSignatureValid
FROM [AdventureWorks2008R2].[SignedData04]
WHERE Description = N'data signed by certificate ''Shipping04''';
GO
B.Zwracanie tylko te rekordy, które mają prawidłowy podpis
Ta kwerenda zwraca tylko te rekordy, które nie zostały zmienione od czasu zostały podpisane przy użyciu certyfikat Shipping04.
SELECT Data FROM [AdventureWorks2008R2].[SignedData04]
WHERE VerifySignedByCert( Cert_Id( 'Shipping04' ), Data,
DataSignature ) = 1
AND Description = N'data signed by certificate ''Shipping04''';
GO