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) |