Problemas con DNI-E y Java

 

 

Buenas,

Estoy creando una aplicación que realiza una firma p7 mediante código java. Este PKCS7, si utilizo un certificado de la FNMT se crea bien y se valida perfectamente tanto en Java como en un script que utiliza la dll CAPICOM de Microsoft. Pero el problema viene cuando utilizamos un certificado del DNI-E para firmar el p7. No se puede validar con la CAPICOM pero en Java si. Después de darle mil vueltas hemos encontrado donde está el problema.

El p7 tiene un campo que es el SignerInfo compuesto por una serie de campos, los cuales uno de ellos es el Issuer y el Serial Number. Pues se han encontrado diferencias al crear el p7 con la capicom usando el dni-e y el p7 con java usando el mismo certificado. Concretamente el problema está en el Issuer. Si se pasa a binario el p7 nos encontramos que el creado por java tiene unos bytes a 0x13 y que la capicom espera 0x0f para que se pueda validar. Por lo tanto existe como un error en la función del SignerInfo de Java.

¿Alguién sabe como se puede solucionar?

Muchas gracias.

Comentarios

Selecciona arriba tu forma preferida de visualizar los comentarios y pulsa el botón para guardar tu elección para próximas visitas (sólo si eres usuario registrado).
serhost's picture

No te querría decepcionar,


No te querría decepcionar, pero son distintas entidades, por lo tanto no lo puedes verificar contra la fnmt algo que haya dado la policía.

Si has pagado por acceder a los certificados de revocación de la fnmt, lo siento, si no, mejor para ti.

fnmt=certificados para ciertas webs
dnie=certificados de la policía

En otro post mío hay un enlace a la página para verificarlos en la policia (es gratis verificar una firma/certificado para saber si no ha sido anulado) al contrario que con la fnmt, al menos si usas java (que yo sepa), si, ya se que supuestamente la dll es gratis.

Yorch's picture

Distinto problema


El problema que tengo es distinto. Yo puedo verificar una firma sin entrar en revocados, sin comprobar si estan revocados, solo realizar la comprobacion de la hash y del issuer. Por lo que no importaría si son fnmt o dnie. El problema esta en que una firma creada por java mediante dnie no puede ser validada por la capicom, si alguien lo consigue que me lo haga saber, es muy importante.

Muchas gracias por contestar.