Partilhar via


VERIFYSIGNEDBYCERT (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Testa se os dados assinados digitalmente foram alterados desde que foram assinados.

Transact-SQL convenções de sintaxe

Sintaxe

VerifySignedByCert( Cert_ID , signed_data , signature )  

Arguments

Cert_ID
É o ID de um certificado na base de dados. Cert_ID é inteligência.

signed_data
É uma variável do tipo nvarchar, char, varchar ou nchar que contém dados assinados com um certificado.

assinatura
É a assinatura que foi associada aos dados assinados. A assinatura é Varbinary.

Tipos de devolução

int

Retorna 1 quando os dados assinados permanecem inalterados; caso contrário, 0.

Observações

O VerifySignedBycert desencripta a assinatura dos dados usando a chave pública do certificado especificado e compara o valor desencriptado com um hash MD5 recém-calculado dos dados. Se os valores coincidirem, a assinatura é confirmada como válida.

Permissions

Requer permissão VER DEFINIÇÃO no certificado.

Examples

A. Verificar se os dados assinados não foram adulterados

O exemplo seguinte testa se a informação em Signed_Data foi alterada desde que foi assinada com o certificado chamado Shipping04. A assinatura é armazenada em DataSignature. O certificado, Shipping04, é passado para Cert_ID, que devolve o ID do certificado na base de dados. Se VerifySignedByCert devolver 1, a assinatura está correta. Se VerifySignedByCert devolver 0, os dados em Signed_Data não são os dados usados para gerar DataSignature. Neste caso, ou Signed_Data foi alterado desde que foi assinado ou Signed_Data foi assinado com um certificado diferente.

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

B. Devolver apenas registos que tenham uma assinatura válida

Esta consulta devolve apenas registos que não foram alterados desde que foram assinados usando certificado Shipping04.

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

Ver também

CERT_ID (Transact-SQL)
SIGNBYCERT (Transact-SQL)
CRIAR CERTIFICADO (Transact-SQL)
CERTIFICADO ALTER (Transact-SQL)
CERTIFICADO DE DESISTÊNCIA (Transact-SQL)
CERTIFICADO DE CÓPIA DE SEGURANÇA (Transact-SQL)
Hierarquia de criptografia