VerifySignedByCert (Transact-SQL)
Testet, ob digital signierte Daten seit der Signatur geändert wurden.
Transact-SQL-Syntaxkonventionen
Syntax
VerifySignedByCert( Cert_ID , signed_data , signature )
Argumente
- Cert_ID
Die ID eines Zertifikats in der Datenbank. int
- signed_data
Eine Variable vom Typ nvarchar, char, varchar oder nchar, die mit einem Zertifikat signierte Daten enthält.
- signature
Die Signatur, die an die signierten Daten angefügt wurde. varbinary.
Rückgabetypen
int
Gibt 1 zurück, wenn die signierten Daten nicht geändert wurden, andernfalls 0.
Hinweise
VerifySignedByCert leitet eine Signatur aus zuvor signierten Daten ab, wobei ein in der Datenbank gespeichertes Zertifikat verwendet wird. VerifySignedByCert vergleicht die neu abgeleitete Signatur mit der Signatur, die an die signierten Daten beim Abruf der Daten angefügt wurde. Stimmt die neu abgeleitete Signatur mit der an die signierten Daten angefügten Signatur überein, ist dies der Beweis, dass die Daten seit dem Signieren nicht geändert wurden. Die Berechnung der Signatur basiert auf allen Zeichen im überprüften Modul, einschließlich führender und nachfolgender Leerzeichen, Wagenrücklauf- und Zeilenvorschubzeichen.
Berechtigungen
Erfordert die VIEW DEFINITION-Berechtigung für das Zertifikat.
Beispiele
A. Überprüfen, dass signierte Daten nicht manipuliert wurden
Im folgenden Beispiel wird getestet, ob die Informationen in Signed_Data
seit dem Signieren mithilfe des Zertifikats namens Shipping04
geändert wurden. Die Signatur wird in DataSignature
gespeichert. Das Zertifikat, Shipping04
, wird an die Cert_ID
-Funktion übergeben, die die ID des Zertifikats in der Datenbank zurückgibt. Gibt VerifySignedByCert
den Wert 1 zurück, ist die Signatur einwandfrei. Gibt VerifySignedByCert
den Wert 0 zurück, handelt es sich bei den Daten in Signed_Data
nicht um die Daten, die zum Generieren von DataSignature
verwendet wurden. In diesem Fall wurde entweder Signed_Data
seit dem Signieren geändert, oder Signed_Data
wurde mithilfe eines anderen Zertifikats signiert.
SELECT Data, VerifySignedByCert( Cert_Id( 'Shipping04' ),
Signed_Data, DataSignature ) AS IsSignatureValid
FROM [AdventureWorks].[SignedData04]
WHERE Description = N'data signed by certificate ''Shipping04''';
GO
B. Zurückgeben von Datensätzen mit einer gültigen Signatur
Diese Abfrage gibt nur Datensätze zurück, die nicht geändert wurden, seit sie mithilfe des Zertifikats Shipping04
signiert wurden.
SELECT Data FROM [AdventureWorks].[SignedData04]
WHERE VerifySignedByCert( Cert_Id( 'Shipping04' ), Data,
DataSignature ) = 1
AND Description = N'data signed by certificate ''Shipping04''';
GO
Siehe auch
Verweis
Cert_ID (Transact-SQL)
SignByCert (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)