Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con PKC, J2ME e IAIK

Estas en el tema de Problema con PKC, J2ME e IAIK en el foro de Java en Foros del Web. Hola a todos, Recurro a vosotros porque llevo unos dias bastante desesperado dandole vueltas a un problema que no consigo resolver. Estoy desarrollando una aplicacion ...
  #1 (permalink)  
Antiguo 15/10/2010, 10:50
 
Fecha de Ingreso: junio-2008
Mensajes: 175
Antigüedad: 15 años, 10 meses
Puntos: 11
Problema con PKC, J2ME e IAIK

Hola a todos,

Recurro a vosotros porque llevo unos dias bastante desesperado dandole vueltas a un problema que no consigo resolver. Estoy desarrollando una aplicacion en J2ME para validar certificados digitales y no consigo obtener los campos que necesito para sacar el hash o la firma digital del certificado. La libreria que he escogido es IAIK para plataformas moviles (IAIK_ME) con la que en teoria deberia resultar sencillo sacar cada uno de los campos de mi certificado, pero por algun motivo me da error a la hora de obtener el campo toBeSigned en formato byte[]

Código PHP:
 String path "file:///c:/Data/Images/Pictures/certificado_pkc.cer";
 try{
            
byte[] salida getBytesFromFile(path);
            
String salidaBase64 iaik.me.utils.Base64.encode(salida);
            
System.out.println("Certificado en base64: ");
            
System.out.println(salidaBase64);
            
ASN1 tbsCertificate salidaASN1.getElementAt(0);
            
byte[] tbsCertificateByte tbsCertificate.gvByteArray();

            
System.out.println("Certificado cifrado con KPU: ");
            
System.out.println("******************************************");
            
System.out.println("Datos a cifrar: "+iaik.me.utils.Base64.encode(tbsCertificateByte));
            
X509Certificate certbytes = new X509Certificate(salida);
            
String algoritmo certbytes.getSigAlgOID();
            
PublicKey KPU certbytes.getPublicKey();
            
System.out.println(iaik.me.utils.Base64.encode(getHash(algoritmotbsCertificateByteKPU)));
.....

El problema que tengo es aqui: byte[] tbsCertificateByte = tbsCertificate.gvByteArray() que es cuando intento crear el array de bytes que pasare a mi funcion para obtener el hash. Cuando llega ahi me lanza la excepcion

Error: java.io.IOException: Not a byte[] type: 16

Que en teoria aparece en el siguiente caso:

Código:
gvByteArray

public byte[] gvByteArray()
                   throws IOException

    Get the value as a byte array. If this is not an byte[] type, an IOException is thrown.
Pero lo raro del asunto es que si cojo el 3er elemento (indice 2 que corresponde a la firma) y lo meto en un array de bytes, no me da ningun problema. Solo me lanza la excepcion cuando cojo el primer o segundo elemento del certificado

Código PHP:
            ASN1 tbsCertificate salidaASN1.getElementAt(2);
            
byte[] tbsCertificateByte tbsCertificate.gvByteArray(); 
Alguna sugerencia de lo que podria ser? Perdon por haberme extendido tanto y un saludo!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:01.