Compartir a través de


PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN función de devolución de llamada (winbio_adapter.h)

Lo llama Windows Biometric Framework para crear una plantilla a partir del conjunto de características actual y buscar una plantilla coincidente en la base de datos. Si se puede encontrar una coincidencia, el adaptador del motor debe rellenar los campos Identity, SubFactor, Authorization y AuthorizationSize .

Sintaxis

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
)
{...}

Parámetros

Pipeline

Puntero a una estructura de WINBIO_PIPELINE asociada a la unidad biométrica que realiza la operación.

Nonce

Puntero a un búfer que contiene un nonce.

NonceSize

Tamaño, en bytes, del búfer especificado por el parámetro Nonce .

KeyIdentifier

Puntero a un búfer que contiene un identificador para la clave de una llamada anterior a EngineAdapterCreateKey

KeyIdentifierSize

Tamaño, en bytes, del búfer especificado por el parámetro KeyIdentifier .

Identity

Puntero a una estructura de WINBIO_IDENTITY que contiene el SID de la plantilla recuperada de la base de datos. Este valor solo se devuelve si se encuentra una coincidencia.

SubFactor

RejectDetail

Puntero a una variable que recibe información adicional si un error de captura impide que el motor realice una operación coincidente. Si la captura más reciente se realizó correctamente, establezca este parámetro en cero.

Authorization

Un HMAC. Consulte la sección comentarios.

AuthorizationSize

Tamaño, en bytes, del búfer especificado por el parámetro Authorization .

Valor devuelto

WINBIO_E_INVALID_KEY_IDENTIFIER debe devolverse en el caso de que no se pueda usar la clave por cualquier motivo. Cuando se devuelve WINBIO_E_INVALID_KEY_IDENTIFIER , se volverán a aprovisionar el sensor y el TPM.

Comentarios

El búfer de autorización contiene los siguientes SHA256_HMAC:

SHA256_HMAC(Key, SHA256(Nonce || 0xffffffe2 || SHA256(AccountSid)))

  • Clave

    Key es la clave HMAC pasada por EngineAdapterCreateKey e identificada por el parámetro KeyIdentifier .

  • Valor de seguridad

    Nonce es el parámetro Nonce.

  • 0xffffffe2

    Entero de 32 bits sin signo en formato big-endian.

  • AccountSid

    SiD de cuenta del usuario al que hace referencia el parámetro Identity. Los bytes del SID se pueden obtener de la estructura WINBIO_IDENTITY .

Ejemplos

Esta es una implementación de pseudocódigo del cálculo 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);

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2016 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winbio_adapter.h (incluya Winbio_adapter.h)