Bagikan melalui


fungsi panggilan balik PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN (winbio_adapter.h)

Dipanggil oleh Windows Biometric Framework untuk membangun templat dari kumpulan fitur saat ini dan menemukan templat yang cocok dalam database. Jika kecocokan dapat ditemukan, adaptor mesin harus mengisi bidang Identitas, SubFaktor, Otorisasi, dan OtorisasiSize .

Sintaks

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

Parameter

Pipeline

Pointer ke struktur WINBIO_PIPELINE yang terkait dengan unit biometrik yang melakukan operasi.

Nonce

Penunjuk ke buffer yang berisi nonce.

NonceSize

Ukuran, dalam byte, dari buffer yang ditentukan oleh parameter Nonce .

KeyIdentifier

Penunjuk ke buffer yang berisi pengidentifikasi untuk kunci dari panggilan sebelumnya ke EngineAdapterCreateKey

KeyIdentifierSize

Ukuran, dalam byte, dari buffer yang ditentukan oleh parameter KeyIdentifier .

Identity

Penunjuk ke struktur WINBIO_IDENTITY yang berisi SID templat yang dipulihkan dari database. Nilai ini dikembalikan hanya jika kecocokan ditemukan.

SubFactor

RejectDetail

Penunjuk ke variabel yang menerima informasi tambahan jika kegagalan penangkapan mencegah mesin melakukan operasi yang cocok. Jika pengambilan terbaru berhasil, atur parameter ini ke nol.

Authorization

Sebuah HMAC. Lihat bagian keterangan.

AuthorizationSize

Ukuran, dalam byte, dari buffer yang ditentukan oleh parameter Otorisasi .

Nilai kembali

WINBIO_E_INVALID_KEY_IDENTIFIER harus dikembalikan dalam kasus di mana kunci tidak dapat digunakan karena alasan apa pun. Ketika WINBIO_E_INVALID_KEY_IDENTIFIER dikembalikan, sensor dan TPM akan diprovisikan kembali.

Keterangan

Buffer Otorisasi berisi SHA256_HMAC berikut:

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

  • Kunci

    Kunci adalah kunci HMAC yang diteruskan oleh EngineAdapterCreateKey, dan diidentifikasi oleh parameter KeyIdentifier .

  • Nonce

    Nonce adalah parameter Nonce.

  • 0xffffffe2

    Bilangan bulat yang tidak ditandatangani 32-bit dalam format big-endian.

  • AccountSid

    SID akun pengguna yang dirujuk oleh parameter Identitas. Byte SID dapat diperoleh dari struktur WINBIO_IDENTITY .

Contoh

Berikut adalah implementasi pseudocode dari perhitungan 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);

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10 [khusus aplikasi desktop]
Server minimum yang didukung Windows Server 2016 [hanya aplikasi desktop]
Target Platform Windows
Header winbio_adapter.h (termasuk Winbio_adapter.h)