VERIFYSIGNEDBYCERT (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Verifica se i dati con firma digitale sono stati modificati dopo la firma.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
VerifySignedByCert( Cert_ID , signed_data , signature )
Argomenti
Cert_ID
ID di un certificato nel database. Cert_ID è di tipo int.
signed_data
Variabile di tipo nvarchar, char, varchar o nchar contenente i dati firmati con un certificato.
signature
Firma allegata ai dati firmati. signature è di tipo varbinary.
Tipi restituiti
int
Restituisce 1 se i dati firmati risultano invariati; in caso contrario, restituisce 0.
Osservazioni:
VerifySignedBycert decrittografa la firma dei dati usando la chiave pubblica del certificato specificato e confronta il valore decrittografato con un nuovo hash MD5 dei dati calcolato. Se i valori corrispondono, viene confermata la validità della firma.
Autorizzazioni
È richiesta l'autorizzazione VIEW DEFINITION per il certificato.
Esempi
R. 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, i dati in Signed_Data
sono stati modificati dopo la firma oppure la firma di Signed_Data
è stata eseguita con un certificato diverso.
SELECT Data, VerifySignedByCert( Cert_Id( 'Shipping04' ),
Signed_Data, DataSignature ) AS IsSignatureValid
FROM [AdventureWorks2022].[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 essere stati firmati utilizzando il certificato Shipping04
.
SELECT Data FROM [AdventureWorks2022].[SignedData04]
WHERE VerifySignedByCert( Cert_Id( 'Shipping04' ), Data,
DataSignature ) = 1
AND Description = N'data signed by certificate ''Shipping04''';
GO
Vedi anche
CERT_ID (Transact-SQL)
SIGNBYCERT (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
Gerarchia di crittografia