Assinando digitalmente de cerca de 100 blocos de um único arquivo XML através de um loop, obtive um erro do servidor:
"O
valor do atributo 'Algoritmo' não é igual o seu valor corrigido. "
O servidor está esperando:
<SignatureMethod
Algoritmo = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
ao invés de :
<SignatureMethod
Algoritmo = "http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
Pesquisando descobri que a solução seria acrescentar a função correta:
string
signatureRSAMethod = @ "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256";
signer.SignedInfo.SignatureMethod
= SignatureRSAMethod;
Em seguida, recebi uma exceção:
SignatureDescription
não poderia ser criado para o algoritmo de assinatura fornecido
novamente a solução seria adicionar a linha de código:
CryptoConfig.AddAlgorithm (typeof (RSAPKCS1SHA256SignatureDescription), signatureRSAMethod);
Finalmente, o arquivo foi assinado e enviado, mas, infelizmente, em uma segunda tentativa, a chave privada havia desaparecido do certificado,
isso ocorreu 3 vezes até agora, dois eram cartão com os leitora e um Token.
Enfim, suspeito que algo está violando alguma regra de segurança, o que faz com que a chave privada desapareça.
Estou usando-o de forma incorreta?