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); } }
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); } }