PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN回呼函式 (winbio_adapter.h)

由 Windows 生物特徵辨識架構呼叫,以從目前的功能集建置範本,並在資料庫中找出相符的範本。 如果找到相符專案,引擎配接器必須填入 IdentitySubFactorAuthorizationAuthorizationSize 字段。

語法

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
)
{...}

參數

Pipeline

與執行作業之生物特徵辨識單位相關聯的WINBIO_PIPELINE結構的指標。

Nonce

包含 nonce 的緩衝區指標。

NonceSize

Nonce 參數所指定的緩衝區大小,以位元組為單位。

KeyIdentifier

緩衝區的指標,其中包含先前呼叫 EngineAdapterCreateKey 之密鑰的標識碼

KeyIdentifierSize

KeyIdentifier 參數所指定的緩衝區大小,以位元組為單位。

Identity

包含從資料庫復原之範本 SID 的 WINBIO_IDENTITY 結構的指標。 只有在找到相符專案時,才會傳回此值。

SubFactor

RejectDetail

如果擷取失敗導致引擎無法執行比對作業,則為接收其他資訊的變數指標。 如果最近擷取成功,請將此參數設定為零。

Authorization

HMAC。 請參閱一節。

AuthorizationSize

Authorization 參數所指定的緩衝區大小,以位元組為單位。

傳回值

WINBIO_E_INVALID_KEY_IDENTIFIER 必須傳回,以防因為任何原因而無法使用密鑰。 傳回 WINBIO_E_INVALID_KEY_IDENTIFIER 時,將會重新布建感測器和 TPM。

備註

授權緩衝區包含下列SHA256_HMAC:

SHA256_HMAC (密钥、SHA256 (Nonce ||0xffffffe2 ||SHA256 (AccountSid) ) )

  • 答案

    Key 是 EngineAdapterCreateKey 傳入的 HMAC 密鑰,並由 KeyIdentifier 參數識別。

  • Nonce

    Nonce 是 Nonce 參數。

  • 0xffffffe2

    32 位無符號整數,格式為 big-endian。

  • AccountSid

    Identity 參數所參考之用戶的帳戶 SID。 您可以從 WINBIO_IDENTITY 結構取得 SID 位元組。

範例

以下是 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);

規格需求

需求
最低支援的用戶端 Windows 10 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2016 [僅限傳統型應用程式]
目標平台 Windows
標頭 winbio_adapter.h (包含 Winbio_adapter.h)