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 java.security.cert.X509Certificate;
/**
* Classe para tratamento dos usos do certificado recebido como parametro
*
* @author Thiago Meneghello <thiagomeneghello@ecelepar.pr.gov.br> CELEPAR/GIC
*
*/
public class TabeliaoKeyUsage {
private static final String[] KEY_USAGE = {
"digitalSignature",
"nonRepudiation",
"keyEncipherment",
"dataEncipherment",
"keyAgreement",
"keyCertSign",
"cRLSign",
"encipherOnly",
"decipherOnly" };
private boolean[] keyUsage;
/**
*
* @param cert -> Certificado ICP-BRASIL
*/
public TabeliaoKeyUsage(X509Certificate cert){
this.keyUsage = cert.getKeyUsage();
}
/**
*
* @return true, se eh um certificado de assinatura (A1, A2, A3 ou A4).
*/
public boolean isDigitalSignature(){
return keyUsage[0];
}
/**
*
* @return true, se possui atributo de Nao repudio
*/
public boolean isNonRepudiation() {
return keyUsage[1];
}
/**
*
* @return true, se permite � cifragem � de � chave� criptografica
*/
public boolean isKeyEncipherment() {
return keyUsage[2];
}
/**
*
* @return true, se permite cifrar dados diretamente, exceto chaves criptograficas.
*/
public boolean isDataEncipherment() {
return keyUsage[3];
}
/**
*
* @return true, se permite � a � obtencao � de � chaves � de � sessao
*/
public boolean isKeyAgreement() {
return keyUsage[4];
}
/**
*
* @return true, se permite � que � seja � usada � para� assinatura�de�certificados
*/
public boolean isKeyCertSign() {
return keyUsage[5];
}
/**
*
* @return true, se permite�que�seja�usada�para�assinatura�de�LCR�(Lista�de�Certificados�Revogados)
*/
public boolean isCRLSign() {
return keyUsage[6];
}
/**
*
* @return usado somente em conjunto com a opcao keyAgreement e indica que a chave de sessao obtida
* somente pode ser�usada�para�cifrar�dados
*/
public boolean isEncipherOnly() {
return keyUsage[7];
}
/**
*
* @return semelhante ao encipherOnly, porem a chave de sessao�obtida�somente�pode�executar�
* a�operacao�de�decifrar
*/
public boolean isDecipherOnly() {
return keyUsage[8];
}
/**
*
* @return formato texto plano da propriedade.
*/
public String toString(){
String ret = "";
for(int i=0 ; i<keyUsage.length ; i++) {
if(keyUsage[i]){
if(ret.length() > 0) {
ret += ", ";
}
ret += KEY_USAGE[i];
}
}
return ret;
}
}