J'essaie de lire le contenu d'un e-mail signé numériquement à l'aide d'EWS. Malheureusement, quand j'utilise une approche avec EnvelopeCMS je reçois une exception:EWS - e-mail à signature numérique (smime.p7m)
System.Security.Cryptography.CryptographicException: ASN1 - mauvaise étiquette valeur atteint.
dans System.Security.Cryptography.Pkcs.EnvelopedCms.OpenToDecode (byte [] encodedMessage)
dans System.Security.Cryptography.Pkcs.EnvelopedCms.Decode (byte [] encodedMessage) dans myExchange.Email.DecryptToFile (Octet [] données)
(encodedMessage est la pièce jointe smime.p7m d'un e-mail).
EDIT: c'est un fragment de code clé:
foreach (Attachment attachment in emailMessage.Attachments)
{
if (attachment is FileAttachment)
{
FileAttachment fileAttachment = attachment as FileAttachment;
if (fileAttachment.Name == "smime.p7m")
{
byte[] content = fileAttachment.Content;
MemoryStream stream = new MemoryStream();
fileAttachment.Load(stream);
StreamReader stReader = new StreamReader(stream);
stream.Seek(0, SeekOrigin.Begin);
content = stream.GetBuffer();
var encrypted = new System.Security.Cryptography.Pkcs.EnvelopedCms();
encrypted.Decode(content); // <==== Here occurs exception
encrypted.Decrypt();
byte[] unencryptedButRawMimeEntity = encrypted.ContentInfo.Content;
}
}
}
En savoir plus sur un e-mail - console de sortie EWS dit qu'il a une pièce jointe de "mutipart/signé" type de contenu
<m:ResponseCode>NoError</m:ResponseCode>
<m:Attachments>
<t:FileAttachment>
<t:AttachmentId Id="AAMkADNi(... CUT ...)T5PWd/bDM=" />
<t:Name>smime.p7m</t:Name>
<t:ContentType>multipart/signed</t:ContentType>
Bienvenue sur Stack Overflow! Vous obtiendrez probablement plus d'aide et de meilleure qualité si vous publiez votre code aussi. Lorsque vous publiez du code, assurez-vous qu'il s'agit d'un [exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve). –
Essayez simplement fileAttachment.Load(); puis fileAttachment.Content sera l'attactment. alors essayez vos trucs de décryptage ... peut-être montrer ce que cela signifie d'être signé. aussi vous travaillez maintenant avec la pièce jointe et pas l'email pas sûr si les deux sont signés et/ou ce que cela signifie. – Seabizkit