次の方法で共有


VerifySignedByAsmKey (Transact-SQL)

デジタル署名付きデータが、署名された後に変更されているかどうかをテストします。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

VerifySignedByAsymKey( Asym_Key_ID , clear_text , signature )

引数

  • Asym_Key_ID
    データベース内の非対称キー証明書の ID を指定します。
  • clear_text
    検証するクリア テキスト データを指定します。
  • signature
    署名付きデータにアタッチされた署名を指定します。varbinary

戻り値の型

int

署名が一致する場合は 1 が返されます。それ以外の場合は 0 が返されます。

解説

VerifySignedByAsmKey では、データベース内に格納されている非対称キーを使用して、署名済みのデータから署名が取得されます。新しく取得された署名は、VerifySignedByAsmKey によって、データの受信時に署名付きデータに関連付けられていた署名と比較されます。新しく取得された署名が、署名付きデータにアタッチされていた署名と同じ場合、そのデータは署名後に変更されなかったことが分かります。

権限

非対称キーに対する VIEW DEFINITION 権限が必要です。

A. データの署名が有効かどうかをテストする

次の例では、選択したデータが非対称キー WillisKey74 で署名された後に変更されていない場合は 1 が返されます。データが変更されている場合は 0 が返されます。

SELECT Data,
     VerifySignedByAsymKey( AsymKey_Id( 'WillisKey74' ), SignedData,
     DataSignature ) as IsSignatureValid
FROM [AdventureWorks].[SignedData04] 
WHERE Description = N'data encrypted by asymmetric key ''WillisKey74'''
GO
RETURN

B. 有効な署名が添付されたデータを含む結果セットを返す

次の例では、SignedData04 内の行で、非対称キー WillisKey74 で署名された後に変更されていないデータを含む行が返されます。この例では、データベースから非対称キーの ID を取得するため関数 AsymKey_ID を呼び出します。

SELECT Data 
FROM [AdventureWorks].[SignedData04] 
WHERE VerifySignedByAsymKey( AsymKey_Id( 'WillisKey74' ), Data,
     DataSignature ) = 1
AND Description = N'data encrypted by asymmetric key ''WillisKey74'''
GO

参照

関連項目

AsymKey_ID (Transact-SQL)
SignByAsymKey (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)

その他の技術情報

暗号化階層

ヘルプおよび情報

SQL Server 2005 の参考資料の入手