2010-11-11 6 views
1

J'utilise signtool.exe pour signer numériquement le contenu téléchargeable généré automatiquement à partir de C# en appelant la ligne de commande, puis en diffusant le fichier dans le navigateur client. Le problème est que si la signature semble correcte sur le web, le fichier téléchargé semble manquer d'un segment de celui-ci. Si vous faites un clic droit sur le fichier généré sur le serveur, vous voyez une signature parfaitement bonne et si vous affichez le certificat, il dit que "cette signature numérique est OK".Assemblages de code .NET avant de lancer le téléchargement dans le navigateur Web d'un client

Le fichier téléchargé est différent. Bien qu'il soit 15 octets plus petit, il n'est pas corrompu mais, bien que le nom du problème soit intact, il indique que cette signature numérique n'est pas valide.

Quelque chose se passe-t-il pendant le transport? J'utilise ce code pour signer le contenu:

Response.Clear();
Response.ContentType = "application/exe";
Response.AddHeader("content-disposition", "filename=" + filename);
Response.AddHeader("Content-Length", fi.Length.ToString());
Response.TransmitFile(filePath);

Merci à l'avance,
Frank.

+0

Utilisez-vous un certificat pour signer vos assemblys qui ne proviendraient pas d'une autorité de confiance? Ce serait l'une de mes premières suppositions. –

+0

+1 J'ai besoin de cette information. pouvez-vous aussi trouver quelques informations comment vous le signez par programmation? –

Répondre

2

La réponse envoyée au client dans les en-têtes est-elle de la bonne longueur ou de la mauvaise longueur? Utilisez Fiddler ou Firebug pour vérifier.

Si c'est correct, mais que le client ne reçoit pas les données, essayez un Reponse.Flush() après le TransmitFile. Je pense que c'est probablement juste de la superstition, mais beaucoup de gens semblent le faire.

+0

La réponse est correcte. Response.Flush() semble l'avoir fait. Je vous remercie. – Michali

+0

Il est toujours déconcertant de savoir pourquoi la réponse réduirait certaines métadonnées. – Michali

+0

Ce n'est pas qu'il s'agit de 'métadonnées coupées', c'est juste qu'il reste des données non effacées dans un buffer de flux. –

0

Essayez d'actualiser votre FileInfo fi avant de lire la longueur de l'en-tête Content-Length, il peut être mise en cache l'ancienne longueur avant la signature ou ainsi.

+0

Le fi est instancié après avoir signé l'application. En outre, il existe un nom d'émetteur dans le certificat téléchargé. – Michali

Questions connexes