PIBIO_ENGINE_SET_HASH_ALGORITHM_FN 콜백 함수(winbio_adapter.h)
후속 작업에서 사용할 해시 알고리즘을 선택하기 위해 Windows 생체 인식 프레임워크에서 호출됩니다.
구문
PIBIO_ENGINE_SET_HASH_ALGORITHM_FN PibioEngineSetHashAlgorithmFn;
HRESULT PibioEngineSetHashAlgorithmFn(
[in, out] PWINBIO_PIPELINE Pipeline,
[in] SIZE_T AlgorithmBufferSize,
[in] PUCHAR AlgorithmBuffer
)
{...}
매개 변수
[in, out] Pipeline
작업을 수행하는 생체 인식 단위와 연결된 WINBIO_PIPELINE 구조체에 대한 포인터입니다.
[in] AlgorithmBufferSize
AlgorithmBuffer 매개 변수로 지정된 버퍼의 크기(바이트)입니다.
[in] AlgorithmBuffer
선택할 해시 알고리즘의 개체 식별자를 포함하는 NULL로 끝나는 ANSI 문자열에 대한 포인터입니다. EngineAdapterQueryHashAlgorithms 함수를 호출하여 지원되는 OID(알고리즘 개체 식별자)의 배열을 검색합니다.
반환 값
함수가 성공하면 S_OK를 반환합니다. 함수가 실패하면 다음 HRESULT 값 중 하나를 반환하여 오류를 나타내야 합니다.
반환 코드 | 설명 |
---|---|
|
필수 포인터 매개 변수는 NULL입니다. |
|
엔진 어댑터는 템플릿 해시를 지원하지 않습니다. |
|
엔진 어댑터는 AlgorithmBuffer 매개 변수로 지정된 해시 알고리즘을 지원하지 않습니다. |
설명
Windows 생체 인식 프레임워크는 센서 풀에 단위를 추가할 때마다 생체 인식 단위를 구성하기 위해 이 함수를 호출합니다.
해시 알고리즘은 파이프라인별로 선택되므로 엔진 어댑터는 선택한 알고리즘을 프라이빗 파이프라인 컨텍스트에 저장해야 합니다.
엔진 어댑터는 선택한 최신 알고리즘을 추적하고 다음 함수에 대한 호출을 처리할 때 이 알고리즘을 사용해야 합니다.
이 함수에서 선택한 알고리즘은 다음에 EngineAdapterSetHashAlgorithm 이 호출될 때까지 또는 EngineAdapterDetach 메서드가 호출될 때까지 선택된 상태로 유지되어야 합니다. 특히 EngineAdapterClearContext 함수에 대한 호출은 선택한 알고리즘에 영향을 미치지 않아야 합니다.SHA1 해시 알고리즘만 Windows 생체 인식 프레임워크에서 사용됩니다. 이 알고리즘의 OID 문자열 값은 "1.3.14.3.2.26"입니다. 자세한 내용은 EngineAdapterQueryHashAlgorithms를 참조하세요.
예제
다음 의사 코드는 이 함수의 가능한 구현 중 하나를 보여 줍니다. 예제는 컴파일되지 않습니다. 목적에 맞게 조정해야 합니다.
//////////////////////////////////////////////////////////////////////////////////////////
//
// EngineAdapterSetHashAlgorithm
//
// Purpose:
// Selects a hash algorithm for use in subsequent operations.
//
// Parameters:
// Pipeline - Pointer to a WINBIO_PIPELINE structure associated
// with the biometric unit performing the operation.
// AlgorithmBufferSize - Size, in bytes, of the buffer specified by the
// AlgorithmBuffer parameter.
// AlgorithmBuffer - Pointer to a NULL-terminated ANSI string that
// contains the object identifier of the hash algorithm
// to select.
//
static HRESULT
WINAPI
EngineAdapterSetHashAlgorithm(
__inout PWINBIO_PIPELINE Pipeline,
__in SIZE_T AlgorithmBufferSize,
__in PUCHAR AlgorithmBuffer
)
{
////////////////////////////////////////////////////////////////////////////
// Return E_NOTIMPL here if your adapter does not support template hashing.
////////////////////////////////////////////////////////////////////////////
HRESULT hr = S_OK;
SIZE_T algorithmSize = (strlen(szOID_OIWSEC_sha1) + 1) * sizeof(CHAR);
// Verify that pointer arguments are not NULL.
if (!ARGUMENT_PRESENT(Pipeline) ||
!ARGUMENT_PRESENT(AlgorithmBuffer))
{
hr = E_POINTER;
goto cleanup;
}
// Only the SHA1 hashing algorithm is supported.
// Therefore, make certain that SHA1 is included in the algorithm
// table.
// The SHA1 object identifier, szOID_OIWSEC_sha1, is contained in the
// Wincrypt.h header file.
if (AlgorithmBufferSize != algorithmSize ||
memcmp(AlgorithmBuffer, szOID_OIWSEC_sha1, algorithmSize) != 0)
{
hr = E_INVALIDARG;
goto cleanup;
}
// Make any necessary changes to the adapter state to specify that
// SHA1 hashing is enabled. If your adapter does not support template
// hashing, return E_NOTIMPL.
cleanup:
return hr;
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 7 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 R2 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winbio_adapter.h(Winbio_adapter.h 포함) |