PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN fonction de rappel (winbio_adapter.h)
Appelé par l’infrastructure biométrique Windows pour générer un modèle à partir de l’ensemble de fonctionnalités actuel et localiser un modèle correspondant dans la base de données. Si une correspondance est trouvée, l’adaptateur moteur doit remplir les champs Identity, SubFactor, Authorization et AuthorizationSize .
Syntaxe
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
)
{...}
Paramètres
Pipeline
Pointeur vers une structure WINBIO_PIPELINE associée à l’unité biométrique effectuant l’opération.
Nonce
Pointeur vers une mémoire tampon qui contient un nonce.
NonceSize
Taille, en octets, de la mémoire tampon spécifiée par le paramètre Nonce .
KeyIdentifier
Pointeur vers une mémoire tampon qui contient un identificateur pour la clé d’un appel précédent à EngineAdapterCreateKey
KeyIdentifierSize
Taille, en octets, de la mémoire tampon spécifiée par le paramètre KeyIdentifier .
Identity
Pointeur vers une structure WINBIO_IDENTITY qui contient le SID du modèle récupéré à partir de la base de données. Cette valeur est retournée uniquement si une correspondance est trouvée.
SubFactor
RejectDetail
Pointeur vers une variable qui reçoit des informations supplémentaires si un échec de capture empêche le moteur d’effectuer une opération de correspondance. Si la capture la plus récente a réussi, définissez ce paramètre sur zéro.
Authorization
An HMAC. Voir la section des remarques.
AuthorizationSize
Taille, en octets, de la mémoire tampon spécifiée par le paramètre Authorization .
Valeur retournée
WINBIO_E_INVALID_KEY_IDENTIFIER doivent être retournés dans le cas où la clé ne peut pas être utilisée pour une raison quelconque. Lorsque WINBIO_E_INVALID_KEY_IDENTIFIER est retourné, le capteur et le module de plateforme sécurisée sont reprovisionnés.
Remarques
La mémoire tampon d’autorisation contient les SHA256_HMAC suivantes :
SHA256_HMAC(Key, SHA256(Nonce || 0xffffffe2 || SHA256(AccountSid)))
-
Clé :
Key est la clé HMAC transmise par EngineAdapterCreateKey et identifiée par le paramètre KeyIdentifier .
-
Valeur à usage unique
Nonce est le paramètre Nonce.
-
0xffffffe2
Entier non signé 32 bits au format big-endian.
-
AccountSid
SID du compte de l’utilisateur référencé par le paramètre Identity. Les octets SID peuvent être obtenus à partir de la structure WINBIO_IDENTITY .
Exemples
Voici une implémentation de pseudocode du calcul SHA256 HMAC :
// 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);
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 (applications de bureau uniquement) |
Serveur minimal pris en charge | Windows Server 2016 (applications de bureau uniquement) |
Plateforme cible | Windows |
En-tête | winbio_adapter.h (include Winbio_adapter.h) |