package gov.pr.celepar.tabeliao.core;
/*
Este programa � licenciado de acordo com a
LPG-AP (LICEN�A P�BLICA GERAL PARA PROGRAMAS DE COMPUTADOR DA ADMINISTRA��O P�BLICA),
vers�o 1.1 ou qualquer vers�o posterior.
A LPG-AP deve acompanhar todas PUBLICA��ES, DISTRIBUI��ES e REPRODU��ES deste Programa.
Caso uma c�pia da LPG-AP n�o esteja dispon�vel junto com este Programa, voc� pode contatar o LICENCIANTE ou ent�o acessar diretamente:
http://www.celepar.pr.gov.br/licenca/LPG-AP.pdf
Para poder USAR, PUBLICAR, DISTRIBUIR, REPRODUZIR ou ALTERAR este Programa
� preciso estar de acordo com os termos da LPG-AP
*/
import gov.pr.celepar.tabeliao.core.oid.OIDGenerico;
import gov.pr.celepar.tabeliao.core.oid.OID_2_16_76_1_3_1;
import gov.pr.celepar.tabeliao.core.oid.OID_2_16_76_1_3_2;
import gov.pr.celepar.tabeliao.core.oid.OID_2_16_76_1_3_3;
import gov.pr.celepar.tabeliao.core.oid.OID_2_16_76_1_3_4;
import gov.pr.celepar.tabeliao.core.oid.OID_2_16_76_1_3_5;
import gov.pr.celepar.tabeliao.core.oid.OID_2_16_76_1_3_6;
import gov.pr.celepar.tabeliao.core.oid.OID_2_16_76_1_3_7;
import gov.pr.celepar.tabeliao.core.oid.OID_2_16_76_1_3_8;
// import java.math.BigInteger;
import java.security.cert.CertificateParsingException;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Classe Certificado Extra <br>
* <br>
* Essa classe possui as informacoes extras definidas pela ICP-BRASIL para
* os certificado de Pessoa Fisica, Pessoa Juridica e Equipamentos. <br>
* Os campos estao definidos no DOC-ICP-04 v2.0 de 18/04/2006. <br>
*
* @author thiagom
*
*/
public class CertificadoExtra {
private static final Integer ZERO = new Integer(0);
private static final Integer UM = new Integer(1);
private String email = null;
private Map<String, OIDGenerico> extras = new HashMap<String, OIDGenerico>();
/*
private String toString(byte[] data){
if(data == null) {
return null;
}
return toString(new BigInteger(1, data));
}
private String toString(BigInteger bi) {
if(bi == null) {
return null;
}
String ret = bi.toString(16);
if(ret.length() % 2 == 1) {
ret = "0" + ret;
}
return ret.toUpperCase();
}
*/
/**
* Construtor do CertificadoExtra
*
* @param certificate
*/
public CertificadoExtra(X509Certificate certificate) {
try {
if(certificate.getSubjectAlternativeNames() == null) {
return;
}
for (List<?> list : certificate.getSubjectAlternativeNames()){
if(list.size() != 2) {
throw new Exception("O tamanho das informac�es extras dos certificados n�o est�o corretas.");
}
Object e1, e2;
e1 = list.get(0);
e2 = list.get(1);
if(! (e1 instanceof Integer)) {
throw new Exception("O tipodo par�metro da informa��o extra do certificado n�o e do tipo java.lang.Integer.");
}
Integer tipo = (Integer)e1;
if(tipo.equals(ZERO)) {
byte[] data = (byte[]) e2;
OIDGenerico oid = OIDGenerico.getInstance(data);
extras.put(oid.getOid(), oid);
} else if(tipo.equals(UM)) {
email = (String)e2;
}
}
} catch (CertificateParsingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Verifica se o certificado e de pessoa fisica
*
* @return true = se e um certificado de pessoa fisica.
*/
public boolean isCertificadoPF(){
return extras.get("2.16.76.1.3.1") != null;
}
/**
* Verifica se o certificado e de pessoa juridica
*
* @return true = se e um certificado de pessoa juridica.
*/
public boolean isCertificadoPJ(){
return extras.get("2.16.76.1.3.7") != null;
}
/**
* Verifica se o certificado e de equipamento
*
* @return true= se e um certificado de pessoa equipamento
*/
public boolean isCertificadoEquipamento(){
return extras.get("2.16.76.1.3.8") != null;
}
/**
* Classe OID 2.16.76.1.3.1 <br>
* <br>
* Possui alguns atributos de pessoa fisica: <br>
* <b>*</b> Data de nascimento do titular "DDMMAAAA" <br>
* <b>*</b> Cadastro de pessoa fisica (CPF) do titular <br>
* <b>*</b> Numero de Identidade Social - NIS (PIS, PASEP ou CI) <br>
* <b>*</b> Numero do Registro Geral (RG) do titular <br>
* <b>*</b> Sigla do orgao expedidor do RG <br>
* <b>*</b> UF do orgao expedidor do RG <br>
*
* @return OID_2_16_76_1_3_1
*/
public OID_2_16_76_1_3_1 getOID_2_16_76_1_3_1(){
return (OID_2_16_76_1_3_1)extras.get("2.16.76.1.3.1");
}
/**
* Classe OID 2.16.76.1.3.5 <br>
* <br>
* Possui alguns atributos de pessoa fisica: <br>
* <b>*</b> Numero de inscricao do Titulo de Eleitor <br>
* <b>*</b> Zona Eleitoral <br>
* <b>*</b> Secao <br>
* <b>*</b> Municipio do titulo <br>
* <b>*</b> UF do titulo <br>
*
* @return OID_2_16_76_1_3_5
*/
public OID_2_16_76_1_3_5 getOID_2_16_76_1_3_5(){
return (OID_2_16_76_1_3_5)extras.get("2.16.76.1.3.5");
}
/**
* Classe OID 2.16.76.1.3.6 <br>
* <br>
* Possui alguns atributos de pessoa fisica: <br>
* <b>*</b> Numero do Cadastro Especifico do INSS (CEI) da pessoa fisica titular do certificado <br>
*
* @return OID_2_16_76_1_3_6
*/
public OID_2_16_76_1_3_6 getOID_2_16_76_1_3_6(){
return (OID_2_16_76_1_3_6)extras.get("2.16.76.1.3.6");
}
/**
* Classe OID 2.16.76.1.3.2 <br>
* <br>
* Possui alguns atributos de pessoa juridica ou equipamento: <br>
* <b>*</b> Nome do responsavel pelo certificado <br>
*
* @return OID_2_16_76_1_3_2
*/
public OID_2_16_76_1_3_2 getOID_2_16_76_1_3_2(){
return (OID_2_16_76_1_3_2)extras.get("2.16.76.1.3.2");
}
/**
* Classe OID 2.16.76.1.3.3 <br>
* <br>
* Possui alguns atributos de pessoa juridica ou equipamento: <br>
* <b>*</b> Cadastro Nacional de Pessoa Juridica (CNPJ) da pessoa juridica titular do certificado <br>
*
* @return OID_2_16_76_1_3_3
*/
public OID_2_16_76_1_3_3 getOID_2_16_76_1_3_3(){
return (OID_2_16_76_1_3_3)extras.get("2.16.76.1.3.3");
}
/**
* Classe OID 2.16.76.1.3.4 <br>
* <br>
* Possui alguns atributos de pessoa juridica ou equipamento: <br>
* <b>*</b> Data de nascimento do titular "DDMMAAAA" <br>
* <b>*</b> Cadastro de pessoa fisica (CPF) do titular <br>
* <b>*</b> Numero de Identidade Social - NIS (PIS, PASEP ou CI) <br>
* <b>*</b> Numero do Registro Geral (RG) do titular <br>
* <b>*</b> Sigla do orgao expedidor do RG <br>
* <b>*</b> UF do orgao expedidor do RG <br>
*
* @return OID_2_16_76_1_3_4
*/
public OID_2_16_76_1_3_4 getOID_2_16_76_1_3_4(){
return (OID_2_16_76_1_3_4)extras.get("2.16.76.1.3.4");
}
/**
* Classe OID 2.16.76.1.3.7 <br>
* <br>
* Possui alguns atributos de pessoa juridica: <br>
* <b>*</b> Numero do Cadastro Especifico do INSS (CEI) da pessoa juridica titular do certificado <br>
*
* @return OID_2_16_76_1_3_7
*/
public OID_2_16_76_1_3_7 getOID_2_16_76_1_3_7(){
return (OID_2_16_76_1_3_7)extras.get("2.16.76.1.3.7");
}
/**
* Classe OID 2.16.76.1.3.8 <br>
* <br>
* Possui alguns atributos de equipamento: <br>
* <b>*</b> Nome empresarial constante do Cadastro Nacional de Pessoa Juridica (CNPJ),
* sem abreviacoes, se o certificado for de pessoa juridica<br>
*
* @return OID_2_16_76_1_3_8
*/
public OID_2_16_76_1_3_8 getOID_2_16_76_1_3_8(){
return (OID_2_16_76_1_3_8)extras.get("2.16.76.1.3.8");
}
/**
*
* @return endereco de e-mail armazenado no certificado.
*/
public String getEmail(){
return email;
}
}