Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline kazaza  
#1 Оставлено : 29 мая 2012 г. 14:32:22(UTC)
kazaza

Статус: Участник

Группы: Участники
Зарегистрирован: 24.05.2012(UTC)
Сообщений: 15

Здравствуйте.
Есть программа, которая использует функции Sharpei для подписания файлов. Проверка также производится функциями Sharpei, в другой программе. Всё хорошо, всё проверяется, все счастливы. Однако когда мы хотим проверить созданную подпись с cryptcp, возникает ошибка - 80091001. При проверке на http://notary.cryptopro.ru ошибка "Подлинность документа НЕ ПОДТВЕРЖДЕНА: не поддерживаемый формат электронного документа." Может ли быть такое, что в нашей программе неправильно происходит запись в файл подписи?
Исходник прилагаю.
http://rghost.ru/38347431
Offline Андрей Писарев  
#2 Оставлено : 29 мая 2012 г. 14:38:26(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,198
Мужчина
Российская Федерация

Сказал «Спасибо»: 537 раз
Поблагодарили: 2176 раз в 1701 постах
kazaza написал:
Здравствуйте.
Есть программа, которая использует функции Sharpei для подписания файлов. Проверка также производится функциями Sharpei, в другой программе. Всё хорошо, всё проверяется, все счастливы. Однако когда мы хотим проверить созданную подпись с cryptcp, возникает ошибка - 80091001. При проверке на http://notary.cryptopro.ru ошибка "Подлинность документа НЕ ПОДТВЕРЖДЕНА: не поддерживаемый формат электронного документа." Может ли быть такое, что в нашей программе неправильно происходит запись в файл подписи?
Исходник прилагаю.
http://rghost.ru/38347431



Цитата:


Однако когда мы хотим проверить созданную подпись с cryptcp, возникает ошибка - 80091001

0x80091001 Ошибка при обработке криптографического сообщения.

Цитата:

"Подлинность документа НЕ ПОДТВЕРЖДЕНА: не поддерживаемый формат электронного документа."


ЭЦП не в pkcs7 формате

Код:

 //Подписываем хеш
            byte[] SignedHashValue = GostFormatter.CreateSignature(hashValue);
            FileStream fileStl = new FileStream(SignatureFilePath, FileMode.OpenOrCreate,
               FileAccess.ReadWrite, FileShare.ReadWrite);
            fileStl.Write(SignedHashValue, 0, SignedHashValue.Length);
            fileStl.Dispose();
            myhash.Clear();



Цитата:

CreateSignature
Возвращаемое значение
Подпись в виде байтового массива.



