다음을 통해 공유


SignedData.Sign 메서드

[ Sign 메서드는 요구 사항 섹션에 지정된 운영 체제에서 사용할 수 있습니다. 대신 System.Security.Cryptography.Pkcs 네임스페이스에서 SignedCms 클래스를 사용합니다.]

Sign 메서드는 서명할 콘텐츠에 디지털 서명을 만듭니다. 디지털 서명은 서명자의 프라이빗 키를 사용하여 암호화되는 서명할 콘텐츠의 해시 로 구성됩니다. 이 메서드는 SignedData.Content 속성이 초기화된 후에만 사용할 수 있습니다. 서명이 이미 있는 개체에서 Sign 메서드를 호출하면 이전 서명이 대체됩니다. 서명은 SHA1 서명 알고리즘을 사용하여 만들어집니다.

구문

SignedData.Sign( _
  [ ByVal Signer ], _
  [ ByVal bDetached ], _
  [ ByVal EncodingType ] _
)

매개 변수

서명자 [in, optional]

데이터 서명 자의 Signer 개체에 대한 참조입니다. Signer 개체는 서명하는 데 사용되는 인증서프라이빗 키에 액세스할 수 있어야 합니다. 이 매개 변수는 NULL일 수 있습니다. 자세한 내용은 설명을 참조하세요.

bDetached [in, optional]

True이면 서명할 데이터가 분리됩니다. 즉, 서명된 콘텐츠는 서명된 개체의 일부로 포함되지 않습니다. 분리된 콘텐츠의 서명을 확인하려면 애플리케이션에 원본 콘텐츠의 복사본이 있어야 합니다. 서명된 메시지의 받는 사람에게 서명된 데이터의 원본 복사본이 있는 경우 분리된 콘텐츠는 웹을 통해 전송할 서명된 개체의 크기를 줄이는 데 자주 사용됩니다. 기본값은 False입니다.

EncodingType [in, optional]

서명된 데이터를 인코딩하는 방법을 나타내는 CAPICOM_ENCODING_TYPE 열거형의 값입니다. 기본값은 CAPICOM_ENCODE_BASE64. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
CAPICOM_ENCODE_ANY
이 인코딩 형식은 입력 데이터에 알 수 없는 인코딩 형식이 있는 경우에만 사용됩니다. 이 값을 사용하여 출력의 인코딩 형식을 지정하는 경우 CAPICOM_ENCODE_BASE64 대신 사용됩니다. CAPICOM 2.0에 도입되었습니다.
CAPICOM_ENCODE_BASE64
데이터는 base64로 인코딩된 문자열로 저장됩니다.
CAPICOM_ENCODE_BINARY
데이터는 순수 이진 시퀀스로 저장됩니다.

 

반환 값

이 메서드는 인코딩된 서명된 데이터가 포함된 문자열을 반환합니다.

이 메서드가 실패하면 오류가 throw됩니다. Err 개체에는 오류에 대한 추가 정보가 포함됩니다.

설명

중요

이 메서드가 웹 스크립트에서 호출되면 스크립트는 프라이빗 키를 사용하여 디지털 서명을 만들어야 합니다. 신뢰할 수 없는 웹 사이트에서 개인 키를 사용하도록 허용하는 것은 보안 위험입니다. 이 메서드가 처음 호출되면 웹 사이트에서 프라이빗 키를 사용할 수 있는지 여부를 묻는 대화 상자가 나타납니다. 스크립트가 프라이빗 키를 사용하여 디지털 서명을 만들고 "이 대화 상자를 다시 표시하지 않음"을 선택하면 프라이빗 키를 사용하여 디지털 서명을 만드는 해당 도메인 내의 스크립트에 대해 대화 상자가 더 이상 표시되지 않습니다. 그러나 프라이빗 키를 사용하여 디지털 서명을 만들려는 해당 도메인 외부의 스크립트는 여전히 이 대화 상자를 표시합니다. 스크립트에서 프라이빗 키를 사용하도록 허용하지 않고 "이 대화 상자를 다시 표시 안 함"을 선택하면 해당 도메인 내의 스크립트가 자동으로 프라이빗 키를 사용하여 디지털 서명을 만드는 기능이 거부됩니다.

 

디지털 서명을 만들려면 프라이빗 키를 사용해야 하므로 이 메서드를 사용하려는 웹 기반 애플리케이션에는 보안상의 이유로 사용자가 프라이빗 키 사용을 승인할 수 있는 사용자 인터페이스 프롬프트가 필요합니다.

다음 결과는 Signer 매개 변수 값에 적용됩니다.

  • Signer 매개 변수가 NULL이 아닌 경우 이 메서드는 연결된 인증서가 가리키는 프라이빗 키를 사용하여 서명을 암호화합니다. 인증서가 가리키는 프라이빗 키를 사용할 수 없는 경우 메서드가 실패합니다.
  • Signer 매개 변수가 NULL이고 프라이빗 키에 대한 액세스 권한이 있는 CURRENT_USER MY 저장소에 정확히 하나의 인증서가 있는 경우 해당 인증서를 사용하여 서명을 만듭니다.
  • Signer 매개 변수가 NULL이면 Settings.EnablePromptForCertificateUI 속성 값이 true이고 사용 가능한 프라이빗 키가 있는 CURRENT_USER MY 저장소에 둘 이상의 인증서가 있는 경우 사용자가 사용할 인증서를 선택할 수 있는 대화 상자가 나타납니다.
  • Signer 매개 변수가 NULL이고 Settings.EnablePromptForCertificateUI 속성이 false이면 메서드가 실패합니다.
  • Signer 매개 변수가 NULL이고 사용 가능한 프라이빗 키가 있는 CURRENT_USER MY 저장소에 인증서가 없으면 메서드가 실패합니다.

요구 사항

요구 사항
재배포 가능 파일
Windows Server 2003 및 Windows XP의 CAPICOM 2.0 이상
DLL
Capicom.dll

추가 정보

암호화 개체

SignedData