VERIFIERASIGNEDBYCERT (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Testar om digitalt signerad data har ändrats sedan den signerades.

Transact-SQL syntaxkonventioner

Syntax

VerifySignedByCert( Cert_ID , signed_data , signature )  

Arguments

Cert_ID
Är ID:t på ett certifikat i databasen. Cert_ID är int.

signed_data
Är en variabel av typen nvarchar, char, varchar eller nchar som innehåller data som har signerats med ett certifikat.

underskrift
Är signaturen som bifogades den signerade datan. signaturen är varbinär.

Returtyper

int

Returnerar 1 när signerad data är oförändrad; annars 0.

Anmärkningar

VerifySignedBycert dekrypterar signaturen av data med hjälp av den publika nyckeln till det angivna certifikatet och jämför det dekrypterade värdet med en nyberäknad MD5-hash av datan. Om värdena stämmer överens bekräftas signaturen vara giltig.

Permissions

Kräver behörighet VISA DEFINITION på certifikatet.

Examples

A. Verifieringen att signerade data inte har manipulerats

Följande exempel testar om informationen i Signed_Data har ändrats sedan den signerades med certifikatet kallat Shipping04. Signaturen lagras i DataSignature. Certifikatet, Shipping04, skickas till Cert_ID, vilket returnerar certifikatets ID i databasen. Om returnerar VerifySignedByCert 1 är signaturen korrekt. Om VerifySignedByCert returnerar 0 är data i Signed_Data inte den data som användes för att generera DataSignature. I det här fallet har antingen Signed_Data ändrats sedan den undertecknades eller Signed_Data undertecknats med ett annat certifikat.

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

B. Endast återlämnande av poster med giltig signatur

Denna fråga returnerar endast poster som inte har ändrats sedan de signerades med certifikat.Shipping04

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

Se även

CERT_ID (Transact-SQL)
SIGNBYCERT (Transact-SQL)
SKAPA CERTIFIKAT (Transact-SQL)
ALTER-CERTIFIKAT (Transact-SQL)
SLÄPP CERTIFIKAT (Transact-SQL)
SÄKERHETSKOPIERINGSCERTIFIKAT (Transact-SQL)
Krypteringshierarki