Esempio n. 1
0
File: pwbspi.c Progetto: ozgend/hive
BioAPI_RETURN BioAPI BioSPI_FreeBIRHandle(
					BioAPI_HANDLE		  ModuleHandle,
					BioAPI_BIR_HANDLE BIRHandle )
{
	BioAPI_RETURN		   ret			 = BioAPI_OK;
	void				*pAddinContext = NULL;
	ADDIN_ATTACH_DATA	*pAttachData   = NULL;

	/*-------------------------*
	 * Initialize MAF Contexts *
	 *-------------------------*/

	/* Note to keep in mind from here on:  after MAF has been initialized
	 * the function must release the context with ADDIN_SPIEnd(...).  The
	 * return macro for doing this is SPI_RETURN(<errorcode>).	This will
	 * be used to return in each function in each case after MAF is in use. */

	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (BioAPI_OK != ret) return ret;

	if (NULL == (pAttachData = Addin_GetAttachData()))
		SPI_RETURN(BioAPI_ERRCODE_INTERNAL_ERROR);

	/*----------------------------------------------------------------*
	 * Call to the internal routine where the real functionality lies *
	 *----------------------------------------------------------------*/
	ret = _biospi_FreeBIRHandle(pAttachData, BIRHandle);
	if (BioAPI_OK != ret) SPI_RETURN(ret);

	SPI_RETURN(BioAPI_OK);
}
Esempio n. 2
0
BioAPI_RETURN BioAPI BSP_DbFreeCursor(
					BioAPI_HANDLE ModuleHandle,
					BioAPI_DB_CURSOR_PTR Cursor )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_DB_FREE_CURSOR;
}
Esempio n. 3
0
BioAPI_RETURN BioAPI BSP_DbClose(
					BioAPI_HANDLE ModuleHandle,
					BioAPI_DB_HANDLE DbHandle )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_DB_CLOSE;
}
Esempio n. 4
0
BioAPI_RETURN BioAPI BSP_DbDelete(
					BioAPI_HANDLE ModuleHandle,
					const uint8 *DbName )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_DB_DELETE;
}
Esempio n. 5
0
/* Define each SPI function.
 */
