VerifySignedByCert(Transact-SQL)

디지털 서명된 데이터가 서명된 후 변경되었는지 여부를 테스트합니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

VerifySignedByCert( Cert_ID , signed_data , signature )

인수

  • Cert_ID
    데이터베이스에 있는 인증서의 ID입니다. int
  • signed_data
    인증서로 서명된 데이터를 포함하는 nvarchar, char, varchar 또는 nchar 형식의 변수입니다.
  • signature
    서명된 데이터에 첨부된 서명입니다. varbinary.

주의

VerifySignedByCert 는 데이터베이스에 저장된 인증서를 사용하여 이전에 서명된 데이터에서 서명을 파생시킵니다. VerifySignedByCert 는 새로 파생된 서명을 검색 시 서명된 데이터에 연결된 서명과 비교합니다. 새로 파생된 서명이 서명된 데이터에 첨부된 서명과 동일하면 데이터가 서명된 후 변경되지 않은 것입니다. 서명 계산은 선행 공백, 후행 공백, 캐리지 리턴 및 줄 바꿈을 포함하여 확인 중인 모듈의 모든 문자를 기준으로 이루어집니다.

사용 권한

인증서에 대한 VIEW DEFINITION 권한이 필요합니다.

반환 형식

int

서명된 데이터가 변경되지 않았으면 1을, 변경되었으면 0을 반환합니다.

1. 서명된 데이터가 변경되지 않았는지 확인

다음 예에서는 Signed_Data의 정보가 Shipping04라는 인증서로 서명된 후 변경되었는지 테스트합니다. 서명은 DataSignature에 저장됩니다. 인증서 Shipping04는 데이터베이스 내의 인증서 ID를 반환하는 Cert_ID로 전달됩니다. VerifySignedByCert가 1을 반환하면 서명이 올바른 것입니다. VerifySignedByCert가 0을 반환하면 Signed_Data의 데이터는 DataSignature를 생성하는 데 사용된 데이터와 다릅니다. 이 경우 Signed_Data가 서명된 후 변경되었거나 Signed_Data가 다른 인증서로 서명된 것입니다.

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

2. 유효한 서명을 가진 레코드만 반환

이 쿼리에서는 인증서 Shipping04를 사용하여 서명된 이후 변경되지 않은 레코드만 반환합니다.

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

참고 항목

참조

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

관련 자료

암호화 계층

도움말 및 정보

SQL Server 2005 지원 받기