Obter campo especial de um certificado X-509

2 respostas
tenenteJoao

Pessoal,

tenho um certificado no formato X-509, ele tem um campo especial. Posso pegar o valor desse campo usando o metodo java.security.cert.X509Certificate.getExtensionValue(String).

Este metodo retorna um array de bytes.

  • Como posso converter o valor desse campo para o seu valor real em String?
  • Esse array de bytes esta em que base (hexa, octa, etc…)?

Apos pesquisar eu vi que o array de bytes retornado eh um octeto no formato DER. Como eu posso converter esse octeto??

Obrigado.

2 Respostas

T

Você precisa aprender um pouco sobre ASN.1, visto que mesmo se você usar uma biblioteca (como o BouncyCastle, http://www.bouncycastle.org ) é necessário saber o que é SEQUENCE, SEQUENCE OF, CHOICE, SET, PrintString, UniversalString, IA5String, BIT STRING, PrintableString, OID etc.

Pegue as dicas sobre ASN.1 em:

http://asn1.elibel.tm.fr/
http://www.oss.com

Use o seguinte programa para “disassemblar” um certificado X.509:

dumpasn1
(você pode pegar o fonte em C em: http://www.cs.auckland.ac.nz/~pgut001/ )

tenenteJoao

Consegui,

Os campos do certificado sao tratados como extensoes, porem alguns sao convertidos automaticamente, como por exemplo o Subject.

os campos do certificado sao octetos no formato DER onde a terceira posicao do octeto eh o valor armazenado.

Converti o campo especial para um octeto DER, isso me devolveu o valor do campo em formato decimal, a partir dai foi tranquilo.

Criado 4 de maio de 2007
Ultima resposta 9 de mai. de 2007
Respostas 2
Participantes 2