다음을 통해 공유


CryptSetProvParam 함수(wincrypt.h)

중요 이 API는 더 이상 사용되지 않습니다. 신규 및 기존 소프트웨어는 암호화 차세대 API 사용을 시작해야 합니다. Microsoft는 이후 릴리스에서 이 API를 제거할 수 있습니다.
 
CryptSetProvParam 함수는 CSP(암호화 서비스 공급자)의 작업을 사용자 지정합니다. 이 함수는 일반적으로 CSP와 연결된 키 컨테이너에서 보안 설명자를 설정하여 해당 키 컨테이너프라이빗 키 에 대한 액세스를 제어하는 데 사용됩니다.

구문

BOOL CryptSetProvParam(
  [in] HCRYPTPROV hProv,
  [in] DWORD      dwParam,
  [in] const BYTE *pbData,
  [in] DWORD      dwFlags
);

매개 변수

[in] hProv

값을 설정할 CSP의 핸들입니다. 이 핸들은 CryptAcquireContext 함수를 사용하여 이미 만들어졌어야 합니다.

[in] dwParam

설정할 매개 변수를 지정합니다. 다음 값 중 하나일 수 있습니다.

의미
PP_CLIENT_HWND
1(0x1)
공급자가 만드는 대화 상자의 부모로 사용하는 창 핸들을 설정합니다. pbData 에는 부모 창 핸들이 포함된 HWND 에 대한 포인터가 포함되어 있습니다.

CryptAcquireContext가 호출될 때 많은 CSP가 사용자 인터페이스를 표시하므로 CryptAcquireContext를 호출하기 전에 이 매개 변수를 설정해야 합니다. hProv 매개 변수에 대해 NULL을 전달하여 이후에 이 프로세스 내에서 획득한 모든 암호화 컨텍스트에 대해 이 창 핸들을 설정할 수 있습니다.

PP_DELETEKEY
24(0x18)
해시, 암호화 또는 확인 컨텍스트와 연결된 임시 키를 삭제합니다. 이렇게 하면 메모리를 해제하고 키와 연결된 레지스트리 설정을 지웁니다.
PP_KEYEXCHANGE_ALG
이 상수는 사용되지 않습니다.
PP_KEYEXCHANGE_PIN
32(0x20)
키 교환 PIN이 pbData에 포함되도록 지정합니다. PIN은 null로 끝나는 ASCII 문자열로 표시됩니다.
PP_KEYEXCHANGE_KEYSIZE
이 상수는 사용되지 않습니다.
PP_KEYSET_SEC_DESCR
8(0x8)
키 스토리지 컨테이너의 보안 설명자를 설정합니다. pbData 매개 변수는 키 스토리지 컨테이너에 대한 새 보안 설명자를 포함하는 SECURITY_DESCRIPTOR 구조체의 주소입니다.
PP_PIN_PROMPT_STRING
44(0x2C)
사용자의 PIN이 요청되면 사용자에게 표시할 대체 프롬프트 문자열을 설정합니다. pbData 매개 변수는 null로 끝나는 유니코드 문자열에 대한 포인터입니다.
PP_ROOT_CERTSTORE
46(0x2E)
스마트 카드 대한 루트 인증서 저장소를 설정합니다. 공급자는 이 저장소의 루트 인증서를 스마트 카드 복사합니다.

pbData 매개 변수는 새 인증서 저장소의 핸들을 포함하는 HCERTSTORE 변수입니다. 공급자는 이 호출 중에 저장소에서 인증서를 복사하므로 이 함수가 호출된 후 이 저장소를 닫아도 안전합니다.

Windows XP 및 Windows Server 2003: 이 매개 변수는 지원되지 않습니다.

PP_SIGNATURE_ALG
이 상수는 사용되지 않습니다.
PP_SIGNATURE_PIN
33(0x21)
서명 PIN을 지정합니다. pbData 매개 변수는 PIN을 나타내는 null로 끝나는 ASCII 문자열입니다.
PP_SIGNATURE_KEYSIZE
이 상수는 사용되지 않습니다.
PP_UI_PROMPT
21(0x15)
스마트 카드 공급자의 경우 사용자에게 표시되는 검색 문자열을 스마트 카드 삽입하라는 프롬프트로 설정합니다. 이 문자열은 SCardUIDlgSelectCard 함수에 전달되는 OPENCARDNAME_EX 구조체의 lpstrSearchDesc 멤버로 전달됩니다. 이 문자열은 호출 프로세스의 수명 동안 사용됩니다.

pbData 매개 변수는 null로 끝나는 유니코드 문자열에 대한 포인터입니다.

PP_USE_HARDWARE_RNG
38(0x26)
CSP가 하드웨어 RNG(난수 생성기)를 단독으로 사용해야 되도록 지정합니다. PP_USE_HARDWARE_RNG 설정되면 임의 값은 하드웨어 RNG에서만 사용되며 다른 원본은 사용되지 않습니다. 하드웨어 RNG가 CSP에서 지원되고 단독으로 사용될 수 있는 경우 함수는 성공하고 TRUE를 반환합니다. 그렇지 않으면 함수가 실패하고 FALSE를 반환합니다. pbData 매개 변수는 NULL이어야 하며 이 값을 사용할 때는 dwFlags가 0이어야 합니다.

