VERIFYSIGNEDBYCERT (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Testet, ob digital signierte Daten seit der Signierung geändert wurden.

Transact-SQL-Syntaxkonventionen

Syntax

VerifySignedByCert( Cert_ID , signed_data , signature )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

Cert_ID
Die ID eines Zertifikats in der Datenbank. Cert_ID ist vom Datentyp int.

signed_data
Eine Variable vom Typ nvarchar, char, varcharoder nchar , die mit einem Zertifikat signierte Daten enthält.

Signatur
Die Signatur, die an die signierten Daten angefügt wurde. signature ist vom Datentyp varbinary.

Rückgabetypen

int

Gibt 1 zurück, wenn die signierten Daten nicht geändert wurden, andernfalls 0.

Hinweise

VerifySignedBycert entschlüsselt die Signatur der Daten mit dem öffentlichen Schlüssel des angegebenen Zertifikats und vergleicht den entschlüsselten Wert mit einem neu berechneten MD5-Hash der Daten. Wenn die Werte zusammenpassen, wird die Signatur als gültig bestätigt.

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 Shipping04geändert wurden. Die Signatur wird in DataSignaturegespeichert. 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 DataSignatureverwendet 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 [AdventureWorks2022].[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 Shipping04signiert wurden.

SELECT Data FROM [AdventureWorks2022].[SignedData04]   
WHERE VerifySignedByCert( Cert_Id( 'Shipping04' ), Data,   
    DataSignature ) = 1   
AND Description = N'data signed by certificate ''Shipping04''';  
GO  

Siehe auch

CERT_ID (Transact-SQL)
SIGNBYCERT (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
Verschlüsselungshierarchie