Pregunta

Estoy intentando escribir un applet que firmar e-mail con S / MIME.

Obviamente quiero hacer un pequeño frasco con solamente la materia requerida. Obviamente la manera de hacer de Java que consiste en tener un enorme sagrada firmado frasco Castillo hinchable JCE alrededor.

La pregunta es: ¿Cuál es la forma más fácil de conseguir S / MIME sin tocar JCE y hacer que se quejan de "autentificación" "proveedores"? Tal vez hay una aplicación S / MIME que no depende de la JCE? Tal vez es posible utilizar Castillo hinchable S / MIME utilizando su API de peso ligero sin tocar JCE? Tal vez hay alguna otra manera?

Es obvio que nada puede impedir que una algoritmos de cifrado de código abierto en Java de trabajar independientemente de si Sun aprueba, así que no es una cuestión de posibilidad teórica, más bien, ¿cuál camino es el menos doloroso

?

Por supuesto, siempre puede ir fea temprana por el acaparamiento de Castillo Hinchable de en Java aplicación JCE, cambiar el nombre de sus paquetes a java.security1, y hacer los cambios que quiero -. Pero de esta manera se ve muy doloroso en este momento

Actualizar Mi problema actual con el uso de Castillo Hinchable directamente:. Intento cargar claves de almacén de claves, que implica el uso SecretKeyFactory, que a su vez rechaza mi Castillo Hinchable construir

¿Fue útil?

Solución 2

Es bastante sencillo para firmar los mensajes sin necesidad de utilizar JCE. El verdadero problema estaba leyendo PKCS # 12 teclas.

Lo hice:  * Copiado clase JDKPKCS12KeyStore terminado.  * En todas partes en ella, sustituyen Security.getInstance () con bcProvider.getService (). NewInstance () (que devuelve Spi-s)  * En los Spi-s (en las fuentes BC) hizo métodos necesarios público en lugar de proteger.

Parece un truco, pero parece que funciona en realidad.

Otros consejos

BC S / MIME está escrito sobre el paquete CMS, por lo que la pregunta realmente incumbe a modificar el paquete de CMS para que toda la criptografía se realiza utilizando las clases de peso ligero.

Algo similar se ha hecho ya, más o menos éxito, para la versión .NET del castillo hinchable. Estamos tratando (la verdad es que es un proceso lento) refactorizar la versión de Java por lo que el material de la CMS puede trabajar con cualquiera JCE o ligero. El mismo problema afecta a otras partes de la API BC demasiado, por ejemplo, el almacén de claves PKCS # 12 está integrado en el proveedor de JCE, el paquete OpenPGP se escribe en JCE, etc. Los puertos de .NET de éstos los reescribió a la API de peso ligero también.

Su problema es probablemente más sencillo que el caso general, sin embargo. Es de suponer que sólo necesita la CMSSignedDataGenerator y clases de apoyo. Es probable que no necesita todas las innumerables variaciones de addSigner o generar. Si usted acaba de decidir sobre su compendio / firma algoritmos en la delantera, entonces toda la materia proveedor será fácil de reemplazar con llamadas codificadas a implementaciones específicas ligeros.

En lugar de un almacén de claves, tal vez usted podría conseguir lejos con sólo almacenar una sola clave privada en un archivo PKCS # 8 (PEM codificado tal vez). Del mismo modo para el certificado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top