Iep, Por si a alguien le pudiera ayudar he conseguido que el applet cargue el controlador de forma AUTOMÁTICA desde firefox (3.6.13 / Ubuntu)
Anteriormente, con el applet de pruebas 2.1.0 de la página CryptoApplet sólo había conseguido cargar el certificado cargando de forma MANUAL el driver desde el applet. He generado una aplicación web con la versión trunk del SVN (2.1.1) y ahora me pide el pin del dnie con mi tarjeta Sinadura segun carga el applet en el navegador, es decir detecta satisfactoriamente el driver de forma automática. Antes, según las trazas también estaba apuntando a la misma librería opensc pero desconozco el motivo por el que fallaba en la carga inicial automática. Debe ser cosa de la versión de CryptoApplet ya que la versión del firefox y java siguen siendo la misma. _________ De todas formas las trazas no son nada concluyentes y causan bastante confusión <pre> Java Plug-in 1.6.0_22 Usar versión JRE 1.6.0_22-b04 Java HotSpot(TM) Client VM Directorio local del usuario = /home/irune DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.JSCommands [13:29:59,593] - New access to browser window from Applet DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.SignatureApplet [13:29:59,601] - Looking for suitable Look&Feels DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.SignatureApplet [13:29:59,669] - Nimbus Look&Feel loaded DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.AppHandler [13:29:59,702] - Get JavaScript member: navigator DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.AppHandler [13:29:59,705] - Get JavaScript member: userAgent DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.AppHandler [13:29:59,707] - Detected user agent mozilla/5.0 (x11; u; linux i686; es-es; rv:1.9.2.13) gecko/20101206 ubuntu/10.04 (lucid) firefox/3.6.13 DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.AppHandler [13:29:59,707] - Navigator variable set to MOZILLA DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.AppHandler [13:29:59,746] - Trying to retrieve ujiCrypto.conf from server ... ERROR thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.AppHandler [13:29:59,756] - Cann't load ujiCrypto.conf from server. WARNING: Bundled local file will be loaded. Slot k = 1 Slot 1 has signature capabilities Slot k = 2 Slot 2 has signature capabilities ERROR thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.crypto.config.ConfigManager [13:30:02,965] - Could not initialize DNIe in slot 1 loading /usr/lib/opensc-pkcs11.so ERROR thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.crypto.config.ConfigManager [13:30:02,968] - Could not initialize DNIe in slot 1 loading /usr/lib/opensc-pkcs11.so ERROR thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.crypto.config.ConfigManager [13:30:02,970] - Could not initialize DNIe in slot 1 loading /usr/lib/opensc-pkcs11.so ERROR thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.crypto.config.ConfigManager [13:30:02,972] - Could not initialize DNIe in slot 2 loading /usr/lib/opensc-pkcs11.so ERROR thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.crypto.config.ConfigManager [13:30:02,975] - Could not initialize DNIe in slot 2 loading /usr/lib/opensc-pkcs11.so ERROR thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.crypto.config.ConfigManager [13:30:02,976] - Could not initialize DNIe in slot 2 loading /usr/lib/opensc-pkcs11.so ERROR thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.crypto.config.ConfigManager [13:30:02,978] - Could not initialize DNIe in slot 3 loading /usr/lib/opensc-pkcs11.so ERROR thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.crypto.config.ConfigManager [13:30:02,980] - Could not initialize DNIe in slot 3 loading /usr/lib/opensc-pkcs11.so ERROR thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.crypto.config.ConfigManager [13:30:02,984] - Could not initialize DNIe in slot 3 loading /usr/lib/opensc-pkcs11.so DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.keystore.KeyStoreManager [13:30:02,985] - Device DNIe initialization error. Try to reload the device with the pin </pre> Aqui se nos pide el pin dni-e (en este caso es una tarjeta izenpe) <pre> DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.keystore.KeyStoreManager [13:30:21,829] - Keystore available aliases: [PRUEBAS EFACTUR] DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.SignatureApplet [13:30:21,829] - Call JavaScript method: onInitOk DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.AppHandler [13:30:26,587] - Setting inputDataEncoding to PLAIN DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.AppHandler [13:30:26,601] - Setting signOutputFormat to es.uji.security.crypto.raw.RawSignatureFactory DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.SignatureApplet [13:30:26,623] - Init window DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.JTreeCertificateBuilder [13:30:26,688] - Building certificate tree DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.JTreeCertificateBuilder [13:30:26,725] - Added new CA IZENPE S.A. DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.JTreeCertificateBuilder [13:30:26,726] - Added new certificate PRUEBAS EFACTU (digitalSignature, keyEncipherment) </pre> ________________ Esta prueba no siempre funciona y requiere el reinicio del pcscd y/o firefox. ________________ Saludos, Irune Prado ----------------------------------------- ----- Mensaje original ----- De: "paul santapau" <[email protected]> Para: "Llista de correu per al CryptoApplet" <[email protected]> Enviados: Martes, 28 de Diciembre 2010 20:56:45 Asunto: Re: [CryptoApplet] pkcs#11 en Firefox (v2.1.0) Buenas de nuevo Irune, Te confirmo que no hemos implementado esa opción, la carga de certificados se hace directamente desde la interacción Java -> pkcs#11 sin pasar por las abstracciones de las NSS. Saludos. El 28 de diciembre de 2010 16:20, Irune Prado Alberdi < [email protected] > escribió: Buenas Paul, La práctica de poner el 'lock_login = false;' en el opensc no es muy 'legal' digamos y parece que hay tarjetas que aun así no soportan acceso múltiple (dnie) por lo que me comentan. ____ Por otro lado he estado mirando que NSS a partir de la versión 3 permite acceso simultaneo a su db https://wiki.mozilla.org/NSS_Shared_DB_Howto Mirando por encima el código del CryptoApplet no sé si este puede ser el motivo, ya que he encontrado referencias al 'secmod.db', archivo no existente en caso de utilizar NSS en modo shared Voy a tirar por ahí a ver si puedo sacar algo. Me podríais confirmar si tenéis en cuenta esta opción y si poner el lock_login a false es la única opción contemplada hasta el momento? Muchas gracias :) Irune Prado ----------------------------------------- ----- Mensaje original ----- De: "paul santapau" < [email protected] > Para: "Llista de correu per al CryptoApplet" < [email protected] > Enviados: Martes, 28 de Diciembre 2010 13:54:59 Asunto: Re: [CryptoApplet] pkcs#11 en Firefox (v2.1.0) Mira esto a ver si te puede ayudar Irune http://www.mail-archive.com/[email protected]/msg01026.html El 28 de diciembre de 2010 10:29, Irune Prado Alberdi < [email protected] > escribió: Buenas Paul, Gracias por el consejo. La prueba la quería hacer haciendo uso del applet que proporcionáis para la verisón 2.1.0, sin tener que montar nada. De todas formas el driver que se utiliza para cargar la tarjeta Izenpe sigue siendo opensc, en la misma ubicación que el dnie por lo que no debería haber ningún problema como dices. ____ Al final he conseguido solucionar el problema instalando el último paquete 'dni-opensc' (1.4.8-1). He mirado el contenido del archivo apt (.deb) y no he visto nada relevante y genérico como para que afecte a opensc pero el caso es que funciona. Si cargo el driver desde el applet me lee correctamente tarjetas dnie como Izenpe. ____ Ahora estoy intentado cargarlas mediante el almacén de firefox, es decir, cargando previamente la tarjeta mediante el dispositivo de seguridad. Cuando voy a ver los certificados en el Firefox se me pide el PIN para el certificado y lo visualizo correctamente. El problema viene cuando el applet intenta cargar la lista de certificados cuando se inicializa, se queda tostado hasta que saco la tarjeta del lector. He esperado un tiempo suficiente pensando que igual es que el acceso es más lento, pero se sigue quedando bloqueado y una vez que saco y reinserto la tarjeta no me detecta ningún certificado. Voy a ver si hago pruebas mirando las clases MozillaKeyStoreTest y MozillaTest que proveéis en uji-test, a ver si me familiarizo más con el proyecto nss. ¿Me podríais dar algún consejo? Gracias por la rápida respuesta. Irune Prado ----------------------------------------- ----- Mensaje original ----- De: "paul santapau" < [email protected] > Para: "Llista de correu per al CryptoApplet" < [email protected] > Enviados: Martes, 28 de Diciembre 2010 9:45:38 Asunto: Re: [CryptoApplet] pkcs#11 en Firefox (v2.1.0) Hola Irune, Las tarjetas que más hemos probado desde la UJI son ek DNIe y la emitida por Sermepa. No disponemos de tarjetas de Izenpe para probar, aunque en un principio debería funcionar correctamente. Existe un forma de pre-inicializar la configuración desde ujiCrypto.conf del paquete ujiConfig, si abres ese fichero verás que al final esta la configuración de los módulos pkcs#11 que el applet debe intentar cargar al desplegarse en el cliente: 119 # 120 # PKCS11 Devices 121 # 122 123 cryptoapplet.devices=dnie,sermepa 124 125 cryptoapplet.devices.dnie.name =DNIe 126 cryptoapplet.devices.dnie.libraries.linux=/usr/lib/opensc-pkcs11.so,/usr/local/lib/opensc-pkcs11.so,/lib/opensc-pkcs11.so 127 cryptoapplet.devices.dnie.libraries.windows=c:\\windows\\system32\\UsrPkcs11.dll 128 129 cryptoapplet.devices.sermepa.name =Sermepa 130 cryptoapplet.devices.sermepa.libraries.windows=c:\\windows\\system32\\AdvantisPKCS11.dll Puedes probar a establecerlo ahí. Un Saludo. El 27 de diciembre de 2010 14:22, Irune Prado Alberdi < [email protected] > escribió: Buenas, Estoy realizando unas pruebas de concepto de CryptoApplet y no consigo listar un certificado almacenado en una tarjeta criptográfica bajo Firefox. Estoy utilizando; - la última versión de pruebas del applet (2.1.0) http://projectestic.uji.es/pr/cryptoapplet/samples/v2.1.0/test.html - Una tarjeta criptográfica Izenpe (funcioinal, lo he probado bajo IE6 satisfactoriamente) - Firefox 3.6.13 - JRE 1.6_20 - De momento estoy intentando cargar el driver sin tenerlo asociando en el almacén del Firefox como dispositivo de seguridad por si pudiera dar problemas, es decir lo cargo desde el propio Applet. _______ Primero da la siguiente excepción <pre> DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.JSCommands [16:41:41,600] - New access to browser window from Applet DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.SignatureApplet [16:41:41,697] - Nimbus Look&Feel loaded DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.AppHandler [16:41:41,719] - Recover JavaScript member: navigator DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.AppHandler [16:41:41,722] - Recover JavaScript member: userAgent DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.AppHandler [16:41:41,724] - Detected user agent mozilla/5.0 (x11; u; linux i686; es-es; rv:1.9.2.13) gecko/20101206 ubuntu/10.04 (lucid) firefox/3.6.13 DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.AppHandler [16:41:41,724] - Navigator variable set to MOZILLA Borrar antememoria del cargador de clases .... terminado. _pk11LibPath: /usr/lib/nss/libsoftokn3.so DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.SignatureApplet [16:41:42,525] - Call JavaScript method: onInitOk DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.AppHandler [16:41:49,280] - Setting signOutputFormat to es.uji.security.crypto.raw.RawSignatureFactory DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.AppHandler [16:41:50,101] - Setting inputDataEncoding to PLAIN DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.AppHandler [16:41:50,108] - Setting inputDataEncoding to PLAIN Obtenido path /usr/lib/opensc-pkcs11.so DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.keystore.dnie.Dnie [16:41:52,830] - DNIe is not inserted or it can not be loaded DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.JTreeCertificateBuilder [16:41:52,941] - Building certificate tree DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.SignatureApplet [16:41:53,110] - Call JavaScript method: onWindowShow You chose to open this file: /usr/lib/opensc-pkcs11.so _pk11LibPath: /usr/lib/opensc-pkcs11.so PKCS11 actionPerformed() java.security.KeyStoreException: PKCS11 not found at java.security.KeyStore.getInstance(KeyStore.java:676) at es.uji.security.keystore.pkcs11.PKCS11KeyStore.load(PKCS11KeyStore.java:97) at es.uji.security.keystore.pkcs11.PKCS11KeyStore.load(PKCS11KeyStore.java:78) at es.uji.security.ui.applet.EventActionHandler$7.actionPerformed(EventActionHandler.java:319) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.menuDragMouseReleased(BasicMenuItemUI.java:1327) at javax.swing.JMenuItem.fireMenuDragMouseReleased(JMenuItem.java:568) at javax.swing.JMenuItem.processMenuDragMouseEvent(JMenuItem.java:465) at javax.swing.JMenuItem.processMouseEvent(JMenuItem.java:411) at javax.swing.MenuSelectionManager.processMouseEvent(MenuSelectionManager.java:305) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266) at java.awt.Component.processMouseEvent(Component.java:6267) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6032) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Caused by: java.security.NoSuchAlgorithmException: no such algorithm: PKCS11 for provider SunPKCS11-USER-PKCS11 at sun.security.jca.GetInstance.getService(GetInstance.java:83) at sun.security.jca.GetInstance.getInstance(GetInstance.java:202) at java.security.Security.getImpl(Security.java:688) at java.security.KeyStore.getInstance(KeyStore.java:673) ... 35 more </pre> Por lo que he añadido el proveedor de SunPKCS11 al 'java.security' de la VM. <pre> security.provider.9=sun.security.pkcs11.SunPKCS11 </pre> Aun así, al hacer la prueba me pide el fichero de configuración que no se carga por código <pre> You chose to open this file: /usr/lib/opensc-pkcs11.so _pk11LibPath: /usr/lib/opensc-pkcs11.so PKCS11 java.security.ProviderException: SunPKCS11 requires configuration file argument at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:81) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at sun.security.jca.ProviderConfig$3.run(ProviderConfig.java:240) at java.security.AccessController.doPrivileged(Native Method) at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:225) at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:205) at sun.security.jca.ProviderList.loadAll(ProviderList.java:264) at sun.security.jca.ProviderList.removeInvalid(ProviderList.java:281) at sun.security.jca.Providers.getFullProviderList(Providers.java:158) at java.security.Security.insertProviderAt(Security.java:325) at java.security.Security.addProvider(Security.java:372) at es.uji.security.keystore.pkcs11.PKCS11KeyStore.load(PKCS11KeyStore.java:96) at es.uji.security.keystore.pkcs11.PKCS11KeyStore.load(PKCS11KeyStore.java:78) at es.uji.security.ui.applet.EventActionHandler$7.actionPerformed(EventActionHandler.java:319) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.menuDragMouseReleased(BasicMenuItemUI.java:1327) at javax.swing.JMenuItem.fireMenuDragMouseReleased(JMenuItem.java:568) at javax.swing.JMenuItem.processMenuDragMouseEvent(JMenuItem.java:465) at javax.swing.JMenuItem.processMouseEvent(JMenuItem.java:411) at javax.swing.MenuSelectionManager.processMouseEvent(MenuSelectionManager.java:305) at javax.swing.plaf.basic.BasicPopupMenuUI$MouseGrabber.eventDispatched(BasicPopupMenuUI.java:807) at java.awt.Toolkit$SelectiveAWTEventListener.eventDispatched(Toolkit.java:2353) at java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2245) at java.awt.Toolkit.notifyAWTEventListeners(Toolkit.java:2203) at java.awt.Component.dispatchEventImpl(Component.java:4528) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) </pre> Mirando el codigo fuente veo que realizais la carga del proveedor PKCS11 de forma manual, pero no introducís configuración. De todas formas he realizado una prueba a mano, cargando el PKCS11Keystore e invocando el método #load con y sin fichero de configuración, además del PIN y me lee correctamente la tarjeta. <pre> PKCS11KeyStore pkStore= new PKCS11KeyStore("/usr/lib/opensc-pkcs11.so"); pkStore.load(configIS, "1111".toCharArray()); pkStore.load("1111".toCharArray()); ArrayList<String> aliases = Collections.list(pkStore.aliases()); System.out.println("Available aliases: " + aliases); </pre> __________ Como he leído que en pruebas que habéis realizado vosotros os ha ido todo bien, me podrías indicar en qué contexto funciona la lectura de certificados en tarjetas criptográficas? Versión de firefox, jre y tipo de smartcard? ____ Muchas gracias, Irune Prado ----------------------------------------- _______________________________________________ CryptoApplet mailing list [email protected] http://llistes.uji.es/mailman/listinfo/cryptoapplet -- Paúl Santapau Nebot http://es.linkedin.com/pub/paul-santapau/4/53a/a99 Twitter: @psantapau _______________________________________________ CryptoApplet mailing list [email protected] http://llistes.uji.es/mailman/listinfo/cryptoapplet _______________________________________________ CryptoApplet mailing list [email protected] http://llistes.uji.es/mailman/listinfo/cryptoapplet -- Paúl Santapau Nebot http://es.linkedin.com/pub/paul-santapau/4/53a/a99 Twitter: @psantapau _______________________________________________ CryptoApplet mailing list [email protected] http://llistes.uji.es/mailman/listinfo/cryptoapplet _______________________________________________ CryptoApplet mailing list [email protected] http://llistes.uji.es/mailman/listinfo/cryptoapplet -- Paúl Santapau Nebot http://es.linkedin.com/pub/paul-santapau/4/53a/a99 Twitter: @psantapau _______________________________________________ CryptoApplet mailing list [email protected] http://llistes.uji.es/mailman/listinfo/cryptoapplet _______________________________________________ CryptoApplet mailing list [email protected] http://llistes.uji.es/mailman/listinfo/cryptoapplet
