Applet Java para calcular assinatura de arquivos:
O applet funciona com certificados do tipo A1 (arquivo .PFX) e A3 (smartcard).
Por enquanto só está testado a assinatura com A1 porque não tinha um A3. Por isso não sei como vai se comportar o applet, devido ao fato de ele precisar acessar uma biblioteca nativa externa (.dll para Win e .so para Linux) para ter acesso ao leitor do smartcard.
Outra coisa, para ter acesso ao sistema de arquivos o applet precisa ser assinado. Portanto usei o certificado auto-assinado pessoal. =)
O que fiz foi juntar os códigos do Nakov (http://www.nakov.com/documents-signing/) que eram applets separados... Não modifiquei muito por enquanto para ver como funcionaria e mostrar a vocês primeiro.
Lembro que o retorno dos applets para o Html é feito usando o JSObject que faz parte da JVM no arquivo %JRE_HOME%/lib/plugin.jar. Ou seja universal para qualquer browser.
O exemplo que fiz aqui está rodando 100% no IE e no Chrome; no Firefox tem um erro porque este ainda não implementa suporte à tag <Object> corretamente; e daí fica sendo necessário fazer htmls diferentes. Pelo menos ainda não consegui fazer funcionar com um só.
Outro ponto importante:
O retorno, via JSObject, é o seguinte (dado um arquivo X como entrada para assinar):
* Certification chain
* Signature
Mas imagino que o processo de assinar esteja sendo feito pelo PHP (e não via applet que foi o que fiz)... Então o que querem que eu retorne para o HTML via JSObject?
Eu suponho que seja o seguinte:
* PrivateKey
* CertificationChain
Se for isso mesmo, ou caso seja algo diferente ou a mais, me avisem que já modifico e faço o upload do applet na segunda ou terça para testarem.
O Applet pode ser testado no seguinte endereço:
Não capturou informações do token A3