다음을 통해 공유


BCryptOpenAlgorithmProvider 함수(bcrypt.h)

BCryptOpenAlgorithmProvider 함수는 CNG 공급자를 로드하고 초기화합니다.

통사론

NTSTATUS BCryptOpenAlgorithmProvider(
  [out] BCRYPT_ALG_HANDLE *phAlgorithm,
  [in]  LPCWSTR           pszAlgId,
  [in]  LPCWSTR           pszImplementation,
  [in]  ULONG             dwFlags
);

매개 변수

[out] phAlgorithm

CNG 공급자 핸들을 수신하는 BCRYPT_ALG_HANDLE 변수에 대한 포인터입니다. 이 핸들 사용을 마쳤으면 BCryptCloseAlgorithmProvider 함수에 전달하여 해제합니다.

[in] pszAlgId

요청된 암호화 알고리즘을 식별하는 null로 끝나는 유니코드 문자열에 대한 포인터입니다. 이는 표준 CNG 알고리즘 식별자 또는 다른 등록된 알고리즘의 식별자 중 하나일 수 있습니다.

[in] pszImplementation

로드할 특정 공급자를 식별하는 null로 끝나는 유니코드 문자열에 대한 포인터입니다. 암호화 기본 공급자의 등록된 별칭입니다. 이 매개 변수는 선택 사항이며 필요하지 않은 경우 NULL 수 있습니다. 이 매개 변수가 NULL경우 지정된 알고리즘의 기본 공급자가 로드됩니다.

참고 pszImplementation 매개 변수 값이 NULL경우 CNG는 pszAlgId 매개 변수로 지정된 알고리즘에 대해 등록된 각 공급자를 우선 순위에 따라 열고 성공적으로 열린 첫 번째 공급자의 핸들을 반환합니다. 핸들의 수명 동안 모든 BCrypt*** 암호화 API는 성공적으로 열린 공급자를 사용합니다.
 
Windows Server 2008 및 Windows Vista: CNG가 Microsoft CNG 공급자로 대체하려고 시도합니다.

다음은 미리 정의된 공급자 이름입니다.

의미
MS_PRIMITIVE_PROVIDER
"Microsoft 기본 공급자"
기본 Microsoft CNG 공급자를 식별합니다.
MS_PLATFORM_CRYPTO_PROVIDER
L"Microsoft Platform Crypto Provider"
Microsoft에서 제공하는 TPM 키 스토리지 공급자를 식별합니다.

[in] dwFlags

함수의 동작을 수정하는 플래그입니다. 이 값은 0이거나 다음 값 중 하나 이상의 조합일 수 있습니다.

의미
BCRYPT_ALG_HANDLE_HMAC_FLAG
공급자는 지정된 해시 알고리즘을 사용하여 Hash-Based HMAC(메시지 인증 코드) 알고리즘을 수행합니다. 이 플래그는 해시 알고리즘 공급자에서만 사용됩니다.
BCRYPT_PROV_DISPATCH
공급자를 페이지가 없는 메모리 풀에 로드합니다. 이 플래그가 없으면 공급자가 페이징된 메모리 풀에 로드됩니다. 이 플래그를 지정하면 모든 종속 개체가 해제되기 전에 반환된 핸들을 닫아서는 안 됩니다.
참고 이 플래그는 커널 모드에서만 지원되며 공급자에 대한 후속 작업을 디스패치 수준에서 처리할 수 있습니다. 공급자가 디스패치 수준에서 호출되는 것을 지원하지 않는 경우 이 플래그를 사용하여 열면 오류가 반환됩니다.
 
Windows Server 2008 및 Windows Vista: 이 플래그는 Microsoft 알고리즘 공급자에서만 지원되며 암호화 알고리즘 및 대칭 키해시 알고리즘에 대해서만 지원됩니다.
BCRYPT_HASH_REUSABLE_FLAG
재사용 가능한 해시 개체를 만듭니다. 개체는 BCryptFinishHash호출한 직후에 새 해시 작업에 사용할 수 있습니다. 자세한 내용은 CNG사용하여 해시 만들기를 참조하세요.

Windows Server 2008 R2, Windows 7, Windows Server 2008 및 Windows Vista: 이 플래그는 지원되지 않습니다.

반환 값

함수의 성공 또는 실패를 나타내는 상태 코드를 반환합니다.

가능한 반환 코드는 다음을 포함하지만 제한되지는 않습니다.

반환 코드 묘사
STATUS_SUCCESS
함수가 성공했습니다.
STATUS_NOT_FOUND
지정된 알고리즘 ID에 대한 공급자를 찾을 수 없습니다.
STATUS_INVALID_PARAMETER
하나 이상의 매개 변수가 잘못되었습니다.
STATUS_NO_MEMORY
메모리 할당 오류가 발생했습니다.

발언

알고리즘 공급자를 찾고, 로드하고, 초기화하는 데 필요한 작업의 수와 유형으로 인해 BCryptOpenAlgorithmProvider 함수는 비교적 시간이 많이 걸리는 함수입니다. 따라서 알고리즘 공급자를 반복해서 열고 닫는 대신 두 번 이상 사용할 알고리즘 공급자 핸들을 캐시하는 것이 좋습니다.

BCryptOpenAlgorithmProvider 사용자 모드 또는 커널 모드에서 호출할 수 있습니다. 커널 모드 호출자는 PASSIVE_LEVELIRQL실행해야 합니다.

커널 모드에서 이 함수를 호출하려면 DDK(드라이버 개발 키트)의 일부인 Cng.lib를 사용합니다. Windows Server 2008 및 Windows Vista: 커널 모드에서 이 함수를 호출하려면 Ksecdd.lib를 사용합니다.

Windows 10부터 CNG는 더 이상 암호화 구성에 대한 모든 업데이트를 따르지 않습니다. 새 기본 공급자를 추가하거나 알고리즘 공급자의 기본 설정 순서를 변경하는 등의 특정 변경 내용을 다시 부팅해야 할 수 있습니다. 이 때문에 새로 구성된 공급자와 BCryptOpenAlgorithmProvider 호출하기 전에 다시 부팅해야 합니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 bcrypt.h
라이브러리 Bcrypt.lib
DLL Bcrypt.dll

참고 항목

BCryptCloseAlgorithmProvider