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.
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
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.)
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.