VerifySignedByCert (Transact-SQL)
Teste si des données numériques signées numériquement ont été modifiées depuis leur signature.
Conventions de la syntaxe de Transact-SQL
Syntaxe
VerifySignedByCert( Cert_ID , signed_data , signature )
Arguments
- Cert_ID
Identificateur d'un certificat dans la base de données. int
- signed_data
Variable de type nvarchar, char, varchar ou nchar qui contient des données signées à l'aide d'un certificat.
- signature
Signature attachée aux données signées. varbinary.
Notes
VerifySignedByCert dérive une signature à partir de données signées précédemment à l'aide d'un certificat stocké dans la base de données. VerifySignedByCert compare la signature ainsi obtenue à celle qui était attachée aux données signées lors de leur extraction. Si les deux signatures sont identiques, cela signifie que les données n'ont pas été modifiées depuis leur signature. Le calcul de la signature est basé sur tous les caractères du module en cours de vérification, y compris les espaces de début et de fin, les retours chariot et les sauts de ligne.
Autorisations
Nécessite l'autorisation VIEW DEFINITION sur le certificat.
Types de retour
int
Retourne 1 si les données signées n'ont pas changé et 0 dans les autres cas.
Exemples
A. 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
. Le cas échéant, soit les données de Signed_Data
ont été modifiées depuis leur signature, soit elles ont été signées avec un certificat différent.
SELECT Data, VerifySignedByCert( Cert_Id( 'Shipping04' ),
Signed_Data, DataSignature ) AS IsSignatureValid
FROM [AdventureWorks].[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 [AdventureWorks].[SignedData04]
WHERE VerifySignedByCert( Cert_Id( 'Shipping04' ), Data,
DataSignature ) = 1
AND Description = N'data signed by certificate ''Shipping04''';
GO
Voir aussi
Référence
Cert_ID (Transact-SQL)
SignByCert (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)