Partager via


VERIFYSIGNEDBYCERT (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Teste si les données signées numériquement ont été modifiées depuis leur dernière signature.

Conventions de la syntaxe Transact-SQL

Syntaxe

VerifySignedByCert( Cert_ID , signed_data , signature )  

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

Cert_ID
Identificateur d'un certificat dans la base de données. Cert_ID est de type int.

signed_data
Variable de type nvarchar, char, varchar ou nchar qui contient des données qui ont été signées avec un certificat.

signature
Signature attachée aux données signées. signature est de type varbinary.

Types de retour

int

Retourne 1 lorsque les données signées n'ont pas changé, sinon 0.

Remarques

VerifySignedBycert déchiffre la signature des données à l’aide de la clé publique du certificat spécifié, puis compare la valeur déchiffrée à un hachage MD5 des données récemment calculé. Si les valeurs correspondent, la validité de la signature est confirmée.

Autorisations

Nécessite l'autorisation VIEW DEFINITION sur le certificat.

Exemples

R. Vérification de la non-falsification des données signées

L'exemple suivant vérifie si les informations contenues dans Signed_Data ont été modifiées depuis leur signature à l'aide du certificat Shipping04. La signature est stockée dans DataSignature. Le certificat, Shipping04, est transmis à Cert_ID qui retourne l'ID du certificat dans la base de données. Si VerifySignedByCert retourne la valeur 1, la signature est correcte. Si VerifySignedByCert retourne la valeur 0, les données de Signed_Data sont différentes de celles utilisées pour générer DataSignature. Dans ce cas, soit les données de Signed_Data ont été modifiées depuis leur signature, soit les données de Signed_Data ont été signées avec un certificat différent.

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

B. Obtention des seuls enregistrements dont la signature est valide

Cette requête retourne uniquement les enregistrements qui n'ont pas été modifiés depuis leur signature à l'aide du certificat Shipping04.

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

Voir aussi

CERT_ID (Transact-SQL)
SIGNBYCERT (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
Hiérarchie de chiffrement