현재 Microsoft CSP 중 어느 것도 하드웨어 RNG 사용을 지원하지 않습니다.

PP_USER_CERTSTORE
42(0x2A)
스마트 카드 대한 사용자 인증서 저장소를 지정합니다. 이 인증서 저장소에는 스마트 카드 저장된 모든 사용자 인증서가 포함되어 있습니다. 이 저장소의 인증서는 PKCS_7_ASN_ENCODING 또는 X509_ASN_ENCODING 인코딩을 사용하여 인코딩되며 CERT_KEY_PROV_INFO_PROP_ID 속성을 포함해야 합니다.

pbData 매개 변수는 메모리 내 인증서 저장소의 핸들을 수신하는 HCERTSTORE 변수입니다. 이 핸들이 더 이상 필요하지 않으면 호출자는 CertCloseStore 함수를 사용하여 핸들을 닫아야 합니다.

Windows Server 2003 및 Windows XP: 이 매개 변수는 지원되지 않습니다.

PP_SECURE_KEYEXCHANGE_PIN
47(0x2F)
암호화된 키 교환 PIN이 pbData에 포함되도록 지정합니다. pbData 매개 변수에는 DATA_BLOB 포함되어 있습니다.
PP_SECURE_SIGNATURE_PIN
48(0x30)
암호화된 서명 PIN이 pbData에 포함되도록 지정합니다. pbData 매개 변수에는 DATA_BLOB 포함되어 있습니다.
PP_SMARTCARD_READER
43(0x2B)
스마트 카드 판독기의 이름을 지정합니다. pbData 매개 변수는 스마트 카드 판독기의 이름을 포함하는 null로 종료된 ANSI 문자열을 포함하는 ANSI 문자 배열의 주소입니다.

Windows Server 2003 및 Windows XP: 이 매개 변수는 지원되지 않습니다.

PP_SMARTCARD_GUID
45(0x2D)
스마트 카드 식별자를 지정합니다. pbData 매개 변수는 스마트 카드 식별자를 포함하는 GUID 구조체의 주소입니다.

Windows Server 2003 및 Windows XP: 이 매개 변수는 지원되지 않습니다.

[in] pbData

공급자 매개 변수로 설정할 값을 포함하는 데이터 버퍼에 대한 포인터입니다. 이 데이터의 형식은 dwParam 값에 따라 달라집니다. dwParamPP_USE_HARDWARE_RNG 포함된 경우 이 매개 변수는 NULL이어야 합니다.

[in] dwFlags

dwParamPP_KEYSET_SEC_DESCR 포함된 경우 dwFlags에는 Platform SDK에 정의된 대로 SECURITY_INFORMATION 적용 가능한 비트 플래그가 포함됩니다. 키 컨테이너 보안은 SetFileSecurity 및 GetFileSecurity 를 사용하여 처리 됩니다.

비트 OR 연산을 사용하여 이러한 비트 플래그를 결합할 수 있습니다. 자세한 내용은 CryptGetProvParam을 참조하세요.

dwParamPP_USE_HARDWARE_RNG 또는 PP_DELETEKEY 경우 dwFlags를 0으로 설정해야 합니다.

반환 값

함수가 성공하면 반환 값은 0이 아닌 값(TRUE)입니다.

함수가 실패하면 반환 값은 0(FALSE)입니다. 확장된 오류 정보는 GetLastError를 호출합니다.

"NTE"가 앞에 있는 오류 코드는 사용 중인 특정 CSP에 의해 생성됩니다. 오류 코드에는 다음이 포함됩니다.

반환 코드 설명
ERROR_BUSY
CSP 컨텍스트는 현재 다른 프로세스에서 사용되고 있습니다.
ERROR_INVALID_HANDLE
매개 변수 중 하나는 유효하지 않은 핸들을 지정합니다.
ERROR_INVALID_PARAMETER
매개 변수 중 하나에는 유효하지 않은 값이 포함되어 있습니다. 이는 가장 자주 유효하지 않은 포인터입니다.
NTE_BAD_FLAGS
dwFlags 매개 변수가 0이 아니거나 pbData 버퍼에 유효하지 않은 값이 포함되어 있습니다.
NTE_BAD_TYPE
dwParam 매개 변수는 알 수 없는 매개 변수를 지정합니다.
NTE_BAD_UID
hKey 키를 만들 때 지정한 CSP 컨텍스트를 찾을 수 없습니다.
NTE_FAIL
함수가 예기치 않은 방식으로 실패했습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 wincrypt.h
라이브러리 Advapi32.lib
DLL Advapi32.dll

추가 정보

CryptAcquireContext

CryptGetProvParam

CryptSetKeyParam

서비스 공급자 함수