2010-11-11 2 views
1

Я использую signtool.exe для цифровой подписи автогенерируемого загружаемого контента из C#, вызывая командную строку, а затем передают файл в клиентский браузер. Проблема в том, что, хотя подпись в сети выглядит нормально, загруженный файл, похоже, не имеет своего сегмента. Если вы щелкните правой кнопкой мыши на сгенерированном файле на сервере, вы увидите совершенно хорошую подпись, и если вы просмотрите сертификат, в нем говорится, что «эта цифровая подпись в порядке».Сбор подписей .NET перед загрузкой в ​​веб-браузер клиента

Загруженный файл выглядит по-другому. Хотя это на 15 байт меньше, он не поврежден, но, пока имя проблемы не повреждено, в нем говорится, что эта цифровая подпись недопустима.

Что-то происходит во время транзита? Я использую этот код, чтобы подписать содержание:

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

Спасибо заранее,
Frank.

+0

Используете ли вы сертификат для подписи своих сборок, который не был бы от доверенного органа? Это было бы одним из моих первых догадок. –

+0

+1 Мне нужна эта информация. можете ли вы также указать некоторую информацию о том, как вы подписываете ее программно? –

ответ

2

Является ли ответ отправлен клиенту в заголовках правильной длины или неправильной (короткой)? Используйте Fiddler или Firebug для проверки.

Если это правильно, но клиент не принимает данные, попробуйте Reponse.Flush() после TransmitFile. Я думаю, что это, вероятно, просто суеверие, но многие люди, похоже, это делают.

+0

Ответ правильный. Response.Flush(), похоже, сделал это. Спасибо. – Michali

+0

По-прежнему вызывает недоумение, почему ответ будет обрезать некоторые метаданные. – Michali

+0

Дело не в том, что это «обрезанные метаданные», а просто в том, что в буфере потока есть некоторые незатушенные данные. –

0

Попробуйте обновить FileInfo fi перед чтением длины заголовка Content-Length, это может быть кеширование старой длины до подписания или так.

+0

После создания подписки приложение создается. Кроме того, в загруженном сертификате есть имя эмитента. – Michali

Смежные вопросы