VerifySignedByCert (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

VerifySignedByCert( Cert_ID , signed_data , signature )

Argumentos

  • Cert_ID
    Es el Id. de un certificado de la base de datos. int
  • signed_data
    Es una variable de tipo nvarchar, char, varchar o nchar que contiene los datos que se han firmado con un certificado.
  • signature
    Es la firma adjunta a los datos firmados. varbinary.

Tipos de valor devueltos

int

Devuelve 1 si no se han cambiado los datos firmados. De lo contrario, devuelve 0.

Notas

VerifySignedByCert deriva una firma de datos firmados previamente mediante un certificado almacenado en la base de datos. VerifySignedByCert compara la firma recién derivada con la firma que se adjuntó a los datos firmados cuando se recuperaron los datos. Si la firma recién obtenida es la misma que la firma adjunta a los datos firmados, esto prueba que los datos no se cambiaron desde que se firmaron. El cálculo de la firma se basa en todos los caracteres del módulo que se está comprobando, incluidos los espacios iniciales, los espacios finales, los retornos de carro y los avances de línea.

Permisos

Requiere permiso VIEW DEFINITION en el certificado.

Ejemplos

A. Comprobar que los datos firmados no se han modificado

En el siguiente ejemplo se comprueba si la información en Signed_Data ha cambiado desde que se firmó con el certificado denominado Shipping04. La firma se almacena en DataSignature. El certificado, Shipping04, se pasa a Cert_ID, que devuelve el identificador del certificado en la base de datos. Si VerifySignedByCert devuelve 1, la firma es correcta. Si VerifySignedByCert devuelve 0, los datos de Signed_Data no son los datos que se usaron para generar DataSignature. En este caso, Signed_Data se ha cambiado desde que se firmó o Signed_Data se firmó con otro certificado.

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

B. Devolver sólo los registros que tienen una firma válida

Esta consulta sólo devuelve los registros que no han cambiado desde que se firmaron con el certificado Shipping04.

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

Vea también

Referencia

Cert_ID (Transact-SQL)
SignByCert (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)

Otros recursos

Jerarquía de cifrado

Ayuda e información

Obtener ayuda sobre SQL Server 2005