Поделиться через


функция обратного вызова 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

Указатель на строку ANSI с завершением NULL, содержащую идентификатор объекта хэш-алгоритма для выбора. Вызовите функцию EngineAdapterQueryHashAlgorithms , чтобы получить массив поддерживаемых идентификаторов объектов алгоритма (OID).

Возвращаемое значение

Если функция выполняется успешно, она возвращает S_OK. Если функция завершается сбоем, она должна вернуть одно из следующих значений HRESULT , чтобы указать на ошибку.

Код возврата Описание
E_POINTER
Обязательный параметр указателя имеет значение NULL.
E_NOTIMPL
Адаптер обработчика не поддерживает хэширование шаблонов.
E_INVALIDARG
Адаптер обработчика не поддерживает хэш-алгоритм, заданный параметром AlgorithmBuffer .

Комментарии

Windows Biometric Framework вызывает эту функцию для настройки биометрической единицы каждый раз при добавлении единицы в пул датчиков.

Так как хэш-алгоритм выбирается для каждого конвейера, адаптер подсистемы должен хранить выбранный алгоритм в контексте частного конвейера.

Адаптер подсистемы должен отслеживать последний выбранный алгоритм и использовать этот алгоритм при обработке вызовов следующих функций:

Алгоритм, выбранный этой функцией, должен оставаться выбранным до следующего вызова EngineAdapterSetHashAlgorithm или до вызова метода EngineAdapterDetach . В частности, вызовы функции EngineAdapterClearContext не должны влиять на выбранный алгоритм.

В Windows Biometric Framework используется только хэш-алгоритм SHA1. Строковое значение 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
Header winbio_adapter.h (включая Winbio_adapter.h)

См. также раздел

EngineAdapterQueryHashAlgorithms

Функции подключаемых модулей