logo
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline wolfree9266  
#1 Оставлено : 28 июня 2017 г. 17:51:54(UTC)
wolfree9266

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

Группы: Участники
Зарегистрирован: 11.12.2016(UTC)
Сообщений: 17
Российская Федерация
Откуда: Раменское

Сказал(а) «Спасибо»: 1 раз
Добрый вечер.

Пытаюсь подписать pdf по кнопке, ранее работало, сегодня на флешке создал новый контейнер и сертификат. С флешки установил сертификат в личное, пытаюсь с него подписаться получаю ошибку - "Неправильная подпись."



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

Код:

/*
    using System;
    using System.Collections.Generic;
    using System.IO;
    using iTextSharp.text.pdf;
    using Org.BouncyCastle.X509;
    using System.Security.Cryptography.Pkcs;
    using System.Security.Cryptography.X509Certificates;

    using iTextSharp.text;
*/
 public X509Certificate2 ВыборСертификата()
        {
            // Находим секретный ключ по сертификату в хранилище MY
            X509Store store = new X509Store("My", StoreLocation.CurrentUser);
            store.Open(OpenFlags.ReadOnly);


            X509Certificate2Collection coll = X509Certificate2UI.SelectFromCollection
                (store.Certificates, "Выберите сертификат", "Выберите сертификат", X509SelectionFlag.SingleSelection);



            if (coll.Count == 0 || coll == null)
            {
                Console.WriteLine ("Ключ не найден.");
                return null;
            }

            X509Certificate2 certificate = coll[0];

            if (certificate == null /*|| certificate.Verify()*/)
            {
                Console.WriteLine("Ключ не найден.");
                return null;
            }
            if (!ValidateCertificate(certificate))
            {

                return null;
            }

            //  SignedCms SignedCms = new SignedCms();
            //  CmsSigner cmsSigner = new CmsSigner(certificate);
            // SignedCms.ComputeSignature(cmsSigner, true);
            // то что подписываем
            byte[] buff = new byte[8192];
            var contentInfo = new ContentInfo(buff);

            // сертификат для подписания
            SignedCms signedCms = new SignedCms(contentInfo, true);
            try
            {
                // Вычисляем подпись
                // byte[] pk = SignMsg(ss.ToArray(), cert, true);
                var cmsSigner = new CmsSigner(certificate);
                signedCms.ComputeSignature(cmsSigner, false);
            }
            catch (System.Security.Cryptography.CryptographicException ex)
            {
                Console.WriteLine(ex.Message);
            }
            return certificate;
        }
 /// <summary>
        /// Проверка валидности сертификата
        /// </summary>
        private bool ValidateCertificate(X509Certificate2 x509)
        {
            bool valid = false;
            DateTime timeSert = DateTime.Parse(x509.GetExpirationDateString());

            if (DateTime.Now.CompareTo(timeSert) < 0)
            {
                // Console.WriteLine("Сертификат валиден. Текущая дата: " + DateTime.Now.ToString() + " Дата сертификата: " + timeSert.ToString());
                valid = true;
            }
            else
            {
                Console.WriteLine("Сертификат не валиден. Текущая дата: " + DateTime.Now.ToString() + " Дата сертификата: " + timeSert.ToString());
            }

            return valid;
        }

Отредактировано пользователем 28 июня 2017 г. 17:55:09(UTC)  | Причина: Не указана

Offline wolfree9266  
#2 Оставлено : 17 июля 2017 г. 9:23:02(UTC)
wolfree9266

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

Группы: Участники
Зарегистрирован: 11.12.2016(UTC)
Сообщений: 17
Российская Федерация
Откуда: Раменское

Сказал(а) «Спасибо»: 1 раз
up!
Offline Андрей *  
#3 Оставлено : 17 июля 2017 г. 9:49:46(UTC)
Андрей *


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

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

Сказал «Спасибо»: 241 раз
Поблагодарили: 738 раз в 623 постах
Код:
 byte[] buff = new byte[8192];
            var contentInfo = new ContentInfo(buff);

            // сертификат для подписания
            SignedCms signedCms = new SignedCms(contentInfo, true);


Где заполнение buff?
Offline wolfree9266  
#4 Оставлено : 18 июля 2017 г. 15:26:55(UTC)
wolfree9266

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

Группы: Участники
Зарегистрирован: 11.12.2016(UTC)
Сообщений: 17
Российская Федерация
Откуда: Раменское

Сказал(а) «Спасибо»: 1 раз
нет заполнения :( я не совсем компетентен в работе с криптопро .net и методами шифрования, писал код давно. Ошибка появилась в день написания поста. Помогите пожалуйста в решении этой проблемы
Offline wolfree9266  
#5 Оставлено : 18 июля 2017 г. 16:02:57(UTC)
wolfree9266

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

Группы: Участники
Зарегистрирован: 11.12.2016(UTC)
Сообщений: 17
Российская Федерация
Откуда: Раменское

Сказал(а) «Спасибо»: 1 раз
Мне нужно только подписать pdf использовав rutoken или флешку. За тем проверить подпись.
buff возможно и не нужен... возможно, или я что-то не дописал.
Ранее на выходе выполнения кода, ошибок не было, и при проверки dpf на подпись результат был положительный и подпись стояла.
Может ли быть так, что хоть и факт подписания был, но сама подпись не шифровалась?

Отредактировано пользователем 18 июля 2017 г. 16:12:41(UTC)  | Причина: Не указана

Offline Андрей *  
#6 Оставлено : 21 июля 2017 г. 14:27:43(UTC)
Андрей *


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

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

Сказал «Спасибо»: 241 раз
Поблагодарили: 738 раз в 623 постах
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.