Compartilhar via


função de retorno de chamada PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN (winbio_adapter.h)

Chamado pela Estrutura Biométrica do Windows para criar um modelo do conjunto de recursos atual e localizar um modelo correspondente no banco de dados. Se uma correspondência puder ser encontrada, o adaptador do mecanismo deverá preencher os campos Identidade, SubFactor, Autorização e AutorizaçãoSize .

Sintaxe

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

Ponteiro para uma estrutura WINBIO_PIPELINE associada à unidade biométrica que executa a operação.

Nonce

Ponteiro para um buffer que contém um nonce.

NonceSize

Tamanho, em bytes, do buffer especificado pelo parâmetro Nonce .

KeyIdentifier

Ponteiro para um buffer que contém um identificador para a chave de uma chamada anterior para EngineAdapterCreateKey

KeyIdentifierSize

Tamanho, em bytes, do buffer especificado pelo parâmetro KeyIdentifier .

Identity

Ponteiro para uma estrutura WINBIO_IDENTITY que contém o SID do modelo recuperado do banco de dados. Esse valor será retornado somente se uma correspondência for encontrada.

SubFactor

RejectDetail

Ponteiro para uma variável que recebe informações adicionais se uma falha de captura impede que o mecanismo execute uma operação correspondente. Se a captura mais recente tiver sido bem-sucedida, defina esse parâmetro como zero.

Authorization

Um HMAC. Consulte a seção comentários.

AuthorizationSize

Tamanho, em bytes, do buffer especificado pelo parâmetro Authorization .

Retornar valor

WINBIO_E_INVALID_KEY_IDENTIFIER deve ser retornado no caso em que a chave não pode ser usada por qualquer motivo. Quando WINBIO_E_INVALID_KEY_IDENTIFIER for retornado, o sensor e o TPM serão provisionados novamente.

Comentários

O buffer de autorização contém o seguinte SHA256_HMAC:

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

  • Chave

    Key é a chave HMAC passada por EngineAdapterCreateKey e identificada pelo parâmetro KeyIdentifier .

  • Nonce

    Nonce é o parâmetro Nonce.

  • 0xffffffe2

    Um inteiro sem sinal de 32 bits no formato big-endian.

  • AccountSid

    O SID da conta do usuário referenciado pelo parâmetro Identity. Os bytes sid podem ser obtidos da estrutura WINBIO_IDENTITY .

Exemplos

Aqui está uma implementação de pseudocódigo do cálculo do 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 Valor
Cliente mínimo com suporte Windows 10 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2016 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winbio_adapter.h (inclua Winbio_adapter.h)