public PessoaJuridica(string cnpj, string inss, string razaoSocial, string nomeResponsavel, string dadosResponsavel)
        {
            try
            {
                if (string.IsNullOrEmpty(cnpj) || string.IsNullOrEmpty(razaoSocial) || string.IsNullOrEmpty(nomeResponsavel) || string.IsNullOrEmpty(dadosResponsavel))
                {
                    throw new CertificadoNetException(4);
                }

                CNPJ        = cnpj;
                INSS        = inss;
                RazaoSocial = razaoSocial;
                Responsavel = new PessoaFisica(nomeResponsavel, dadosResponsavel);
            }
            catch (Exception ex)
            {
                throw new CertificadoNetException(4, ex);
            }
        }
Beispiel #2
0
        private PessoaFisica ObterDadosPessoaFisica(X509Certificate2 certificado)
        {
            try
            {
                string     oid;
                byte[]     extensao;
                ASN1Helper helper;

                foreach (var ext in certificado.Extensions)
                {
                    if (ext.Oid.Value == OID_NOME_ALTERNATIVO_SUJEITO)
                    {
                        if (ext.Format(false).Contains(OID_PF_DADOS_TITULAR))
                        {
                            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);
                                    if (oid == OID_PF_DADOS_TITULAR)
                                    {
                                        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 (i < helper.TagList.Count)
                                        {
                                            var dadosTitular = helper.TagList[i].Format(extensao);

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

                                            var pessoaFisica = new PessoaFisica(nomeTitular, dadosTitular);
                                            return(pessoaFisica);
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            throw new CertificadoNetException(1);
                        }
                    }
                }

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