VerifySignedByCert (Transact-SQL)

Verifica se i dati con firma digitale sono stati modificati dopo la firma.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

VerifySignedByCert( Cert_ID , signed_data , signature )

Argomenti

  • Cert_ID
    ID di un certificato nel database. int
  • signed_data
    Variabile di tipo nvarchar, char, varchar o nchar contenente i dati firmati con un certificato.
  • signature
    Firma allegata ai dati firmati. varbinary.

Tipi restituiti

int

Restituisce 1 se i dati firmati risultano invariati. In caso contrario, restituisce 0.

Osservazioni

VerifySignedByCert deriva una firma da dati precedentemente firmati tramite un certificato archiviato nel database. VerifySignedByCert confronta inoltre la nuova firma derivata con la firma allegata ai dati firmati al momento del recupero dei dati. Se la nuova firma derivata corrisponde alla firma allegata ai dati firmati, significa che i dati non sono stati modificati dopo la loro firma. Il calcolo della firma è basato su tutti i caratteri del modulo da verificare, inclusi gli spazi iniziali e finali, i ritorni a capo e gli avanzamenti di riga.

Autorizzazioni

È richiesta l'autorizzazione VIEW DEFINITION per il certificato.

Esempi

A. Verifica che i dati firmati non siano stati alterati

Nell'esempio seguente viene verificato se le informazioni incluse in Signed_Data sono state modificate dopo la firma tramite il certificato denominato Shipping04. La firma viene archiviata in DataSignature. Il certificato Shipping04 viene passato a Cert_ID, che restituisce l'ID del certificato nel database. Se VerifySignedByCert restituisce 1, la firma è corretta. Se invece VerifySignedByCert restituisce 0, i dati in Signed_Data non corrispondono ai dati utilizzati per generare DataSignature. In questo caso, Signed_Data è stato modificato dopo la firma oppure Signed_Data è stato firmato con un certificato diverso.

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

B. Restituzione solo dei record che dispongono di una firma valida

La query restituisce solo i record che non hanno subito modifiche dopo che sono stati firmati utilizzando il certificato Shipping04.

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

Vedere anche

Riferimento

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

Altre risorse

Gerarchia di crittografia

Guida in linea e informazioni

Assistenza su SQL Server 2005