Partager via


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)