функция обратного вызова PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN (winbio_adapter.h)
Вызывается Платформой Биометрических данных Windows для создания шаблона из текущего набора функций и поиска соответствующего шаблона в базе данных. Если совпадение найдено, адаптер подсистемы должен заполнить поля Удостоверение, Субфакторинг, Авторизация и AuthorizationSize .
Синтаксис
PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN PibioEngineIdentifyFeatureSetSecureFn;
HRESULT PibioEngineIdentifyFeatureSetSecureFn(
PWINBIO_PIPELINE Pipeline,
const UCHAR *Nonce,
SIZE_T NonceSize,
const UCHAR *KeyIdentifier,
SIZE_T KeyIdentifierSize,
PWINBIO_IDENTITY Identity,
PWINBIO_BIOMETRIC_SUBTYPE SubFactor,
PWINBIO_REJECT_DETAIL RejectDetail,
PUCHAR *Authorization,
PSIZE_T AuthorizationSize
)
{...}
Параметры
Pipeline
Указатель на WINBIO_PIPELINE структуру, связанную с биометрической единицей, выполняющей операцию.
Nonce
Указатель на буфер, содержащий nonce.
NonceSize
Размер буфера, заданного параметром Nonce , в байтах.
KeyIdentifier
Указатель на буфер, содержащий идентификатор ключа из предыдущего вызова EngineAdapterCreateKey
KeyIdentifierSize
Размер (в байтах) буфера, заданного параметром KeyIdentifier .
Identity
Указатель на структуру WINBIO_IDENTITY , содержащую идентификатор безопасности шаблона, восстановленного из базы данных. Это значение возвращается только в том случае, если найдено совпадение.
SubFactor
RejectDetail
Указатель на переменную, которая получает дополнительные сведения, если сбой записи не позволяет подсистеме выполнить операцию сопоставления. Если последняя запись выполнена успешно, задайте для этого параметра нулевое значение.
Authorization
An HMAC. См. раздел примечаний.
AuthorizationSize
Размер буфера, заданного параметром Authorization , в байтах.
Возвращаемое значение
WINBIO_E_INVALID_KEY_IDENTIFIER должны возвращаться в случае, если ключ не может быть использован по какой-либо причине. При возвращении WINBIO_E_INVALID_KEY_IDENTIFIER датчик и доверенный платформенный модуль будут повторно подготовлены.
Комментарии
Буфер авторизации содержит следующие SHA256_HMAC:
SHA256_HMAC(Key, SHA256(Nonce || 0xffffffe2 || SHA256(AccountSid)))
-
Ключ
Ключ — это ключ HMAC, переданный EngineAdapterCreateKey и определяемый параметром KeyIdentifier .
-
Специальное утверждение
Nonce — это параметр Nonce.
-
0xffffffe2
32-разрядное целое число без знака в формате big-endian.
-
AccountSid
Идентификатор безопасности учетной записи пользователя, на который ссылается параметр Identity. Байты sid можно получить из структуры WINBIO_IDENTITY .
Примеры
Ниже приведена реализация псевдокода вычисления HMAC SHA256:
// Hash the AccountSid.
assert(Identity->Type == WINBIO_ID_TYPE_SID);
hashHandle = CreateHash(SHA256_ALGORITHM);
HashData(
hashHandle,
Identity->Value.AccountSid.Data,
Identity->Value.AccountSid.Size);
identityHash = FinishHash(hashHandle);
// Hash the parameters.
BYTE bytes[] = {0xff, 0xff, 0xff, 0xe2};
hashHandle = CreateHash(SHA256_ALGORITHM);
HashData(hashHandle, Nonce, NonceSize);
HashData(hashHandle, bytes, sizeof(bytes));
HashData(hashHandle, identityHash, SHA256_DIGEST_LENGTH);
parameterHash = FinishHash(hashHandle);
// Calculate the authorization HMAC
key, keySize = GetKeyFromIdentifier(KeyIdentifier, KeyIdentifierSize);
hashHandle = CreateHash(HMAC_SHA256_ALGORITHM, key, keySize);
HashData(hashHandle, parameterHash, SHA256_DIGEST_LENGTH);
authorization = FinishHash(hashHandle);
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 [только классические приложения] |
Минимальная версия сервера | Windows Server 2016 [только классические приложения] |
Целевая платформа | Windows |
Header | winbio_adapter.h (включая Winbio_adapter.h) |