Pesquisar neste blogue

sábado, 28 de maio de 2016

PDF Signing with Smartcards without Applets.

One of my recent projects at work involved developing an alternative  to applets to digital sign PDF files.

After some search i came across open-eid and namely browser-token-signing a true great endeavour from the © Estonian Information System Authority.
You can download their official builds at installer.id.ee. This will install extensions on your browsers that will allow the communication with the smartcards.

https://github.com/open-eid/hwcrypto.js/wiki/ModernAPI

On the client side we will need hwcrypto.js . This lib makes use of Promises caniuse.com which are not available on all browsers however there is a legacy version and other dependencies which can be put in place if you need them.
As stated on their wiki:

    *Support for IE8-IE10 requires a Promises polyfill; IE8 and IE9 also require TypedArray polyfill. Complimentary code is bundled into hwcrypto-legacy.js:

        https://github.com/inexorabletash/polyfill (license: Public Domain / MIT)
        https://github.com/getify/native-promise-only/ (license: MIT)

    Distribution and installation of the necessary platform components is out of scope of this project.


Let's take a look at their example code

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
// NB! This sample uses the legacy `hex` property!
window.hwcrypto.getCertificate({lang: 'en'}).then(function(certificate) {
   // Do something with the certificate, like prepare the hash to be signed
   var hash = calculateSHA256SignatureHashAsHexForCertificate(certificate.hex);
   // Now sign the hash
   window.hwcrypto.sign(certificate,
 {type: 'SHA-256', hex: hash}, {lang: 'en'}).then(function(signature) {
      // Do something with the signature
      storeSignature(signature.hex);
   }, function(error) {
      // Handle the error. `error.message` is one of the described error mnemonics
      console.log("Signing failed: " + error.message);
   });
});



 As our framework is Java based, to handle the PDF the itextpdf lib was used - itextpdf 5.5.9. I would like to state that with in some work / adaptation pdfsign.js may become the best way to implement such a system. 
To anyone implementing such a system i would like to leave the following notes:

  • If you use some objects to handle the PDF from the server side make sure they are the same all along the process. If not the PDF will still be signed but you may be faced with the "The document has been altered or corrupted since the signature was applied" error.
  • As Promises are  asynchronous take extra care when using it Ajax.

Taking the above into consideration just take a look at Bruno's amazing work/documentation itext-action-second-edition chapter-12  to proceed with the signature.

segunda-feira, 14 de março de 2016

On "New MIT Code Makes Web Pages Load 34 Percent Faster in Any Browser"

I would like to share some server side solutions that can speed up page and resource loading

https://github.com/galan/packtag - Have used this in Struts before and it does make a big difference
https://jawr.java.net/ -  Has Spring integration and seems really nice. A good starting point is showned on : http://memorynotfound.com/jawr-combine-minify-compress-javascript-css/

For .Net



With Apache/NGINX it is possible to develop a similar approach

https://www.nginx.com/resources/wiki/modules/concat/

RPCS3 + Ubuntu

This weekend i had some time to play around with a emulator ( RPCS3)  on my Ubuntu box.
After installing bison and libedit-dev and fiddling around with LD_LIBRARY_PATH i got it to build


What i don't understand is why i had to do"export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/" considering on "/etc/ld.so.conf.d/"   when there was already a conf file with that path. Permissions issue perhaps? Can someone with more Ubuntu experience shed some light?
Now to the fun part of fidding with Asmjit and LLVM.

quarta-feira, 10 de fevereiro de 2016

Quartz Scheduler

A while back i had to work with Quartz (the scheduler) - Quartz - not to be confused with - Quartz (graphics_layer)  and i would like to share a website that helped me CronMaker.
Thanks to who had the work of making my life easier :)

terça-feira, 22 de dezembro de 2015

Struts 2 and TLD issues.


According to TLD or attribute directive in tag file, attribute value does not accept any expressions

I have been rather plagued by this error on the last few days when using Struts2 till. By chance i came across https://almeidamike.wordpress.com/2010/03/12/struts-solving-according-to-tld-or-attribute-directive-in-tag-file-attribute-value-does-not-accept-any-expressions/ .
So if you are having some difficulties accessing parameters of the request or other values be sure to enable debug as specified in https://struts.apache.org/docs/debugging-struts.html and find the correct path to your value.
Credits to the owner of https://almeidamike.wordpress.com/author/almeidamike/.

Examples:
${someField} becomes %{#attr.someField}. Acessing request parameters would be for instance  %{#parameters.someField}.

quarta-feira, 28 de outubro de 2015

New job new life new projects.

It seems i have left this place a bit scarse on news for a while now. Starting a new job and getting used to new routines made me neglect this place a bit.
That does not mean i have not been busy :) :

  • Working on Spring + JPA + AOP and learning how to deal with some strange errors (if you follow this blog and wish some tutorials and/or to get around common errors please let me know)
  • A project i have started in between jobs, leveraging odoo to implement tracking of e-procurement contracts (adapted to the Portuguese reality as that is the one i am more familiarized with) . Connecting those with Odoo projects allows for some really nice features ( https://www.odoo.com/page/project-management. ). 
  • Working with my good friends at https://www.linkedin.com/company/good-omens-webstudio (if you do work in Morocco do check them out, they are great at what they do).
  • Uploading "Templo dos Jogos" to the Youtube (https://www.youtube.com/channel/UC3QNejga3cw69-NvmFvjyWA/videos )

On a side topic, are there any UK citizens following this blog? I have received some jobs offers from the U.K and i do have a passion for that country, more than for my own country Portugal sometimes (and god knows how it is decreasing), so moving to the  U.K would be a long time project with hopefully citizenship involved. How is it like to be an UK citizen?


segunda-feira, 3 de agosto de 2015

Sometimes it is better to have less.

My friends at Good Omens WebStudio shared with me a project that came across them for the Quercus organization. I did a quick analysis of the slow points for them. It didn't take long to do an "oh god".


 The worst is not even shown on that picture:- A 1.6 megabytes ttf font used by one of the css files.
To make matters worse the way Apache is configured the font is never cached by the browser, and it can only start working when it has the font.