Beispiel #1
0
 public CertificadoDigital(X509Certificate2 certificado)
 {
     try
     {
         ValidoAPartir   = certificado.NotBefore;
         ValidoAte       = certificado.NotAfter;
         PeriodoValido   = DateTime.Now > certificado.NotBefore && DateTime.Now < certificado.NotAfter;
         TipoCertificado = ObterTipo(certificado);
         if (TipoCertificado == TipoCertificadoEnum.eCPF)
         {
             PessoaFisica = ObterDadosPessoaFisica(certificado);
         }
         else if (TipoCertificado == TipoCertificadoEnum.eCNPJ)
         {
             PessoaJuridica = ObterDadosPessoaJuridica(certificado);
         }
     }
     catch (Exception ex)
     {
         throw new CertificadoNetException("Erro na leitura do certificado", ex);
     }
 }
Beispiel #2
0
        private PessoaJuridica ObterDadosPessoaJuridica(X509Certificate2 certificado)
        {
            try
            {
                byte[]     extensao;
                ASN1Helper helper;
                string     cnpj             = null;
                string     inss             = null;
                string     razaoSocial      = null;
                string     nomeReponsavel   = null;
                string     dadosResponsavel = null;
                string     oid;

                int    ini  = certificado.Subject.IndexOf("CN=") + 3;
                int    meio = certificado.Subject.IndexOf(":", ini);
                string razaoSocialCN;
                if (meio != -1)
                {
                    razaoSocialCN = certificado.Subject.Substring(ini, meio - ini);
                }
                else
                {
                    int fim = certificado.Subject.IndexOf(", ", ini) - 1;
                    razaoSocialCN = certificado.Subject.Substring(ini, fim - ini + 1);
                }

                foreach (var ext in certificado.Extensions)
                {
                    if (ext.Oid.Value == OID_NOME_ALTERNATIVO_SUJEITO)
                    {
                        if (ext.Format(false).Contains(OID_PJ_DADOS_RESPONSAVEL))
                        {
                            extensao = ext.RawData;
                            helper   = new ASN1Helper(ref extensao);
                            for (int i = 0; i < helper.TagList.Count; i++)
                            {
                                if (helper.TagList[i].TagId == TagID.OBJECT_IDENTIFIER)
                                {
                                    oid = helper.TagList[i].Format(extensao);
                                    for (i++; (i < helper.TagList.Count) && ((helper.TagList[i].TagId != TagID.OCTET_STRING) && (helper.TagList[i].TagId != TagID.UTF8_STRING) && (helper.TagList[i].TagId != TagID.PrintableString)); i++)
                                    {
                                        ;
                                    }

                                    if (oid.Equals(OID_PJ_CNPJ))
                                    {
                                        cnpj = helper.TagList[i].Format(extensao);
                                    }
                                    else if (oid.Equals(OID_PJ_INSS))
                                    {
                                        inss = helper.TagList[i].Format(extensao);
                                    }
                                    else if (oid.Equals(OID_PJ_NOME_EMPRESARIAL))
                                    {
                                        razaoSocial = helper.TagList[i].Format(extensao);
                                    }
                                    else if (oid.Equals(OID_PJ_NOME_RESPONSAVEL))
                                    {
                                        nomeReponsavel = helper.TagList[i].Format(extensao);
                                    }
                                    else if (oid.Equals(OID_PJ_DADOS_RESPONSAVEL))
                                    {
                                        dadosResponsavel = helper.TagList[i].Format(extensao);
                                    }
                                }
                            }
                            if (razaoSocialCN != null && razaoSocial != null)
                            {
                                razaoSocial = $"{razaoSocial} ({razaoSocialCN})";
                            }
                            else
                            {
                                razaoSocial = razaoSocial ?? razaoSocialCN;
                            }
                            var pessoaJuridica = new PessoaJuridica(cnpj, inss, razaoSocial, nomeReponsavel, dadosResponsavel);
                            return(pessoaJuridica);
                        }
                        else
                        {
                            throw new CertificadoNetException(2);
                        }
                    }
                }

                return(null);
            }
            catch (Exception ex)
            {
                throw new CertificadoNetException(6, ex);
            }
        }