BioAPI_RETURN BioAPI BSP_FreeBIRHandle(
					BioAPI_HANDLE ModuleHandle,
					BioAPI_BIR_HANDLE BIRHandle )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_FREE_BIRHANDLE;
}
Esempio n. 6
0
BioAPI_RETURN BioAPI BSP_EnableEvents(
					BioAPI_HANDLE ModuleHandle,
					BioAPI_MODULE_EVENT_MASK *Events )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_ENABLE_EVENTS;
}
Esempio n. 7
0
BioAPI_RETURN BioAPI BSP_SetPowerMode(
					BioAPI_HANDLE ModuleHandle,
					BioAPI_POWER_MODE PowerMode )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_SET_POWER_MODE;
}
Esempio n. 8
0
BioAPI_RETURN BioAPI BSP_GetHeaderFromHandle(
					BioAPI_HANDLE ModuleHandle,
					BioAPI_BIR_HANDLE BIRHandle,
					BioAPI_BIR_HEADER_PTR Header )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_GET_HEADER_FROM_HANDLE;
}
Esempio n. 9
0
BioAPI_RETURN BioAPI BSP_Process(
					BioAPI_HANDLE ModuleHandle,
					const BioAPI_INPUT_BIR *CapturedBIR,
					BioAPI_BIR_HANDLE_PTR ProcessedBIR )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_PROCESS;
}
Esempio n. 10
0
BioAPI_RETURN BioAPI BSP_DbDeleteBIR(
					BioAPI_HANDLE ModuleHandle,
					BioAPI_DB_HANDLE DbHandle,
					const BioAPI_UUID *KeyValue )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_DB_DELETE_BIR;
}
Esempio n. 11
0
File: pwbspi.c Progetto: ozgend/hive
BioAPI_RETURN BioAPI BioSPI_Capture(
					BioAPI_HANDLE			  ModuleHandle,
					BioAPI_BIR_PURPOSE	  Purpose,
					BioAPI_BIR_HANDLE_PTR CapturedBIR,
					sint32					Timeout,
					BioAPI_BIR_HANDLE_PTR AuditData )
{
	BioAPI_RETURN		 ret			   = BioAPI_OK;
	void			  *pAddinContext	 = NULL;
	ADDIN_ATTACH_DATA *pAttachData		 = NULL;

	/*------------------------------------------------------------------*
	 * Check for bad paramters and initialize output for the error case *
	 *------------------------------------------------------------------*/

	if (NULL == CapturedBIR)
		return BioAPI_ERRCODE_INVALID_OUTPUT_POINTER;
	else
		*CapturedBIR = BioAPI_INVALID_BIR_HANDLE;

	if (NULL != AuditData)
		/* AuditData not supported */
		*AuditData = BioAPI_UNSUPPORTED_BIR_HANDLE;

	if (Purpose != BioAPI_PURPOSE_VERIFY &&
		Purpose != BioAPI_PURPOSE_ENROLL_FOR_VERIFICATION_ONLY)
		return BioAPIERR_BSP_PURPOSE_NOT_SUPPORTED;

	/*-------------------------*
	 * Initialize MAF Contexts *
	 *-------------------------*/

	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;

	if ((pAttachData = Addin_GetAttachData()) == NULL)
		SPI_RETURN(BioAPI_ERRCODE_INTERNAL_ERROR);

	/*-----------------------------------------------------------------*
	 * Check to ensure there are still handles available for more BIRs *
	 *-----------------------------------------------------------------*/
	if (pAttachData->HandleIndex < 0)
		/* Overflow, we've run out of handles */
		SPI_RETURN(BioAPIERR_BSP_TOO_MANY_HANDLES);

	/*----------------------------------------------------------------*
	 * Call to the internal routine where the real functionality lies *
	 *----------------------------------------------------------------*/
	ret = _biospi_Capture(pAttachData, Purpose, CapturedBIR);
	if (BioAPI_OK != ret) SPI_RETURN(ret);

	SPI_RETURN(BioAPI_OK);
}
Esempio n. 12
0
BioAPI_RETURN BioAPI BSP_SetStreamCallback(
					BioAPI_HANDLE ModuleHandle,
					BioAPI_STREAM_CALLBACK StreamCallback,
					void *StreamCallbackCtx )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_SET_STREAM_CALLBACK;
}
Esempio n. 13
0
BioAPI_RETURN BioAPI BSP_StreamInputOutput(
					BioAPI_HANDLE ModuleHandle,
					BioAPI_DATA_PTR InMessage,
					BioAPI_DATA_PTR OutMessage )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_STREAM_INPUT_OUTPUT;
}
Esempio n. 14
0
BioAPI_RETURN BioAPI BSP_DbSetCursor(
					BioAPI_HANDLE ModuleHandle,
					BioAPI_DB_HANDLE DbHandle,
					const BioAPI_UUID *KeyValue,
					BioAPI_DB_CURSOR_PTR Cursor )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_DB_SET_CURSOR;
}
Esempio n. 15
0
BioAPI_RETURN BioAPI BSP_DbGetNextBIR(
					BioAPI_HANDLE ModuleHandle,
					BioAPI_DB_CURSOR_PTR Cursor,
					BioAPI_BIR_HANDLE_PTR RetievedBIR,
					BioAPI_UUID_PTR Uuid )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_DB_GET_NEXT_BIR;
}
Esempio n. 16
0
BioAPI_RETURN BioAPI BSP_DbQueryBIR(
					BioAPI_HANDLE ModuleHandle,
					BioAPI_DB_HANDLE DbHandle,
					const BioAPI_INPUT_BIR *BIRToQuery,
					BioAPI_UUID_PTR Uuid )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_DB_QUERY_BIR;
}
Esempio n. 17
0
BioAPI_RETURN BioAPI BSP_DbCreate(
					BioAPI_HANDLE ModuleHandle,
					const uint8 *DbName,
					BioAPI_DB_ACCESS_TYPE AccessRequest,
					BioAPI_DB_HANDLE_PTR DbHandle )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_DB_CREATE;
}
Esempio n. 18
0
BioAPI_RETURN BioAPI BSP_Capture(
					BioAPI_HANDLE ModuleHandle,
					BioAPI_BIR_PURPOSE Purpose,
					BioAPI_BIR_HANDLE_PTR CapturedBIR,
					sint32 Timeout,
					BioAPI_BIR_HANDLE_PTR AuditData )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_CAPTURE;
}
Esempio n. 19
0
BioAPI_RETURN BioAPI BSP_CreateTemplate(
					BioAPI_HANDLE ModuleHandle,
					const BioAPI_INPUT_BIR *CapturedBIR,
					const BioAPI_INPUT_BIR *StoredTemplate,
					BioAPI_BIR_HANDLE_PTR NewTemplate,
					const BioAPI_DATA *Payload )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_CREATE_TEMPLATE;
}
Esempio n. 20
0
BioAPI_RETURN BioAPI BSP_Import(
					BioAPI_HANDLE ModuleHandle,
					const BioAPI_DATA *InputData,
					BioAPI_BIR_BIOMETRIC_DATA_FORMAT InputFormat,
					BioAPI_BIR_PURPOSE Purpose,
					BioAPI_BIR_HANDLE_PTR ConstructedBIR )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_IMPORT;
}
Esempio n. 21
0
BioAPI_RETURN BioAPI BSP_SetGUICallbacks(
					BioAPI_HANDLE ModuleHandle,
					BioAPI_GUI_STREAMING_CALLBACK GuiStreamingCallback,
					void *GuiStreamingCallbackCtx,
					BioAPI_GUI_STATE_CALLBACK GuiStateCallback,
					void *GuiStateCallbackCtx )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_SET_GUICALLBACKS;
}
Esempio n. 22
0
BioAPI_RETURN BioAPI BSP_Enroll(
					BioAPI_HANDLE ModuleHandle,
					BioAPI_BIR_PURPOSE Purpose,
					const BioAPI_INPUT_BIR *StoredTemplate,
					BioAPI_BIR_HANDLE_PTR NewTemplate,
					const BioAPI_DATA *Payload,
					sint32 Timeout,
					BioAPI_BIR_HANDLE_PTR AuditData )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_ENROLL;
}
Esempio n. 23
0
BioAPI_RETURN BioAPI BSP_VerifyMatch(
					BioAPI_HANDLE ModuleHandle,
					const BioAPI_FAR *MaxFARRequested,
					const BioAPI_FRR *MaxFRRRequested,
					const BioAPI_BOOL *FARPrecedence,
					const BioAPI_INPUT_BIR *ProcessedBIR,
					const BioAPI_INPUT_BIR *StoredTemplate,
					BioAPI_BIR_HANDLE *AdaptedBIR,
					BioAPI_BOOL *Result,
					BioAPI_FAR_PTR FARAchieved,
					BioAPI_FRR_PTR FRRAchieved,
					BioAPI_DATA_PTR *Payload )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_VERIFY_MATCH;
}
Esempio n. 24
0
BioAPI_RETURN BioAPI BSP_Identify(
					BioAPI_HANDLE ModuleHandle,
					const BioAPI_FAR *MaxFARRequested,
					const BioAPI_FRR *MaxFRRRequested,
					const BioAPI_BOOL *FARPrecedence,
					const BioAPI_IDENTIFY_POPULATION *Population,
					BioAPI_BOOL Binning,
					uint32 MaxNumberOfResults,
					uint32 *NumberOfResults,
					BioAPI_CANDIDATE_ARRAY_PTR *Candidates,
					sint32 Timeout,
					BioAPI_BIR_HANDLE_PTR AuditData )
{
	BioAPI_RETURN ret = BioAPI_OK;
	void *pAddinContext = NULL;
	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;
	Addin_SPIEnd(pAddinContext);
	return BioAPIERR_BSP_IDENTIFY;
}
Esempio n. 25
0
File: pwbspi.c Progetto: ozgend/hive
BioAPI_RETURN BioAPI BioSPI_GetHeaderFromHandle(
					BioAPI_HANDLE			  ModuleHandle,
					BioAPI_BIR_HANDLE	  BIRHandle,
					BioAPI_BIR_HEADER_PTR Header )
{
	BioAPI_RETURN		 ret		   = BioAPI_OK;
	void			  *pAddinContext = NULL;
	BioAPI_BIR		*pFoundBIR	   = NULL;
	ADDIN_ATTACH_DATA *pAttachData	 = NULL;

	/*--------------------------*
	 * Check for bad parameters *
	 *--------------------------*/

	if (NULL == Header)
		return BioAPI_ERRCODE_INVALID_OUTPUT_POINTER;

	/*-------------------------*
	 * Initialize MAF Contexts *
	 *-------------------------*/

	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (ret != BioAPI_OK) return ret;

	if ((pAttachData = Addin_GetAttachData()) == NULL)
		SPI_RETURN(BioAPI_ERRCODE_INTERNAL_ERROR);

	/*-------------------------------------------------*
	 * Get the BIR from which the header will be taken *
	 *-------------------------------------------------*/
	ret = _biospi_GetBIRFromHandle(pAttachData, BIRHandle, &pFoundBIR);
	if (BioAPI_OK != ret) SPI_RETURN(ret);

	/* Copy the header into the application's memory space */
	port_memcpy((void*)Header, (void*)&(pFoundBIR->Header),
		sizeof(BioAPI_BIR_HEADER));

	SPI_RETURN(BioAPI_OK);
}
Esempio n. 26
0
File: pwbspi.c Progetto: ozgend/hive
BioAPI_RETURN BioAPI BioSPI_Enroll(
					BioAPI_HANDLE				ModuleHandle,
					BioAPI_BIR_PURPOSE		Purpose,
					const BioAPI_INPUT_BIR *StoredTemplate,
					BioAPI_BIR_HANDLE_PTR	NewTemplate,
					const BioAPI_DATA		   *Payload,
					sint32					  Timeout,
					BioAPI_BIR_HANDLE_PTR	AuditData )
{
	BioAPI_RETURN			   ret				  = BioAPI_OK;
	void					*pAddinContext		= NULL;
	BioAPI_BIR_HANDLE	   CapturedBIR;
	BioAPI_BIR			  *pInputCapturedBIR;
	ADDIN_ATTACH_DATA		*pAttachData		= NULL;
	const void	 *pLoadData			 = NULL;

	/*-----------------------------------------------------------------------*
	 * Check for bad parameters and initialize output for the case of errors *
	 *-----------------------------------------------------------------------*/

	if (NULL != StoredTemplate)
		return BioAPI_UNSUPPORTED_BIR_HANDLE;

	if (NULL == NewTemplate)
		return BioAPI_ERRCODE_INVALID_OUTPUT_POINTER;
	else
		*NewTemplate = BioAPI_INVALID_HANDLE;

	if (NULL != AuditData)
		*AuditData = BioAPI_UNSUPPORTED_BIR_HANDLE;

	/*-------------------------*
	 * Initialize MAF Contexts *
	 *-------------------------*/

	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (BioAPI_OK != ret) return ret;

	if ((NULL == (pAttachData = Addin_GetAttachData())) )
		SPI_RETURN(BioAPI_ERRCODE_INTERNAL_ERROR);

	/*---------------------------------------------*
	 * Capture the BIR that will be used to create *
	 * the new enrollment template				   *
	 *---------------------------------------------*/

	ret = _biospi_Capture(pAttachData, Purpose, &CapturedBIR);
	if (BioAPI_OK != ret) SPI_RETURN(ret);

	/*---------------------------------------------*
	 * Create the new enrollment template and	   *
	 * associate payload with the captured BIR	   *
	 *---------------------------------------------*/

	ret = _biospi_GetBIRFromHandle(pAttachData, CapturedBIR,
								&pInputCapturedBIR);
	if (BioAPI_OK != ret) SPI_RETURN(ret);

	ret = _biospi_CreateTemplate(  pAttachData,		   pLoadData,
								pInputCapturedBIR,	NewTemplate,
								Payload);
	if (BioAPI_OK != ret) SPI_RETURN(ret);

	/*---------------------------------------------------------*
	 * Release the BIR which was captured to perform the	   *
	 * enrollment											   *
	 *---------------------------------------------------------*/

	ret = _biospi_FreeBIRHandle(pAttachData, CapturedBIR);
	if (BioAPI_OK != ret) SPI_RETURN(ret);

	SPI_RETURN(BioAPI_OK);
}
Esempio n. 27
0
File: pwbspi.c Progetto: ozgend/hive
BioAPI_RETURN BioAPI BioSPI_GetBIRFromHandle(
					BioAPI_HANDLE		   ModuleHandle,
					BioAPI_BIR_HANDLE  BIRHandle,
					BioAPI_BIR_PTR	  *BIR )
{
	BioAPI_RETURN		 ret		   = BioAPI_OK;
	void			  *pAddinContext = NULL;
	BioAPI_BIR		*pFoundBIR	   = NULL;
	ADDIN_ATTACH_DATA *pAttachData	 = NULL;

	/*--------------------------*
	 * Check for bad parameters *
	 *--------------------------*/

	if (NULL == BIR)
		return BioAPI_ERRCODE_INVALID_OUTPUT_POINTER;

	/*-------------------------*
	 * Initialize MAF Contexts *
	 *-------------------------*/

	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (BioAPI_OK != ret) return ret;

	if (NULL == (pAttachData = Addin_GetAttachData()))
		SPI_RETURN(BioAPI_ERRCODE_INTERNAL_ERROR);

	/*----------------------------------------------------------------*
	 * Call to the internal routine where the real functionality lies *
	 *----------------------------------------------------------------*/
	 ret = _biospi_GetBIRFromHandle(pAttachData, BIRHandle, &pFoundBIR);
	 if (BioAPI_OK != ret) SPI_RETURN(ret);

	/* allocate memory in the Application's memory space
	 * for the BIR to be stored */
	*BIR = App_Malloc(ModuleHandle, sizeof(BioAPI_BIR));
	if (NULL == *BIR)
		return (BioAPIERR_BSP_MEMORY_ERROR);

	/* move BIR header to Application's memory space */
	port_memcpy((void*)&(*BIR)->Header, (void*)&(pFoundBIR->Header),
				sizeof(BioAPI_BIR_HEADER));

	/* allocate memory in the Application's memory space
	 * for the biometric data to be stored */
	(*BIR)->BiometricData = (BioAPI_BIR_BIOMETRIC_DATA*)
		App_Malloc(ModuleHandle, LocalEndian4 ((*BIR)->Header.Length) - sizeof(BioAPI_BIR_HEADER));
	if (NULL == (*BIR)->BiometricData)
		return (BioAPIERR_BSP_MEMORY_ERROR);

	/* move the BIR biometric data to the Application's memory space */
	port_memcpy((void*)(*BIR)->BiometricData,
				(void*)pFoundBIR->BiometricData,
				LocalEndian4 ((*BIR)->Header.Length) - sizeof(BioAPI_BIR_HEADER));

	/* This BSP cannot support signatures */
	(*BIR)->Signature = NULL;

	/*------------------------------------------------------------*
	 * Free the BIR now that it's been yielded to the application *
	 *------------------------------------------------------------*/
	ret = _biospi_FreeBIRHandle(pAttachData, BIRHandle);
	if (BioAPI_OK != ret) SPI_RETURN(ret);

	SPI_RETURN(BioAPI_OK);
}
Esempio n. 28
0
File: pwbspi.c Progetto: ozgend/hive
BioAPI_RETURN BioAPI BioSPI_Process(
					BioAPI_HANDLE				ModuleHandle,
					const BioAPI_INPUT_BIR *CapturedBIR,
					BioAPI_BIR_HANDLE_PTR	ProcessedBIR )
{
	BioAPI_RETURN			ret			   = BioAPI_OK;
	void				  *pAddinContext = NULL;
	BioAPI_BIR			*pBIRtoProcess = NULL;
	ADDIN_ATTACH_DATA	  *pAttachData	 = NULL;
	const void *pLoadData	  = NULL;


	/*-----------------------------------------------------------------------*
	 * Check for bad parameters and initialize output for the case of errors *
	 *-----------------------------------------------------------------------*/
	if (NULL == CapturedBIR)
		return BioAPI_ERRCODE_INVALID_INPUT_POINTER;

	if (NULL == ProcessedBIR)
		return BioAPI_ERRCODE_INVALID_OUTPUT_POINTER;
	else
		*ProcessedBIR = BioAPI_INVALID_HANDLE;

	/*-------------------------*
	 * Initialize MAF Contexts *
	 *-------------------------*/

	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (BioAPI_OK != ret) return ret;

	if ((NULL == (pAttachData = Addin_GetAttachData()))	 )
		SPI_RETURN(BioAPI_ERRCODE_INTERNAL_ERROR);

	/*-----------------------------------------------------------------*
	 * Check to ensure there are still handles available for more BIRs *
	 *-----------------------------------------------------------------*/
	if (pAttachData->HandleIndex < 0)
		/* Overflow, we've run out of handles */
		SPI_RETURN(BioAPIERR_BSP_TOO_MANY_HANDLES);

	/*-------------------------*
	 * Find the BIR to process *
	 *-------------------------*/

	if (BioAPI_FULLBIR_INPUT == CapturedBIR->Form)
		pBIRtoProcess = CapturedBIR->InputBIR.BIR;
	else if (BioAPI_BIR_HANDLE_INPUT == CapturedBIR->Form)
	{
		ret = _biospi_GetBIRFromHandle(
			pAttachData, *(CapturedBIR->InputBIR.BIRinBSP), &pBIRtoProcess);
		if (BioAPI_OK != ret) SPI_RETURN(ret);
	}
	else
		/* something went wrong - these are the only two
		 * forms supported by this BSP */
		SPI_RETURN(BioAPIERR_BSP_INVALID_BIR);

	/*----------------------------------------------------------------*
	 * Call to the internal routine where the real functionality lies *
	 *----------------------------------------------------------------*/
	ret = _biospi_Process(pAttachData, pLoadData, pBIRtoProcess, ProcessedBIR);
	if (BioAPI_OK != ret) SPI_RETURN(ret);


	SPI_RETURN(BioAPI_OK);
}
Esempio n. 29
0
File: pwbspi.c Progetto: ozgend/hive
BioAPI_RETURN BioAPI BioSPI_VerifyMatch(
					BioAPI_HANDLE				ModuleHandle,
					const BioAPI_FAR	   *MaxFARRequested,
					const BioAPI_FRR	   *MaxFRRRequested,
					const BioAPI_BOOL		   *FARPrecedence,
					const BioAPI_INPUT_BIR *ProcessedBIR,
					const BioAPI_INPUT_BIR *StoredTemplate,
					BioAPI_BIR_HANDLE	   *AdaptedBIR,
					BioAPI_BOOL				   *Result,
					BioAPI_FAR_PTR			FARAchieved,
					BioAPI_FRR_PTR			FRRAchieved,
					BioAPI_DATA_PTR			   *Payload )
{
	BioAPI_RETURN				ret			  = BioAPI_OK;
	void					 *pAddinContext = NULL;
	BioAPI_BIR			   *pCapturedBIR  = NULL;
	BioAPI_BIR			   *pTemplateBIR  = NULL;
	const ADDIN_ATTACH_DATA	 *pAttachData	= NULL;
	const void	  *pLoadData	 = NULL;

	/*-----------------------------------------------------------------------*
	 * Check for bad parameters and initialize output for the case of errors *
	 *-----------------------------------------------------------------------*/

	/* MaxFARRequested, MaxFRRRequested, and FARPrecedence are ignored
	 * anyway, so we won't quibble over those. See note below! */

	if (NULL == ProcessedBIR || NULL == StoredTemplate)
		return BioAPI_ERRCODE_INVALID_INPUT_POINTER;

	if (NULL != AdaptedBIR)
		*AdaptedBIR = BioAPI_UNSUPPORTED_BIR_HANDLE;

	if (NULL == FARAchieved || NULL == Result)
		return BioAPI_ERRCODE_INVALID_OUTPUT_POINTER;

	*Result	 = BioAPI_FALSE;
	if (Payload)
		*Payload = NULL;

	/*--------------------------------------------------------------------------*
	 * A note to begin this function, the false accept rate (FAR) for this BSP	*
	 * is by nature next to nothing.  The chances of someone being validated	*
	 * by entering an incorrect password whose hash collides with the correct	*
	 * one seems to me to have about the same odds as a person getting hit by	*
	 * lightning 3 times in each of 3 states where he's won the lotto.	We'll	*
	 * just consider this to be zero, and ignore the parameter.	 The false		*
	 * reject rate (FRR) is most certainly zero - if someone enters the correct *
	 * pasword, they WILL get access.  No question there, so this parameter can *
	 * also be ignored.	 Similarly, the returned FAR and FRR achieved will		*
	 * always be 0 and 0.														*
	 *--------------------------------------------------------------------------*/
	*FARAchieved = 0;
	if (FRRAchieved)
		*FRRAchieved = 0;

	/*-------------------------*
	 * Initialize MAF Contexts *
	 *-------------------------*/

	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (BioAPI_OK != ret) return ret;

	if ((NULL == (pAttachData = Addin_GetAttachData())) )
		SPI_RETURN(BioAPI_ERRCODE_INTERNAL_ERROR);

	/*------------------------*
	 * Find the BIR to verify *
	 *------------------------*/

	if (BioAPI_FULLBIR_INPUT == ProcessedBIR->Form)
		pCapturedBIR = ProcessedBIR->InputBIR.BIR;
	else if (BioAPI_BIR_HANDLE_INPUT == ProcessedBIR->Form)
	{
		ret = _biospi_GetBIRFromHandle(
			pAttachData, *(ProcessedBIR->InputBIR.BIRinBSP), &pCapturedBIR);
		if (BioAPI_OK != ret) SPI_RETURN(ret);
	}
	else
		/* something went wrong - these are the only two
		 * forms supported by this BSP */
		SPI_RETURN(BioAPIERR_BSP_INVALID_BIR);

	/*-----------------------------------------*
	 * Find the template BIR to verify against *
	 *-----------------------------------------*/

	if (BioAPI_FULLBIR_INPUT == StoredTemplate->Form)
		pTemplateBIR = StoredTemplate->InputBIR.BIR;
	else if (BioAPI_BIR_HANDLE_INPUT == StoredTemplate->Form)
	{
		ret = _biospi_GetBIRFromHandle(
			pAttachData, *(StoredTemplate->InputBIR.BIRinBSP), &pTemplateBIR);
		if (BioAPI_OK != ret) SPI_RETURN(ret);
	}
	else
		/* something went wrong - these are the only two
		 * forms supported by this BSP */
		SPI_RETURN(BioAPIERR_BSP_INVALID_BIR);

	/*----------------------------------------------------------------*
	 * Call to the internal routine where the real functionality lies *
	 *----------------------------------------------------------------*/
	ret = _biospi_VerifyMatch( pAttachData,	   pLoadData,  ModuleHandle, pCapturedBIR,
							pTemplateBIR,	Result,		Payload);
	if (BioAPI_OK != ret) SPI_RETURN(ret);

	SPI_RETURN(BioAPI_OK);
}
Esempio n. 30
0
File: pwbspi.c Progetto: ozgend/hive
BioAPI_RETURN BioAPI BioSPI_Verify(
					BioAPI_HANDLE				ModuleHandle,
					const BioAPI_FAR	   *MaxFARRequested,
					const BioAPI_FRR	   *MaxFRRRequested,
					const BioAPI_BOOL		   *FARPrecedence,
					const BioAPI_INPUT_BIR *StoredTemplate,
					BioAPI_BIR_HANDLE_PTR	AdaptedBIR,
					BioAPI_BOOL				   *Result,
					BioAPI_FAR_PTR			FARAchieved,
					BioAPI_FRR_PTR			FRRAchieved,
					BioAPI_DATA_PTR			   *Payload,
					sint32					  Timeout,
					BioAPI_BIR_HANDLE_PTR	AuditData )
{
	BioAPI_RETURN			   ret				  = BioAPI_OK;
	void					*pAddinContext		= NULL;
	BioAPI_BIR_HANDLE	   CapturedBIR;
	BioAPI_BIR			  *pInputCapturedBIR;
	BioAPI_BIR			  *pInputTemplateBIR;
	ADDIN_ATTACH_DATA		*pAttachData		= NULL;
	const void	 *pLoadData			 = NULL;

	/*-----------------------------------------------------------------------*
	 * Check for bad parameters and initialize output for the case of errors *
	 *-----------------------------------------------------------------------*/

	/* MaxFARRequested, MaxFRRRequested, and FARPrecedence are ignored
	 * anyway, so we won't quibble over those. See note below! */

	if (NULL == StoredTemplate)
		return BioAPI_ERRCODE_INVALID_INPUT_POINTER;

	if (NULL != AdaptedBIR)
		*AdaptedBIR = BioAPI_UNSUPPORTED_BIR_HANDLE;

	if (NULL == FARAchieved || NULL == Result)
		return BioAPI_ERRCODE_INVALID_OUTPUT_POINTER;

	if (NULL != AuditData)
		*AuditData = BioAPI_UNSUPPORTED_BIR_HANDLE;

	*Result	 = BioAPI_FALSE;
	if (Payload)
		*Payload = NULL;
	*FARAchieved = 0;
	if (FRRAchieved)
		*FRRAchieved = 0;

	/*-------------------------*
	 * Initialize MAF Contexts *
	 *-------------------------*/

	ADDIN_SPI_BEGIN(ret, ModuleHandle, pAddinContext);
	if (BioAPI_OK != ret) return ret;

	if (((ADDIN_ATTACH_DATA *)NULL == (pAttachData = Addin_GetAttachData())) )
		SPI_RETURN(BioAPI_ERRCODE_INTERNAL_ERROR);

	/*---------------------------------------------------------*
	 * Capture the BIR that will be used as verification	   *
	 * against the input template BIR						   *
	 *---------------------------------------------------------*/

	ret = _biospi_Capture( pAttachData, BioAPI_PURPOSE_VERIFY, &CapturedBIR);
	if (BioAPI_OK != ret) SPI_RETURN(ret);

	/*---------------------------------------------------------*
	 * Verify that the two BIRs had the same plaintext		   *
	 * password, and if so, grab the payload from the template *
	 *---------------------------------------------------------*/

	ret = _biospi_GetBIRFromHandle(pAttachData, CapturedBIR, &pInputCapturedBIR);
	if (BioAPI_OK != ret) SPI_RETURN(ret);

	/*-----------------------------------------*
	 * Find the template BIR to verify against *
	 *-----------------------------------------*/

	if (BioAPI_FULLBIR_INPUT == StoredTemplate->Form)
		pInputTemplateBIR = StoredTemplate->InputBIR.BIR;
	else if (BioAPI_BIR_HANDLE_INPUT == StoredTemplate->Form)
	{
		ret = _biospi_GetBIRFromHandle(
			pAttachData, *(StoredTemplate->InputBIR.BIRinBSP), &pInputTemplateBIR);
		if (BioAPI_OK != ret) SPI_RETURN(ret);
	}
	else
		/* something went wrong - these are the only two
		 * forms supported by this BSP */
		SPI_RETURN(BioAPIERR_BSP_INVALID_BIR);

	ret = _biospi_VerifyMatch(pAttachData, pLoadData, ModuleHandle,
						   pInputCapturedBIR,
						   pInputTemplateBIR,
						   Result,
						   Payload);
	if (BioAPI_OK != ret) SPI_RETURN(ret);

	/*---------------------------------------------------------*
	 * Release the BIR which was captured to perform the	   *
	 * verification											   *
	 *---------------------------------------------------------*/

	ret = _biospi_FreeBIRHandle(pAttachData, CapturedBIR);
	if (BioAPI_OK != ret) SPI_RETURN(ret);

	SPI_RETURN(BioAPI_OK);
}