Fórum Visualizar Assinatura Digital #419847
12/07/2012
0
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
Curtir tópico
+ 0Posts
13/07/2012
Regis Antunes
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
13/07/2012
Siplancontrol-m
Ricardo Lira
Gostei + 0
14/07/2012
Siplancontrol-m
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
Clique aqui para fazer login e interagir na Comunidade :)