コールバック関数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
キャプチャエラーによってエンジンが一致する操作を実行できない場合に追加情報を受け取る変数へのポインター。 最新のキャプチャが成功した場合は、このパラメーターを 0 に設定します。
Authorization
HMAC。 「解説」セクションを参照してください。
AuthorizationSize
Authorization パラメーターで指定されたバッファーのサイズ (バイト単位)。
戻り値
何 らかの理由でキーを使用できない場合は、WINBIO_E_INVALID_KEY_IDENTIFIERを返す必要があります。 WINBIO_E_INVALID_KEY_IDENTIFIERが返されると、センサーと TPM が再プロビジョニングされます。
注釈
Authorization バッファーには、次のSHA256_HMACが含まれています。
SHA256_HMAC(Key, SHA256(Nonce || 0xffffffe2 ||SHA256(AccountSid)))
-
キー
Key は、 EngineAdapterCreateKey によって渡され、 KeyIdentifier パラメーターによって識別される HMAC キーです。
-
nonce
Nonce は Nonce パラメーターです。
-
0xffffffe2
ビッグ エンディアン形式の 32 ビット符号なし整数。
-
AccountSid
Identity パラメーターによって参照されるユーザーのアカウント SID。 SID バイトは、 WINBIO_IDENTITY 構造体から取得できます。
例
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 を含む) |