VERIFYSIGNEDBYASYMKEY (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Comprueba si se han cambiado los datos firmados digitalmente desde que se firmaron.

Convenciones de sintaxis de Transact-SQL

Sintaxis

VerifySignedByAsymKey( Asym_Key_ID , clear_text , signature )  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

Asym_Key_ID
Es el identificador de un certificado de clave asimétrica en la base de datos.

clear_text
Son los datos de texto no cifrado que se van a comprobar.

firma
Es la firma adjunta a los datos firmados. signature es varbinary.

Tipos de valor devuelto

int

Devuelve 1 cuando las firmas coinciden; de lo contrario devuelve 0.

Comentarios

VerifySignedByAsymKey descifra la firma de los datos utilizando la clave pública de la clave asimétrica especificada y compara el valor descifrado con un hash MD5 calculado recientemente de los datos. Si los valores coinciden, se confirma que la firma es válida.

Permisos

Requiere el permiso VIEW DEFINITION en la clave asimétrica.

Ejemplos

A. Comprobar datos con una firma válida

En el siguiente ejemplo se devuelve 1 si los datos seleccionados no se han cambiado desde que se firmaron con la clave asimétrica WillisKey74. El ejemplo devuelve 0 si los datos no se han modificado.

SELECT Data,  
     VerifySignedByAsymKey( AsymKey_Id( 'WillisKey74' ), SignedData,  
     DataSignature ) as IsSignatureValid  
FROM [AdventureWorks2022].[SignedData04]   
WHERE Description = N'data encrypted by asymmetric key ''WillisKey74''';  
GO  
RETURN;  

B. Devolver un conjunto de resultados que contiene datos con una firma válida

En el siguiente ejemplo se devuelven las filas de SignedData04 que contienen datos que no se han cambiado desde que se firmaron con la clave asimétrica WillisKey74. El ejemplo llama a la función AsymKey_ID para obtener el identificador de la clave asimétrica de la base de datos.

SELECT Data   
FROM [AdventureWorks2022].[SignedData04]   
WHERE VerifySignedByAsymKey( AsymKey_Id( 'WillisKey74' ), Data,  
     DataSignature ) = 1  
AND Description = N'data encrypted by asymmetric key ''WillisKey74''';  
GO  

Vea también

ASYMKEY_ID (Transact-SQL)
SIGNBYASYMKEY (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
Jerarquía de cifrado