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