PIBIO_ENGINE_QUERY_HASH_ALGORITHMS_FN Rückruffunktion (winbio_adapter.h)
Wird vom Windows Biometric Framework aufgerufen, um ein Array von Objektbezeichnern (OIDs) abzurufen, die die vom Moduladapter unterstützten Hashalgorithmen darstellen.
Syntax
PIBIO_ENGINE_QUERY_HASH_ALGORITHMS_FN PibioEngineQueryHashAlgorithmsFn;
HRESULT PibioEngineQueryHashAlgorithmsFn(
[in, out] PWINBIO_PIPELINE Pipeline,
[out] PSIZE_T AlgorithmCount,
[out] PSIZE_T AlgorithmBufferSize,
[out] PUCHAR *AlgorithmBuffer
)
{...}
Parameter
[in, out] Pipeline
Zeiger auf eine WINBIO_PIPELINE Struktur, die der biometrischen Einheit zugeordnet ist, die den Vorgang ausführt.
[out] AlgorithmCount
Zeiger auf einen Wert, der die Anzahl der Algorithmus-OID-Zeichenfolgen in dem puffer empfängt, der durch den AlgorithmBuffer-Parameter angegeben wird.
[out] AlgorithmBufferSize
Zeiger auf einen Wert, der die Größe des puffers in Bytes enthält, der durch den AlgorithmBuffer-Parameter angegeben wird. Die Größe enthält die zwei NULL-Werte , die den Puffer beenden.
[out] AlgorithmBuffer
Adresse einer Variablen, die einen Zeiger auf einen Puffer empfängt, der gepackte, NULL-beendete ANSI-Zeichenfolgen enthält. Jede Zeichenfolge stellt eine OID für einen Hashalgorithmus dar. Die letzte Zeichenfolge im Puffer muss durch zwei aufeinanderfolgende NULL-Werte beendet werden.
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt sie S_OK zurück. Wenn die Funktion fehlschlägt, muss sie einen der folgenden HRESULT-Werte zurückgeben, um den Fehler anzugeben.
Rückgabecode | Beschreibung |
---|---|
|
Ein obligatorischer Zeigerparameter ist NULL. |
|
Der Moduladapter unterstützt keine Vorlagenhashgenerierung. |
Hinweise
Nur der SHA1-Hashalgorithmus wird vom Windows Biometric Framework verwendet. Daher muss diese OID im Puffer enthalten sein. Andere OID-Zeichenfolgen sind optional und können für zukünftige Windows-Versionen eingeschlossen werden. In Wincrypt.h, die im Windows SDK enthalten ist, ist das Symbol für den SHA1-Algorithmus szOID_OIWSEC_sha1 und der zugeordnete Zeichenfolgenwert ist "1.3.14.3.2.26". Dieser Zeichenfolgenwert muss sich im Puffer befinden. Weitere OID-Werte finden Sie unter Wincrypt.h.
Das folgende Beispiel zeigt, wie Sie einen OID-Puffer erstellen. Der SHA1-Algorithmus ("1.3.14.3.2.26") ist zuerst enthalten, obwohl die Reihenfolge der Aufnahme nicht wichtig ist. Ein anderer Algorithmus, szOID_OIWSEC_shaRSA mit dem Wert "1.3.14.3.2.15" ist ebenfalls enthalten. Beachten Sie, dass ein einzelner NULL-Wert das Ende jeder OID-Zeichenfolge identifiziert und dass ein zusätzlicher NULL-Wert nach dem Ende der letzten Zeichenfolge das Ende des Puffers identifiziert.
char OidBuffer[] =
{
'1','.','3','.','1','4','.','3','.','2','.','2','6','\0',
'1','.','3','.','1','4','.','3','.','2','.','1','5','\0','\0'
};
Wenn diese Funktion erfolgreich ist, geben Sie die Adresse des Anfangs dieses Puffers im AlgorithmBuffer-Argument zurück. Der Moduladapter besitzt den Puffer. Da das biometrische Windows-Framework den Puffer liest, muss die Adresse gültig bleiben, solange der Moduladapter an die biometrische Einheit angefügt ist.
In der Regel kompilieren Sie die Tabelle der OID-Zeichenfolgen als statischen Datenblock in den Moduladapter.
Beispiele
Der folgende Pseudocode zeigt eine mögliche Implementierung dieser Funktion. Das Beispiel wird nicht kompiliert. Sie müssen es an Ihren Zweck anpassen.
//////////////////////////////////////////////////////////////////////////////////////////
//
// EngineAdapterQueryHashAlgorithms
//
// Retrieves an array of object identifiers (OIDs) that represent the
// hash algorithms supported by the engine adapter.
//
// Parameters:
// Pipeline - Pointer to a WINBIO_PIPELINE structure associated
// with the biometric unit performing the operation.
// AlgorithmCount - Pointer to a value that receives the number of
// algorithm OID strings specified by the
// AlgorithmBuffer parameter.
// AlgorithmBufferSize - Pointer to a value that contains the size,
// in bytes, of the buffer specified by the
// AlgorithmBuffer parameter.
// AlgorithmBuffer - Address of a variable that receives a pointer to
// a buffer that contains packed, NULL-terminated ANSI
// strings. Each string represents an OID for a hash
// algorithm. The final string in the buffer must be
// terminated by two successive NULL values.
//
// Note:
// The following algorithm table contains the SHA1 OID. Only
// the SHA1 hash algorithm is supported by the Windows Biometric Framework.
// The algorithm table must be defined in global scope for the engine adapter.
//
static char g_HashAlgorithmOidTable[] =
{
'1','.','3','.','1','4','.','3','.','2','.','2','6','\0','\0'
};
static HRESULT
WINAPI
EngineAdapterQueryHashAlgorithms(
__inout PWINBIO_PIPELINE Pipeline,
__out PSIZE_T AlgorithmCount,
__out PSIZE_T AlgorithmBufferSize,
__out PUCHAR *AlgorithmBuffer
)
{
////////////////////////////////////////////////////////////////////////////
// Return E_NOTIMPL here if your adapter does not support template hashing.
////////////////////////////////////////////////////////////////////////////
HRESULT hr = S_OK;
// Verify that pointer arguments are not NULL.
if (!ARGUMENT_PRESENT(Pipeline) ||
!ARGUMENT_PRESENT(AlgorithmCount) ||
!ARGUMENT_PRESENT(AlgorithmBufferSize) ||
!ARGUMENT_PRESENT(AlgorithmBuffer))
{
hr = E_POINTER;
goto cleanup;
}
// Pass the address and size of the static algorithm table and the number
// of algorithms to the caller. If your adapter does not support template
// hashing, return E_NOTIMPL.
*AlgorithmCount = 1;
*AlgorithmBufferSize = sizeof(g_HashAlgorithmOidTable);
*AlgorithmBuffer = g_HashAlgorithmOidTable;
cleanup:
return hr;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winbio_adapter.h (einschließlich Winbio_adapter.h) |