VerifySignedByCert (Transact-SQL)
Verifica se i dati con firma digitale sono stati modificati dopo la firma.
Convenzioni 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)