VerifySignedByAsymKey (Transact-SQL)

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

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

VerifySignedByAsymKey( Asym_Key_ID , clear_text , signature )

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.

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

Tipos de valores devueltos

int

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

Notas

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 [Adventureworks].[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 [Adventureworks].[SignedData04] 
WHERE VerifySignedByAsymKey( AsymKey_Id( 'WillisKey74' ), Data,
     DataSignature ) = 1
AND Description = N'data encrypted by asymmetric key ''WillisKey74'''
GO