public Resultado <Digital, Falha> IdentificarDigital(byte[] digitalLida, Digital digitalParaComparar) { var encontrou = false; var payload = new NBioAPI.Type.FIR_PAYLOAD(); NBioAPI.Type.HFIR digitalLidaConvertida; _apiConversor.FDxToNBioBSPEx(digitalLida, (uint)digitalLida.Length, NBioAPI.Type.MINCONV_DATA_TYPE.MINCONV_TYPE_ISO, NBioAPI.Type.FIR_PURPOSE.ENROLL_FOR_IDENTIFICATION_ONLY, out digitalLidaConvertida); NBioAPI.Type.HFIR digitalParaCompararConvertida; _apiConversor.FDxToNBioBSPEx(digitalParaComparar.TemplateIso, (uint)digitalParaComparar.TemplateIso.Length, NBioAPI.Type.MINCONV_DATA_TYPE.MINCONV_TYPE_ISO, NBioAPI.Type.FIR_PURPOSE.ENROLL_FOR_IDENTIFICATION_ONLY, out digitalParaCompararConvertida); var retorno = _api.VerifyMatch(digitalLidaConvertida, digitalParaCompararConvertida, out encontrou, payload); if (encontrou) { var cbInfo = new NBioAPI.IndexSearch.CALLBACK_INFO_0(); NBioAPI.IndexSearch.FP_INFO[] informacaoBiometria; NBioAPI.IndexSearch.FP_INFO nitgenBiometria; var resultadoAddFir = _apiBusca.AddFIR(digitalLidaConvertida, (uint)digitalParaComparar.Id, out informacaoBiometria); retorno = _apiBusca.IdentifyData(digitalLidaConvertida, NBioAPI.Type.FIR_SECURITY_LEVEL.HIGHEST, out nitgenBiometria, cbInfo); var idEncontrado = nitgenBiometria.ID; _apiBusca.RemoveUser((uint)digitalParaComparar.Id); if (idEncontrado > 0) { return(digitalParaComparar); } } Debug.WriteLine($"digital {digitalParaComparar.Id}"); return(Falha.Nova(404, "Digital não encontrada")); }
//verifica o formato a importar e converte para formato nitgen. private void Button2_Click(object sender, EventArgs e) { if (rb_hv01.Checked) { importType = NBioAPI.Type.MINCONV_DATA_TYPE.MINCONV_TYPE_FIM01_HV; } else if (rb_ISO.Checked) { importType = NBioAPI.Type.MINCONV_DATA_TYPE.MINCONV_TYPE_ISO; } try { m_Export.FDxToNBioBSPEx(minData, nSize, importType, NBioAPI.Type.FIR_PURPOSE.VERIFY, out processedFIR); } catch (Exception) { String error = "Formato incompatível "; MessageBox.Show(error); return; } NBioAPI.Type.FIR_TEXTENCODE textencode; nBioAPI.GetTextFIRFromHandle(processedFIR, out textencode, true); txt_textencode.Text = textencode.TextFIR; MessageBox.Show("Convertido com Sucesso"); }
private DigitalTask Create(NBioAPI.Type.HFIR template, IEnumerable <Biometria> biometrias) { var nitgenMainApi = new NBioAPI(); var nitgenSearchApi = new NBioAPI.IndexSearch(nitgenMainApi); nitgenSearchApi.InitEngine(); var nitgenConvertApi = new NBioAPI.Export(nitgenMainApi); var contextoIdentificacao = BiometriaIndentificacaoContexto.Novo(nitgenSearchApi, nitgenConvertApi); contextoIdentificacao.TemplateLido = template; var cancellationToken = new CancellationTokenSource(); var token = cancellationToken.Token; foreach (var biometria in biometrias) { NBioAPI.Type.HFIR handle; NBioAPI.IndexSearch.FP_INFO[] nitgenBiometria; nitgenConvertApi.FDxToNBioBSPEx(biometria.TemplateISO, (uint)biometria.TemplateISO.Length, NBioAPI.Type.MINCONV_DATA_TYPE.MINCONV_TYPE_ISO, NBioAPI.Type.FIR_PURPOSE.ENROLL_FOR_IDENTIFICATION_ONLY, out handle); nitgenSearchApi.AddFIR(handle, (uint)biometria.Id, out nitgenBiometria); } var task = new Task <int>((parametroState) => { var contexto = parametroState as BiometriaIndentificacaoContexto; Console.WriteLine($"{contexto.Id} - Iniciado "); if (token.IsCancellationRequested) { token.ThrowIfCancellationRequested(); } // Faz o Index Search var cbInfo = new NBioAPI.IndexSearch.CALLBACK_INFO_0(); NBioAPI.IndexSearch.FP_INFO nitgenBiometria; var relogio = new Stopwatch(); Console.WriteLine($"{contexto.Id} - Localizando biometria..."); relogio.Start(); var retorno = nitgenSearchApi.IdentifyData(contexto.TemplateLido, NBioAPI.Type.FIR_SECURITY_LEVEL.HIGH, out nitgenBiometria, cbInfo); relogio.Stop(); Console.WriteLine($"{contexto.Id} - Localizado {nitgenBiometria.ID} em {relogio.Elapsed.TotalSeconds}"); if (token.IsCancellationRequested) { token.ThrowIfCancellationRequested(); } Console.WriteLine($"{contexto.Id} - Finalizado "); return((int)nitgenBiometria.ID); }, contextoIdentificacao, token); return(new DigitalTask(contextoIdentificacao.Id, task, cancellationToken)); }
public void Leitura(string Arquivo, string PathSalvamento) { NBioAPI HandleBio; uint Retorno = NBioAPI.Error.NONE; uint NenhumErro = NBioAPI.Error.NONE; NBioAPI.Type.MINCONV_DATA_TYPE importType; NBioAPI.Export m_Export; NBioAPI.Type.HFIR processedFIR; NBioAPI.Type.INIT_INFO_0 initInfo0; uint nSize = 0; byte[] minData = null; //----------------------- try { FileStream fs = new FileStream(PathSalvamento + Arquivo, FileMode.Open, FileAccess.Read); BinaryReader fr = new BinaryReader(fs); nSize = (uint)fs.Length; minData = new byte[nSize]; fr.Read(minData, 0, (int)nSize); fr.Close(); fs.Close(); } catch (FileNotFoundException e) { MessageBox.Show("Erro localizar arquivo biometrico\n" + e.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } HandleBio = new NBioAPI(); HandleBio.OpenDevice(NBioAPI.Type.DEVICE_ID.AUTO); if (Retorno != NenhumErro) { MessageBox.Show("Erro ao verificar digital", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); HandleBio.Dispose(); return; } importType = NBioAPI.Type.MINCONV_DATA_TYPE.MINCONV_TYPE_FDU; m_Export = new NBioAPI.Export(HandleBio); Retorno = m_Export.FDxToNBioBSPEx(minData, nSize, importType, NBioAPI.Type.FIR_PURPOSE.VERIFY, out processedFIR); if (Retorno != NenhumErro) { MessageBox.Show("Erro ao verificar digital", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); HandleBio.CloseDevice(NBioAPI.Type.DEVICE_ID.AUTO); HandleBio.Dispose(); return; } Retorno = HandleBio.GetInitInfo(out initInfo0); if (Retorno != NenhumErro) { MessageBox.Show("Erro ao coletar informações do dispositivo", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); HandleBio.Dispose(); return; } initInfo0.EnrollImageQuality = 90; initInfo0.VerifyImageQuality = 90; initInfo0.SecurityLevel = 7; Retorno = HandleBio.SetInitInfo(initInfo0); if (Retorno != NenhumErro) { MessageBox.Show("Erro ao setar informações iniciais do dispositivo", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); HandleBio.Dispose(); return; } Boolean bResult; Retorno = HandleBio.Verify(processedFIR, out bResult, null); if (Retorno != NenhumErro) { MessageBox.Show("Erro ao verificar digital", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { if (!bResult) { MessageBox.Show("Vendedor não autenticado", "Falha ao autenticar", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { try { MessageBox.Show("Autenticação realizada com sucesso", "Sucesso!!", MessageBoxButtons.OK, MessageBoxIcon.None); FileStream validacao = new FileStream(Path.GetTempPath() + "Result_" + Arquivo, FileMode.CreateNew, FileAccess.Write); BinaryWriter fw = new BinaryWriter(validacao); fw.Write("#$&%&$*%¨$*$¨%$*&($$)$)$¨$&¨%$*$&¨#%%(*%)"); fw.Close(); validacao.Close(); } catch (FileNotFoundException e) { MessageBox.Show("Erro localizar arquivo biometrico\n" + e.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } HandleBio.CloseDevice(NBioAPI.Type.DEVICE_ID.AUTO); }