PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN回呼函式 (winbio_adapter.h)
由 Windows 生物特徵辨識架構呼叫,以從目前的功能集建置範本,並在資料庫中找出相符的範本。 如果找到相符專案,引擎配接器必須填入 Identity、 SubFactor、 Authorization 和 AuthorizationSize 字段。
語法
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) |