20131230 (Monday, 30 December 2013)

More tests with eidreader

Since there are chances that signing or not wasn’t the reason of our problem, I tried whether it is possible to get it running using non signed applets.

The public test page didn’t work until now because I didn’t dare to include third-party .jar files to the github repository.

  • Updated Makefile to no longer sign anything.

  • Fixed some bugs in get_jars.sh and used that script for the first time on a public server.

  • Added the following lines to my .java.policy file:

    grant codeBase "http://test-eidreader.lino-framework.org/-" {
      permission java.security.AllPermission;
    };
    

Observations on Ubuntu & IcedTea

  • the application starts and gets permission to initialize

  • the application is very slow

  • it says the expected error messages when there is no card reader, or a card reader with no card inserted,

  • Acturally reading a card does not work

  • Reading an Estonian card gives:

    It's an Estonian card
    WebConsolePanel open failed. timeout: Connection timeout. Check the Error Console on both ends for potential error messages. Reopen the Web Console to try again.
    java.lang.RuntimeException: Error code: 27013
            at src.eidreader.EstEIDUtil.sendCommand(EIDReader.java:90)
            at src.eidreader.PersonalFile.extractField(EIDReader.java:147)
            at src.eidreader.PersonalFile.init(EIDReader.java:142)
            at src.eidreader.PersonalFile.<init>(EIDReader.java:124)
            at src.eidreader.EIDReader$2.run(EIDReader.java:462)
            at src.eidreader.EIDReader$2.run(EIDReader.java:431)
            at java.security.AccessController.doPrivileged(Native Method)
            at src.eidreader.EIDReader.readCard(EIDReader.java:431)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at sun.applet.PluginAppletSecurityContext$4.run(PluginAppletSecurityContext.java:670)
            at java.security.AccessController.doPrivileged(Native Method)
            at sun.applet.PluginAppletSecurityContext.handleMessage(PluginAppletSecurityContext.java:667)
            at sun.applet.AppletSecurityContextManager.handleMessage(AppletSecurityContextManager.java:70)
            at sun.applet.PluginStreamHandler.handleMessage(PluginStreamHandler.java:235)
            at sun.applet.PluginMessageHandlerWorker.run(PluginMessageHandlerWorker.java:79)
    
  • Reading a Belgian card gives:

    java version "1.7.0_25"
    OpenJDK Runtime Environment (IcedTea 2.3.10) (7u25-2.3.10-1ubuntu0.12.10.2)
    OpenJDK Server VM (build 23.7-b01, mixed mode)
    EIDReader initialized
    EIDReader.readCard()
    Protocol: T=0
    It's a Belgian card
    BelgianReader() constructor started
    identityData has been read
    

Observationson a Windows XP client and Oracle JRE

Even with the least secure configuration the applet didn’t get permission to initialize:

security: Found unsigned entry: src/eidreader/EIDReader$1.class
basic: exception: Found unsigned entry in resource: http://test-eidreader.lino-framework.org/EIDReader.jar.
ExitException[ 3]com.sun.deploy.net.JARSigningException: Found unsigned entry in resource: http://test-eidreader.lino-framework.org/EIDReader.jar
        at sun.plugin2.applet.JNLP2Manager.prepareLaunchFile(Unknown Source)
        at sun.plugin2.applet.JNLP2Manager.loadJarFiles(Unknown Source)
        at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

Conclusion

It seems that in practice it is no longer possible to deploy applets without having purchased a code signing certificate. Congratulations to the corporation who successfully use their leading market position to earn more money.

Public test page

I installed signed .jar files on the public test page (manually, without putting them to the GitHub repository) so that I can invite other people to test whether the applet works on their client.