Win32 API 日本語リファレンス
ホーム › Devices.BiometricFramework › PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN

PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN

コールバック

シグネチャ

HRESULT PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN(
    WINBIO_PIPELINE* Pipeline,
    BYTE* Nonce,
    UINT_PTR NonceSize,
    BYTE* KeyIdentifier,
    UINT_PTR KeyIdentifierSize,
    WINBIO_IDENTITY* Identity,
    BYTE* SubFactor,
    DWORD* RejectDetail,
    BYTE** Authorization,
    UINT_PTR* AuthorizationSize
);

パラメーター

フィールド型説明
PipelineWINBIO_PIPELINE*操作を実行するバイオメトリックユニットに関連付けられた WINBIO_PIPELINE 構造体へのポインターです。
NonceBYTE*ノンスを格納しているバッファーへのポインターです。
NonceSizeUINT_PTRNonce パラメーターで指定されたバッファーのサイズ (バイト単位)。
KeyIdentifierBYTE*EngineAdapterCreateKey の以前の呼び出しで得られたキーの識別子を格納しているバッファーへのポインターです。
KeyIdentifierSizeUINT_PTRKeyIdentifier パラメーターで指定されたバッファーのサイズ (バイト単位)。
IdentityWINBIO_IDENTITY*データベースから取得されたテンプレートの SID を格納する WINBIO_IDENTITY 構造体へのポインターです。この値は、一致するテンプレートが見つかった場合にのみ返されます。
SubFactorBYTE*データベース内のテンプレートに関連付けられたサブファクターを受け取る WINBIO_BIOMETRIC_SUBTYPE 定数 の値です。詳細については「解説」セクションを参照してください。この値は、一致するテンプレートが見つかった場合にのみ返されます。
RejectDetailDWORD*キャプチャの失敗によりエンジンが照合操作を実行できなかった場合に、追加情報を受け取る変数へのポインターです。直近のキャプチャが成功している場合は、このパラメーターに 0 を設定します。
AuthorizationBYTE**HMAC です。「解説」セクションを参照してください。
AuthorizationSizeUINT_PTR*Authorization パラメーターで指定されたバッファーのサイズ (バイト単位)。

公式ドキュメント

Windows Biometric Framework によって呼び出され、現在の特徴セットからテンプレートを構築し、データベース内で一致するテンプレートを検索します。一致するテンプレートが見つかった場合、エンジンアダプターは Identity、SubFactor、Authorization、AuthorizationSize の各フィールドを設定する必要があります。

戻り値

何らかの理由でキーを使用できない場合は、WINBIO_E_INVALID_KEY_IDENTIFIER を返す必要があります。WINBIO_E_INVALID_KEY_IDENTIFIER が返されると、センサーと TPM は再プロビジョニングされます。

解説(Remarks)

Authorization バッファーには、次の SHA256_HMAC が格納されます。

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

例

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);
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)