Bagikan melalui


fungsi panggilan balik PIBIO_ENGINE_SET_HASH_ALGORITHM_FN (winbio_adapter.h)

Dipanggil oleh Windows Biometric Framework untuk memilih algoritma hash untuk digunakan dalam operasi berikutnya.

Sintaks

PIBIO_ENGINE_SET_HASH_ALGORITHM_FN PibioEngineSetHashAlgorithmFn;

HRESULT PibioEngineSetHashAlgorithmFn(
  [in, out] PWINBIO_PIPELINE Pipeline,
  [in]      SIZE_T AlgorithmBufferSize,
  [in]      PUCHAR AlgorithmBuffer
)
{...}

Parameter

[in, out] Pipeline

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

[in] AlgorithmBufferSize

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

[in] AlgorithmBuffer

Penunjuk ke string ANSI yang dihentikan NULL yang berisi pengidentifikasi objek algoritma hash untuk dipilih. Panggil fungsi EngineAdapterQueryHashAlgorithms untuk mengambil array pengidentifikasi objek algoritma (OID) yang didukung.

Mengembalikan nilai

Jika fungsi berhasil, fungsi akan mengembalikan S_OK. Jika fungsi gagal, fungsi harus mengembalikan salah satu nilai HRESULT berikut untuk menunjukkan kesalahan.

Menampilkan kode Deskripsi
E_POINTER
Parameter pointer wajib adalah NULL.
E_NOTIMPL
Adaptor mesin tidak mendukung hash templat.
E_INVALIDARG
Adaptor mesin tidak mendukung algoritma hash yang ditentukan oleh parameter AlgoritmaBuffer .

Keterangan

Windows Biometric Framework memanggil fungsi ini untuk mengonfigurasi unit biometrik setiap kali unit ditambahkan ke kumpulan sensor.

Karena algoritma hash dipilih berdasarkan per alur, adaptor mesin harus menyimpan algoritma yang dipilih dalam konteks alur privat.

Adaptor mesin harus melacak algoritma terbaru yang dipilih dan menggunakan algoritma ini saat memproses panggilan ke fungsi berikut:

Algoritma yang dipilih oleh fungsi ini harus tetap dipilih sampai lain kali EngineAdapterSetHashAlgorithm dipanggil, atau sampai metode EngineAdapterDetach dipanggil. Secara khusus, panggilan ke fungsi EngineAdapterClearContext tidak boleh memengaruhi algoritma yang dipilih.

Hanya algoritma hash SHA1 yang digunakan oleh Windows Biometric Framework. Nilai string OID untuk algoritma ini adalah "1.3.14.3.2.26". Untuk informasi selengkapnya, lihat EngineAdapterQueryHashAlgorithms.

Contoh

Pseudocode berikut menunjukkan salah satu kemungkinan implementasi fungsi ini. Contoh tidak dikompilasi. Kau harus menyesuaikannya sesuai dengan tujuanmu.

//////////////////////////////////////////////////////////////////////////////////////////
//
// EngineAdapterSetHashAlgorithm
//
// Purpose:
//      Selects a hash algorithm for use in subsequent operations.
//
// Parameters:
//      Pipeline            - Pointer to a WINBIO_PIPELINE structure associated 
//                            with the biometric unit performing the operation.   
//      AlgorithmBufferSize - Size, in bytes, of the buffer specified by the 
//                            AlgorithmBuffer parameter.
//      AlgorithmBuffer     - Pointer to a NULL-terminated ANSI string that 
//                            contains the object identifier of the hash algorithm
//                            to select.
//
static HRESULT
WINAPI
EngineAdapterSetHashAlgorithm(
    __inout PWINBIO_PIPELINE Pipeline,
    __in SIZE_T AlgorithmBufferSize,
    __in PUCHAR AlgorithmBuffer
    )
{
    ////////////////////////////////////////////////////////////////////////////
    // Return E_NOTIMPL here if your adapter does not support template hashing.
    ////////////////////////////////////////////////////////////////////////////

    HRESULT hr = S_OK;
    SIZE_T algorithmSize = (strlen(szOID_OIWSEC_sha1) + 1) * sizeof(CHAR);

    // Verify that pointer arguments are not NULL.
    if (!ARGUMENT_PRESENT(Pipeline) ||
        !ARGUMENT_PRESENT(AlgorithmBuffer))
    {
        hr = E_POINTER;
        goto cleanup;
    }

    // Only the SHA1 hashing algorithm is supported.
    // Therefore, make certain that SHA1 is included in the algorithm
    // table.
    // The SHA1 object identifier, szOID_OIWSEC_sha1, is contained in the
    // Wincrypt.h header file.
    if (AlgorithmBufferSize != algorithmSize ||
        memcmp(AlgorithmBuffer, szOID_OIWSEC_sha1, algorithmSize) != 0)
    {
        hr = E_INVALIDARG;
        goto cleanup;
    }

    // Make any necessary changes to the adapter state to specify that
    // SHA1 hashing is enabled. If your adapter does not support template
    // hashing, return E_NOTIMPL.

cleanup:
    
    return hr;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 R2 [hanya aplikasi desktop]
Target Platform Windows
Header winbio_adapter.h (termasuk Winbio_adapter.h)

Lihat juga

EngineAdapterQueryHashAlgorithms

Fungsi Plug-in