コールバック関数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

キャプチャエラーによってエンジンが一致する操作を実行できない場合に追加情報を受け取る変数へのポインター。 最新のキャプチャが成功した場合は、このパラメーターを 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 を含む)