CERTIFICADO DIGITAL

 Tópico anterior Próximo tópico Novo tópico

CERTIFICADO DIGITAL

C#

 Compartilhe  Compartilhe  Compartilhe
#480074 - 09/03/2018 09:09:37

JOSECPD
ITABUNA
Cadast. em:Maio/2009


Ola Pessoal.
Não estou conseguindo reconhecer o certificado digital Modelo A1
com esse comando abaixo no C#:

//BUSCA CERTIFICADOS INSTALADOS SE INFORMADO UMA SERIE BUSCA A MESMA
        //SE NÃO ABRE CAIXA DE DIALOGOS DE CERTIFICADO
        public X509Certificate2 SelecionarCertificado(string CerSerie)
        {
            X509Certificate2 certificate = new X509Certificate2();
            ok = true;
            try
            {
                X509Certificate2Collection certificatesSel = null;
                X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
                store.Open(OpenFlags.OpenExistingOnly);
                X509Certificate2Collection certificates = store.Certificates.Find(X509FindType.FindByTimeValid, DateTime.Now, true).Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, true);
                if ((string.IsNullOrEmpty(CerSerie)))
                {
                    certificatesSel = X509Certificate2UI.SelectFromCollection(certificates, "Certificados Digitais", "Selecione o Certificado Digital para uso no aplicativo", X509SelectionFlag.SingleSelection);
                    if ((certificatesSel.Count == 0))
                    {
                        certificate.Reset();
                        //Throw New Exception("Nenhum certificado digital foi selecionado ou o certificado selecionado está com problemas.")
                        mensagem += "Nenhum certificado digital foi selecionado ou o certificado selecionado está com problemas.";
                        ok = false;
                    }
                    else
                    {
                        certificate = certificatesSel[0];
                    }
                }
                else
                {
                    certificatesSel = certificates.Find(X509FindType.FindBySerialNumber, CerSerie, true);
                    if ((certificatesSel.Count == 0))
                    {
                        certificate.Reset();
                        //Throw New Exception("Certificado digital não encontrado")
                        mensagem += "Certificado digital não encontrado";
                        ok = false;
                    }
                    else
                    {
                        certificate = certificatesSel[0];
                    }
                }
                store.Close();
            }
            catch (Exception)
            {
                //Throw New Exception(exception.Message)
                mensagem += "Falha detectada ao verificar o certificado";
                ok = false;
            }

            return certificate;
        }

alguem saberia me dizer se estou fazendo alguma coisa errada.




#480075 - 09/03/2018 09:15:45

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


na mesma maquina vc acessa algum outro local que exige certificado ?



#480081 - 09/03/2018 11:21:55

JOSECPD
ITABUNA
Cadast. em:Maio/2009


ja achei pessoal
o correto esta abaixo:

            X509Certificate2 oCertificado;
            var oX509Cert = new X509Certificate2();
            var store = new X509Store("MY", StoreLocation.CurrentUser);
            store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
            var collection = store.Certificates;
            var collection1 = collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);
            var collection2 = collection.Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, false);
            var scollection = X509Certificate2UI.SelectFromCollection(collection2,
                "Certificado(s) Digital(is) disponível(is)", "Selecione o certificado digital para uso no aplicativo",
                X509SelectionFlag.SingleSelection);

            if (scollection.Count == 0)
            {
                var msgResultado =
                    "Nenhum certificado digital foi selecionado ou o certificado selecionado está com problemas.";
                MessageBox.Show(msgResultado, "Advertência", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                oX509Cert = scollection[0];
                oCertificado = oX509Cert;
               txtNomeCertificado.Text = oCertificado.IssuerName.Name;
                txtSeriaCertificado.Text = oCertificado.SerialNumber;
               txtDataCertificado.Text = oCertificado.NotBefore + " à " + oCertificado.NotAfter;
            }

valeu.




 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por JOSECPD em 14/06/2018 09:24:20