Fazendo Cast entre Tipos de Certificados

4 respostas
TiagoFoil

Minha dúvida é a seguinte, Como faço pra fazer cast entre esses dois formatos de Certificados digitais?
“java.security.cert.X509Certificate” para “org.mozilla.jss.crypto.X509Certificate”

O processo inverso já consigo fazer. Porém do da sun pro do mozilla nao ta dando nem por reza braba.

Desde já agradeço à atenção de todos.

4 Respostas

danieldestro

Não sei se ajuda: http://www.mozilla.org/projects/security/pki/jss/faq.html#convertX509

Mas acho que org.mozilla.jss.crypto.X509Certificate deve implementar/estender java.security.cert.X509Certificate, correto?

Portanto o backward cast nem sempre é possível.

T

Você não pode fazer cast entre objetos não-relacionados. Ambos podem implementar ou estender (não sei exatamente se X509Certificate é uma classe ou interface) a mesma coisa, mas não são relacionados.
O que você pode fazer é obter a forma codificada (byte[]) usando getEncoded(), e criar um certificado com o tipo desejado a partir desses bytes (provavelmente você tem de encapsular esse byte[] em um ByteArrayInputStream.)

TiagoFoil

danieldestro:
Não sei se ajuda: http://www.mozilla.org/projects/security/pki/jss/faq.html#convertX509

Mas acho que org.mozilla.jss.crypto.X509Certificate deve implementar/estender java.security.cert.X509Certificate, correto?

Portanto o backward cast nem sempre é possível.

Obrigado Daniel, mas, já até encontrei esse link e testei. Só q eu consigo, no máximo fazer quest de “org.mozilla.jss.crypto.X509Certificate” para
“org.mozilla.jss.pkix.cert.Certificate”. Isso é possível fazendo

Certificate cert = (Certificate) ASN1Util.decode( Certificate.getTemplate(),x509Cert.getEncoded() );
Existe tbm a forma de fazer usando o tal Cryptomanager.importCertPackage(). Porém esse método gera uma excessao muito esquizita.

De qualquer forma obrigado. Vou continuar pesquisando e fazendo testes.

TiagoFoil

thingol:
Você não pode fazer cast entre objetos não-relacionados. Ambos podem implementar ou estender (não sei exatamente se X509Certificate é uma classe ou interface) a mesma coisa, mas não são relacionados.
O que você pode fazer é obter a forma codificada (byte[]) usando getEncoded(), e criar um certificado com o tipo desejado a partir desses bytes (provavelmente você tem de encapsular esse byte[] em um ByteArrayInputStream.)

E ae thingol?!

Seguinte, eu até consegui fazer o cast do Certificado Mozilla para o Certificado da Sun, pois eu consigo, através de uma fábrica gerar um Certificado da Sun por meio de um Array de Bytes.
Já esse infiliz do Certificado do Mozilla num tem nenhuma fábrica ou template. O máximo q tem é esse método Cryptomanager.importCertPackage(). Mas q nao sei porque nao funciona nem q a vaca tussa!

Desculpem os termos “vulgares” e obrigado pelas dicas!
Vou continuar tentando.

Criado 24 de agosto de 2006
Ultima resposta 24 de ago. de 2006
Respostas 4
Participantes 3