示例#1
0
        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));
        }
示例#4
0
        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);
        }