CRYPT_KEY_PROV_INFO 구조체(wincrypt.h)

CRYPT_KEY_PROV_INFO 구조에는 CSP(암호화 서비스 공급자) 내의 키 컨테이너에 대한 정보가 포함되어 있습니다.

구문

typedef struct _CRYPT_KEY_PROV_INFO {
  LPWSTR                pwszContainerName;
  LPWSTR                pwszProvName;
  DWORD                 dwProvType;
  DWORD                 dwFlags;
  DWORD                 cProvParam;
  PCRYPT_KEY_PROV_PARAM rgProvParam;
  DWORD                 dwKeySpec;
} CRYPT_KEY_PROV_INFO, *PCRYPT_KEY_PROV_INFO;

멤버

pwszContainerName

키 컨테이너의 이름을 포함하는 null로 끝나는 유니코드 문자열에 대한 포인터입니다.

dwProvType 멤버가 0이면 이 문자열에는 CNG 키 스토리지 공급자 내의 키 이름이 포함됩니다. 이 문자열은 pwszKeyName 매개 변수로 NCryptOpenKey 함수에 전달됩니다.

pwszProvName

CSP의 이름을 포함하는 null로 끝나는 유니코드 문자열에 대한 포인터입니다.

dwProvType 멤버가 0이면 이 문자열에는 CNG 키 스토리지 공급자의 이름이 포함됩니다. 이 문자열은 pwszProviderName 매개 변수로 NCryptOpenStorageProvider 함수에 전달됩니다.

dwProvType

CSP 형식을 지정합니다. 0 또는 암호화 공급자 유형 중 하나일 수 있습니다.

이 멤버가 0이면 키 컨테이너는 CNG 키 스토리지 공급자 중 하나입니다.

dwFlags

공급자에 대한 추가 정보를 나타내는 플래그 집합입니다. 이 값은 0 또는 다음 값 중 하나일 수 있습니다.

의미
CERT_SET_KEY_PROV_HANDLE_PROP_ID/CERT_SET_KEY_CONTEXT_PROP_ID
암호화 함수에 대한 후속 호출을 위해 키 공급자에 대한 핸들을 열어 둘 수 있습니다.
CRYPT_MACHINE_KEYSET/NCRYPT_MACHINE_KEY_FLAG
키 컨테이너에는 컴퓨터 키가 포함됩니다. 이 플래그가 없으면 키 컨테이너에 사용자 키가 포함됩니다.
CRYPT_SILENT/NCRYPT_SILENT_FLAG
키 컨테이너는 사용자 인터페이스 프롬프트 없이 키를 자동으로 열려고 시도합니다.
 

암호화 함수 CryptDecryptMessage, CryptSignMessage, CryptDecryptAndVerifyMessageSignatureCryptSignAndEncryptMessage는 인증서의 CRYPT_KEY_PROV_INFO 사용하여 내부적으로 CryptAcquireContext 작업을 수행합니다. CERT_SET_KEY_CONTEXT_PROP_ID 또는 CERT_SET_KEY_PROV_HANDLE_PROP_ID 플래그가 설정되면 이러한 암호화 함수는 CERT_KEY_CONTEXT_PROP_ID사용하여 CertSetCertificateContextProperty를 호출할 수 있습니다. 이 호출을 사용하면 동일한 인증서를 사용하는 것으로 언급된 암호화 함수에 대한 후속 호출을 위해 키 공급자에 대한 핸들을 열어 둘 수 있으므로 CryptAcquireContext에 대한 추가 호출을 수행할 필요가 없어 효율성이 향상됩니다. 또한 일부 공급자는 CryptAcquireContext 호출을 위해 암호를 입력해야 할 수 있으므로 애플리케이션에서 CryptAcquireContext 호출 수를 최소화하는 것이 좋습니다. 열린 상태로 유지된 주요 공급자에 대한 핸들은 저장소가 닫히면 자동으로 해제됩니다.

예를 들어 5개의 암호화된 메시지가 수신되었으며 모두 동일한 인증서의 공개 키로 암호화된 이메일 애플리케이션을 고려해 보세요. 첫 번째 메시지가 처리된 후 키 공급자에 대한 핸들을 열어 두면 나머지 4개 메시지에 대해 CryptAcquireContext 에 대한 호출이 필요하지 않습니다.

cProvParam

rgProvParam 배열의 요소 수입니다.

dwProvType 멤버가 0이면 이 멤버는 사용되지 않으며 0이어야 합니다.

rgProvParam

키 컨테이너에 대한 매개 변수를 포함하는 CRYPT_KEY_PROV_PARAM 구조체의 배열입니다. cProvParam 멤버에는 이 배열의 요소 수가 포함됩니다.

dwProvType 멤버가 0이면 이 멤버는 사용되지 않으며 NULL이어야 합니다.

dwKeySpec

검색할 프라이빗 키의 사양입니다.

다음 값은 기본 공급자에 대해 정의됩니다.

dwProvType 멤버가 0이면 이 값이 nCryptOpenKey 함수에 dwLegacyKeySpec 매개 변수로 전달됩니다.

의미
AT_KEYEXCHANGE
세션 키를 암호화/암호 해독하는 데 사용되는 키입니다.
AT_SIGNATURE
디지털 서명을 만들고 확인하는 데 사용되는 키입니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
머리글 wincrypt.h

추가 정보

CRYPT_KEY_PROV_PARAM

CertGetCertificateContextProperty

CertSetCertificateContextProperty