Atom Лента - Форум КриптоПро - Тема:Неправильная подпись - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:Nepravil'najapodpis'-10:1Copyright 2024 Форум КриптоПро2024-03-19T07:32:50Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.ruАндрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *Андрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *wolfree9266https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=43790&name=wolfree9266wolfree9266https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=43790&name=wolfree9266Андрей *https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=15008&name=Андрей *wolfree9266https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=43790&name=wolfree9266wolfree9266https://www.cryptopro.ru/forum2/default.aspx?g=profile&u=43790&name=wolfree9266YetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid81855:1Неправильная подпись<table class="content postContainer_Alt" width="100%"><tr><td>Здравствуйте.<br /><br /><a rel="nofollow" href="https://www.cryptopro.ru/forum2/default.aspx?g=posts&m=80519#post80519" title="https://www.cryptopro.ru/forum2/default.aspx?g=posts&m=80519#post80519">https://www.cryptopro.ru...ts&m=80519#post80519</a><br /></td></tr></table>2017-07-21T14:27:43+03:002017-07-21T14:27:43+03:00Андрей *<table class="content postContainer_Alt" width="100%"><tr><td>Здравствуйте.<br /><br /><a rel="nofollow" href="https://www.cryptopro.ru/forum2/default.aspx?g=posts&m=80519#post80519" title="https://www.cryptopro.ru/forum2/default.aspx?g=posts&m=80519#post80519">https://www.cryptopro.ru...ts&m=80519#post80519</a><br /></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid81753:1Неправильная подпись<table class="content postContainer" width="100%"><tr><td>Мне нужно только подписать pdf использовав rutoken или флешку. За тем проверить подпись.<br />buff возможно и не нужен... возможно, или я что-то не дописал.<br />Ранее на выходе выполнения кода, ошибок не было, и при проверки dpf на подпись результат был положительный и подпись стояла.<br />Может ли быть так, что хоть и факт подписания был, но сама подпись не шифровалась?</td></tr></table>2017-07-18T16:12:41+03:002017-07-18T16:12:41+03:00wolfree9266<table class="content postContainer" width="100%"><tr><td>Мне нужно только подписать pdf использовав rutoken или флешку. За тем проверить подпись.<br />buff возможно и не нужен... возможно, или я что-то не дописал.<br />Ранее на выходе выполнения кода, ошибок не было, и при проверки dpf на подпись результат был положительный и подпись стояла.<br />Может ли быть так, что хоть и факт подписания был, но сама подпись не шифровалась?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid81752:1Неправильная подпись<table class="content postContainer_Alt" width="100%"><tr><td>нет заполнения :( я не совсем компетентен в работе с криптопро .net и методами шифрования, писал код давно. Ошибка появилась в день написания поста. Помогите пожалуйста в решении этой проблемы</td></tr></table>2017-07-18T15:26:55+03:002017-07-18T15:26:55+03:00wolfree9266<table class="content postContainer_Alt" width="100%"><tr><td>нет заполнения :( я не совсем компетентен в работе с криптопро .net и методами шифрования, писал код давно. Ошибка появилась в день написания поста. Помогите пожалуйста в решении этой проблемы</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid81716:1Неправильная подпись<table class="content postContainer" width="100%"><tr><td><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-csharp"> byte[] buff = new byte[8192];
var contentInfo = new ContentInfo(buff);
// сертификат для подписания
SignedCms signedCms = new SignedCms(contentInfo, true);</code></pre>
</div></div><br /><br />Где заполнение buff?</td></tr></table>2017-07-17T09:49:46+03:002017-07-17T09:49:46+03:00Андрей *<table class="content postContainer" width="100%"><tr><td><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-csharp"> byte[] buff = new byte[8192];
var contentInfo = new ContentInfo(buff);
// сертификат для подписания
SignedCms signedCms = new SignedCms(contentInfo, true);</code></pre>
</div></div><br /><br />Где заполнение buff?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid81712:1Неправильная подпись<table class="content postContainer_Alt" width="100%"><tr><td>up!</td></tr></table>2017-07-17T09:23:02+03:002017-07-17T09:23:02+03:00wolfree9266<table class="content postContainer_Alt" width="100%"><tr><td>up!</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid81200:1Неправильная подпись<table class="content postContainer" width="100%"><tr><td>Добрый вечер.<br /><br />Пытаюсь подписать pdf по кнопке, ранее работало, сегодня на флешке создал новый контейнер и сертификат. С флешки установил сертификат в личное, пытаюсь с него подписаться получаю ошибку - "Неправильная подпись."<br /><br /><br /><br />Ошибка возникает в этом методе... Строка ошибки не ясна.<br />Интересна причина, в каких случаях выводится такая ошибка, чтобы знать на что грешить<br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-csharp">
/*
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;
}
</code></pre>
</div></div></td></tr></table>2017-06-28T17:55:09+03:002017-06-28T17:55:09+03:00wolfree9266<table class="content postContainer" width="100%"><tr><td>Добрый вечер.<br /><br />Пытаюсь подписать pdf по кнопке, ранее работало, сегодня на флешке создал новый контейнер и сертификат. С флешки установил сертификат в личное, пытаюсь с него подписаться получаю ошибку - "Неправильная подпись."<br /><br /><br /><br />Ошибка возникает в этом методе... Строка ошибки не ясна.<br />Интересна причина, в каких случаях выводится такая ошибка, чтобы знать на что грешить<br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-csharp">
/*
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;
}
</code></pre>
</div></div></td></tr></table>