технология проставления ЭЦП

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти  
Веб-сервисы » Прямой доступ
Страницы: 1
технология проставления ЭЦП, вопрос в том, как правильно технически формировать ЭЦП для документов
Добрый день...

несколько раз перечитал инструкцию по "корректному" подписанию документов (п3.5)... про кодировку DER, структуры ContentInfo и SignedData...
и явно не въехал ... (((

использую стандартную функцию (понятное дело, что стоит CryptoPro CSP)

static public byte[] Sign(byte[] data, X509Certificate2 cert)
{
SignedCms signedCms = new SignedCms(new ContentInfo(data), true);

CmsSigner signer = new CmsSigner(cert);
signer.IncludeOption = X509IncludeOption.EndCertOnly;

signedCms.ComputeSignature(signer);

return signedCms.Encode();
}

ну, и очевидно на выходе для поданной заявки получаю ошибку!!!
"Ошибка при проверке электронной цифровой подписи файла req_NNN.xml. Файл подписи req_NNN.xml.sig не соответствует файлу данных req_NNN.xml."


Подскажите, пожалуйста, в какую сторону копать, чтобы разобраться с "ПРАВИЛЬНЫМ" подписанием файлов...

Заранее спасибо!
Мой код. Отличается от вашего одной строкой, что и почему так, уже не помню.

Код
   ...
   buffer = File.ReadAllBytes(sFileIn);
   ...

   public static byte[] signBufferX509(byte[] buffer, X509Certificate2 myCert)
   {
      byte[] signedbytes=null;            
      try
      {
         ContentInfo content = new ContentInfo(buffer);

         SignedCms signedCms = new SignedCms(content, true);
         CmsSigner signer = new CmsSigner(SubjectIdentifierType.IssuerAndSerialNumber, myCert);

         signedCms.ComputeSignature(signer, false);
         signedbytes = signedCms.Encode();

         return signedbytes;

      }
      catch (Exception ex)
      {
         throw new ApplicationException("Подписывание не удалось: [" + ex.Message + "]", ex);
      }
   } 

   ...
   File.WriteAllBytes(sFileIn + ".sig", signedbytes);
   ...
Роман, спасибо огромное!
я не знаю, действительно, в чем, собственно, разница, но, "видимо" заработало... magic... )))
почему "видимо" - потому, что теперь нет ошибки проверки ЭЦП, но зато есть другая:

"Ошибка при разборе данных, полученных от веб-сервиса удостоверяющего центра"...
ТехноКад отвечает, что у них все хорошо, Росреестр, конечно, ссылается на Технокад.... )))

Может кто-нибудь встречался с такой ошибкой?
(на некоторых форумах говорят, что это временная ошибка Росреестра)
Встречались с данной ошибкой не раз. Всегда проблема решалась обращением в соответствующий УЦ.
"Ошибка при разборе данных, полученных от веб-сервиса удостоверяющего центра" продолжается...
УЦ Технокад продолжает утверждать, что ответы уходят в росреестр корректные...

Если подавать заявку "вручную" через портал росреестра, то она действительно "проходит" нормально,
при том, что подписана тем же сертификатом, что и в первом случае...

Может ли ошибка "Ошибка при разборе данных, полученных от веб-сервиса удостоверяющего центра"
Означать, что сам файл заявки сформирован не правильно??? :?:

Нужно ли регистрировать где-то свой софт, как участника прямого взаимодействия?
или через этот сервис, действительно, любой может отправлять заявки? :?:
Как показывает практика, ошибки сервиса могут означать всё, что угодно.
Вчера были сбои на связке Росреестр<->УЦ, возможно поэтому проблемы?
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)
Администрирование и хостинг ООО "ИндорСофт"