다음을 통해 공유


CryptXmlSign 함수(cryptxml.h)

CryptXmlSign 함수는 SignedInfo 요소의 암호화 서명을 만듭니다.

구문

HRESULT CryptXmlSign(
  [in]           HCRYPTXML                       hSignature,
  [in, optional] HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hKey,
                 DWORD                           dwKeySpec,
                 DWORD                           dwFlags,
                 CRYPT_XML_KEYINFO_SPEC          dwKeyInfoSpec,
  [in, optional] const void                      *pvKeyInfoSpec,
  [in]           const CRYPT_XML_ALGORITHM       *pSignatureMethod,
  [in]           const CRYPT_XML_ALGORITHM       *pCanonicalization
);

매개 변수

[in] hSignature

CRYPT_XML_SIGNATURE 구조체에 대한 핸들입니다.

[in, optional] hKey

SignedInfo 요소에 서명하는 데 사용되는 프라이빗 키의 핸들입니다. 이 매개 변수는 HMAC 기반 서명 알고리즘의 경우 NULL 이어야 합니다.

dwKeySpec

키 형식을 지정하는 DWORD 값입니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
AT_KEYEXCHANGE
1
키 쌍은 키 교환 쌍입니다.
AT_SIGNATURE
2
키 쌍은 서명 쌍입니다.
CERT_NCRYPT_KEY_SPEC
0xFFFFFFFF
키는 암호화 API: 차세대(CNG) 키입니다.

dwFlags

데이터가 서명되는 방식을 제어하는 DWORD 값입니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
CRYPT_XML_SIGN_ADD_KEYVALUE
0x00000001
hKey 매개 변수에 지정된 핸들에서 KeyValue 요소를 채웁니다.
중요dwKeyInfoSpec 매개 변수를 CRYPT_XML_KEYINFO_SPEC_ENCODED 설정하면 CRYPT_XML_SIGN_ADD_KEYVALUE 플래그를 사용할 수 없습니다.
 
CRYPT_XML_FLAG_DISABLE_EXTENSIONS
0x10000000
서명 및 다이제스트에 대한 기본 구현만 사용됩니다. 이 플래그를 설정하면 등록된 다른 확장이 로드되지 않습니다.

dwKeyInfoSpec

pvKeyInfoSpec 매개 변수가 가리키는 데이터 구조의 형식입니다. 다음은 몇 가지 가능한 조합입니다.

dwKeyInfec pvKeyInfoSpec
CRYPT_XML_KEYINFO_SPEC_NONE NULL로 설정됩니다.
CRYPT_XML_KEYINFO_SPEC_ENCODED CRYPT_XML_BLOB 구조를 가리킵니다.
CRYPT_XML_KEYINFO_SPEC_PARAM CRYPT_XML_KEYINFO_PARAM 구조를 가리킵니다.

[in, optional] pvKeyInfoSpec

구조체에 대한 포인터이며, 형식은 dwKeyInfoSpec 매개 변수의 값에 의해 결정됩니다.

[in] pSignatureMethod

서명 메서드를 지정하는 CRYPT_XML_ALGORITHM 구조체에 대한 포인터입니다.

[in] pCanonicalization

정식화 메서드를 지정하는 CRYPT_XML_ALGORITHM 구조체에 대한 포인터입니다.

반환 값

함수가 성공하면 함수는 0을 반환합니다.

함수가 실패하면 오류를 나타내는 HRESULT 값을 반환합니다.

설명

인증서를 찾을 수 없는 경우 CryptXmlSign은 인증서 선택용 UI를 만듭니다. 세션 0에서 실행되는 프로세스에서 이 창이 생성되면 애플리케이션이 예기치 않게 종료될 수 있습니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 7 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 R2 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 cryptxml.h
라이브러리 Cryptxml.lib
DLL Cryptxml.dll