Visualizar Assinatura Digital

12/07/2012

0

Boa Noite Galera!

Pessoal estou assinando um arquivo com c# da seguinte forma:

try
{
   ContentInfo content = new ContentInfo(data);
   SignedCms signedCms = new SignedCms(content, false);
   if (VerifySign(data)) 
   {
      signedCms.Decode(data);
   } 
   foreach (X509Certificate2 cert in certs)
   {
      CmsSigner signer = new CmsSigner(cert);
      signer.IncludeOption = X509IncludeOption.WholeChain;
      signedCms.ComputeSignature(signer);
   }
   return signedCms.Encode();
}
catch(Exception ex)
{
  throw new Exception(Erro ao assinar arquivo. A mensagem retornada foi:  + ex.Message);
}



Até aqui tudo bem, o problema esta sendo na hora de visualizar a assinatura, estou precisando de algumas informações que não estou conseguindo identificar, como Data e hora que o arquivo foi assinado, para extrair as informações estou usando o seguinte código:

SignedCms signed = new SignedCms();
signed.Decode(data);
signed.CheckSignature(true);


no objeto SignedCms existe uma serie de informações como o Nome, CPF/CNPJ, mas não consegui extrair de jeito nenhum a data e a hora em que o arquivo foi assinado, alguém já passou por isso ou tem alguma dica ?

Desde já agradeço.

Ricardo Lira
Siplancontrol-m

Siplancontrol-m

Responder

Posts

13/07/2012

Regis Antunes

Bom dia Ricardo,

Você tem certeza que existe essa informação na assinatura do arquivo? Não sei como você fez, mas eu, pela assinatura eu obtenho o certificado e pelo certificado consigo pegar o nome e o CNPJ do assinador, porém mesmo assim tenho que escovar bits para encontrar essa informação. Porém data e hora da assinatura não deve estar no certificado e sim na assinatura mesmo.

Outra coisa, o arquivo é um Xml? se for tente usar a classe SignedXml do namespace System.Security.Cryptography.Xml, talves ele te dê mais recursos.
Responder

13/07/2012

Siplancontrol-m

As informações referente ao certificado eu pego tranquilo, mas preciso saber quando o arquivo foi assinado e a hora, e não sei onde essa informação esta, estou assinando um arquivo.tif, você saberia me dizer onde posso obter essa informação ?

Ricardo Lira
Responder

14/07/2012

Siplancontrol-m

Galera já consegui resolver, basta adicionar um SignedAttributes antes de assinar o arquivo vejam o exemplo.

CmsSigner signer = new CmsSigner(certificado);
signer.SignerIdentifierType = SubjectIdentifierType.IssuerAndSerialNumber;
signer.SignedAttributes.Add(new Pkcs9SigningTime()); // Aqui mora o segredo, e possível adicionar outros atributos importantes.
signer.IncludeOption = X509IncludeOption.WholeChain;
signedCms.ComputeSignature(signer, Silencioso);
ArquivoAssinado = signedCms.Encode();


Valew Galera.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar