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


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