Отредактировано пользователем 29 мая 2012 г. 14:41:31(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline kazaza  
#3 Оставлено : 29 мая 2012 г. 14:40:40(UTC)
kazaza

Статус: Участник

Группы: Участники
Зарегистрирован: 24.05.2012(UTC)
Сообщений: 15

Да, она самая. Отчего она возникнуть может?
Update: нет. Согласно коду, который я прикрепила, мы просто вычисляем хэш, подписываем его и записываем в файл.
Update2: а как создать подпись в pkcs из того, что мы получили?
Update3: нашла в примерах cms. Попробую и отпишусь, получилось или нет.

Отредактировано пользователем 29 мая 2012 г. 14:47:10(UTC)  | Причина: Не указана

Offline Андрей Писарев  
#4 Оставлено : 29 мая 2012 г. 14:46:07(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,198
Мужчина
Российская Федерация

Сказал «Спасибо»: 537 раз
Поблагодарили: 2176 раз в 1701 постах
kazaza написал:
Да, она самая. Отчего она возникнуть может?
Update: нет. Согласно коду, который я прикрепила, мы просто вычисляем хэш, подписываем его и записываем в файл.
Update2: а как создать подпись в pkcs из того, что мы получили?



КриптоПро Sharpei SDK :

chm: Примеры\Примеры работы с форматом PKCS/CMS
файлы: Crypto Pro\Sharpei SDK\Examples\simple\CMS\cs\ SingleSigner.cs и т.д.

Отредактировано пользователем 29 мая 2012 г. 14:49:58(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline kazaza  
#5 Оставлено : 30 мая 2012 г. 17:55:20(UTC)
kazaza

Статус: Участник

Группы: Участники
Зарегистрирован: 24.05.2012(UTC)
Сообщений: 15

Offline Георгий Садофьев  
#6 Оставлено : 30 мая 2012 г. 21:24:03(UTC)
Георгий Садофьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 14.10.2011(UTC)
Сообщений: 133
Мужчина

Поблагодарили: 27 раз в 26 постах
Судя по коду Вы отсоединенную подпись создаете

Код:
SignedCms signedCms = new SignedCms(contentInfo, true);

Тогда, чтобы ее проверить Вам нужно так проверку делать:

Код:
static bool VerifyMsg(Byte[] msg, 
            byte[] encodedSignature)
        {
            // Создаем объект ContentInfo по сообщению.
            // Это необходимо для создания объекта SignedCms.
            ContentInfo contentInfo = new ContentInfo(msg);

            // Создаем SignedCms для декодирования и проверки.
            SignedCms signedCms = new SignedCms(contentInfo, true);

            // Декодируем подпись
            signedCms.Decode(encodedSignature);

            // Перехватываем криптографические исключения, для 
            // возврата о false значения при некорректности подписи.
            try
            {
                // Проверяем подпись. В данном примере не 
                // проверяется корректность сертификата подписавшего.
                // В рабочем коде, скорее всего потребуется построение
                // и проверка корректности цепочки сертификата.
                Console.Write("Проверка подписи сообщения ... ");
                signedCms.CheckSignature(true);
                Console.WriteLine("Успешно.");
            }
            catch (System.Security.Cryptography.CryptographicException e)
            {
                Console.WriteLine("Функция VerifyMsg возбудила исключение:  {0}",
                    e.Message);
                Console.WriteLine("Проверка PKCS #7 сообщения завершилась " +
                    "неудачно. Возможно сообщене, подпись, или " +
                    "соподписи модифицированы в процессе передачи или хранения. " +
                    "Подписавший или соподписавшие возможно не те " +
                    "за кого себя выдают. Достоверность и/или целостность " +
                    "сообщения не гарантируется. ");
                return false;
            }

            return true;
        }
Техническую поддержку оказываем тут
Наша база знаний
Offline kazaza  
#7 Оставлено : 31 мая 2012 г. 12:30:32(UTC)
kazaza

Статус: Участник

Группы: Участники
Зарегистрирован: 24.05.2012(UTC)
Сообщений: 15

Спасибо, программа работает корректно, проверка проходит.
Однако при попытке проверить полученное сообщение с помощью cryptcp возникает та же ошибка: неправильная подпись.
Не может ли это быть связано со строками:

Код:
Encoding unicode = Encoding.Unicode;
byte[] msgBytes = unicode.GetBytes(msg);


Зачем вообще мы используем
Код:
Encoding unicode = Encoding.Unicode;
?

Отредактировано пользователем 31 мая 2012 г. 12:33:20(UTC)  | Причина: Не указана

Offline Георгий Садофьев  
#8 Оставлено : 31 мая 2012 г. 14:19:05(UTC)
Георгий Садофьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 14.10.2011(UTC)
Сообщений: 133
Мужчина

Поблагодарили: 27 раз в 26 постах
Покажите, как проверяете подпись cryptcp?
Какую подпись проверяете (отделённую или присоединённую)?
Техническую поддержку оказываем тут
Наша база знаний
Offline kazaza  
#9 Оставлено : 31 мая 2012 г. 14:26:24(UTC)
kazaza

Статус: Участник

Группы: Участники
Зарегистрирован: 24.05.2012(UTC)
Сообщений: 15

cryptcp -vsignf test2.txt -f test2.txt.sgn
test2.tx - исходный файл
test2.txt.sgn - файл подписи
Проверяем отделенную подпись.
Offline Георгий Садофьев  
#10 Оставлено : 31 мая 2012 г. 14:42:54(UTC)
Георгий Садофьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 14.10.2011(UTC)
Сообщений: 133
Мужчина

Поблагодарили: 27 раз в 26 постах
А в самой программе вы вычисляете подпись для файла test2.txt?
То есть считываете байты из этого файла?
Или, как в примере, подписываете какую-то строку, записываете подпись в файл test2.txt.sgn, а потом просто создаете файл test2.txt, в котором подписываемая строка содержится?
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.