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
다음은 미리 정의된 공급자 이름입니다.
값 | 의미 |
---|---|
|
기본 Microsoft CNG 공급자를 식별합니다. |
|
Microsoft에서 제공하는 TPM 키 스토리지 공급자를 식별합니다. |
[in] dwFlags
함수의 동작을 수정하는 플래그입니다. 이 값은 0이거나 다음 값 중 하나 이상의 조합일 수 있습니다.
값 | 의미 |
---|---|
|
공급자는 지정된 해시 알고리즘을 사용하여 Hash-Based HMAC(메시지 인증 코드) 알고리즘을 수행합니다. 이 플래그는 해시 알고리즘 공급자에서만 사용됩니다. |
|
공급자를 페이지가 없는 메모리 풀에 로드합니다. 이 플래그가 없으면 공급자가 페이징된 메모리 풀에 로드됩니다. 이 플래그를 지정하면 모든 종속 개체가 해제되기 전에 반환된 핸들을 닫아서는 안 됩니다.
참고 이 플래그는 커널 모드에서만 지원되며 공급자에 대한 후속 작업을 디스패치 수준에서 처리할 수 있습니다. 공급자가 디스패치 수준에서 호출되는 것을 지원하지 않는 경우 이 플래그를 사용하여 열면 오류가 반환됩니다.
|
|
재사용 가능한 해시 개체를 만듭니다. 개체는 BCryptFinishHash호출한 직후에 새 해시 작업에 사용할 수 있습니다. 자세한 내용은 CNG사용하여 해시 만들기를 참조하세요.
Windows Server 2008 R2, Windows 7, Windows Server 2008 및 Windows Vista: 이 플래그는 지원되지 않습니다. |
반환 값
함수의 성공 또는 실패를 나타내는 상태 코드를 반환합니다.
가능한 반환 코드는 다음을 포함하지만 제한되지는 않습니다.
반환 코드 | 묘사 |
---|---|
|
함수가 성공했습니다. |
|
지정된 알고리즘 ID에 대한 공급자를 찾을 수 없습니다. |
|
하나 이상의 매개 변수가 잘못되었습니다. |
|
메모리 할당 오류가 발생했습니다. |
발언
알고리즘 공급자를 찾고, 로드하고, 초기화하는 데 필요한 작업의 수와 유형으로 인해 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 |