функция обратного вызова 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 , чтобы указать на ошибку.
Код возврата | Описание |
---|---|
|
Обязательный параметр указателя имеет значение NULL. |
|
Адаптер обработчика не поддерживает хэширование шаблонов. |
|
Адаптер обработчика не поддерживает хэш-алгоритм, заданный параметром 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) |