VerifySignedByCert (Transact-SQL)
Dijital olarak imzalanmış veri imzalandıktan sonra değiştirilmiş olup olmadığını sınar.
Sözdizimi
VerifySignedByCert( Cert_ID , signed_data , signature )
Bağımsız değişkenler
Cert_ID
sertifika veritabanı kimliğidir.Cert_IDis int.signed_data
Türünde bir değişken olan nvarchar, char, varchar, veya nchar bir sertifikaile imzalanmış verileri içeren.signature
İmzalı veri ile bağlantılı imza değil.signatureis varbinary.
Dönüş Türleri
int
İmzalı veriler değişmeden 1 döndürür; Aksi takdirde 0.
Açıklamalar
VerifySignedBycertBelirtilen sertifikaortak anahtar kullanarak imza verisinin şifresini çözer ve şifresi çözülmüş verilerin yeni hesaplanan MD5 karma değerini karşılaştırır.Değerler eşleşirse, geçerli imza doğrulanır.
İzinler
sertifikaüzerinde görünüm TANIMI izni gerektirir.
Örnekler
A.İmzalı veri ile değiştirilmemiş olduğunu doğrulama
Aşağıdaki örnek sınamaları olup olmadığını bilgileri Signed_Data değiştirildi imzalanmış sertifika olarak adlandırılan bu yana Shipping04.İmzanın saklandığı DataSignature.sertifika Shipping04için gönderilir, Cert_ID, veritabanında sertifika Kimliğini döndürürVerifySignedByCert 1, İmza doğru döndürür.VerifySignedByCert 0, Verileri döndürür Signed_Data olmayan veri oluşturmak için kullanılan DataSignature.Bu durum, ya da Signed_Data imzalandıktan sonra değiştirilmiş veya Signed_Data farklı sertifikaile imzalanmış.
SELECT Data, VerifySignedByCert( Cert_Id( 'Shipping04' ),
Signed_Data, DataSignature ) AS IsSignatureValid
FROM [AdventureWorks2008R2].[SignedData04]
WHERE Description = N'data signed by certificate ''Shipping04''';
GO
B.Yalnızca geçerli imzaya sahip kayıtları döndürme
Bu sorgu sertifikakullanılarak imzalanmış beri değiştirilmedi yalnızca kayıtları döndürürShipping04.
SELECT Data FROM [AdventureWorks2008R2].[SignedData04]
WHERE VerifySignedByCert( Cert_Id( 'Shipping04' ), Data,
DataSignature ) = 1
AND Description = N'data signed by certificate ''Shipping04''';
GO