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 |
---|---|
|
Parameter pointer wajib adalah NULL. |
|
Adaptor mesin tidak mendukung hash templat. |
|
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) |