Assinatura Digital

Pessoal,

Estou desenvolvendo um programa de assinatura digital utilizando javax.xml.crypto. Analisando o código não consegui encontrar algum lugar que estivesse implícito qual certificado digital eu estaria usando para a assinatura (para o caso de eu ter mais de um instalado em minha máquina).
Alguém já teve experiência noassunto e sabe me responder?

Já gerei o documento xml assinado, mas tenho dois certificados instalados e não consigo saber qual deles foi usado para gerar a assinatura.

Obrigado :wink:

Pela sua mensagem não dá pra saber exatamente qual padrão criptográfico estás usando, entretanto é bastante provável que seja PKCS#7 e neste caso o arquivo assinado deve conter no mínimo as informações de quem (ou qual certificado) o assinou.

Também não sei onde vc está salvando ou qual sistema operacional está usando, mas se vc renomear o arquivo assinado com a extensão .p7s e der um duplo clique no windows, será apresentada uma janela com a informação dos dados de quem assinou tal arquivo.

Se vc está obtendo os certificados do Java KeyStore, é possível que exista algum certificado default dentro deste keystore, que neste caso será usado.

Olha, depois que você carrega o seu keystore, tem um método chamado getCertificate("certificateAlias, em que você passa um string com o alias do certificado que será utilizado para a assinatura.

X509Certificate certificado = 
   (X509Certificate ) keystore.getCertificate("certificateAlias");

Neste caso, estou utilizando o padrão PKCS#12, e pelo que me parece, você também está utilizando este padrão…

Olha, vi que vc está utilizando outra API para assinar…

O que eu passei é para a java.security

:grin: