다음을 통해 공유


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 값 중 하나를 반환하여 오류를 나타내야 합니다.

반환 코드 설명
E_POINTER
필수 포인터 매개 변수는 NULL입니다.
E_NOTIMPL
엔진 어댑터는 템플릿 해시를 지원하지 않습니다.
E_INVALIDARG
엔진 어댑터는 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 포함)

추가 정보

EngineAdapterQueryHashAlgorithms

플러그 인 함수