Assinar arquivo digitalmente

Prezados,

Estou trabalhando em um projeto acerca de assinaturas digitais e estou com um problema.

Depois de muito pesquisar e quebrar a cabeça, consegui gerar a assinatura com o seguinte código.

Signature signatureAlgorithm = Signature.getInstance(cert.getSigAlgName());
signatureAlgorithm.initSign((PrivateKey)keyStore.getKey(alias,"senha".toCharArray()));
signatureAlgorithm.update(byte[]);
assinado = signatureAlgorithm.sign();

No entando quando pego o objeto assinador e efetuo a assinatura, é somente a assinatura que tenho, e não o arquivo assinado.

Todos os exemplos que vejo só fazem isso. assinam uma String e e não geram um arquivo.

Algué tem idéia de como faço para anexar a assinatura a ao arquivo assinado?[/code]

Os formatos padrões para anexar a assinatura a um dado (arquivo) são:

PKCS#7
S/MIME (para emails assinados)
XML-Signature (para XML)

Use a biblioteca http://www.bouncycastle.org para PKCS#7 e S/MIME, e a infra-estrutura de Web Services de seu gosto (por exemplo, Sun Java WSDP) para XML-Signature.

Os arquivos .DOC (Microsoft Word) e .PDF (Adobe Acrobat) também aceitam assinaturas digitais, mas isso deve ser visto nos sites dos respectivos fabricantes como é que se deve fazer. (Normalmente são soluções pagas porque é bastante complicado fazer).

Valeu Tingol,

Pesquisei sobre o XLM-Signature e encontrei uma tecnologia chamada XAdES. É essa que vc se refere?

Ainda não tive tempo de procurar por uma biblioteca específica na net.

vc conhece alguma que trabalhe com XAdES?

Não é o XADES (nunca tinha ouvido falar), mas sim XML-Signature (às vezes conhecido como xmldsig).
http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/

Se alguém implementou XADES, só se foi o pessoal da IAIK e da CISCO.