Delen via


VERIFIEER ONDERTEKEND door cert (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Toetst of digitaal ondertekende gegevens zijn gewijzigd sinds het ondertekenen.

Transact-SQL syntaxis-conventies

Syntaxis

VerifySignedByCert( Cert_ID , signed_data , signature )  

Arguments

Cert_ID
Is de ID van een certificaat in de database. Cert_ID is int.

signed_data
Is een variabele van het type nvarchar, char, varchar of nchar die gegevens bevat die met een certificaat zijn ondertekend.

handtekening
Is de handtekening die aan de ondertekende data is gekoppeld. Signature is varbinary.

Retourtypen

int

Geeft 1 terug wanneer ondertekende gegevens ongewijzigd blijven; anders 0.

Opmerkingen

VerifySignedBycert ontsleutelt de handtekening van de data met behulp van de publieke sleutel van het gespecificeerde certificaat en vergelijkt de ontsleutelde waarde met een nieuw berekende MD5-hash van de data. Als de waarden overeenkomen, wordt de handtekening als geldig bevestigd.

Permissions

Vereist toestemming VIEW DEFINITION op het certificaat.

Voorbeelden

Eén. Controleren dat ondertekende gegevens niet zijn gemanipuleerd

Het volgende voorbeeld test of de informatie in Signed_Data is gewijzigd sinds het is ondertekend met het certificaat genaamd Shipping04. De handtekening wordt opgeslagen in DataSignature. Het certificaat, Shipping04, wordt doorgegeven aan Cert_ID, wat de ID van het certificaat in de database teruggeeft. Als VerifySignedByCert 1 terugkomt, is de handtekening correct. Als VerifySignedByCert 0 teruggeeft, is de data in Signed_Data niet de data die is gebruikt om te genereren DataSignature. In dit geval is het ofwel Signed_Data aangepast sinds de ondertekening of Signed_Data is het ondertekend met een ander certificaat.

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

B. Alleen documenten terugsturen met een geldige handtekening

Deze query levert alleen records op die niet zijn gewijzigd sinds ze met certificaat Shipping04zijn ondertekend.

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

Zie ook

CERT_ID (Transact-SQL)
SIGNBYCERT (Transact-SQL)
CERTIFICAAT MAKEN (Transact-SQL)
ALTER CERTIFICAAT (Transact-SQL)
DROPCERTIFICAAT (Transact-SQL)
BACK-UPCERTIFICAAT (Transact-SQL)
Versleutelingshiërarchie