Visualizar Assinatura Digital
Boa Noite Galera!
Pessoal estou assinando um arquivo com c# da seguinte forma:
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:
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
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
Curtidas 0
Respostas
Regis Antunes
12/07/2012
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.
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.
GOSTEI 0
Siplancontrol-m
12/07/2012
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
Ricardo Lira
GOSTEI 0
Siplancontrol-m
12/07/2012
Galera já consegui resolver, basta adicionar um SignedAttributes antes de assinar o arquivo vejam o exemplo.
Valew Galera.
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.
GOSTEI 0