PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN funzione di callback (winbio_adapter.h)
Chiamato da Windows Biometric Framework per creare un modello dal set di funzionalità corrente e individuare un modello corrispondente nel database. Se è possibile trovare una corrispondenza, l'adattatore del motore deve compilare i campi Identity, SubFactor, Authorization e AuthorizationSize .
Sintassi
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
)
{...}
Parametri
Pipeline
Puntatore a una struttura WINBIO_PIPELINE associata all'unità biometrica che esegue l'operazione.
Nonce
Puntatore a un buffer che contiene un nonce.
NonceSize
Dimensioni, in byte, del buffer specificato dal parametro Nonce .
KeyIdentifier
Puntatore a un buffer contenente un identificatore per la chiave da una chiamata precedente a EngineAdapterCreateKey
KeyIdentifierSize
Dimensioni, in byte, del buffer specificato dal parametro KeyIdentifier .
Identity
Puntatore a una struttura WINBIO_IDENTITY che contiene il SID del modello recuperato dal database. Questo valore viene restituito solo se viene trovata una corrispondenza.
SubFactor
RejectDetail
Puntatore a una variabile che riceve informazioni aggiuntive se un errore di acquisizione impedisce al motore di eseguire un'operazione corrispondente. Se l'acquisizione più recente è riuscita, impostare questo parametro su zero.
Authorization
Un HMAC. Vedere la sezione osservazioni.
AuthorizationSize
Dimensioni, in byte, del buffer specificato dal parametro Authorization .
Valore restituito
WINBIO_E_INVALID_KEY_IDENTIFIER deve essere restituito nel caso in cui la chiave non possa essere usata per qualsiasi motivo. Quando viene restituito WINBIO_E_INVALID_KEY_IDENTIFIER , verrà eseguito di nuovo il provisioning del sensore e del TPM.
Commenti
Il buffer di autorizzazione contiene i SHA256_HMAC seguenti:
SHA256_HMAC(Key, SHA256(Nonce || 0xffffffe2 || SHA256(AccountSid)))
-
Chiave
Key è la chiave HMAC passata da EngineAdapterCreateKey e identificata dal parametro KeyIdentifier .
-
Nonce
Nonce è il parametro Nonce.
-
0xffffffe2
Intero senza segno a 32 bit in formato big-endian.
-
AccountSid
SID dell'account dell'utente a cui fa riferimento il parametro Identity. I byte SID possono essere ottenuti dalla struttura WINBIO_IDENTITY .
Esempio
Ecco un'implementazione pseudocodice del calcolo 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);
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10 [solo app desktop] |
Server minimo supportato | Windows Server 2016 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winbio_adapter.h (includere Winbio_adapter.h) |