VerifySignedByCert (Transact-SQL)
Comprueba si se han cambiado los datos firmados digitalmente desde que se firmaron.
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
