Статус: Участник
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.12.2016(UTC) Сообщений: 17 Откуда: Раменское Сказал(а) «Спасибо»: 1 раз
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,343 Сказал «Спасибо»: 550 раз Поблагодарили: 2214 раз в 1728 постах
|
Код: byte[] buff = new byte[8192];
var contentInfo = new ContentInfo(buff);
// сертификат для подписания
SignedCms signedCms = new SignedCms(contentInfo, true);
Где заполнение buff? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.12.2016(UTC) Сообщений: 17 Откуда: Раменское Сказал(а) «Спасибо»: 1 раз
|
нет заполнения :( я не совсем компетентен в работе с криптопро .net и методами шифрования, писал код давно. Ошибка появилась в день написания поста. Помогите пожалуйста в решении этой проблемы
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.12.2016(UTC) Сообщений: 17 Откуда: Раменское Сказал(а) «Спасибо»: 1 раз
|
Мне нужно только подписать pdf использовав rutoken или флешку. За тем проверить подпись. buff возможно и не нужен... возможно, или я что-то не дописал. Ранее на выходе выполнения кода, ошибок не было, и при проверки dpf на подпись результат был положительный и подпись стояла. Может ли быть так, что хоть и факт подписания был, но сама подпись не шифровалась? Отредактировано пользователем 18 июля 2017 г. 16:12:41(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,343 Сказал «Спасибо»: 550 раз Поблагодарили: 2214 раз в 1728 постах
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close