Либо внутренняя ошибка asn1 либо ошибка дешифровки 0x80093101


Offline

E1r0nd

 


#1
Оставлено
:

2 июня 2022 г. 23:10:21(UTC)

E1r0nd

Статус: Новичок

Группы: Участники

Зарегистрирован: 02.06.2022(UTC)
Сообщений: 1

Приветствую!
Столкнулся со следующей проблемой: если при формировании CaDES-XLT1 в качестве доказательства валидности сертификата подписанта указать CRL, при проверке (https://dss.cryptopro.ru/Verify/Verify/) возникает ошибка «Подпись имеет признаки подписи формата CAdES-XLT1, но не соответствует им полностью. Не удалось проверить подпись CAdES-XLT1. Ошибка: [либо внутренняя ошибка ASN1 либо ошибка дешифровки]. Код: [0x80093101].». При этом если в качестве доказательства использовать OCSP ответ, то подпись проверяется успешно. В приложении error_sig.txt — пакет,вызывающий ошибку. ok_sig.txt — пакет без ошибки

ok_sig.txt (35kb) загружен 3 раз(а). error_sig.txt (706kb) загружен 2 раз(а).


Вверх


Offline

Санчир Момолдаев

 


#2
Оставлено
:

3 июня 2022 г. 0:24:14(UTC)

Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 86 раз
Поблагодарили: 215 раз в 207 постах

Добрый день!
все верно. в качестве доказательств подлинности для сертификата подписанта должен быть ocsp ответ.
хоть rfc указано что в качестве доказательств может быть ocsp ответ на основе crl (thisUpdate и nextUpdate из crl) или сам crl, в наших продуктах реализация иная.

причина в том что например crl может быть издан месяц назад и действовать еще два месяца.
в таком случае tsp штамп на время подписи будет позже чем ThisUpdate ocsp ответа. т.е. фактически нет доказательств что в период между thisUpdate из ocsp штампа и tsp штампа сертификат подписанта был действителен.

поэтому в качестве доказательств принимается только ocsp ответ с thisUpdate, при этом nextUpdate в ответе должно отсутствовать.

время в штампах должно удовлетворять условию
inner tsp (signing timestamp) <= thisUpdate from ocsp (evidence) <= outer tsp (evidence timestamp)

конечно может и можно было бы чтобы использовалься crl, но в таком случае УЦ должен выпускать crl ежесекундно, что нереализуемо

Отредактировано пользователем 3 июня 2022 г. 0:25:17(UTC)
 | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний


Вверх


Offline

Новожилова Елена

 


#3
Оставлено
:

3 июня 2022 г. 10:20:08(UTC)

Новожилова Елена

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

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах

Дополню про CRL.

Для того, чтобы CRL подтверждал действительность сертификата на момент подписи, он должен быть выпущен (имеется в виду поле thisUpdate) после момента времени, указанном в штампе времени на подпись. То есть пришлось бы сначала создать подпись, получить на неё штамп времени, подождать выпуска следующего CRL и только тогда закончить создание подписи CAdES-X Long Type 1. Большинство CRL выпускаются раз в сутки.

И второй момент, про который не всегда помнят, — CRL имеет гораздо больший размер, чем OCSP-ответ. Здесь в соседней ветке были жалобы на CRL в пару мегабайт, включаемый в каждую подпись.

Именно из-за этих двух существенных минусов: (1) подпись можно (в большинстве случаев) закончить только на следующий день и (2) большой размер — и было принято решение для проверки сертификата ключа подписи использовать только OCSP-ответ. Замечу, что для промежуточных CA требования менее строгие, для них допускается использование CRL в доказательствах.


Вверх


Offline

Андрей *

 


#4
Оставлено
:

3 июня 2022 г. 12:00:31(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,987
Мужчина
Российская Федерация

Сказал «Спасибо»: 457 раз
Поблагодарили: 1907 раз в 1474 постах

Автор: Новожилова Елена Перейти к цитате

Дополню про CRL.
..
И второй момент, про который не всегда помнят, — CRL имеет гораздо больший размер, чем OCSP-ответ. Здесь в соседней ветке были жалобы на CRL в пару мегабайт, включаемый в каждую подпись.

Именно из-за этих двух существенных минусов: (1) подпись можно (в большинстве случаев) закончить только на следующий день и (2) большой размер — и было принято решение для проверки сертификата ключа подписи использовать только OCSP-ответ. Замечу, что для промежуточных CA требования менее строгие, для них допускается использование CRL в доказательствах.

Например, сейчас CRL ФНС уже 4.5 мб ( с 114К отозванных сертификатов)…
Snimok ehkrana ot 2022-06-03 12-57-22.png (119kb) загружен 4 раз(а).

Snimok ehkrana ot 2022-06-03 12-59-43.png (43kb) загружен 4 раз(а).

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW

Пользователи, просматривающие эту тему

Guest

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

Содержание

  1. Либо внутренняя ошибка asn1 либо ошибка дешифровки 0x80093101
  2. Общие обсуждения
  3. Либо внутренняя ошибка asn1 либо ошибка дешифровки 0x80093101
  4. Jrpcexception asn 1 decode error offset 0
  5. Ошибка 0x80093106 и нехватка памяти для ASN1
  6. Ошибка 0x80093106 и нехватка памяти для ASN1
  7. Что означает нехватка памяти для ASN1?
  8. Как исправить ошибку 0x80093106

Общие обсуждения

Здравствуйте!
В нашей организации мы столкнулись с проблемой не позволяющей отправлять зашифрованные сообщения в MS Outlook 2007.
Есть группа организаций, в каждой из которой осуществляется выпуск сертификатов средствами собственных удостоверяющих центров, входящих в сеть удостоверяющих центров. При отправке зашифрованных писем внутри нашей организации появляется следующее сообщение об ошибке: » Ошибка на нижнем уровне системы безопасности. Встречено неверное значение тега ASN1 «. Как правило ошибка появляется при отправке сообщений получателям имеющим сертификат выданный нашим удостоверяющим центром и внутри организации. При отправке сообщения в другую организацию, соответственно с сертификатом выданным её удостоверяющим центром, сообщение уходит без каких- либо проблем. Если отправлять сообщение внутри организации, но использовать при шифровании сертификат выданный удостоверяющим центром другой организации, письмо уходит нормально. Было предположение, что возможно проблема в сертификатах выпускаемым нашим удостоверяющим центром. Проводили тестовые отправки писем с семи рабочих станций, используя учетные записи семи человек. В тестировании было 5 пользовательских рабочих станций и две тестовые с операционной системой Windows XP Pro и операционной системой Windows 7. Тестовые машины крайне редко использовались для работы пользователей и никогда для шифрованного документооборота средствами MS Outlook. В ходе тестов выяснили следующее:
1. Почти у всех пользователей с тестовой рабочей станции с операционной системой Windows XP Pro сообщения оправились без проблем. Ошибка возникла только у одного пользователя, она также возникает и на его рабочей станции.
2. При смене пользователями рабочих станций на одних местах ошибка возникала, а на других нет. И выявить какую-либо определенную закономерность не удалось. Ошибка возникала у разных пользователей на разных рабочих станциях.
3. При отправке сообщений с тестовой машины с операционной системой Windows 7 снова появлялась данная ошибка, хотя на некоторых других машинах и в том числе тестовой с Windows XP Pro, ошибки не было.

4. На тестовой рабочей станции под управлеинем Windows 7 осуществлялась отправка сообщений от двух пользователей с одинаковыми сертификатами, выдаными одним удостоверяющим центром. От первого пользователя сообщения уходили нормально всем сотрудникам участвовашим в тестировании. От второго пользователя сообщение удалось отправить только первому, во всех других случаях снова возникала ошибка тега ASN1.

Так как на одних рабочих станциях все работало нормально, а на других нет, причем у одних и тех же пользователей, мне кажется дело не в сертификатах. Скорее всего проблема в самих рабочих станциях, их настройках или в конфликте с программным обеспечением установленным на машины. В чем конкретно проблема мы своими силами, к сожалению, выяснить не смогли.
Так на большинстве рабочих мест в нашей организации установлена операционная система Windows 7 и осуществляется плановый переход на эту систему с Windows XP Pro, где она ещё используется, то хотелось бы решить данную проблему применительно к Windows 7, если нет какого-то общего решения.

Outlook настроен на шифрование вполне корректно, т.к. ошибка возникает не постоянно при отправке каждого сообщения. Да и обмен зашифрованной почты с сотрудниками других организаций проходит нормально.
Скажите, пожалуйста, типична ли данная ошибка или нет и корни проблемы стоит искать в конфликте программного обеспечения.
Какие вообще есть идеи и что можно попробовать или почитать, чтобы решить эту проблему.
Спасибо!

Источник

Либо внутренняя ошибка asn1 либо ошибка дешифровки 0x80093101

Программа: КриптоАРМ — Ошибка 1722. Ошибка пакета Windows Installer. Непредвиденное завершение программы, являющейся частью установки. Обратитесь к техническому персоналу или к поставщику пакета. Действие ProcessMsi1, расположение: D:, команда: msiexec.exe /i «C:UsersRbuAppDataLocalTemp7ZipSfx.000TDStandardsetup-Win32.msi» /qb ADDLOCAL=TSPClient,OCSPClient,CAdESModule,CAPICOMModule REBOOT=ReallySuppress

Добрый день! При подписании файла выходит ошибкаСтатус завершения операции: Неудача.
Длительность выполнения операции: 0:00:11.88
Входной файл: C:Обращение на аванс РГС-Медицина.docx
Выходной файл: C:Обращение на аванс РГС-Медицина.docx.sig
Описание ошибки:
Ошибка сохранения сообщения (0x80004005)

Ошибка сохранения сообщения (0x80004005)

Произошла ошибка при создании подписи

Произошла ошибка при определении размера закодированного сообщения

Добрый день! Подскажите пожалуйста в чем причина ? При попытке шифрования уже подписанного файла выходит следующее сообщение :Произошла ошибка при шифровании сообщения

Произошла ошибка при открытии сообщения для кодирования

Внутренняя ошибка (CSP). (0x80090020)

Постоянные проблемы на 2х ПК с КриптоАРМ
1) слетает браузер плагин (просто перестает работать с ошибкой) обновление (cadesplugin) на актуальную версию не исправляет проблему, на ПК1 можно подписывать обычно или с штампов времени, но отправлять за-за плагина нельзя.
2) перестает работать штамп времени на ПК2, переустановка КриптоАРМ 2 не помогает.

Ключи рабочие, КриптоАРМ работают некоторое время после ПОЛНОЙ переустановки ОС (Win10 64)

На ПК2 подписывали без штампа, либо пересылали подписанный на ПК1 файл со штампом времени и отправляли.Вчера на ПК2 во время отправки слетел плагин, и не работает штамп времени.Переустановка КриптоАРМ не помогает.
Также после переустановки КриптоАРМ остаются настройки конфигурации..Хотя пробовали удалять тотальным унисталером
Скриншоты во вложении

Помогите! Уже устали от этих внезапных отказов в работе программы.

Источник

Jrpcexception asn 1 decode error offset 0

Ошибка 0x80093106 и нехватка памяти для ASN1

Ошибка 0x80093106 и нехватка памяти для ASN1

Добрый день! Уважаемые читатели и гости IT портала Pyatilistnik.org. Пару лет назад я устанавливал Windows 7 одному из своих друзей на его ноутбук. Все работало как часы, но на прошлой неделе мой друг написал мне, что у него на сайте taxcom.ru во время приема пакетов, выскочила ошибка «Не удалось получить размер для расшифрованных данных, причина нехватка памяти для ASN1. Код ошибки 0x80093106″ и попросил помочь в решении данной проблемы. Отказать ему я не мог, поэтому, когда появилось свободное время я приступил к ее устранению.

Что означает нехватка памяти для ASN1?

Есть такая система сдачи отчетности Такском, у пользователя выскочило уведомление:

[info]Уведомление о запрете использования сертификатов, выпущенных по ГОСТу 34.10-2001. Ошибка в процессе приема пакетов. В процессе приема документа от регламенту произошла ошибка. Не удалось получить размер для расшифрованных данных, причина нехватка памяти для ASN1. Код ошибки 0x80093106[/info]

В итоге Windows 7 используя метод EnvelopedCms.Decode в приложении Microsoft .NET Framework, не может декодировать сообщения размером более 5 мегабайт (МБ). Кроме того, вы получаете сообщение об ошибке, похожее на следующее:

  • Необработанное исключение: System.Security.Cryptography.CryptographicException: ASN1 недостаточно памяти.
  • в System.Security.Cryptography.Pkcs.EnvelopedCms.OpenToDecode (Byte [] encodedMessage)
  • в System.Security.Cryptography.Pkcs.EnvelopedCms.Decode (Byte [] encodedMessage)

Эта проблема возникает из-за того, что размер буфера неправильно увеличивается в функции CryptMsgUpdate, когда метод EnvelopedCms.Decode добавляет декодированный контент в буфер во время процесса декодирования. Таким образом, целочисленное переполнение происходит для большого файла.

Как исправить ошибку 0x80093106

Чтобы у нас возвратилась возможность принимать и обрабатывать письма более пяти мегабайт вам необходимо установить специальное обновление от Microsoft, это как в случае с бесконечным обновлением системы, вам его придется загрузить отдельно. Исправление заменит библиотеку Msasn1.dll. Нужная нам KB Windows6.1-KB2480994-v2-x64 или более новая версия KB2729094, подробнее о нем (https://support.microsoft.com/ru-ru/help/2480994/asn1-out-of-memory-error-when-the-cryptmsgupdate-function-decodes-a-me)

  • Скачать KB2480994 можно у меня по ссылке, к сожалению MS данное обновление убрала и заменила, на сколько я понял KB2729094
  • Скачать KB2729094 по ссылке (https://support.microsoft.com/ru-ru/help/2729094/an-update-for-the-segoe-ui-symbol-font-in-windows-7-and-in-windows-ser) или у меня из облака одним пакетом (https://cloud.mail.ru/public/Dgmm/KU6ehFgkn)

Производим установку обновлений KB248099. Запускаем его и соглашаемся на установку.

Сам процесс установки обновления KB248099 занимаем менее минуты.

I am using Objective System Inc(http://www.obj-sys.com/products/asn1c/index.php) ASN.1 Compiler and the specification file(cdr_spec.asn) generated Java source code. The CDRS are enecoded based on format BER(Basic Encoding Rule)

Command to generate Java source:

The source is generated:

When I decode the first CDR file, it parses 3 lines only, the CDR file is supposed to contain more than 100 lines, so it is partially decoded.

When I try decoding another CDR file, it is failed when decoding CDR file and gave me such error:

My ASN.1 specification file does not have any syntax error when I use tool checking its syntax.

Can anyone who knows ASN.1 well help me about this?

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I’d need some assistance in using the Service Control Engine (SCE) API.

I have developed a simple application that queries the bucket data for a given subscriber (using the getQuotaStatus API). However, despite I believe the source code is correct, I cannot get any reply back from the SCE.

The client-side debugging (in Log4J) confirms that everything is fine, and that the getQuotaStatus() command was issued properly.

I did some debugging by enabling the command «management-agent sce-api logging» on the SCE command line, and I see this log entries:

In particular, I don’t understand the «BAD: input is closed ASN.1 decode error» message.

Is this a known bug? How can I debug more, for example how can I get the text the SCE is trying to decode in ASN.1 notation?

I can post some snippet of my code, which is anyway very simple.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

The following message you pointed is too general and doesn’t

help much unfortunately. For instance, it can happen even when

there was a network connection issue between SCE and API.

closed BAD: input is closed ASN.1 decode error @ offset 930: Unexpected end-of-buffer encountered..

The method getQuotaStatus works fine for me, so there should

be something difference between us. I’m using 3.7.0.

One thing I can come up with is that you need to configure

the Quota RDR’s in SCABB and RDR-formatter for category 4

as below to get proper values by getQuotaStatus.

RDR-formatter destination 127.0.0.1 port 33001 category number 4 priority

Configuring the Quota Manager

If it still doesn’t work after the above changes, please share

the following information for further troubleshooting.

+ SCE and API version

+ OS which runs the API

+ Snippet of your code

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Many thanks for your answer.

I’ve added the line

RDR-formatter destination 127.0.0.1 port 33001 category number 4 priority 100

in the configuration. There are no other destinations for category 4.

By the way, I see that this problem is still open on 3.7.0, see «CSCsm19587» in the release notes (

However, I cannot get any answer from the SCE. My details:

  • SCE and API version: SCE8000 running version 3.6.5 Build 489. API version is: 3.6.5 Build 300.
  • Java version: 1.6.0_26
  • OS which runs the API: tried both Windows 7 and Apple OSX 10.6
  • Snippet of your code: see below

This is the code of the main class :

This is the code of SceQuotaListener.java :

This is the code of SceResultHandler.java :

Many thanks for your help, this problem got me stuck for ages, it’s driving me mad.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Hmm.. the source code you provided works fine for me on

my setup which runs same versions with yours.

I have added some println lines in your code to see the received value

and here is the result.

I’m getting the quota status for subscriber test1

1: 1048576(bucket id:value)

But when no bucket is assigned to the subscriber, then no value is returned.

So I assume you need to complete Quota related configurations including

Quota RDR settings on SCA-BB GUI(which I pointed in the previous reply) and

QM config on SM.

Please refer to the following doc for the detail.

You can check if a bucket.quota is assigned to a subs by:

SCE2000#>sh interface LineCard 0 subscriber name test1 bucket-state

Bucket 1 is used. Status – Not Breached.

SCE2000#>sh interface LineCard 0 subscriber name test1 bucket-state id 1

Bucket type: Total Volume

Bucket state: OK

Bucket size: 1048576

If no bucket is assigned:

SCE2000#>sh interface LineCard 0 subscriber name test2 bucket-state

Error – Subscriber has no quota profile.

BTW, do you always see the following error?

closed BAD: input is closed ASN.1 decode error @ offset 930: Unexpected end-of-buffer encountered..

Or the above error is one time event and your problem is that simply

SCE doesn’t reply any info to getQuotaStatus method?

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Thanks again for helping me.

I’ve followed the guide you linked (both the 3.6.5 and 3.7.0) line by line. I’ve also upgraded the OS and the API jars to 3.7.0, but the result is the same.

The only difference with my configuration is in this screen:

the guide suggests to configure «Gy», while I am using the second option instead. The difference is not fully clear to me.

I do see a similar output when I query a user with associated quota:

SCE2000#>sh interface LineCard 0 subscriber name test1 bucket-state id 1

Bucket type: Total Volume

Bucket state: OK

Bucket size: 1048576

I always get the error

closed BAD: input is closed ASN.1 decode error @ offset 930: Unexpected end-of-buffer encountered..

every time I use the getQuotaStatus().

Also, I tried following the instruction in paragraph » Configuring SCE for Quota Management Provisioning » of the guide you linked me (http://www.cisco.com/en/US/partner/docs/cable/serv_exch/serv_control/broadband_app/rel37x/qm_sol/03_configuring.html#wp1053276) but nothing changed.

Any other idea or debugging to suggest?

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

You always see the error while I have never seen it in my setup, that’s wired.

I think that’s better to open a TAC case with your SCE support file and the source code.

Last thing I can think of is that there is something issue in your network between your API

and SCE. For example, NAT, firewall, security software on your PC, etc. I’m not sure if these

can cause such error but if you don’t mind please test it again with a direct connection(same network)

between them. Seems the IP of SCE is 123.123.123.2 and the API is 192.168.2.101,

so I believe they are in different network.

If it doesn’t work with this change, I think openning a TAC case is a better option.

I’m sorry that I can’t help you much.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I have already opened a TAC last week, but it’s progressing very slowly and it seems quite hard to debug.

Thanks so much for spending time to help me.

ps: the ip 123.123.123.123 is a placeholder. There is no NAT nor firewall between the SCE and the API client. I tried this already.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I don’t want to bother your TAC case or work in parallel,

but there is something I forgot to suggest.

How many subscriber do you have in your SCE box?

If you have more than one and if this is not a production

environment, can you try clearing all the subscribers once

then import ev_btest32 only and try the test again?

If this is not a production, you can enable the following

rpc debug(at this point I’m not sure if this is helpful.).

debug rpc-adapter debug-mode on

debug rpc-adapter debug-mode off

The debug log generated can be found:

I think you have already tried this, but if you didn’t can

you please try reloading your SCE or try different SCE box?

Of course if this is not a production.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Thanks so much again for your help.

Sadly, this is a production SCE (with tens of thousands subscribers) so I can’t do anything of these. I also have another two SCE1000 and SCE2000 but they are in production too, and their subscribers don’t have associated quota.

My TAC was escalated today, let’s wait and see. It’s becoming quite frustrating.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I see, I’m sorry to hear that

Let’s wait for the response from escalation.

My intention was that something performance factor(num of subs, e.g.) is related to this issue

as in working case I see the following log(indicated in red) just after the same log(indicated in blue)

with yours, while in your case nothing happens about for 5 seconds then generates the error.

2011-10-11 17:32:12 | INFO | CPU #000 | Cleared user log files

2011-10-11 17:32:56 | INFO | CPU #000 | EM Agent: quotaStatusIndication operation was called with parameters: >

2011-10-11 17:33:03 | INFO | CPU #000 | EM Agent: PRPC connection to /1.120.20.1 established, client name is mcn.sceGw_1.120.20.1_SCE.J.API.PRPC, session name is rpc-3.

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – connect operation was called, registered listeners: none

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – connect operation was called, registered listeners: none

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – registered a quota Listener

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: getQuotaStatus operation was called with parameters: >

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: quotaStatusIndication operation was called with parameters: >

2011-10-11 17:33:05 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – disconnected

2011-10-11 17:33:05 | INFO | CPU #000 | EM Agent: PRPC connection to /1.120.20.1 closed OK: peer terminated connection: user request.

But I wouldn’t recommend to try anything I suggested in last reply as this is a production.

Источник

Содержание

  1. Ошибка 0x80093106 и нехватка памяти для ASN1
  2. Ошибка 0x80093106 и нехватка памяти для ASN1
  3. Что означает нехватка памяти для ASN1?
  4. Как исправить ошибку 0x80093106

Ошибка 0x80093106 и нехватка памяти для ASN1

Ошибка 0x80093106 и нехватка памяти для ASN1

Добрый день! Уважаемые читатели и гости IT портала Pyatilistnik.org. Пару лет назад я устанавливал Windows 7 одному из своих друзей на его ноутбук. Все работало как часы, но на прошлой неделе мой друг написал мне, что у него на сайте taxcom.ru во время приема пакетов, выскочила ошибка «Не удалось получить размер для расшифрованных данных, причина нехватка памяти для ASN1. Код ошибки 0x80093106″ и попросил помочь в решении данной проблемы. Отказать ему я не мог, поэтому, когда появилось свободное время я приступил к ее устранению.

Что означает нехватка памяти для ASN1?

Есть такая система сдачи отчетности Такском, у пользователя выскочило уведомление:

[info]Уведомление о запрете использования сертификатов, выпущенных по ГОСТу 34.10-2001. Ошибка в процессе приема пакетов. В процессе приема документа от регламенту произошла ошибка. Не удалось получить размер для расшифрованных данных, причина нехватка памяти для ASN1. Код ошибки 0x80093106[/info]

В итоге Windows 7 используя метод EnvelopedCms.Decode в приложении Microsoft .NET Framework, не может декодировать сообщения размером более 5 мегабайт (МБ). Кроме того, вы получаете сообщение об ошибке, похожее на следующее:

  • Необработанное исключение: System.Security.Cryptography.CryptographicException: ASN1 недостаточно памяти.
  • в System.Security.Cryptography.Pkcs.EnvelopedCms.OpenToDecode (Byte [] encodedMessage)
  • в System.Security.Cryptography.Pkcs.EnvelopedCms.Decode (Byte [] encodedMessage)

Эта проблема возникает из-за того, что размер буфера неправильно увеличивается в функции CryptMsgUpdate, когда метод EnvelopedCms.Decode добавляет декодированный контент в буфер во время процесса декодирования. Таким образом, целочисленное переполнение происходит для большого файла.

Как исправить ошибку 0x80093106

Чтобы у нас возвратилась возможность принимать и обрабатывать письма более пяти мегабайт вам необходимо установить специальное обновление от Microsoft, это как в случае с бесконечным обновлением системы, вам его придется загрузить отдельно. Исправление заменит библиотеку Msasn1.dll. Нужная нам KB Windows6.1-KB2480994-v2-x64 или более новая версия KB2729094, подробнее о нем (https://support.microsoft.com/ru-ru/help/2480994/asn1-out-of-memory-error-when-the-cryptmsgupdate-function-decodes-a-me)

  • Скачать KB2480994 можно у меня по ссылке, к сожалению MS данное обновление убрала и заменила, на сколько я понял KB2729094
  • Скачать KB2729094 по ссылке (https://support.microsoft.com/ru-ru/help/2729094/an-update-for-the-segoe-ui-symbol-font-in-windows-7-and-in-windows-ser) или у меня из облака одним пакетом (https://cloud.mail.ru/public/Dgmm/KU6ehFgkn)

Производим установку обновлений KB248099. Запускаем его и соглашаемся на установку.

Сам процесс установки обновления KB248099 занимаем менее минуты.

I am using Objective System Inc(http://www.obj-sys.com/products/asn1c/index.php) ASN.1 Compiler and the specification file(cdr_spec.asn) generated Java source code. The CDRS are enecoded based on format BER(Basic Encoding Rule)

Command to generate Java source:

The source is generated:

When I decode the first CDR file, it parses 3 lines only, the CDR file is supposed to contain more than 100 lines, so it is partially decoded.

When I try decoding another CDR file, it is failed when decoding CDR file and gave me such error:

My ASN.1 specification file does not have any syntax error when I use tool checking its syntax.

Can anyone who knows ASN.1 well help me about this?

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I’d need some assistance in using the Service Control Engine (SCE) API.

I have developed a simple application that queries the bucket data for a given subscriber (using the getQuotaStatus API). However, despite I believe the source code is correct, I cannot get any reply back from the SCE.

The client-side debugging (in Log4J) confirms that everything is fine, and that the getQuotaStatus() command was issued properly.

I did some debugging by enabling the command «management-agent sce-api logging» on the SCE command line, and I see this log entries:

In particular, I don’t understand the «BAD: input is closed ASN.1 decode error» message.

Is this a known bug? How can I debug more, for example how can I get the text the SCE is trying to decode in ASN.1 notation?

I can post some snippet of my code, which is anyway very simple.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

The following message you pointed is too general and doesn’t

help much unfortunately. For instance, it can happen even when

there was a network connection issue between SCE and API.

closed BAD: input is closed ASN.1 decode error @ offset 930: Unexpected end-of-buffer encountered..

The method getQuotaStatus works fine for me, so there should

be something difference between us. I’m using 3.7.0.

One thing I can come up with is that you need to configure

the Quota RDR’s in SCABB and RDR-formatter for category 4

as below to get proper values by getQuotaStatus.

RDR-formatter destination 127.0.0.1 port 33001 category number 4 priority

Configuring the Quota Manager

If it still doesn’t work after the above changes, please share

the following information for further troubleshooting.

+ SCE and API version

+ OS which runs the API

+ Snippet of your code

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Many thanks for your answer.

I’ve added the line

RDR-formatter destination 127.0.0.1 port 33001 category number 4 priority 100

in the configuration. There are no other destinations for category 4.

By the way, I see that this problem is still open on 3.7.0, see «CSCsm19587» in the release notes (

However, I cannot get any answer from the SCE. My details:

  • SCE and API version: SCE8000 running version 3.6.5 Build 489. API version is: 3.6.5 Build 300.
  • Java version: 1.6.0_26
  • OS which runs the API: tried both Windows 7 and Apple OSX 10.6
  • Snippet of your code: see below

This is the code of the main class :

This is the code of SceQuotaListener.java :

This is the code of SceResultHandler.java :

Many thanks for your help, this problem got me stuck for ages, it’s driving me mad.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Hmm.. the source code you provided works fine for me on

my setup which runs same versions with yours.

I have added some println lines in your code to see the received value

and here is the result.

I’m getting the quota status for subscriber test1

1: 1048576(bucket id:value)

But when no bucket is assigned to the subscriber, then no value is returned.

So I assume you need to complete Quota related configurations including

Quota RDR settings on SCA-BB GUI(which I pointed in the previous reply) and

QM config on SM.

Please refer to the following doc for the detail.

You can check if a bucket.quota is assigned to a subs by:

SCE2000#>sh interface LineCard 0 subscriber name test1 bucket-state

Bucket 1 is used. Status – Not Breached.

SCE2000#>sh interface LineCard 0 subscriber name test1 bucket-state id 1

Bucket type: Total Volume

Bucket state: OK

Bucket size: 1048576

If no bucket is assigned:

SCE2000#>sh interface LineCard 0 subscriber name test2 bucket-state

Error – Subscriber has no quota profile.

BTW, do you always see the following error?

closed BAD: input is closed ASN.1 decode error @ offset 930: Unexpected end-of-buffer encountered..

Or the above error is one time event and your problem is that simply

SCE doesn’t reply any info to getQuotaStatus method?

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Thanks again for helping me.

I’ve followed the guide you linked (both the 3.6.5 and 3.7.0) line by line. I’ve also upgraded the OS and the API jars to 3.7.0, but the result is the same.

The only difference with my configuration is in this screen:

the guide suggests to configure «Gy», while I am using the second option instead. The difference is not fully clear to me.

I do see a similar output when I query a user with associated quota:

SCE2000#>sh interface LineCard 0 subscriber name test1 bucket-state id 1

Bucket type: Total Volume

Bucket state: OK

Bucket size: 1048576

I always get the error

closed BAD: input is closed ASN.1 decode error @ offset 930: Unexpected end-of-buffer encountered..

every time I use the getQuotaStatus().

Also, I tried following the instruction in paragraph » Configuring SCE for Quota Management Provisioning » of the guide you linked me (http://www.cisco.com/en/US/partner/docs/cable/serv_exch/serv_control/broadband_app/rel37x/qm_sol/03_configuring.html#wp1053276) but nothing changed.

Any other idea or debugging to suggest?

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

You always see the error while I have never seen it in my setup, that’s wired.

I think that’s better to open a TAC case with your SCE support file and the source code.

Last thing I can think of is that there is something issue in your network between your API

and SCE. For example, NAT, firewall, security software on your PC, etc. I’m not sure if these

can cause such error but if you don’t mind please test it again with a direct connection(same network)

between them. Seems the IP of SCE is 123.123.123.2 and the API is 192.168.2.101,

so I believe they are in different network.

If it doesn’t work with this change, I think openning a TAC case is a better option.

I’m sorry that I can’t help you much.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I have already opened a TAC last week, but it’s progressing very slowly and it seems quite hard to debug.

Thanks so much for spending time to help me.

ps: the ip 123.123.123.123 is a placeholder. There is no NAT nor firewall between the SCE and the API client. I tried this already.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I don’t want to bother your TAC case or work in parallel,

but there is something I forgot to suggest.

How many subscriber do you have in your SCE box?

If you have more than one and if this is not a production

environment, can you try clearing all the subscribers once

then import ev_btest32 only and try the test again?

If this is not a production, you can enable the following

rpc debug(at this point I’m not sure if this is helpful.).

debug rpc-adapter debug-mode on

debug rpc-adapter debug-mode off

The debug log generated can be found:

I think you have already tried this, but if you didn’t can

you please try reloading your SCE or try different SCE box?

Of course if this is not a production.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Thanks so much again for your help.

Sadly, this is a production SCE (with tens of thousands subscribers) so I can’t do anything of these. I also have another two SCE1000 and SCE2000 but they are in production too, and their subscribers don’t have associated quota.

My TAC was escalated today, let’s wait and see. It’s becoming quite frustrating.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I see, I’m sorry to hear that

Let’s wait for the response from escalation.

My intention was that something performance factor(num of subs, e.g.) is related to this issue

as in working case I see the following log(indicated in red) just after the same log(indicated in blue)

with yours, while in your case nothing happens about for 5 seconds then generates the error.

2011-10-11 17:32:12 | INFO | CPU #000 | Cleared user log files

2011-10-11 17:32:56 | INFO | CPU #000 | EM Agent: quotaStatusIndication operation was called with parameters: >

2011-10-11 17:33:03 | INFO | CPU #000 | EM Agent: PRPC connection to /1.120.20.1 established, client name is mcn.sceGw_1.120.20.1_SCE.J.API.PRPC, session name is rpc-3.

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – connect operation was called, registered listeners: none

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – connect operation was called, registered listeners: none

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – registered a quota Listener

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: getQuotaStatus operation was called with parameters: >

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: quotaStatusIndication operation was called with parameters: >

2011-10-11 17:33:05 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – disconnected

2011-10-11 17:33:05 | INFO | CPU #000 | EM Agent: PRPC connection to /1.120.20.1 closed OK: peer terminated connection: user request.

But I wouldn’t recommend to try anything I suggested in last reply as this is a production.

Использование ЭЦП открывает для владельца подписи дополнительные возможности. Но вместе с этим, иногда сопровождается небольшими техническими проблемами, связанными с необходимостью чёткого выполнения действий, связанных с загрузкой сертификатов, авторизацией, установкой необходимого программного обеспечения, а также системных требований к компьютеру.

Как выглядит ЭЦП
Важно отметить, что большинство ошибок при работе с ЭЦП можно устранить в домашних условиях, без необходимости привлечения специалистов со стороны.

Содержание

  • Какие виды ошибок ЭЦП бывают
  • Проблема с подписанием ЭПЦ
  • Как проявляется данная ошибка и что сделать, чтобы исправить
  • Проблема с сертификатом
  • Что делать если не найден сертификат или не верен
  • Проблемы при авторизации

Какие виды ошибок ЭЦП бывают

Среди наиболее часто встречающихся ошибок в процессе подписания электронных документов электронной подписью выделяют три ключевых блока:

Проблема с подписанием ЭПЦ. Возникает в момент, когда владелец подписи желает использовать ее при подписании электронного документа.

Проблема с сертификатом. Здесь система информирует пользователя об отсутствии (не действительности), либо использовании незарегистрированного сертификата удостоверяющего центра, необходимого для внешней проверки ЭП.

Проблемы при авторизации. Появляется при проверке пользователя, когда владелец электронной подписи впервые пытается зайти на электронную площадку с подтверждением личности через ЭЦП.

Проблема с подписанием ЭПЦ

Причины, вызывающие подобную ошибку весьма разнообразны. Тут можно выделить такие основные направления:

  • Закрытый ключ со съемного носителя (диска, флешки, Токена), не соответствует имеющемуся ключу открытого сертификата. Банальный человеческий фактор выбора не того носителя информации с ЭЦП. Если же «правильный» ключ утерян, придется обращаться в Удостоверяющий центр для перевыпуска.
  • Недействительный сертификат. Чтобы устранить подобную ошибку потребуется переустановить открытый сертификат. Важно учитывать требования криптопровайдера (инструкции по необходимым действиям) для установки открытых сертификатов.
  • Сертификат подписи определяется как не проверенный. Потребуется выполнить переустановку корневого сертификата, сформировавшего ЭП Удостоверяющего центра.
  • Закончился срок действия криптопровайдера. Необходимо получить новый лицензионный ключ, позволяющий работать с программным обеспечением криптопровайдера. Информация запрашивается через УЦ, либо владельца ПО.
  • Не виден сертификат на носителе. Помогает простая перезагрузка компьютера для устранения ошибка генерации.
  • Алгоритм сертификата ЭЦП не поддерживается. Подобная ошибка может возникать при подписании электронной отчетности в налоговую. Потребуется переустановить КриптоПро CSP и проверить его на совместительство с имеющейся у вас на компьютере операционной системой.

Как проявляется данная ошибка и что сделать, чтобы исправить

Ошибка исполнения функции с информированием о невозможности подписать документ ЭЦП обычно появляется в момент подписания документа.

Система сразу выводит на экран уведомление о непредвиденной ошибке с кратким указанием причины ее возникновения.

Обычно для ее исправления требуются такие действия:

  • проверка наличия, срока действия, подлинности сертификатов и выполнение их замены;
  • выполнение проверки корректной работы операционной системы компьютера, ее обновление до минимальных допустимых параметров;
  • проверка состояния съемного носителя закрытого ключа;
  • выявление и устранение ошибок работы криптопровайдера.

Важно. Причина, из-за которой владелец ЭЦП не может нею воспользоваться, может быть комплексной. Поэтому, если не сработал один из предложенных вариантов, проверьте по другим направлениям.

Проблема с сертификатом

Распространенным явлением во время подписания электронных документов ЭЦП является получение уведомления, что системе не удалось получить доступ к сертификатам, пригодным для формирования подписи.

Здесь причины возникновения неисправности могут быть такими:

  1. Пользователь не установил на свой ПК корневые сертификаты УЦ, осуществлявшего формирование и выдачу ЭЦП. Для устранения – скачать и установить на компьютер такой сертификат, либо прописать доступ к нему.
  2. Система не видит личных сертификатов владельца ЭЦП. Выдаются одновременно с оформлением ЭП. Их необходимо загрузить на ваш ПК, и подтянуть в криптопровайдер. В дальнейшем можно загрузить через сайт УЦ. Устанавливаются и прописываются на рабочем месте, предназначенном для работы с ЭЦП. С незарегистрированным сертификатом вы не сможете осуществлять подписание электронных документов.
  3. Информирование о невалидности сертификатов. Обычно такое возможно в случае, когда заканчивается срок действия сертификата, либо их отзывают. Потребуется обращаться в УЦ, выдавший ЭЦП, для уточнения статуса сертификатов подписи. В некоторых случаях помогает обновление сертификатов на компьютере пользователя. Сделать это можно вручную.

Мнение эксперта

Владимир Аникеев

Специалист отдела технической поддержки УЦ

Внимательно читайте природу ошибки, что выдает система. Обычно это ключ к дальнейшему направлению поиска источника проблемы и ее устранению.

Что делать если не найден сертификат или не верен

Когда сертификат отсутствует в списке «Ваши Сертификаты», проблема может оказаться в отсутствии коренного сертификата УЦ.

Для устранения этой проблемы необходимо:

  • проверить наличие такого сертификата на вашем ПК по пути: «Пуск» — дальше «Все программы» — после этого плагин «КриптоПро» — а уже там «Сертификаты»;
  • дальше находим вкладку «Личное», выбираем «Сертификаты»;

Раздел сертификаты

  • потребуется открыть не отображенный во вкладке сертификат и просмотреть его «Путь сертификации»;
  • тут отображаются все цепочки сертификатов в порядке ранжирования. Важно чтобы напротив какого-то из них не стоял желтый, либо красный значок предупреждения. Если подобное присутствует – нажмите на сам сертификат и ознакомьтесь с ошибкой, что выдаст система;
  • в зависимости от причины (обычно это окончание действия сертификата, либо не верифицирован) выполните ее устранение.

Чтобы устранить ошибку и перезагрузить отозванный сертификат потребуется выполнить несколько не сложных действий:

  • в окне «Свойства браузера» откройте личный сертификат. Попасть туда можно через «Поиск» меню «Пуск». В открытом окошке ищите вкладку «Содержание», дальше вкладку «Сертификаты»;
  • после этого во вкладке «Состав» потребуется выбрать позицию «Точки распространения списков отзывов»;
  • в следующем блоке под названием «Имя точки распространения» необходимо выполнить копирование ссылки загрузки файла списка отзывов;
  • переходя по указанной ссылке необходимо скачать и установить файл списка отзывов (CRL);
  • дальше переходим по подсказкам «Мастера импорта сертификатов».

Следующей распространенной проблемой, когда компьютер не видит сертификат на носителе, является сбой в работе программных продуктов компьютера либо Токена (флешки). Обычно помогает простая перезагрузка ПК. Среди прочих популярных проблем этого направления можно выделить такие:

  1. На носителе отсутствует драйвер, либо он установлен не корректно. Необходимо скачать последнюю версию драйвера с официального источника и установите его. Можно проверить работоспособность съемного носителя на другом ПК. В этом случае, если другой ПК нормально работает с носителем ЭЦП, переустановите драйверы на первом компьютере.
  2. Система долго распознает носитель ЭЦП. Тут проблема в операционной системе. Ее потребуется обновить до минимального уровня, требуемого для работы с ЭЦП.
  3. USB-порт работает не корректно. Попробуйте подсоединить Токен (флешку) через другой порт, либо на другом ПК, чтобы убедиться, что проблема не в носителе. Выполните перезагрузку компьютера.
  4. Если Токин (флешка) не открывается ни на одном компьютере, значит проблема в носителе. Когда ключ был записан в единственном экземпляре на этот носитель – потребуется обращаться в УЦ для перевыпуска ЭЦП.

Важно. Перед вынесением «окончательного вердикта» касательно работоспособности носителя и сертификата, не поленитесь выполнить их проверку через несколько различных источников.

Проблемы при авторизации

Часто с подобными неприятностями сталкиваются владельцы ЭЦП, пытающиеся пройти регистрацию, либо авторизацию на различных электронных торговых площадках. Пользователю появляется уведомление, что его подпись не авторизирована.

Обычно проблема кроется:

  1. Отсутствие регистрации. Потребуется попросту зарегистрироваться на избранном вами ресурсе.
  2. Не зарегистрирован сертификат. Возникает после обновления ключа ЭЦП. Устраняется путем регистрации нового сертификата ключа ЭЦП.

Мнение эксперта

Владимир Аникеев

Специалист отдела технической поддержки УЦ

На различных ресурсах процесс регистрации (авторизации) может существенно отличаться, иметь определенные ограничения, а также блокироваться защитным ПО. Поэтому перед началом процедуры не поленитесь ознакомиться с соответствующей инструкцией и правилами.

В дальнейшем, при работе на самой электронной площадке и попытке подписать электронные документы, могут возникать дополнительные трудности, связанные с такими моментами:

  1. Необходимости присоединиться к регламенту. Система не даст возможность полноценно работать, если вы не согласитесь с ее условиями.
  2. Невозможность загрузить файл (файлы). Обычно это ошибка превышения размера информации, что допустима для загрузки. Просто смените формат разрешения файла, чтобы уменьшить его размер.
  3. Требование использовать определенный браузер (определенную версию браузера). Это системные требования владельца площадки, которые необходимо соблюдать.
  4. Проблемы со считыванием сертификатов. Потребуется проверить не просрочены ли ваши сертификаты, а также все ли они установлены на ПК.

Что значит er 10002 неопределенная ошибка при проверке ЭЦП, что делать?

Возможно не прошла расшифровка файла ключа. Перезагрузите компьютер. Проверьте, отображается ли съемный носитель ключа ЭЦП, наличие и корректность отображения сертификатов, а также соответствие их (должен быть одинаковый владелец).

Ошибка 52 цифровая подпись

Связана с повреждением, либо отсутствием необходимых драйверов на носителе, либо ПК. Потребуется скачать с официального источника недостающий драйвер и переустановить его.

Почему компьютер не видит ЭЦП?

Несоответствие программного продукта операционной системы и съемного носителя (флешки), либо повреждение флешки. Устраняется путем обновления операционной системы до минимально необходимой версии. В случае обнаружения повреждения флешки – может потребоваться перевыпуск ЭЦП удостоверяющим центром.

Почему КриптоПро не отображает ЭЦП?

Потребуется выполнить определенные настройки вашего браузера и добавить программу в меню веб-обозревателя, а также загрузить недостающие сертификаты ЭЦП.

Где на компьютере искать сертификаты ЭЦП?

Хранение сертификатов в Windows (от 7 версии) осуществляется по адресу: C:UsersПОЛЬЗОВАТЕЛЬAppDataRoamingMicrosoftSystemCertificates

где вместо «ПОЛЬЗОВАТЕЛЬ» должно стоять наименование вашего ПК


Offline

rafaelkhasanov

 


#1
Оставлено
:

17 октября 2021 г. 3:07:30(UTC)

rafaelkhasanov

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

Группы: Участники

Зарегистрирован: 29.04.2021(UTC)
Сообщений: 15

Хочу проверить подпись, пришедшую от ЕСИА.
Использую такую команду:

Вывод:
CSP (Type:80) v5.0.10003 KC1 Release Ver:5.0.11455 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 10322787
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP
An error occurred in running the program.
/dailybuildsbranches/CSP_5_0r0/CSPbuild/CSP/samples/csptest/ctkey.c:3119:CryptImportPublicKeyInfoEx()
Error number 0x80093101 (2148086017).
либо внутренняя ошибка ASN1 либо ошибка дешифровки.
Total: SYS: 0,000 sec USR: 0,030 sec UTC: 0,050 sec
[ErrorCode: 0x80093101]

На винде все ок
2021-10-17_03-03-25.png (23kb) загружен 21 раз(а).


Вверх


Online

Александр Лавник

 


#2
Оставлено
:

18 октября 2021 г. 9:08:50(UTC)

Александр Лавник

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

Группы: Участники

Зарегистрирован: 30.06.2016(UTC)
Сообщений: 3,307
Мужчина
Российская Федерация

Сказал «Спасибо»: 53 раз
Поблагодарили: 746 раз в 694 постах

Автор: rafaelkhasanov Перейти к цитате

Хочу проверить подпись, пришедшую от ЕСИА.
Использую такую команду:

Вывод:
CSP (Type:80) v5.0.10003 KC1 Release Ver:5.0.11455 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 10322787
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP
An error occurred in running the program.
/dailybuildsbranches/CSP_5_0r0/CSPbuild/CSP/samples/csptest/ctkey.c:3119:CryptImportPublicKeyInfoEx()
Error number 0x80093101 (2148086017).
либо внутренняя ошибка ASN1 либо ошибка дешифровки.
Total: SYS: 0,000 sec USR: 0,030 sec UTC: 0,050 sec
[ErrorCode: 0x80093101]

На винде все ок
2021-10-17_03-03-25.png (23kb) загружен 21 раз(а).

Здравствуйте.

Попробуйте доустановить пакет cprocsp-rsa-64-5.0.11455-5.x86_64.rpm из состава дистрибутива КриптоПро CSP 5.0.11455 и повторить проверку.

Техническую поддержку оказываем тут
Наша база знаний


Вверх


Offline

rafaelkhasanov

 


#3
Оставлено
:

20 октября 2021 г. 1:38:03(UTC)

rafaelkhasanov

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

Группы: Участники

Зарегистрирован: 29.04.2021(UTC)
Сообщений: 15

2021-10-20_01-35-13.png (239kb) загружен 7 раз(а).
Установили. К сожалению, картина не изменилась. Имеет ли значение, что устанавливалось от рута, а скрипт запускается от другого юзера?


Вверх


Offline

rafaelkhasanov

 


#4
Оставлено
:

20 октября 2021 г. 2:09:50(UTC)

rafaelkhasanov

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

Группы: Участники

Зарегистрирован: 29.04.2021(UTC)
Сообщений: 15

Проверил сейчас через гостовский тестовый сертификат (предварительно изменив настройки в тех кабинете ЕСИА, чтобы изменился алгоритм), все ок, проверяет успешно, а вот SHA256 не хочет.


Вверх


Online

Александр Лавник

 


#5
Оставлено
:

20 октября 2021 г. 12:20:15(UTC)

Александр Лавник

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

Группы: Участники

Зарегистрирован: 30.06.2016(UTC)
Сообщений: 3,307
Мужчина
Российская Федерация

Сказал «Спасибо»: 53 раз
Поблагодарили: 746 раз в 694 постах

Автор: rafaelkhasanov Перейти к цитате

Проверил сейчас через гостовский тестовый сертификат (предварительно изменив настройки в тех кабинете ЕСИА, чтобы изменился алгоритм), все ок, проверяет успешно, а вот SHA256 не хочет.

Здравствуйте.

Если есть возможность, то приложите (или пришлите ссылку через ЛС) файла, с которым возникает ошибка при проверке подписи.

Техническую поддержку оказываем тут
Наша база знаний


Вверх


Offline

rafaelkhasanov

 


#6
Оставлено
:

27 сентября 2022 г. 9:21:56(UTC)

rafaelkhasanov

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

Группы: Участники

Зарегистрирован: 29.04.2021(UTC)
Сообщений: 15

RSA_TESIA.zip (2kb) загружен 3 раз(а).


Вверх


Offline

Андрей *

 


#7
Оставлено
:

27 сентября 2022 г. 10:35:33(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,987
Мужчина
Российская Федерация

Сказал «Спасибо»: 457 раз
Поблагодарили: 1907 раз в 1474 постах

Автор: rafaelkhasanov Перейти к цитате

RSA_TESIA.zip (2kb) загружен 3 раз(а).

sha1rsa в сертификате

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

Андрей *

 


#8
Оставлено
:

27 сентября 2022 г. 10:42:24(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,987
Мужчина
Российская Федерация

Сказал «Спасибо»: 457 раз
Поблагодарили: 1907 раз в 1474 постах

Автор: rafaelkhasanov Перейти к цитате

RSA_TESIA.zip (2kb) загружен 3 раз(а).

Snimok ehkrana ot 2022-09-27 11-41-05.png (21kb) загружен 6 раз(а).

Не вижу, что это сертификат от ЕСИА…

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

rafaelkhasanov

 


#9
Оставлено
:

27 сентября 2022 г. 14:27:22(UTC)

rafaelkhasanov

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

Группы: Участники

Зарегистрирован: 29.04.2021(UTC)
Сообщений: 15

http://esia.gosuslugi.ru/public/esia.zip

Из методички ЕСИА, https://digital.gov.ru/ru/documents/6186/, страница 39, п.3


Вверх


Offline

rafaelkhasanov

 


#10
Оставлено
:

27 сентября 2022 г. 14:32:34(UTC)

rafaelkhasanov

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

Группы: Участники

Зарегистрирован: 29.04.2021(UTC)
Сообщений: 15

Автор: Андрей * Перейти к цитате

Автор: rafaelkhasanov Перейти к цитате

RSA_TESIA.zip (2kb) загружен 3 раз(а).

sha1rsa в сертификате

Спасибо, попробуем, почему-то в лк тестовой Есиа алгоритм назван RSA256

Отредактировано пользователем 27 сентября 2022 г. 14:33:41(UTC)
 | Причина: Не указана


Вверх

Пользователи, просматривающие эту тему

Guest

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

Содержание

  1. Либо внутренняя ошибка asn1 либо ошибка дешифровки 0x80093101
  2. Общие обсуждения
  3. Либо внутренняя ошибка asn1 либо ошибка дешифровки 0x80093101
  4. Jrpcexception asn 1 decode error offset 0
  5. Ошибка 0x80093106 и нехватка памяти для ASN1
  6. Ошибка 0x80093106 и нехватка памяти для ASN1
  7. Что означает нехватка памяти для ASN1?
  8. Как исправить ошибку 0x80093106

Общие обсуждения

Здравствуйте!
В нашей организации мы столкнулись с проблемой не позволяющей отправлять зашифрованные сообщения в MS Outlook 2007.
Есть группа организаций, в каждой из которой осуществляется выпуск сертификатов средствами собственных удостоверяющих центров, входящих в сеть удостоверяющих центров. При отправке зашифрованных писем внутри нашей организации появляется следующее сообщение об ошибке: » Ошибка на нижнем уровне системы безопасности. Встречено неверное значение тега ASN1 «. Как правило ошибка появляется при отправке сообщений получателям имеющим сертификат выданный нашим удостоверяющим центром и внутри организации. При отправке сообщения в другую организацию, соответственно с сертификатом выданным её удостоверяющим центром, сообщение уходит без каких- либо проблем. Если отправлять сообщение внутри организации, но использовать при шифровании сертификат выданный удостоверяющим центром другой организации, письмо уходит нормально. Было предположение, что возможно проблема в сертификатах выпускаемым нашим удостоверяющим центром. Проводили тестовые отправки писем с семи рабочих станций, используя учетные записи семи человек. В тестировании было 5 пользовательских рабочих станций и две тестовые с операционной системой Windows XP Pro и операционной системой Windows 7. Тестовые машины крайне редко использовались для работы пользователей и никогда для шифрованного документооборота средствами MS Outlook. В ходе тестов выяснили следующее:
1. Почти у всех пользователей с тестовой рабочей станции с операционной системой Windows XP Pro сообщения оправились без проблем. Ошибка возникла только у одного пользователя, она также возникает и на его рабочей станции.
2. При смене пользователями рабочих станций на одних местах ошибка возникала, а на других нет. И выявить какую-либо определенную закономерность не удалось. Ошибка возникала у разных пользователей на разных рабочих станциях.
3. При отправке сообщений с тестовой машины с операционной системой Windows 7 снова появлялась данная ошибка, хотя на некоторых других машинах и в том числе тестовой с Windows XP Pro, ошибки не было.

4. На тестовой рабочей станции под управлеинем Windows 7 осуществлялась отправка сообщений от двух пользователей с одинаковыми сертификатами, выдаными одним удостоверяющим центром. От первого пользователя сообщения уходили нормально всем сотрудникам участвовашим в тестировании. От второго пользователя сообщение удалось отправить только первому, во всех других случаях снова возникала ошибка тега ASN1.

Так как на одних рабочих станциях все работало нормально, а на других нет, причем у одних и тех же пользователей, мне кажется дело не в сертификатах. Скорее всего проблема в самих рабочих станциях, их настройках или в конфликте с программным обеспечением установленным на машины. В чем конкретно проблема мы своими силами, к сожалению, выяснить не смогли.
Так на большинстве рабочих мест в нашей организации установлена операционная система Windows 7 и осуществляется плановый переход на эту систему с Windows XP Pro, где она ещё используется, то хотелось бы решить данную проблему применительно к Windows 7, если нет какого-то общего решения.

Outlook настроен на шифрование вполне корректно, т.к. ошибка возникает не постоянно при отправке каждого сообщения. Да и обмен зашифрованной почты с сотрудниками других организаций проходит нормально.
Скажите, пожалуйста, типична ли данная ошибка или нет и корни проблемы стоит искать в конфликте программного обеспечения.
Какие вообще есть идеи и что можно попробовать или почитать, чтобы решить эту проблему.
Спасибо!

Источник

Программа: КриптоАРМ — Ошибка 1722. Ошибка пакета Windows Installer. Непредвиденное завершение программы, являющейся частью установки. Обратитесь к техническому персоналу или к поставщику пакета. Действие ProcessMsi1, расположение: D:, команда: msiexec.exe /i «C:UsersRbuAppDataLocalTemp7ZipSfx.000TDStandardsetup-Win32.msi» /qb ADDLOCAL=TSPClient,OCSPClient,CAdESModule,CAPICOMModule REBOOT=ReallySuppress

Добрый день! При подписании файла выходит ошибкаСтатус завершения операции: Неудача.
Длительность выполнения операции: 0:00:11.88
Входной файл: C:Обращение на аванс РГС-Медицина.docx
Выходной файл: C:Обращение на аванс РГС-Медицина.docx.sig
Описание ошибки:
Ошибка сохранения сообщения (0x80004005)

Ошибка сохранения сообщения (0x80004005)

Произошла ошибка при создании подписи

Произошла ошибка при определении размера закодированного сообщения

Добрый день! Подскажите пожалуйста в чем причина ? При попытке шифрования уже подписанного файла выходит следующее сообщение :Произошла ошибка при шифровании сообщения

Произошла ошибка при открытии сообщения для кодирования

Внутренняя ошибка (CSP). (0x80090020)

Постоянные проблемы на 2х ПК с КриптоАРМ
1) слетает браузер плагин (просто перестает работать с ошибкой) обновление (cadesplugin) на актуальную версию не исправляет проблему, на ПК1 можно подписывать обычно или с штампов времени, но отправлять за-за плагина нельзя.
2) перестает работать штамп времени на ПК2, переустановка КриптоАРМ 2 не помогает.

Ключи рабочие, КриптоАРМ работают некоторое время после ПОЛНОЙ переустановки ОС (Win10 64)

На ПК2 подписывали без штампа, либо пересылали подписанный на ПК1 файл со штампом времени и отправляли.Вчера на ПК2 во время отправки слетел плагин, и не работает штамп времени.Переустановка КриптоАРМ не помогает.
Также после переустановки КриптоАРМ остаются настройки конфигурации..Хотя пробовали удалять тотальным унисталером
Скриншоты во вложении

Помогите! Уже устали от этих внезапных отказов в работе программы.

Источник

Jrpcexception asn 1 decode error offset 0

Ошибка 0x80093106 и нехватка памяти для ASN1

Ошибка 0x80093106 и нехватка памяти для ASN1

Добрый день! Уважаемые читатели и гости IT портала Pyatilistnik.org. Пару лет назад я устанавливал Windows 7 одному из своих друзей на его ноутбук. Все работало как часы, но на прошлой неделе мой друг написал мне, что у него на сайте taxcom.ru во время приема пакетов, выскочила ошибка «Не удалось получить размер для расшифрованных данных, причина нехватка памяти для ASN1. Код ошибки 0x80093106″ и попросил помочь в решении данной проблемы. Отказать ему я не мог, поэтому, когда появилось свободное время я приступил к ее устранению.

Что означает нехватка памяти для ASN1?

Есть такая система сдачи отчетности Такском, у пользователя выскочило уведомление:

[info]Уведомление о запрете использования сертификатов, выпущенных по ГОСТу 34.10-2001. Ошибка в процессе приема пакетов. В процессе приема документа от регламенту произошла ошибка. Не удалось получить размер для расшифрованных данных, причина нехватка памяти для ASN1. Код ошибки 0x80093106[/info]

В итоге Windows 7 используя метод EnvelopedCms.Decode в приложении Microsoft .NET Framework, не может декодировать сообщения размером более 5 мегабайт (МБ). Кроме того, вы получаете сообщение об ошибке, похожее на следующее:

  • Необработанное исключение: System.Security.Cryptography.CryptographicException: ASN1 недостаточно памяти.
  • в System.Security.Cryptography.Pkcs.EnvelopedCms.OpenToDecode (Byte [] encodedMessage)
  • в System.Security.Cryptography.Pkcs.EnvelopedCms.Decode (Byte [] encodedMessage)

Эта проблема возникает из-за того, что размер буфера неправильно увеличивается в функции CryptMsgUpdate, когда метод EnvelopedCms.Decode добавляет декодированный контент в буфер во время процесса декодирования. Таким образом, целочисленное переполнение происходит для большого файла.

Как исправить ошибку 0x80093106

Чтобы у нас возвратилась возможность принимать и обрабатывать письма более пяти мегабайт вам необходимо установить специальное обновление от Microsoft, это как в случае с бесконечным обновлением системы, вам его придется загрузить отдельно. Исправление заменит библиотеку Msasn1.dll. Нужная нам KB Windows6.1-KB2480994-v2-x64 или более новая версия KB2729094, подробнее о нем (https://support.microsoft.com/ru-ru/help/2480994/asn1-out-of-memory-error-when-the-cryptmsgupdate-function-decodes-a-me)

  • Скачать KB2480994 можно у меня по ссылке, к сожалению MS данное обновление убрала и заменила, на сколько я понял KB2729094
  • Скачать KB2729094 по ссылке (https://support.microsoft.com/ru-ru/help/2729094/an-update-for-the-segoe-ui-symbol-font-in-windows-7-and-in-windows-ser) или у меня из облака одним пакетом (https://cloud.mail.ru/public/Dgmm/KU6ehFgkn)

Производим установку обновлений KB248099. Запускаем его и соглашаемся на установку.

Сам процесс установки обновления KB248099 занимаем менее минуты.

I am using Objective System Inc(http://www.obj-sys.com/products/asn1c/index.php) ASN.1 Compiler and the specification file(cdr_spec.asn) generated Java source code. The CDRS are enecoded based on format BER(Basic Encoding Rule)

Command to generate Java source:

The source is generated:

When I decode the first CDR file, it parses 3 lines only, the CDR file is supposed to contain more than 100 lines, so it is partially decoded.

When I try decoding another CDR file, it is failed when decoding CDR file and gave me such error:

My ASN.1 specification file does not have any syntax error when I use tool checking its syntax.

Can anyone who knows ASN.1 well help me about this?

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I’d need some assistance in using the Service Control Engine (SCE) API.

I have developed a simple application that queries the bucket data for a given subscriber (using the getQuotaStatus API). However, despite I believe the source code is correct, I cannot get any reply back from the SCE.

The client-side debugging (in Log4J) confirms that everything is fine, and that the getQuotaStatus() command was issued properly.

I did some debugging by enabling the command «management-agent sce-api logging» on the SCE command line, and I see this log entries:

In particular, I don’t understand the «BAD: input is closed ASN.1 decode error» message.

Is this a known bug? How can I debug more, for example how can I get the text the SCE is trying to decode in ASN.1 notation?

I can post some snippet of my code, which is anyway very simple.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

The following message you pointed is too general and doesn’t

help much unfortunately. For instance, it can happen even when

there was a network connection issue between SCE and API.

closed BAD: input is closed ASN.1 decode error @ offset 930: Unexpected end-of-buffer encountered..

The method getQuotaStatus works fine for me, so there should

be something difference between us. I’m using 3.7.0.

One thing I can come up with is that you need to configure

the Quota RDR’s in SCABB and RDR-formatter for category 4

as below to get proper values by getQuotaStatus.

RDR-formatter destination 127.0.0.1 port 33001 category number 4 priority

Configuring the Quota Manager

If it still doesn’t work after the above changes, please share

the following information for further troubleshooting.

+ SCE and API version

+ OS which runs the API

+ Snippet of your code

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Many thanks for your answer.

I’ve added the line

RDR-formatter destination 127.0.0.1 port 33001 category number 4 priority 100

in the configuration. There are no other destinations for category 4.

By the way, I see that this problem is still open on 3.7.0, see «CSCsm19587» in the release notes (

However, I cannot get any answer from the SCE. My details:

  • SCE and API version: SCE8000 running version 3.6.5 Build 489. API version is: 3.6.5 Build 300.
  • Java version: 1.6.0_26
  • OS which runs the API: tried both Windows 7 and Apple OSX 10.6
  • Snippet of your code: see below

This is the code of the main class :

This is the code of SceQuotaListener.java :

This is the code of SceResultHandler.java :

Many thanks for your help, this problem got me stuck for ages, it’s driving me mad.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Hmm.. the source code you provided works fine for me on

my setup which runs same versions with yours.

I have added some println lines in your code to see the received value

and here is the result.

I’m getting the quota status for subscriber test1

1: 1048576(bucket id:value)

But when no bucket is assigned to the subscriber, then no value is returned.

So I assume you need to complete Quota related configurations including

Quota RDR settings on SCA-BB GUI(which I pointed in the previous reply) and

QM config on SM.

Please refer to the following doc for the detail.

You can check if a bucket.quota is assigned to a subs by:

SCE2000#>sh interface LineCard 0 subscriber name test1 bucket-state

Bucket 1 is used. Status – Not Breached.

SCE2000#>sh interface LineCard 0 subscriber name test1 bucket-state id 1

Bucket type: Total Volume

Bucket state: OK

Bucket size: 1048576

If no bucket is assigned:

SCE2000#>sh interface LineCard 0 subscriber name test2 bucket-state

Error – Subscriber has no quota profile.

BTW, do you always see the following error?

closed BAD: input is closed ASN.1 decode error @ offset 930: Unexpected end-of-buffer encountered..

Or the above error is one time event and your problem is that simply

SCE doesn’t reply any info to getQuotaStatus method?

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Thanks again for helping me.

I’ve followed the guide you linked (both the 3.6.5 and 3.7.0) line by line. I’ve also upgraded the OS and the API jars to 3.7.0, but the result is the same.

The only difference with my configuration is in this screen:

the guide suggests to configure «Gy», while I am using the second option instead. The difference is not fully clear to me.

I do see a similar output when I query a user with associated quota:

SCE2000#>sh interface LineCard 0 subscriber name test1 bucket-state id 1

Bucket type: Total Volume

Bucket state: OK

Bucket size: 1048576

I always get the error

closed BAD: input is closed ASN.1 decode error @ offset 930: Unexpected end-of-buffer encountered..

every time I use the getQuotaStatus().

Also, I tried following the instruction in paragraph » Configuring SCE for Quota Management Provisioning » of the guide you linked me (http://www.cisco.com/en/US/partner/docs/cable/serv_exch/serv_control/broadband_app/rel37x/qm_sol/03_configuring.html#wp1053276) but nothing changed.

Any other idea or debugging to suggest?

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

You always see the error while I have never seen it in my setup, that’s wired.

I think that’s better to open a TAC case with your SCE support file and the source code.

Last thing I can think of is that there is something issue in your network between your API

and SCE. For example, NAT, firewall, security software on your PC, etc. I’m not sure if these

can cause such error but if you don’t mind please test it again with a direct connection(same network)

between them. Seems the IP of SCE is 123.123.123.2 and the API is 192.168.2.101,

so I believe they are in different network.

If it doesn’t work with this change, I think openning a TAC case is a better option.

I’m sorry that I can’t help you much.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I have already opened a TAC last week, but it’s progressing very slowly and it seems quite hard to debug.

Thanks so much for spending time to help me.

ps: the ip 123.123.123.123 is a placeholder. There is no NAT nor firewall between the SCE and the API client. I tried this already.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I don’t want to bother your TAC case or work in parallel,

but there is something I forgot to suggest.

How many subscriber do you have in your SCE box?

If you have more than one and if this is not a production

environment, can you try clearing all the subscribers once

then import ev_btest32 only and try the test again?

If this is not a production, you can enable the following

rpc debug(at this point I’m not sure if this is helpful.).

debug rpc-adapter debug-mode on

debug rpc-adapter debug-mode off

The debug log generated can be found:

I think you have already tried this, but if you didn’t can

you please try reloading your SCE or try different SCE box?

Of course if this is not a production.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Thanks so much again for your help.

Sadly, this is a production SCE (with tens of thousands subscribers) so I can’t do anything of these. I also have another two SCE1000 and SCE2000 but they are in production too, and their subscribers don’t have associated quota.

My TAC was escalated today, let’s wait and see. It’s becoming quite frustrating.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I see, I’m sorry to hear that

Let’s wait for the response from escalation.

My intention was that something performance factor(num of subs, e.g.) is related to this issue

as in working case I see the following log(indicated in red) just after the same log(indicated in blue)

with yours, while in your case nothing happens about for 5 seconds then generates the error.

2011-10-11 17:32:12 | INFO | CPU #000 | Cleared user log files

2011-10-11 17:32:56 | INFO | CPU #000 | EM Agent: quotaStatusIndication operation was called with parameters: >

2011-10-11 17:33:03 | INFO | CPU #000 | EM Agent: PRPC connection to /1.120.20.1 established, client name is mcn.sceGw_1.120.20.1_SCE.J.API.PRPC, session name is rpc-3.

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – connect operation was called, registered listeners: none

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – connect operation was called, registered listeners: none

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – registered a quota Listener

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: getQuotaStatus operation was called with parameters: >

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: quotaStatusIndication operation was called with parameters: >

2011-10-11 17:33:05 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – disconnected

2011-10-11 17:33:05 | INFO | CPU #000 | EM Agent: PRPC connection to /1.120.20.1 closed OK: peer terminated connection: user request.

But I wouldn’t recommend to try anything I suggested in last reply as this is a production.

Источник

Содержание

  1. Ошибка 0x80093106 и нехватка памяти для ASN1
  2. Ошибка 0x80093106 и нехватка памяти для ASN1
  3. Что означает нехватка памяти для ASN1?
  4. Как исправить ошибку 0x80093106

Ошибка 0x80093106 и нехватка памяти для ASN1

Ошибка 0x80093106 и нехватка памяти для ASN1

Добрый день! Уважаемые читатели и гости IT портала Pyatilistnik.org. Пару лет назад я устанавливал Windows 7 одному из своих друзей на его ноутбук. Все работало как часы, но на прошлой неделе мой друг написал мне, что у него на сайте taxcom.ru во время приема пакетов, выскочила ошибка «Не удалось получить размер для расшифрованных данных, причина нехватка памяти для ASN1. Код ошибки 0x80093106″ и попросил помочь в решении данной проблемы. Отказать ему я не мог, поэтому, когда появилось свободное время я приступил к ее устранению.

Что означает нехватка памяти для ASN1?

Есть такая система сдачи отчетности Такском, у пользователя выскочило уведомление:

[info]Уведомление о запрете использования сертификатов, выпущенных по ГОСТу 34.10-2001. Ошибка в процессе приема пакетов. В процессе приема документа от регламенту произошла ошибка. Не удалось получить размер для расшифрованных данных, причина нехватка памяти для ASN1. Код ошибки 0x80093106[/info]

В итоге Windows 7 используя метод EnvelopedCms.Decode в приложении Microsoft .NET Framework, не может декодировать сообщения размером более 5 мегабайт (МБ). Кроме того, вы получаете сообщение об ошибке, похожее на следующее:

  • Необработанное исключение: System.Security.Cryptography.CryptographicException: ASN1 недостаточно памяти.
  • в System.Security.Cryptography.Pkcs.EnvelopedCms.OpenToDecode (Byte [] encodedMessage)
  • в System.Security.Cryptography.Pkcs.EnvelopedCms.Decode (Byte [] encodedMessage)

Эта проблема возникает из-за того, что размер буфера неправильно увеличивается в функции CryptMsgUpdate, когда метод EnvelopedCms.Decode добавляет декодированный контент в буфер во время процесса декодирования. Таким образом, целочисленное переполнение происходит для большого файла.

Как исправить ошибку 0x80093106

Чтобы у нас возвратилась возможность принимать и обрабатывать письма более пяти мегабайт вам необходимо установить специальное обновление от Microsoft, это как в случае с бесконечным обновлением системы, вам его придется загрузить отдельно. Исправление заменит библиотеку Msasn1.dll. Нужная нам KB Windows6.1-KB2480994-v2-x64 или более новая версия KB2729094, подробнее о нем (https://support.microsoft.com/ru-ru/help/2480994/asn1-out-of-memory-error-when-the-cryptmsgupdate-function-decodes-a-me)

  • Скачать KB2480994 можно у меня по ссылке, к сожалению MS данное обновление убрала и заменила, на сколько я понял KB2729094
  • Скачать KB2729094 по ссылке (https://support.microsoft.com/ru-ru/help/2729094/an-update-for-the-segoe-ui-symbol-font-in-windows-7-and-in-windows-ser) или у меня из облака одним пакетом (https://cloud.mail.ru/public/Dgmm/KU6ehFgkn)

Производим установку обновлений KB248099. Запускаем его и соглашаемся на установку.

Сам процесс установки обновления KB248099 занимаем менее минуты.

I am using Objective System Inc(http://www.obj-sys.com/products/asn1c/index.php) ASN.1 Compiler and the specification file(cdr_spec.asn) generated Java source code. The CDRS are enecoded based on format BER(Basic Encoding Rule)

Command to generate Java source:

The source is generated:

When I decode the first CDR file, it parses 3 lines only, the CDR file is supposed to contain more than 100 lines, so it is partially decoded.

When I try decoding another CDR file, it is failed when decoding CDR file and gave me such error:

My ASN.1 specification file does not have any syntax error when I use tool checking its syntax.

Can anyone who knows ASN.1 well help me about this?

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I’d need some assistance in using the Service Control Engine (SCE) API.

I have developed a simple application that queries the bucket data for a given subscriber (using the getQuotaStatus API). However, despite I believe the source code is correct, I cannot get any reply back from the SCE.

The client-side debugging (in Log4J) confirms that everything is fine, and that the getQuotaStatus() command was issued properly.

I did some debugging by enabling the command «management-agent sce-api logging» on the SCE command line, and I see this log entries:

In particular, I don’t understand the «BAD: input is closed ASN.1 decode error» message.

Is this a known bug? How can I debug more, for example how can I get the text the SCE is trying to decode in ASN.1 notation?

I can post some snippet of my code, which is anyway very simple.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

The following message you pointed is too general and doesn’t

help much unfortunately. For instance, it can happen even when

there was a network connection issue between SCE and API.

closed BAD: input is closed ASN.1 decode error @ offset 930: Unexpected end-of-buffer encountered..

The method getQuotaStatus works fine for me, so there should

be something difference between us. I’m using 3.7.0.

One thing I can come up with is that you need to configure

the Quota RDR’s in SCABB and RDR-formatter for category 4

as below to get proper values by getQuotaStatus.

RDR-formatter destination 127.0.0.1 port 33001 category number 4 priority

Configuring the Quota Manager

If it still doesn’t work after the above changes, please share

the following information for further troubleshooting.

+ SCE and API version

+ OS which runs the API

+ Snippet of your code

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Many thanks for your answer.

I’ve added the line

RDR-formatter destination 127.0.0.1 port 33001 category number 4 priority 100

in the configuration. There are no other destinations for category 4.

By the way, I see that this problem is still open on 3.7.0, see «CSCsm19587» in the release notes (

However, I cannot get any answer from the SCE. My details:

  • SCE and API version: SCE8000 running version 3.6.5 Build 489. API version is: 3.6.5 Build 300.
  • Java version: 1.6.0_26
  • OS which runs the API: tried both Windows 7 and Apple OSX 10.6
  • Snippet of your code: see below

This is the code of the main class :

This is the code of SceQuotaListener.java :

This is the code of SceResultHandler.java :

Many thanks for your help, this problem got me stuck for ages, it’s driving me mad.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Hmm.. the source code you provided works fine for me on

my setup which runs same versions with yours.

I have added some println lines in your code to see the received value

and here is the result.

I’m getting the quota status for subscriber test1

1: 1048576(bucket id:value)

But when no bucket is assigned to the subscriber, then no value is returned.

So I assume you need to complete Quota related configurations including

Quota RDR settings on SCA-BB GUI(which I pointed in the previous reply) and

QM config on SM.

Please refer to the following doc for the detail.

You can check if a bucket.quota is assigned to a subs by:

SCE2000#>sh interface LineCard 0 subscriber name test1 bucket-state

Bucket 1 is used. Status – Not Breached.

SCE2000#>sh interface LineCard 0 subscriber name test1 bucket-state id 1

Bucket type: Total Volume

Bucket state: OK

Bucket size: 1048576

If no bucket is assigned:

SCE2000#>sh interface LineCard 0 subscriber name test2 bucket-state

Error – Subscriber has no quota profile.

BTW, do you always see the following error?

closed BAD: input is closed ASN.1 decode error @ offset 930: Unexpected end-of-buffer encountered..

Or the above error is one time event and your problem is that simply

SCE doesn’t reply any info to getQuotaStatus method?

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Thanks again for helping me.

I’ve followed the guide you linked (both the 3.6.5 and 3.7.0) line by line. I’ve also upgraded the OS and the API jars to 3.7.0, but the result is the same.

The only difference with my configuration is in this screen:

the guide suggests to configure «Gy», while I am using the second option instead. The difference is not fully clear to me.

I do see a similar output when I query a user with associated quota:

SCE2000#>sh interface LineCard 0 subscriber name test1 bucket-state id 1

Bucket type: Total Volume

Bucket state: OK

Bucket size: 1048576

I always get the error

closed BAD: input is closed ASN.1 decode error @ offset 930: Unexpected end-of-buffer encountered..

every time I use the getQuotaStatus().

Also, I tried following the instruction in paragraph » Configuring SCE for Quota Management Provisioning » of the guide you linked me (http://www.cisco.com/en/US/partner/docs/cable/serv_exch/serv_control/broadband_app/rel37x/qm_sol/03_configuring.html#wp1053276) but nothing changed.

Any other idea or debugging to suggest?

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

You always see the error while I have never seen it in my setup, that’s wired.

I think that’s better to open a TAC case with your SCE support file and the source code.

Last thing I can think of is that there is something issue in your network between your API

and SCE. For example, NAT, firewall, security software on your PC, etc. I’m not sure if these

can cause such error but if you don’t mind please test it again with a direct connection(same network)

between them. Seems the IP of SCE is 123.123.123.2 and the API is 192.168.2.101,

so I believe they are in different network.

If it doesn’t work with this change, I think openning a TAC case is a better option.

I’m sorry that I can’t help you much.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I have already opened a TAC last week, but it’s progressing very slowly and it seems quite hard to debug.

Thanks so much for spending time to help me.

ps: the ip 123.123.123.123 is a placeholder. There is no NAT nor firewall between the SCE and the API client. I tried this already.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I don’t want to bother your TAC case or work in parallel,

but there is something I forgot to suggest.

How many subscriber do you have in your SCE box?

If you have more than one and if this is not a production

environment, can you try clearing all the subscribers once

then import ev_btest32 only and try the test again?

If this is not a production, you can enable the following

rpc debug(at this point I’m not sure if this is helpful.).

debug rpc-adapter debug-mode on

debug rpc-adapter debug-mode off

The debug log generated can be found:

I think you have already tried this, but if you didn’t can

you please try reloading your SCE or try different SCE box?

Of course if this is not a production.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Thanks so much again for your help.

Sadly, this is a production SCE (with tens of thousands subscribers) so I can’t do anything of these. I also have another two SCE1000 and SCE2000 but they are in production too, and their subscribers don’t have associated quota.

My TAC was escalated today, let’s wait and see. It’s becoming quite frustrating.

» means nesting-related): – Failed at: @displayUserCertifications user_id [in template «custom.author-acclaim-certifications» at line 4, column 9] ——>

  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I see, I’m sorry to hear that

Let’s wait for the response from escalation.

My intention was that something performance factor(num of subs, e.g.) is related to this issue

as in working case I see the following log(indicated in red) just after the same log(indicated in blue)

with yours, while in your case nothing happens about for 5 seconds then generates the error.

2011-10-11 17:32:12 | INFO | CPU #000 | Cleared user log files

2011-10-11 17:32:56 | INFO | CPU #000 | EM Agent: quotaStatusIndication operation was called with parameters: >

2011-10-11 17:33:03 | INFO | CPU #000 | EM Agent: PRPC connection to /1.120.20.1 established, client name is mcn.sceGw_1.120.20.1_SCE.J.API.PRPC, session name is rpc-3.

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – connect operation was called, registered listeners: none

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – connect operation was called, registered listeners: none

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – registered a quota Listener

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: getQuotaStatus operation was called with parameters: >

2011-10-11 17:33:04 | INFO | CPU #000 | EM Agent: quotaStatusIndication operation was called with parameters: >

2011-10-11 17:33:05 | INFO | CPU #000 | EM Agent: sceGw_1.120.20.1_SCE.J.API.PRPC – disconnected

2011-10-11 17:33:05 | INFO | CPU #000 | EM Agent: PRPC connection to /1.120.20.1 closed OK: peer terminated connection: user request.

But I wouldn’t recommend to try anything I suggested in last reply as this is a production.

Использование ЭЦП открывает для владельца подписи дополнительные возможности. Но вместе с этим, иногда сопровождается небольшими техническими проблемами, связанными с необходимостью чёткого выполнения действий, связанных с загрузкой сертификатов, авторизацией, установкой необходимого программного обеспечения, а также системных требований к компьютеру.

Как выглядит ЭЦП
Важно отметить, что большинство ошибок при работе с ЭЦП можно устранить в домашних условиях, без необходимости привлечения специалистов со стороны.

Содержание

  • Какие виды ошибок ЭЦП бывают
  • Проблема с подписанием ЭПЦ
  • Как проявляется данная ошибка и что сделать, чтобы исправить
  • Проблема с сертификатом
  • Что делать если не найден сертификат или не верен
  • Проблемы при авторизации

Какие виды ошибок ЭЦП бывают

Среди наиболее часто встречающихся ошибок в процессе подписания электронных документов электронной подписью выделяют три ключевых блока:

Проблема с подписанием ЭПЦ. Возникает в момент, когда владелец подписи желает использовать ее при подписании электронного документа.

Проблема с сертификатом. Здесь система информирует пользователя об отсутствии (не действительности), либо использовании незарегистрированного сертификата удостоверяющего центра, необходимого для внешней проверки ЭП.

Проблемы при авторизации. Появляется при проверке пользователя, когда владелец электронной подписи впервые пытается зайти на электронную площадку с подтверждением личности через ЭЦП.

Проблема с подписанием ЭПЦ

Причины, вызывающие подобную ошибку весьма разнообразны. Тут можно выделить такие основные направления:

  • Закрытый ключ со съемного носителя (диска, флешки, Токена), не соответствует имеющемуся ключу открытого сертификата. Банальный человеческий фактор выбора не того носителя информации с ЭЦП. Если же «правильный» ключ утерян, придется обращаться в Удостоверяющий центр для перевыпуска.
  • Недействительный сертификат. Чтобы устранить подобную ошибку потребуется переустановить открытый сертификат. Важно учитывать требования криптопровайдера (инструкции по необходимым действиям) для установки открытых сертификатов.
  • Сертификат подписи определяется как не проверенный. Потребуется выполнить переустановку корневого сертификата, сформировавшего ЭП Удостоверяющего центра.
  • Закончился срок действия криптопровайдера. Необходимо получить новый лицензионный ключ, позволяющий работать с программным обеспечением криптопровайдера. Информация запрашивается через УЦ, либо владельца ПО.
  • Не виден сертификат на носителе. Помогает простая перезагрузка компьютера для устранения ошибка генерации.
  • Алгоритм сертификата ЭЦП не поддерживается. Подобная ошибка может возникать при подписании электронной отчетности в налоговую. Потребуется переустановить КриптоПро CSP и проверить его на совместительство с имеющейся у вас на компьютере операционной системой.

Как проявляется данная ошибка и что сделать, чтобы исправить

Ошибка исполнения функции с информированием о невозможности подписать документ ЭЦП обычно появляется в момент подписания документа.

Система сразу выводит на экран уведомление о непредвиденной ошибке с кратким указанием причины ее возникновения.

Обычно для ее исправления требуются такие действия:

  • проверка наличия, срока действия, подлинности сертификатов и выполнение их замены;
  • выполнение проверки корректной работы операционной системы компьютера, ее обновление до минимальных допустимых параметров;
  • проверка состояния съемного носителя закрытого ключа;
  • выявление и устранение ошибок работы криптопровайдера.

Важно. Причина, из-за которой владелец ЭЦП не может нею воспользоваться, может быть комплексной. Поэтому, если не сработал один из предложенных вариантов, проверьте по другим направлениям.

Проблема с сертификатом

Распространенным явлением во время подписания электронных документов ЭЦП является получение уведомления, что системе не удалось получить доступ к сертификатам, пригодным для формирования подписи.

Здесь причины возникновения неисправности могут быть такими:

  1. Пользователь не установил на свой ПК корневые сертификаты УЦ, осуществлявшего формирование и выдачу ЭЦП. Для устранения – скачать и установить на компьютер такой сертификат, либо прописать доступ к нему.
  2. Система не видит личных сертификатов владельца ЭЦП. Выдаются одновременно с оформлением ЭП. Их необходимо загрузить на ваш ПК, и подтянуть в криптопровайдер. В дальнейшем можно загрузить через сайт УЦ. Устанавливаются и прописываются на рабочем месте, предназначенном для работы с ЭЦП. С незарегистрированным сертификатом вы не сможете осуществлять подписание электронных документов.
  3. Информирование о невалидности сертификатов. Обычно такое возможно в случае, когда заканчивается срок действия сертификата, либо их отзывают. Потребуется обращаться в УЦ, выдавший ЭЦП, для уточнения статуса сертификатов подписи. В некоторых случаях помогает обновление сертификатов на компьютере пользователя. Сделать это можно вручную.

Мнение эксперта

Владимир Аникеев

Специалист отдела технической поддержки УЦ

Внимательно читайте природу ошибки, что выдает система. Обычно это ключ к дальнейшему направлению поиска источника проблемы и ее устранению.

Что делать если не найден сертификат или не верен

Когда сертификат отсутствует в списке «Ваши Сертификаты», проблема может оказаться в отсутствии коренного сертификата УЦ.

Для устранения этой проблемы необходимо:

  • проверить наличие такого сертификата на вашем ПК по пути: «Пуск» — дальше «Все программы» — после этого плагин «КриптоПро» — а уже там «Сертификаты»;
  • дальше находим вкладку «Личное», выбираем «Сертификаты»;

Раздел сертификаты

  • потребуется открыть не отображенный во вкладке сертификат и просмотреть его «Путь сертификации»;
  • тут отображаются все цепочки сертификатов в порядке ранжирования. Важно чтобы напротив какого-то из них не стоял желтый, либо красный значок предупреждения. Если подобное присутствует – нажмите на сам сертификат и ознакомьтесь с ошибкой, что выдаст система;
  • в зависимости от причины (обычно это окончание действия сертификата, либо не верифицирован) выполните ее устранение.

Чтобы устранить ошибку и перезагрузить отозванный сертификат потребуется выполнить несколько не сложных действий:

  • в окне «Свойства браузера» откройте личный сертификат. Попасть туда можно через «Поиск» меню «Пуск». В открытом окошке ищите вкладку «Содержание», дальше вкладку «Сертификаты»;
  • после этого во вкладке «Состав» потребуется выбрать позицию «Точки распространения списков отзывов»;
  • в следующем блоке под названием «Имя точки распространения» необходимо выполнить копирование ссылки загрузки файла списка отзывов;
  • переходя по указанной ссылке необходимо скачать и установить файл списка отзывов (CRL);
  • дальше переходим по подсказкам «Мастера импорта сертификатов».

Следующей распространенной проблемой, когда компьютер не видит сертификат на носителе, является сбой в работе программных продуктов компьютера либо Токена (флешки). Обычно помогает простая перезагрузка ПК. Среди прочих популярных проблем этого направления можно выделить такие:

  1. На носителе отсутствует драйвер, либо он установлен не корректно. Необходимо скачать последнюю версию драйвера с официального источника и установите его. Можно проверить работоспособность съемного носителя на другом ПК. В этом случае, если другой ПК нормально работает с носителем ЭЦП, переустановите драйверы на первом компьютере.
  2. Система долго распознает носитель ЭЦП. Тут проблема в операционной системе. Ее потребуется обновить до минимального уровня, требуемого для работы с ЭЦП.
  3. USB-порт работает не корректно. Попробуйте подсоединить Токен (флешку) через другой порт, либо на другом ПК, чтобы убедиться, что проблема не в носителе. Выполните перезагрузку компьютера.
  4. Если Токин (флешка) не открывается ни на одном компьютере, значит проблема в носителе. Когда ключ был записан в единственном экземпляре на этот носитель – потребуется обращаться в УЦ для перевыпуска ЭЦП.

Важно. Перед вынесением «окончательного вердикта» касательно работоспособности носителя и сертификата, не поленитесь выполнить их проверку через несколько различных источников.

Проблемы при авторизации

Часто с подобными неприятностями сталкиваются владельцы ЭЦП, пытающиеся пройти регистрацию, либо авторизацию на различных электронных торговых площадках. Пользователю появляется уведомление, что его подпись не авторизирована.

Обычно проблема кроется:

  1. Отсутствие регистрации. Потребуется попросту зарегистрироваться на избранном вами ресурсе.
  2. Не зарегистрирован сертификат. Возникает после обновления ключа ЭЦП. Устраняется путем регистрации нового сертификата ключа ЭЦП.

Мнение эксперта

Владимир Аникеев

Специалист отдела технической поддержки УЦ

На различных ресурсах процесс регистрации (авторизации) может существенно отличаться, иметь определенные ограничения, а также блокироваться защитным ПО. Поэтому перед началом процедуры не поленитесь ознакомиться с соответствующей инструкцией и правилами.

В дальнейшем, при работе на самой электронной площадке и попытке подписать электронные документы, могут возникать дополнительные трудности, связанные с такими моментами:

  1. Необходимости присоединиться к регламенту. Система не даст возможность полноценно работать, если вы не согласитесь с ее условиями.
  2. Невозможность загрузить файл (файлы). Обычно это ошибка превышения размера информации, что допустима для загрузки. Просто смените формат разрешения файла, чтобы уменьшить его размер.
  3. Требование использовать определенный браузер (определенную версию браузера). Это системные требования владельца площадки, которые необходимо соблюдать.
  4. Проблемы со считыванием сертификатов. Потребуется проверить не просрочены ли ваши сертификаты, а также все ли они установлены на ПК.

Что значит er 10002 неопределенная ошибка при проверке ЭЦП, что делать?

Возможно не прошла расшифровка файла ключа. Перезагрузите компьютер. Проверьте, отображается ли съемный носитель ключа ЭЦП, наличие и корректность отображения сертификатов, а также соответствие их (должен быть одинаковый владелец).

Ошибка 52 цифровая подпись

Связана с повреждением, либо отсутствием необходимых драйверов на носителе, либо ПК. Потребуется скачать с официального источника недостающий драйвер и переустановить его.

Почему компьютер не видит ЭЦП?

Несоответствие программного продукта операционной системы и съемного носителя (флешки), либо повреждение флешки. Устраняется путем обновления операционной системы до минимально необходимой версии. В случае обнаружения повреждения флешки – может потребоваться перевыпуск ЭЦП удостоверяющим центром.

Почему КриптоПро не отображает ЭЦП?

Потребуется выполнить определенные настройки вашего браузера и добавить программу в меню веб-обозревателя, а также загрузить недостающие сертификаты ЭЦП.

Где на компьютере искать сертификаты ЭЦП?

Хранение сертификатов в Windows (от 7 версии) осуществляется по адресу: C:UsersПОЛЬЗОВАТЕЛЬAppDataRoamingMicrosoftSystemCertificates

где вместо «ПОЛЬЗОВАТЕЛЬ» должно стоять наименование вашего ПК

Содержание

  1. Введение.
  2. Базовая последовательность шагов по настройке (обязательные)
  3. Опциональные настройки:
  4. Пример настройки КриптоПро SVS
  5. Вопросы и ответы
  6. Системные требования
  7. Features
  8. Особенности некоторых браузеров по настройке работы плагина
  9. Теоритическая часть.
  10. Реализация взаимодействия с КриптоПро CSP на C.
  11. Загрузка сертификата в хранилище.
  12. Загрузка файла отозванных сертификатов.
  13. Постороение цепочки сертификата.
  14. Прверка подписи.
  15. Implementation of CryptoPro CSP
  16. Implementation at the Crypto API 2. 0 Level
  17. Implementation at the CSP Level
  18. Using Com Interfaces
  19. Certificate Enrollment Control
  20. CAPICOM 2
  21. Certificate Services
  22. Using TLS Protocol in Application Software
  23. Sample Applications of Cryptographic Security Tools
  24. Certificates
  25. Integration
  26. Portability
  27. Заключение.

Введение.

В одной из поддерживаемых мной систем цифровая подпись сообщений проверялась с помощью КриптоПро CSP и библиотека отвечающая за это функцию периодически падала с ошибкой. Библиотека эта писалась в спешке и не мной, поэтому я решил переделать ее “по-человечески” и оформить в виде python модуля. Ниже я опишу процесс разработки и опишу с какими трудностями я столкнулся.


Offline

Dmitriy PRO

 

Оставлено
:

4 октября 2021 г. 15:40:58(UTC)

Добрый день, коллеги!

Необходимо подписать закрытым ключом ЭП Партнера текст запроса в формате CMS/PKCS#7 в DER кодировке.
Подписанный XML вкладывается в тело (body) HTTP/POST запроса, с указанием content-type:application/octet-stream и отправляется на веб-адрес.
Для ЭП используется алгоритм ГОСТ Р 34.10-2012.
Помогите пожалуйста реализовать задачу с использованием КриптоПро .NET.


Offline

Андрей *

 

Оставлено
:

4 октября 2021 г. 17:08:52(UTC)

Здравствуйте.

Установите КриптоПро .NET SDK – там есть примеры.

Program Files (x86)Crypto Pro.NET SDKExamples
пример:
simple.zipCMScsSingleSigner.cs


Offline

Dmitriy PRO

 

Оставлено
:

5 октября 2021 г. 23:58:43(UTC)

Спасибо, все получилось!

В итоге сам КриптоПро .NET не понадобился


Offline

rafaelkhasanov

 

Оставлено
:

17 октября 2021 г. 3:07:30(UTC)

Хочу проверить подпись, пришедшую от ЕСИА.
Использую такую команду:

Вывод:
CSP (Type:80) v5.0.10003 KC1 Release Ver:5.0.11455 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 10322787
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP
An error occurred in running the program.
/dailybuildsbranches/CSP_5_0r0/CSPbuild/CSP/samples/csptest/ctkey.c:3119:CryptImportPublicKeyInfoEx()
Error number 0x80093101 (2148086017).
либо внутренняя ошибка ASN1 либо ошибка дешифровки.
Total: SYS: 0,000 sec USR: 0,030 sec UTC: 0,050 sec
[ErrorCode: 0x80093101]

На винде все ок
КриптоПро JCP 2021-10-17_03-03-25.png (23kb) загружен 16 раз(а).


Online

Александр Лавник

 

Оставлено
:

18 октября 2021 г. 9:08:50(UTC)

Автор: rafaelkhasanov Перейти к цитате

Хочу проверить подпись, пришедшую от ЕСИА.
Использую такую команду:

Вывод:
CSP (Type:80) v5.0.10003 KC1 Release Ver:5.0.11455 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 10322787
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP
An error occurred in running the program.
/dailybuildsbranches/CSP_5_0r0/CSPbuild/CSP/samples/csptest/ctkey.c:3119:CryptImportPublicKeyInfoEx()
Error number 0x80093101 (2148086017).
либо внутренняя ошибка ASN1 либо ошибка дешифровки.
Total: SYS: 0,000 sec USR: 0,030 sec UTC: 0,050 sec
[ErrorCode: 0x80093101]

На винде все ок
КриптоПро JCP 2021-10-17_03-03-25.png (23kb) загружен 16 раз(а).

Здравствуйте.

Попробуйте доустановить пакет cprocsp-rsa-64-5.0.11455-5.x86_64.rpm из состава дистрибутива КриптоПро CSP 5.0.11455 и повторить проверку.


Offline

rafaelkhasanov

 

Оставлено
:

20 октября 2021 г. 1:38:03(UTC)

КриптоПро JCP 2021-10-20_01-35-13.png (239kb) загружен 5 раз(а).
Установили. К сожалению, картина не изменилась. Имеет ли значение, что устанавливалось от рута, а скрипт запускается от другого юзера?


Offline

rafaelkhasanov

 

Оставлено
:

20 октября 2021 г. 2:09:50(UTC)

Проверил сейчас через гостовский тестовый сертификат (предварительно изменив настройки в тех кабинете ЕСИА, чтобы изменился алгоритм), все ок, проверяет успешно, а вот SHA256 не хочет.


Online

Александр Лавник

 

Оставлено
:

20 октября 2021 г. 12:20:15(UTC)

Автор: rafaelkhasanov Перейти к цитате

Проверил сейчас через гостовский тестовый сертификат (предварительно изменив настройки в тех кабинете ЕСИА, чтобы изменился алгоритм), все ок, проверяет успешно, а вот SHA256 не хочет.

Здравствуйте.

Если есть возможность, то приложите (или пришлите ссылку через ЛС) файла, с которым возникает ошибка при проверке подписи.


Offline

vicmosin

 

Оставлено
:

17 февраля 2022 г. 8:50:55(UTC)

Доброго времени суток,
интересует следующее – есть ли возможность проверить подпись, генерируемую с помощью браузер-плагина (https://docs.cryptopro.ru/cades/plugin/plugin-samples/plugin-samples-sign-detached) на стороне сервера без установки JCP?
То есть либо чистый Java либо BouncyCatstle.

Заранее спасибо.


Offline

TolikTipaTut1

 

Оставлено
:

17 февраля 2022 г. 11:47:18(UTC)

Добрый. Да, проверить можно.


Offline

vicmosin

 

Оставлено
:

17 февраля 2022 г. 12:18:49(UTC)

Автор: TolikTipaTut1 Перейти к цитате

Добрый. Да, проверить можно.

Есть какие-то примеры где можно почерпнуть? ))


Offline

TolikTipaTut1

 

Оставлено
:

17 февраля 2022 г. 12:27:18(UTC)

https://github.com/anato…0using%20BouncyCastle.cs

Тут на C#, но на Java переписать, думаю, несложно будет.

Важно! В примере, представленном выше, проверяется математическая корректность ЭП. Квалифицированность цепочки, ровно как построение цепочки сертов до корневого, загрузка crl, обработка Ocsp и т.д. в примере нет

Отредактировано пользователем 17 февраля 2022 г. 12:32:37(UTC)
 | Причина: Не указана

thanks 1 пользователь поблагодарил TolikTipaTut1 за этот пост.


Offline

vicmosin

 

Оставлено
:

17 февраля 2022 г. 12:37:39(UTC)

Автор: TolikTipaTut1 Перейти к цитате

https://github.com/anatolkavassermann/BounyCastle-and-OpenSSL-crypto/blob/main/Different%20samples%20using%20BouncyCastle.cs

Тут на C#, но на Java переписать, думаю, несложно будет.

Важно! В примере, представленном выше, проверяется математическая корректность ЭП. Квалифицированность цепочки, ровно как построение цепочки сертов до корневого, загрузка crl, обработка Ocsp и т.д. в примере нет

Спасибо!

> Квалифицированность цепочки, ровно как построение цепочки сертов до корневого, загрузка crl, обработка Ocsp и т.д. в примере нет

Это я так понимаю уже часть JCP?


Offline

TolikTipaTut1

 

Оставлено
:

17 февраля 2022 г. 12:45:36(UTC)

Автор: vicmosin Перейти к цитате

Автор: TolikTipaTut1 Перейти к цитате

https://github.com/anatolkavassermann/BounyCastle-and-OpenSSL-crypto/blob/main/Different%20samples%20using%20BouncyCastle.cs

Тут на C#, но на Java переписать, думаю, несложно будет.

Важно! В примере, представленном выше, проверяется математическая корректность ЭП. Квалифицированность цепочки, ровно как построение цепочки сертов до корневого, загрузка crl, обработка Ocsp и т.д. в примере нет

Спасибо!

> Квалифицированность цепочки, ровно как построение цепочки сертов до корневого, загрузка crl, обработка Ocsp и т.д. в примере нет

Это я так понимаю уже часть JCP?

Нет, придётся писать самостоятельно с использованием BouncyCastle


Offline

Санчир Момолдаев

 

Оставлено
:

17 февраля 2022 г. 12:54:33(UTC)

Добрый день!
для проверки подписей лицензия JCP не требуется.
вы не хотите его (jcp) использовать только из-за лицензий?


Offline

TolikTipaTut1

 

Оставлено
:

17 февраля 2022 г. 13:32:39(UTC)

Автор: Санчир Момолдаев Перейти к цитате

Добрый день!
для проверки подписей лицензия JCP не требуется.
вы не хотите его (jcp) использовать только из-за лицензий?

+
Есть готовое решение уже, и поддержка есть. BC использовать- не лучший вариант. Придётся многое переписывать для адекватной работы с ГОСТ-ом


Offline

vicmosin

 

Оставлено
:

17 февраля 2022 г. 13:52:46(UTC)

Автор: Санчир Момолдаев Перейти к цитате

Добрый день!
для проверки подписей лицензия JCP не требуется.
вы не хотите его (jcp) использовать только из-за лицензий?

Именно.
То есть для проверки подписей я могу использовать JCP бесплатно?

Отредактировано пользователем 17 февраля 2022 г. 13:53:19(UTC)
 | Причина: Не указана


Offline

Санчир Момолдаев

 

Оставлено
:

17 февраля 2022 г. 15:42:26(UTC)

Автор: vicmosin Перейти к цитате

Автор: Санчир Момолдаев Перейти к цитате

Добрый день!
для проверки подписей лицензия JCP не требуется.
вы не хотите его (jcp) использовать только из-за лицензий?

Именно.
То есть для проверки подписей я могу использовать JCP бесплатно?

да

thanks 1 пользователь поблагодарил Санчир Момолдаев за этот пост.


Offline

squadgazzz

 

Оставлено
:

10 сентября 2021 г. 9:26:23(UTC)

Здравствуйте! Подскажите, с помощью JCSP на алгоритмах GOST28147 и GOST3412_2015_K возможно осуществить потоковое шифрование и последующую верификацию больших файлов без загрузки их целиком в оперативную память? Существуют ли готовые примеры?

Отредактировано пользователем 10 сентября 2021 г. 9:44:14(UTC)
 | Причина: Не указана


Offline

Евгений Афанасьев

 

Оставлено
:

14 сентября 2021 г. 23:34:39(UTC)

Здравствуйте. Посмотрите EnvelopedSignature из состава CAdES.jar (описание в javadoc/CAdES-javadoc.jar дистрибутива), примеры в пакете CAdES/enveloped архива samples-sources.jar. В EnvelopedSignature есть потоковое шифрование.

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.


Offline

Алексей Н.

 

Оставлено
:

13 октября 2021 г. 14:41:00(UTC)

Здравствуйте! Использую JCP jcp-2.0.41940-A, требуется реализовать шифрование с помощью алгоритма GOST3412_2015_M, но его нет в списке доступных

Цитата:

– JCP – =========== CryptoPro Java Provider ===========
– AlgorithmParameters – GOST_PARAM_VALIDATOR
– KeyFactory – GOST3410DHEL
– KeyFactory – GOST3410DH_2012_256
– KeyFactory – GOST3410DH_2012_512
– KeyFactory – GOST3410EL
– KeyFactory – GOST3410_2012_256
– KeyFactory – GOST3410_2012_512
– KeyPairGenerator – GOST3410EL
– KeyPairGenerator – GOST3410ELEPH
– KeyPairGenerator – GOST3410EPH_2012_256
– KeyPairGenerator – GOST3410EPH_2012_512
– KeyPairGenerator – GOST3410_2012_256
– KeyPairGenerator – GOST3410_2012_512
– KeyStore – CertStore
– KeyStore – FloppyStore
– KeyStore – HDImageStore
– KeyStore – MemoryStore
– KeyStore – MemoryStore0
– KeyStore – MemoryStore1
– KeyStore – MemoryStore2
– KeyStore – MemoryStore3
– KeyStore – MemoryStore4
– KeyStore – MemoryStore5
– KeyStore – MemoryStore6
– KeyStore – MemoryStore7
– KeyStore – MemoryStore8
– KeyStore – MemoryStore9
– MessageDigest – GOST3411
– MessageDigest – GOST3411_2012_256
– MessageDigest – GOST3411_2012_512
– SecureRandom – CPRandom
– Signature – CryptoProSignature
– Signature – CryptoProSignature_2012_256
– Signature – CryptoProSignature_2012_512
– Signature – GOST3411_2012_256withGOST3410DH_2012_256
– Signature – GOST3411_2012_256withGOST3410_2012_256
– Signature – GOST3411_2012_512withGOST3410DH_2012_512
– Signature – GOST3411_2012_512withGOST3410_2012_512
– Signature – GOST3411withGOST3410DHEL
– Signature – GOST3411withGOST3410EL
– Signature – NONEwithCryptoProSignature
– Signature – NONEwithCryptoProSignature_2012_256
– Signature – NONEwithCryptoProSignature_2012_512
– Signature – NONEwithGOST3410DHEL
– Signature – NONEwithGOST3410DH_2012_256
– Signature – NONEwithGOST3410DH_2012_512
– Signature – NONEwithGOST3410EL
– Signature – NONEwithGOST3410_2012_256
– Signature – NONEwithGOST3410_2012_512
– Crypto – =========== CryptoPro Java Cipher Provider. ===========
– Cipher – GOST28147
– Cipher – GOST28147Clear
– Cipher – GostJCE
– Cipher – GostJCEClear
– Cipher – GostTransport
– Cipher – XmlGostTransport2001
– Cipher – XmlGostTransport2012_256
– Cipher – XmlGostTransport2012_512
– KeyAgreement – GOST3410DHEL
– KeyAgreement – GOST3410DH_2012_256
– KeyAgreement – GOST3410DH_2012_512
– KeyAgreement – GOST3410EL
– KeyAgreement – GOST3410_2012_256
– KeyAgreement – GOST3410_2012_512
– KeyFactory – GOST28147
– KeyGenerator – GOST28147
– KeyGenerator – SYMMETRIC512
– KeyPairGenerator – GOST3410DHEL
– KeyPairGenerator – GOST3410DHELEPH
– KeyPairGenerator – GOST3410DHEPH_2012_256
– KeyPairGenerator – GOST3410DHEPH_2012_512
– KeyPairGenerator – GOST3410DH_2012_256
– KeyPairGenerator – GOST3410DH_2012_512
– Mac – GOST28147
– Mac – GOST28147Clear
– Mac – HMAC_GOSTR3411
– Mac – HMAC_GOSTR3411_2012_256
– Mac – HMAC_GOSTR3411_2012_512
– SecretKeyFactory – GOST28147
– SecretKeyFactory – MASTER_KEY
– RevCheck – =========== CryptoPro Java Revocation Checker. ===========
– CertPathBuilder – CPPKIX
– CertPathValidator – CPPKIX

Однако в продукте он указан https://www.cryptopro.ru/products/csp/jcp
Это проблема некорректного “подключения” jcp или он отсутствует в поставке?

КриптоПро JCP – средство криптографической защиты информации, реализующее российские криптографические стандарты, разработанное в соответствии со спецификацией JCA (Java Cryptography Architecture).

Интеграция КриптоПро JCP с архитектурой Java позволяет использовать стандартные процедуры, такие как создание и проверка ЭЦП (в том числе XMLdsig, CAdES, XAdES) , шифрование, генерацию ключей, вычисление кодов аутентификации (Message Authentication Code – MAC) в JavaTM Cryptography Extension (JCE) в соответствии со спецификациями JavaTM Cryptography Extension (JCE) на различных операционных системах и аппаратных платформах.

Реализация КриптоПро JCP совместима с КриптоПро CSP.

Средство криптографической защиты КриптоПро JCP распространяется в двух комплектациях:

  • генерация ключей, формирование и проверка ЭЦП, хэширование данных;
  • генерация ключей, формирование и проверка ЭЦП, хэширование данных, шифрование.

Назначение: 

КриптоПро JCP предназначен для:

  • авторизации и обеспечения юридической значимости электронных документов при обмене ими между пользователями, посредством использования процедур формирования и проверки электронной цифровой подписи (ЭЦП) в соответствии с отечественными стандартами ГОСТ Р 34.11-94/ГОСТ Р 34.11-2012 и ГОСТ Р 34.10-2001/ГОСТ Р 34.10-2012;
  • обеспечения конфиденциальности и контроля целостности информации посредством ее шифрования и имитозащиты, в соответствии с ГОСТ 28147-89 и ГОСТ 34.12-2015;
  • обеспечение аутентичности, конфиденциальности и имитозащиты соединений TLS;
  • контроля целостности, системного и прикладного программного обеспечения для его защиты от несанкционированного изменения или от нарушения правильности функционирования;
  • управления ключевыми элементами системы в соответствии с регламентом средств защиты.

Реализуемые алгоритмы: 

Алгоритм выработки значения хэш-функции реализован в соответствии с требованиями ГОСТ Р 34.11 94 “Информационная технология. Криптографическая защита информации. Функция хэширования” и ГОСТ Р 34.11 2012 “Информационная технология. Криптографическая защита информации. Функция хэширования”.

Алгоритмы формирования и проверки ЭЦП реализованы в соответствии с требованиями:

  • ГОСТ Р 34.10-2001 “Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи”;
  • ГОСТ Р 34.10-2012 “Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи”.

Алгоритм зашифрования/расшифрования данных и вычисление имитовставки реализованы в соответствии с требованиями ГОСТ 28147-89 “Системы обработки информации. Защита криптографическая” и ГОСТ 34.12-2015 “Информационная технология. Криптографическая защита информации”.

При генерации закрытых и открытых ключей обеспечена возможность генерации с различными параметрами в соответствии с ГОСТ Р 34.10-2001/ГОСТ Р 34.10-2012.

При выработке значения хэш-функции и шифровании обеспечена возможность использования различных узлов замены в соответствии с ГОСТ Р 34.11-94/ГОСТ Р 34.11-2012 и ГОСТ 28147-89.

Системные требования: 

КриптоПро JCP функционирует в следующем окружении:

  • виртуальной машина, удовлетворяющая спецификации Java 7 ™ Virtual Machine;
  • требуется Java 7 Runtime Environment версии 7 и выше;

Основные характеристики: 

Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2001):

  • закрытый ключ – 256 бит;
  • открытый ключ – 512 бит при использовании алгоритма ГОСТ Р 34.10-2001;

Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2012, 256 бит):

  • закрытый ключ – 256 бит;
  • открытый ключ – 512 бит при использовании алгоритма ГОСТ Р 34.10-2012, 256 бит;

Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2012, 512 бит):

  • закрытый ключ – 512 бит;
  • открытый ключ – 1024 бит при использовании алгоритма ГОСТ Р 34.10-2012, 512 бит;

Длина ключей, используемых при шифровании:

  • закрытый ключ – 256 бит на базе алгоритма ГОСТ Р 34.10-2001;
  • закрытый ключ – 256 бит на базе алгоритма ГОСТ Р 34.10-2012, 256 бит;
  • закрытый ключ – 512 бит на базе алгоритма ГОСТ Р 34.10-2012, 512 бит;
  • открытый ключ – 512 бит на базе алгоритма ГОСТ Р 34.10-2001;
  • открытый ключ – 512 бит на базе алгоритма ГОСТ Р 34.10-2012, 256 бит;
  • открытый ключ – 1024 бит на базе алгоритма ГОСТ Р 34.10-2012, 512 бит;
  • симметричный ключ – 256 бит;

Типы ключевых носителей:

  • дискеты 3,5″;
  • сменные носители с интерфейсом USB;
  • российские интеллектуальные карты (Оскар) с использованием считывателей смарт-карт, поддерживающих интерфейс OpenCard Framework (в том числе протокол PC/SC для Windows): GemPC Twin, Towitoko, Oberthur OCR126 и др.);
  • электронные ключи и смарт-карты eToken;
  • электронные ключи Rutoken;
  • смарт-карты ESMART;
  • директория жесткого диска.

Преимущества: 

Сравнение версий JCP JCP JCP 2.0
ГОСТ Р 34.10-2012   512 / 1024 бит
ГОСТ Р 34.10-2001 512 бит 512 бит
ГОСТ Р 34.10-94 1024 бит  
ГОСТ Р 34.11-2012   256 / 512 бит
ГОСТ Р 34.11-94 256 бит 256 бит
ГОСТ 28147-89 256 бит 256 бит
ГОСТ 34.12-2015 256 бит
Поддержка новых алгоритмов в JTLS +
Контроль сроков действия ключа +
Поддержка CAdES/XAdES-подписи +
  • Страница для печатиСтраница для печати

Сегодняшнюю небольшую запись я решил посветить теме создания электронной цифровой подписи средствами криптопровайдера «КриптоПРО». Речь пойдет о Bat файле, который можно будет использовать для автоматизации подписи электронных документов.

Для того что бы автоматизировать процесс подписывания электронных документов нам понадобится:
1) Крипто-ПРО CSP;
2) USB Ключ (например рутокен), вставленный в USB порт;
3) Блокнот (Notepad.exe);
4) Установленные сертификаты для Вашего ключа;

Камнем преткновения во всей этой истории является файл csptest.exe который находится в директории КриптоПро (по умолчанию C:Program FilesCrypto ProCSPcsptest.exe).

Откроем командную строку и выполним команду:

cd C:Program FilesCrypto ProCSP
и
csptest

Мы увидим все возможные параметры данного exe файла.

select [global options] from:
  -help         print this help
  -noerrorwait  do not wait for any key on error
  -notime       do not show time elapsed
  -pause        Wait for keyboard input after completion so that
                you may check memory and other resources usage
  -reboot       Call DestroyCSProvider() of last used CSP at exit
                Services (cryptsrv*, HSM, etc) not affected
  -randinit <x> Initialize system rng with srand(x) (default: time)
  -showrandinit Show system rng initialization value
  -stack            Measure stack usage
select [mode] from:
  -lowenc       low level encryption/decryption test
  -sfenc        simplified level message encryption/decryption test
  -cmslowsign   CMS low level message signing test
  -cmssfsign    CMS simplified level message signing/verifying test
  -lowsign      low level message signing test
  -lowsignc     low level message signing test with cycle
                Use '-lowsign -repeat NN' instead!
  -sfsign       simplified level message signing/verifying test
  -ipsec        ipsec tests
  -defprov      default provider manipulations
  -testpack     Pack of several tests
  -property     certificate obtain/install property for secret key linking
  -certkey      change provider name in certificate secret key link
  -context      provider context tests
  -absorb       absorbs all certs from containers with secret key linking
  -drvtst       proxy-driver test
  -signtool     SDK signtool analog
  -iis          manage IIS
  -hsm          manage HSM-client
  -rpcc         RPC over SSL client
  -rpcs         RPC over SSL server
  -oid          oid info/set/get
  -passwd       set/change password
  -keycopy      copy container
  -keyset       create (open) keyset
  -tlss         start tls server
  -tlsc         start tls client
  -tls          TLS tests
  -prf          PRF tests
  -hash         hash test
  -makecert     certificate issuing test
  -certprop     show certificate properties
  -rc           verify pkcs#10/certificate signature
  -cmsenclow    CMS low level message encryption/decryption test
  -sfse         simplified level message SignedAndEnveloped test
  -stress       stress test for Acquire/ReleaseContext
  -ep           public key export test
  -enum         CSP parameters enumeration
  -cpenc        CP/Crypto level (advapi32) encryption tests
  -setpp        SetProvParam tests
  -perf         Performance tests
  -speed        Speed tests and optimal function mask setting
  -testcont     Install/Uninstall test containers
  -install      CSP installation information, clearing out CSP
  -version      Print CSP version

Для того, что бы увидеть параметры той или иной глобальной опции, достаточно вызвать данный файл с этой опцией, например

csptest -sfsign

выдаст

<commands>:
  -sign             Sign data from input filename
  -verify           Verify signature on data specified by input filename
  -help             Print this help
<options>:
  -in <file>        Input filename to be signed or verified
  -out <file>       Output PKCS#7 filename
  -my <DName>       Cert from CURRENT_USER store to process data
  -MY <DName>       Cert from LOCAL_MACHINE store to process data
  -detached         Deal with detached signature
  -add              Add sender certificate to PKCS#7
  -signature <file> Detached signature file
  -alg     Hash algorithm: SHA1, MD5, MD2, GOST - default
  -ask              Acquire csp context using my cert (default: none)
  -base64           Input/output with base64<->DER conversion
  -addsigtime       Add signing time attribute
  -cades_strict     Strict signingCertificateV2 attribute generation
  -cades_disable    Disable signingCertificateV2 attribute generation

Таким образом, чтобы подписать файл через cmd средствами csptest.exe нужно вызвать команду:

csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my ООО МоиПрограммы Иванов Иван Иванович

где:
-my — Указывает владельца ключа;
-in — Указывает какой файл нужно подписывать. Если файл находится не в папке с csptest то нужно указывать полный путь.;
-out — Указывает имя файла подписи;

Проверить подпись можно на сайте Госулсуг по данной ссылке.

Скорей всего. Если сейчас загрузить данный файл на сайте госуслуги, то появится ошибка. Вызвано это тем, что необходима информация об удостоверяющем центре. Так же не будет лишней дата и время подписи документов. Для этого к нашей команде нужно добавить два параметра:

csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my ООО МоиПрограммы Иванов Иван Иванович -addsigtime -add

Если же нам нужна подпись в осоединенном формате, то добавим еще один параметр:

csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my ООО МоиПрограммы Иванов Иван Иванович -addsigtime -add -detached

Примечание:Если подпись документа выполняется с ошибкой
Unable to open file
An error occurred in running the program.
.signtsf.c:321:Cannot open input file.
Error number 0x2 (2).
Не удается найти указанный файл.
при вызове, как в последнем примере, и Вы уверены в правильности путей в параметре -in и -out, попробуйте создать подпись по первому примеру, а после выполнить команду с полным набором параметров!!!

Основную команду для подписи мы получили. Теперь немного упростим процедуру. Сделаем bat файл, при запуске которого будет подписывать файл Secret.txt, находящийся в тойже папке что и bat файл. Откроем блокнот и запишем слудующий код:

chcp 1251
set CurPath=%cd%
cd C:Program FilesCrypto ProCSP
call csptest -sfsign -sign -in %CurPath%Secret.txt -out %CurPath%Secret.txt.sig -my ООО МоиПрограммы Иванов Иван Иванович -addsigtime -add -detached
cd %CurPath%

Нажимаем «Файл» -&gt; «Сохранить как» -&gt; ЗадаемИмя с .bat -&gt; «Сохранить»
Собсвенно и все. Для справки:
chcp 1251 — Задает кодировку для CMD. Необходимо для валидной обработки русских букв в коде;
set CurPath=%cd% — Сохраняет путь текущей директории CMD в переменную CurPath;
cd — Задает текущий путь CMD;
call — Запускает программу;

Данный раздел определяет последовательность действий при разворачивании и настройке
экземпляра Сервиса Проверки Подписи (КриптоПро SVS).

После завершения выполнения действий, описанных в данном разделе, веб-интерфейс Сервиса Проверки
Подписи будет доступен по следующему адресу:

Программный интерфейс Сервиса Проверки Подписи будет доступен по следующему адресу:

Примечание

Базовая последовательность шагов по настройке (обязательные)

1. Создание экземпляра службы.

New-VsInstance -DisplayName SVS -ApplicationName verify -SiteName "Default Web Site"

2. Ввод лицензии.

New-VsLicense [–DisplayName <string>] [–SN <string>] [-CompanyName <string>]
Примечание

При вызове команды без параметров активируется временная лицензия на 3 месяца.

Примечание

Вызов командлета необходим при создании каждого нового экземпляра Сервиса Проверки
Подписи.

3. Установка корневых сертификатов и CRL.

При разворачивании экземпляра Сервиса Проверки Подписи автоматически будут созданы хранилища сертификатов с именами
-TSL и -Ca, где – имя веб-приложения,
указанное в командлете New-VsInstance в параметре -ApplicationName.

4. Настройка привязок веб-сервера IIS.

Disable-VsEndpoint –Name BasicHttps

Подробнее о передаче данных по безопасному соединению:

Опциональные настройки:

<!–

Веб-интерфейс Сервиса Проверки Подписи можно интегрировать в Веб-интерфейс КриптоПро DSS. Для добавления
страниц проверки подписи и сертификата в Веб-интерфейс подписи необходимо задать адрес Сервиса Проверки Подписи через
командлет [Set-DssFeProperties](../../../adminguide/frontend/cmdlets/Set-DssFeProperties.md).

Пример команды:

“`PowerShell
Set-DssFeProperties –VsAddress http://localhost//rest/api
“`

> [!NOTE]
> Если используется Сервис Проверки Подписи версии ниже, чем 2.0.2636, командлет должен выглядеть примерно следующим
> образом:
> “`PowerShell
> Set-DssFeProperties –VsAddress http://localhost//service.svc
> “`

–>

Дополнительно можно выполнить следующие настройки.

Полный список командлетов администрирования КриптоПро SVS

Пример настройки КриптоПро SVS


# Создание экземпляра SVS
New-VsInstance -DisplayName SVS -ApplicationName verify -SiteName "Default Web Site"

# Ввод временной лицензии на 3 месяца
New-VsLicense

# Установка онлайн-режима проверки статуса сертификатов при помощи службы OCSP
Set-VsProperties -RevocationMode Online

# Ограничение набора форматов подписи, доступных для проверки - отключение проверки необработанной подписи ГОСТ Р 34.10-2012
Set-VsSignatureFormat -Format GOST3410 -IsEnabled 0

# Сопоставление расширений файлов с форматами подписи - установка списка расширений для подписи формата CMS
Set-VsSignatureFormat -Format CMS -Extensions sig, p7b, p7s

# Отображение документов в веб-интерфейсе SVS
Add-VsConverterPlugin -FileExtension pdf -Assembly DSS.DocumentConverter.PdfStub.dll
Add-VsConverterPlugin -FileExtension doc -Assembly DSS.DocumentConverter.Word.dll 
Add-VsConverterPlugin -FileExtension dot -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension docm -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension dotm -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension docx -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension dotx -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension FlatOpc -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension FlatOpcMacroEnabled -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension FlatOpcTemplate -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin –FileExtension FlatOpcTemplateMacroEnabled -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension xml -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension odt -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension ott -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension ooxml -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension WordML -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension rtf -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension html -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension xhtml -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension mhtml -Assembly DSS.DocumentConverter.Word.dll
Add-VsConverterPlugin -FileExtension txt -Assembly DSS.DocumentConverter.Word.dll

# Ограничение размера документов в 10 Мбайт
Set-VsEndpointGlobalSettings -MaxMessageSize 10240

# Настройка проверки формата сертификатов
# Регистрация плагина
Add-VsCertificateVerifierPlugin -Assembly SVS.CertificateVerifier.Qualified.dll
# Добавление отпечатков корневых сертификатов Минцифры РФ
Add-VsQualifiedCAThumbprints -Thumbprint 4bc6dc14d97010c41a26e058ad851f81c842415a
Add-VsQualifiedCAThumbprints -Thumbprint aff05c9e2464941e7ec2ab15c91539360b79aa9d

# Настройка шаблона отчета о пакетной проверке подписи
Set-VsProperties -WordFilePath "C:Program FilesCrypto ProDSSVerificationServicesmp_template.docx"
Set-VsProperties -XsltFilePath "C:Program FilesCrypto ProDSSVerificationServicesmp_xslt.xslt"
Restart-VsInstance

Вопросы и ответы

КриптоПро ЭЦП browser plug-in (он же КриптоПро CADESCOM или Кадеском) – плагин, необходимый для создания и проверки электронной подписи на web-страницах с использованием КриптоПро CSP. Используется для работы на торговых площадках и порталах. Дистрибутив доступен на сайте КриптоПро в разделе Продукты / КриптоПро ЭЦП Browser plug-in http://www.cryptopro.ru/products/cades/plugin/get_2_0.

Системные требования

  • Установка плагина возможна на следующих операционных системах:  Win XP SP3, Win Vista SP2, Win 2003 SP2, Win 2008 SP2, Win 7, Win 2008 R2, Win 8, Win8.1, Win10.
  • Работает с браузерами: IE 8 — 11, Opera, Mozilla Firefox, Google Chrome, Yandex Browser

Не работает в браузере EDGE, предустановленном по умолчанию в Windows 10.

  • Требуется предустановленная КриптоПро CSP версии не ниже 3.6 R2

Features

  • CryptoPro TLS supports the TLS (SSL) protocol of on all platforms.
  • CryptoPro CSP can be used  with the Oracle E-Business Suite, Oracle Application Server, Java and Apache applications, via the products of the Crypto-Pro company partners.
  • Supports windows domain authentication using smart cards (USB tokens) and X.509 certificates.
  • The usage of CryptoPro CSP in email applications, as well as in MS Word and Excel products.
  • CryptoPro CSP  includes a kernel mode driver for all platforms, which allows for the use of cryptographic functions (encryption/decryption, signing , hashing) in kernel mode applications.
  • The private keys can be stored in various type of mediums, such as HDD, smart cards etc.

Особенности некоторых браузеров по настройке работы плагина

  • в Mozilla Firefox 29 и выше: необходимо включить работу плагина (браузер может не запросить разрешения на включение плагина). Для этого пройти диагностику и выполнить фикс «Включение плагинов в Mozilla Firefox», после чего обязательно перезапустить Firefox. Также это можно сделать вручную: нажать Ctrl+Shift+A, перейти в раздел «Плагины», выбрать CryptoPro CAdES NPAPI Browser Plug-in и перевести его в состояние «Всегда включать» (Always active), после чего обязательно перезапустить Firefox.
  • в Google Chrome необходимо зайти по ссылке и установить расширение.
  • В Yandex Browser и Opera нужно установить расширение, доступное по этой ссылке
  • В Internet Explorer необходимо сделать следующие настройки:
  1. Добавить адрес сайта, на котором работаете с плагином, в надёжные узлы (Свойства браузера / безопасность / надёжные сайты / сайты / добавить адрес сайта).
  2. Если работа ведётся в Internet Explorer 11, то попробовать работу в режиме совместимости.
  3. Проверить, что адрес сайта добавлен в надёжные узлы плагина (большинство сайтов, принимающих сертификаты нашего УЦ, можно добавить автоматически с помощью диагностики https://help.kontur.ru/uc). Чтобы проверить, что сайт добавлен в надежные узлы плагина, нужно перейти в Пуск — Все программы — КРИПТО-ПРО – Настройки КриптоПро ЭЦП Browser plug-in. Откроется окно браузера, в котором нужно будет позволить разблокировать все содержимое страницы/разрешить доступ. 

Была ли полезна информация?

Не нашли ответ? 
Задайте вопрос специалисту

Спасибо за ответ

Теоритическая часть.

Для того чтобы проверить подпись какого-то конкретного сообщения на необходимо само сообщение с подписью, а также цепочка сертификатов, которые помогут проверить данную подпись. Подробнее об этом можно узнать в здесь.

Все ключи крипто про хранит в своих хранилищах, таких как root, ca, my. Чтобы в них загрузить сертификат в поставке Криптопро CSP идет специальная утилита certmgr. Синтаксих ее работы таков:

certmgr -inst -store <имя хранилища> -file <файл с сертификатом>

Также для корректной цепочки надо загрузить список отозванных сертификатов. Сделать это можно командой:

certmgr -instl -crl -store <имя хранилища> -file <CRL файл>

Побробную информацию по работе этой утилиты можно получить вызвав:

certmgr -help

Для конкретного сертификата также можно проверить цепочку. Делается это командой:

cryptcp -verify -f <файл сертификата> "text" -errchain

Соответственно закрытым ключок соответсвующем проверяемому сертификату и можем подписать сообщение, а с помощью цепочки сертификатов из хранилища, мы сможем ее проверить.

Из всего вышесказанного я подумал, что в библиотеке мне нужны будут следующие функции:

  • Загрузка сертификата в хранилище;
  • Загрузка файла отозванных сертификатов;
  • Постороение цепочки сертификата;
  • Проверка подписи.

Реализация взаимодействия с КриптоПро CSP на C.

Так как КриптоПро CSP(CPCSP) является доработкой CryptoApi от Microsoft, то большая часть примеров из официальной документации подходит идля “КриптоПро”. Чем я собствеено говоря и пользовался при написании модуля, так как с примерами у самого КриптоПро не очень все хорошо.

Загрузка сертификата в хранилище.

Для того, чтобы загрузить сертификат в хранилище нужно выполнить следующие шаги:

  1. Считать сертификат из файла
  2. Открыть хранилище сертификатов
  3. Положить в него сертификат
  4. Закрыть хранилище

Тут меня ждал первый ньюанс, что в CPCSP нет функции для чтения сертификата из файла, поэтому ее нужно будет написать вручную. Она выглядит следующим образом:

typedef struct CERT {
    BYTE *content;
    DWORD size;
} CERT;

CERT readFile(char *filename)
{
    CERT cert = {NULL, 0};
    FILE *fCert;

    fCert = fopen(filename, "r");
    if (fCert)
    {
		fseek(fCert, 0, SEEK_END);   
		cert.size = ftell(fCert);
		rewind(fCert);

	    cert.content = (unsigned char *)malloc(cert.size * sizeof(unsigned char));
	    fread(cert.content, cert.size, 1, fCert);
    }
    else
    {
		perror("Error open certificate file");
    }
    fclose(fCert);

  return cert;
}

PCCERT_CONTEXT ReadCertificateFromFile(char *filename)
{
    CERT fileCert; 
    PCCERT_CONTEXT cert = NULL;

    fileCert = readFile(filename);
		
    cert = CertCreateCertificateContext(
		X509_ASN_ENCODING,
		fileCert.content,
		fileCert.size
	);
    
    if (!(cert))
    {
		perror("Error create cert");
    }

  return cert;
}

В коде выше файл считывается специальную структуру CERT, которая содержит размер и содержимое сертификата. Затем на основе этой информации формируется структура PCCERT_CONTEXT, которая в дальнейшем будет загружаться в хранилище CPCSP.

Далее в описании функций будут использоваться следующие коды ошибок:

# define OPERATION_SUCCESS        0
# define OPEN_STORE_ERROR         1
# define ADD_CERT_TO_STORE_ERROR  2
# define CLOSE_STORE_ERROR        3
# define ADD_CRL_TO_STORE_ERROR   4
# define STR_TO_BIN_LEN_ERROR     5
# define STR_TO_BIN_CONTENT_ERROR 6
# define VERIFY_MSG_SIGNATURE     7
# define GET_CERT_CHAIN_ERROR     8
# define READ_CERT_ERROR          9
# define READ_CRL_ERROR           10

Функция загрузки сертификата в хранилище будет выглядеть следующим образом:

int LoadCertificateToSystemStore(char *cert_file_path, char *store_name)
{
    HCERTSTORE     cpcsp_cert_store = NULL;
    PCCERT_CONTEXT cert_context;

    cert_context = ReadCertificateFromFile(cert_file_path);
    if (!cert_context)
	return READ_CERT_ERROR;
  
    cpcsp_cert_store = CertOpenSystemStore(0, store_name);

    if (!cpcsp_cert_store)
	return OPEN_STORE_ERROR;

    if (!CertAddCertificateContextToStore(
	    cpcsp_cert_store,
	    cert_context,
	    CERT_STORE_ADD_REPLACE_EXISTING,
	    NULL))
	return ADD_CERT_TO_STORE_ERROR;

    if (!CertCloseStore(cpcsp_cert_store, 0))
	return CLOSE_STORE_ERROR;

    if (cert_context)
	CertFreeCertificateContext(cert_context);

    return OPERATION_SUCCESS;
}

В этой функции считывается файл сертификата (функция ReadCertificateFromFile), затем открываем системное хранилище методом CertOpenSystemStore. Если системное хранилище открылось успешно, то с помощью метода CertAddCertificateContextToStore, сертификат загрузается в хранилище. И в заключении хранилище закрывается функцией CertCloseStore.

Нужно отметить что функция CertOpenSystemStore ипользуется только для чтения системных хранилищ (root, ca, my), для остальных надо использовать CertOpenStore.

Загрузка файла отозванных сертификатов.

Функции чтения списка отозванных сертификатов(CRL) и загрузки их в хранилище идентичны функциям работы с сертификатами, за тем исключением, что для их чтения и загрузки используются функции CPCSP c CRL вместо Certificate в названии функции. Например CertAddCertificateContextToStore будет выглядеть как CertAddCRLContextToStore.

Таким образом код для загруки CRL будет таким:

int LoadCRLToSystemStore(char *cert_file_path, char *store_name)
{
    HCERTSTORE    cpcsp_cert_store = NULL;
    PCCRL_CONTEXT crl_context;

    crl_context = ReadCRLFromFile(cert_file_path);
    if (!crl_context)
	return READ_CRL_ERROR;
  
    cpcsp_cert_store = CertOpenSystemStore(0, store_name);

    if (!cpcsp_cert_store)
	return OPEN_STORE_ERROR;

    if (!CertAddCRLContextToStore(
	    cpcsp_cert_store,
	    crl_context,
	    CERT_STORE_ADD_REPLACE_EXISTING,
	    NULL))
	return ADD_CRL_TO_STORE_ERROR;

    if (!CertCloseStore(cpcsp_cert_store, 0))
	return CLOSE_STORE_ERROR;

    if (crl_context)
	CertFreeCRLContext(crl_context);

  return OPERATION_SUCCESS;
}

Постороение цепочки сертификата.

Код функции проверки цепочки сертификатов выглядит следующим образом

int VerifyCertChain(char *certFilePath)
{
    PCCERT_CONTEXT           pCertContext;
    PCCERT_CHAIN_CONTEXT     pChainContext;
    CERT_ENHKEY_USAGE        EnhkeyUsage;
    CERT_USAGE_MATCH         CertUsage;
    CERT_CHAIN_PARA          ChainPara;

    /*
      инициализация парметров поиска и сопоставления, которые 
      будут использоваться для построения цепочки сертификатов 
    */
    EnhkeyUsage.cUsageIdentifier = 0;
    EnhkeyUsage.rgpszUsageIdentifier = NULL;
    CertUsage.dwType = USAGE_MATCH_TYPE_AND;
    CertUsage.Usage  = EnhkeyUsage;
    ChainPara.cbSize = sizeof(CERT_CHAIN_PARA);
    ChainPara.RequestedUsage=CertUsage;
 
    pCertContext = ReadCertificateFromFile(certFilePath);

    if (!CertGetCertificateChain(
	    NULL,
	    pCertContext,
	    NULL,
	    NULL,
	    &ChainPara,
	    0,
	    NULL,
	    &pChainContext))
    {
		perror("The chain could not be created");
    }
	
	int result = pChainContext->TrustStatus.dwErrorStatus;

    if (pChainContext)
    {
		CertFreeCertificateChain(pChainContext);
    }
	
    return result;
}

Помимо настроек цепочки, тут вызывается функция CertGetCertificateChain, которая формирует собственно цепочку сертификатов и записывает ее в структуру PCCERT_CHAIN_CONTEXT. В данной структуре поле TrustStatus отвечает за статус опреации, если цепочка построена корректно, то dwErrorStatus будет 0, иначе будет записан код ошибки.

Прверка подписи.

Для начала я подумал сорфировать самоподписной сертификат для проверки функционирования функции, но оказалось, что CPCSP не поддерживает их, поэтому я создал сертификат в Тестовом УЦ КриптоПро. Я не буду описывать данный процесс, так как к библиотике он имеет посредственное отношение. Только скажу, что файл подписи я генерировал под Windows, потому как это было проще сделать через КриптоПро ЭЦП Browser plug-in.

Также надо отметить, что сертификат ЦС, надо загрузить в хранилище “Доверенные корневые…”. Иначе сгенерированный тестовый сертификат не установиться и плагин для ЭЦП не будет корректно работать. Код функции проверки подписи приведен ниже:

int VerifySignedMessage(char *signature)
{
    DWORD blob_size = 0;
    /* 
       определяем размер выходного der блоба
       для подписанного сообщения
    */
    if (!CryptStringToBinaryA(
	    signature,
	    strlen(signature),
	    CRYPT_STRING_BASE64,
	    NULL,
	    &blob_size,
	    NULL,
	    NULL))
	return STR_TO_BIN_LEN_ERROR;	


    /*
       заполняем блоб подписанного сообщения
     */
    BYTE *msg_blob;
    msg_blob = (BYTE *)malloc(blob_size);
    if (!CryptStringToBinaryA(
	    signature,
	    strlen(signature),
	    CRYPT_STRING_BASE64,
	    msg_blob,
	    &blob_size,
	    NULL,
	    NULL))
	return STR_TO_BIN_CONTENT_ERROR;	

    /*
      выполняем проверку подписи
     */
    CRYPT_VERIFY_MESSAGE_PARA verify_params;

    verify_params.cbSize = sizeof(CRYPT_VERIFY_MESSAGE_PARA);
    verify_params.dwMsgAndCertEncodingType = ENCODING_TYPE;
    verify_params.hCryptProv = 0;
    verify_params.pfnGetSignerCertificate = NULL;
    verify_params.pvGetArg = NULL;
    
    if(!CryptVerifyMessageSignature(
        &verify_params,
        0,
        msg_blob,
        blob_size,
        NULL,
        NULL,
        NULL))
	return VERIFY_MSG_SIGNATURE;
    
    return OPERATION_SUCCESS;
}

Код снабжен коментариями, которые поясняют за что какой кусок кода отвечает.

Также надо отметить что функция CryptStringToBinaryA вызывается 2 раза, первый для получения размер подписи, а второй, чтобы получить данные раскодированные из base64 данные. Ну и затем подпись соответственно проверяется.

После того, как все функции написаны, то можно приступуть к реализации С обертки для python библиотеки и написанию тестов.
Для начала опишем заголовочный файл, который будет содержать описание вызываемых функций и исключений:

#ifdef __linux__
	#include <Python.h>
#elif __APPLE__
	#include <Python/Python.h>
#endif

#ifndef LIBSIGNATURE_H_
#define LIBSIGNATURE_H_

/* 
   Список экспортируемых функций
 */
PyObject * PyLoadCertificate(PyObject *self, PyObject *args);
PyObject * PyLoadCRL(PyObject *self, PyObject *args);
PyObject * PyVerifyCertChain(PyObject *self, PyObject *args);
PyObject * PyVerifySignedMessage(PyObject *self, PyObject *args);

/*
  Типы исключений различных ситуаций
 */
extern PyObject *PyOpenStoreError;
extern PyObject *PyAddCertToStoreError;
extern PyObject *PyCloseStoreError;
extern PyObject *PyAddCrlToStoreError;
extern PyObject *PyStrToBinLenError;
extern PyObject *PyStrToBinContentError;
extern PyObject *PyVerifyMsgSignatureError;
extern PyObject *PyGetCertChainError;
extern PyObject *PyReadCertError;
extern PyObject *PyReadCrlError;

#endif

Как видно из этого файла, на каждый код ошибки С функций, будет соответствовать свое исключение. Реализацию самих функций можно посмотреть в файле py_cpcsp.c репозитория.

Код оберки для библиотеки выглядит следующим образом:

#include <stdio.h>
#include "libsignature.h"

// Таблица методов реализуемых расширением
// название, функция, параметры, описание
static PyMethodDef LibsignatueMethods[] = {
    {"load_certificate",  PyLoadCertificate, METH_VARARGS, NULL},
    {"load_crl",  PyLoadCRL, METH_VARARGS, NULL},
    {"verify_chain_certificate",  PyVerifyCertChain, METH_VARARGS, NULL},
    {"vefigy_signature",  PyVerifySignedMessage, METH_VARARGS, NULL},
    {NULL, NULL,  0, NULL}
};

PyObject *PyOpenStoreError;
PyObject *PyAddCertToStoreError;
PyObject *PyCloseStoreError;
PyObject *PyAddCrlToStoreError;
PyObject *PyStrToBinLenError;
PyObject *PyStrToBinContentError;
PyObject *PyVerifyMsgSignatureError;
PyObject *PyGetCertChainError;
PyObject *PyReadCertError;
PyObject *PyReadCrlError;

// Инициализация
PyMODINIT_FUNC initlibsignature(void)
{
    PyObject *m;

    // Инизиализруем модуль libsignature
    m = Py_InitModule("libsignature", LibsignatueMethods);
    if (m == NULL)
        return;

    // Создание исключений при работе с расширением
    PyOpenStoreError = PyErr_NewException("libsignature.OpenStoreError",
	NULL,
	NULL
	);
    PyAddCertToStoreError = PyErr_NewException(
	"libsignature.AddCertToStoreError",
	NULL,
	NULL
	);
    PyCloseStoreError = PyErr_NewException(
	"libsignature.CloseStoreError",
	NULL,
	NULL
	);
    PyAddCrlToStoreError = PyErr_NewException(
	"libsignature.AddCRLToStoreError",
	NULL,
	NULL
	);
    PyStrToBinLenError = PyErr_NewException(
	"libsignature.StrToBinLenError",
	NULL,
	NULL
	);
    PyStrToBinContentError = PyErr_NewException(
	"libsignature.StrToBinContentError",
	NULL,
	NULL
	);
    PyVerifyMsgSignatureError = PyErr_NewException(
	"libsignature.VerifySignError",
	NULL,
	NULL
	);
    PyGetCertChainError = PyErr_NewException(
	"libsignature.ChainCertError",
	NULL,
	NULL
	);
    PyReadCertError = PyErr_NewException(
	"libsignature.ReadCertError",
	NULL,
	NULL
	);
    PyReadCrlError = PyErr_NewException(
	"libsignature.ReadCRLError",
	NULL,
	NULL
	);

    Py_INCREF(PyOpenStoreError);
    Py_INCREF(PyAddCertToStoreError);
    Py_INCREF(PyCloseStoreError);
    Py_INCREF(PyAddCrlToStoreError);
    Py_INCREF(PyStrToBinLenError);
    Py_INCREF(PyStrToBinContentError);
    Py_INCREF(PyVerifyMsgSignatureError);
    Py_INCREF(PyGetCertChainError);
    Py_INCREF(PyReadCertError);
    Py_INCREF(PyReadCrlError);

    PyModule_AddObject(m, "error", PyOpenStoreError);
    PyModule_AddObject(m, "error", PyAddCertToStoreError);
    PyModule_AddObject(m, "error", PyCloseStoreError);
    PyModule_AddObject(m, "error", PyAddCrlToStoreError);
    PyModule_AddObject(m, "error", PyStrToBinLenError);
    PyModule_AddObject(m, "error", PyStrToBinContentError);
    PyModule_AddObject(m, "error", PyVerifyMsgSignatureError);
    PyModule_AddObject(m, "error", PyGetCertChainError);
    PyModule_AddObject(m, "error", PyReadCertError);
    PyModule_AddObject(m, "error", PyReadCrlError);
}

Что делается в этом файле подробно описано здесь.

Для проверки работоспособности питоновской библиотеки, напишем следующий тест:

import libsignature


class TestLibSignature(unittest.TestCase):
    """
    Класс для тестирования работы с КриптоПро CSP.
    """
    def setUp(self):
        """
        Задание путей до тестовых файлов
        """
        self._cert_file = os.path.join(current_path, "files/ca.cer")
        self._crl_file = os.path.join(current_path, "files/ca.crl")
        self._user_cert = os.path.join(current_path, "files/user.cer")
        self._sig_file = os.path.join(current_path, "files/test_sign.sig") 
        self._store = "ROOT"

    def test_load_certificate(self):
        """
        Проверка загрузки сертификата.
        """
        result = libsignature.load_certificate(self._cert_file, self._store)
        self.assertIsNone(result)

    def test_load_crl(self):
        """
        Проверка загрузки списка отозванных серитификатов.
        """
        result = libsignature.load_crl(self._crl_file, self._store)
        self.assertIsNone(result)

    def test_verify_cert_chain(self):
        """
        Проверка корректности цепочки сертификатов
        """
        result = libsignature.verify_chain_certificate(self._user_cert)
        self.assertIsNone(result)

    def verify_signature(self):
        """
        Проверка подписи сообщения
        """
        with open(self._sig_file, "rb") as sigfile:
            signature = sigfile.read()
            result = libsignature.vefigy_signature(signature)
            self.assertIsNone(result)


if __name__ == '__main__':
    unittest.main()

Теперь все готово, и можно запусть команду make test для проверки работоспособности.

Implementation of CryptoPro CSP

The hierarchical architecture of the Cryptographic Functions in the Windows Operating System allows for the use of the Russian cryptographic algorithms implemented in CryptoPro CSP at all possible levels.

Implementation at the Crypto API 2. 0 Level

CryptoPro CSP can be used in application software (as can any other cryptoprovider supplied with the Windows operating system) using the Crypto API 2.0 interface, a detailed description of which is provided in the MSDN (Microsoft Developer Network) program documentation. In such cases the method for selecting the algorithm for the application software can be determined by the user’s/sender’s public-key-algorithm identifier which is contained in the X.509 certificate.

Implementation at the Crypto API 2.0 level provides the ability to use a wide range of functions which solve most problems related to the presentation (formats) of various cryptographic communications (signed, encrypted) by means of the presentation of public keys as digital certificates and by means of the storage and retrieval of certificates in various directories including LDAP.

The functions of CryptoPro CSP allow for the full implementation of presentation and exchange of data in compliance with international recommendations and the Public Key Infrastructure.

Implementation at the CSP Level

CryptoPro CSP can be used directly in an application program by loading the module using the Load Library function. With this in mind the package includes a Programmer’s Manual describing the various sets of functions and the test software. With this type of implementation only a limited set of low-level cryptographic functions corresponding to the Microsoft CSP interface are accessible to the software.

Using Com Interfaces

CryptoPro can be used with COM interfaces developed by Microsoft.

  • CAPICOM 2.0
  • Certificate Services
  • Certificate Enrollment Control

Certificate Enrollment Control

The COM interface Certificate Enrollment Control (implemented in the file xenroll.dll) is designed for the use of a limited number of Crypto API 2.0 functions related to key generation, certificate requests and the processing of certificates received from the Certification Authority using the programming languages Visual Basic, C++, Java Script, VBScript and the development environment Delphi.

It is this interface that is used by the various Certification Authorities (Versign, Thawte, ect.) in the producing of user certificates on the Windows platform.

CAPICOM 2

CAPICOM (implemented in the file capicom.dll) offers the COM interface that uses the primary functions of CryptoAPI 2.0 . This component is an extension of the existing COM Certificate Enrollment Control interface (xenroll.dll) which is implemented by the client functions responsible for key generation, certificate requests and interchange with the certification authority.

With the release of this component the use of digital-signature generation and verification functions, functions responsible for the construction and verification of sequences of certificates and functions responsible for interaction with different directories (including the Active Directory) with Visual Basic, C++, JavaScript, VBScript and the development environment Delphi became possible. Using CAPICOM it is possible to implement the operation of the “thin” client within the browser Internet Explorer’s interface.

The component CAPICOM is freeware and is included as part of the Micrsoft Platform SDK Developer’s redistributable toolbox.

More detailed information on the CAPICOM interface is available on the server https://www.cryptopro.ru/products/csp/usage. The distributive for the interface and sample applications are available in the CD in the directory “REDISTRCAPICOM 2.0”

Certificate Services

Certificate Services include several COM interfaces which allow the user to alter the functionality of the Certification Authority built-in to the Windows Server operating system. Using these interfaces it is possible to:

  • Process certificate requests from users.
  • Alter the composition of X.509 addendums recorded in certificates issued by the authority.
  • Determine additional means of publication (storage) of certificates issued by the authority.

Using TLS Protocol in Application Software

Aside from its use in the Internet Explorer interface, the TLS protocol can also be used by application software along with CryptoPro CSP for the authentication and protection of data transmitted according to its own private protocols based on TCP/IP and HTTPS.

For the implementation of the TLS protocol WebClient and WebServer sample implementations are included in the set of samples provided with the platform SDK.

Sample Applications of Cryptographic Security Tools

Test software, including sample invocations of the primary functions of Crypto API 2.0 is provided with CryptoPro CSP. These samples are found in the directory (“SAMPLEScsptest”). A large number of sample applications of Crypto API 2.0, CAPICOM and Certificate Services functions are offered in the Microsoft Docs and in the Platform SDK developer’s toolbox.

A conference on issues surrounding the use of cryptographic functions and public-key certificates is held on the CryptoPro server (https://www.cryptopro.ru/forum2/).

CryptoPro CSP makes possible the use of reliable, certified cryptographic information-security tools as components of the wide range of tools and software of the Microsoft Corporation for the implementation of secure document flow and E-commerce based on the Public-Key infrastructure and in compliance with international recommendations X.509.

  • Printer-friendly versionPrinter-friendly version

Certificates

CryptoPro CSP has a Federal Security Service certificate of conformance.

Integration

The integration of the CryptoPro CSP with MS Windows operating system allows the use of standard products.

The accordance with the Microsoft CSP interface allows for easy integration into applications by different vendors, which support this interface.

Support for  digitally signed  XML documents using XMLdsig for Windows (MSXML5, MSXML6) allows for the use of Russian cryptographic algorithms in the Microsoft Office InfoPath – a component system of Microsoft Office.

Portability

For easy and portable integration of cryptographic functions on the Unix platforms, the program interface similar to the Microsoft CryptoAPI 2.0 specifications is provided. This interface allows for the use of the high-level functions to create cryptographic messages (encryption, digital signature), building and verifying the chain of certificates, generating keys and processing the messages and certificates.

Заключение.

Процесс создания библиотеки получился трудоемкий, но на выходе получилась рабочая библиотека, которой можно пользоваться. В репозиотории можете найти пакет для работы из python, но также можно использовать только C-ную часть. Для работы С библиотеки нужно выполнить make build_c.

RRS feed

  • Remove From My Forums
  • Question

  • I have just 1 user that is not able to enroll for a certificate. The Failed requests logs shows two different errors:

    ASN1 unexpected end of data 0x80093102 (ASN:  258)

    ASN1 corrupted data 0x80093103 (ASN:  259)

    Any ideas of what the issue could be? Just this one user cannot enroll. Everyone else is working without issue.

All replies

    • Edited by

      Thursday, January 23, 2014 7:46 AM

  • Thanks for the reply Amy. I exported the binary request data and indeed it does look corrupted at the end. It seems that the client is submitting a malformed certificate request. I’ll reach out to the user and try to do more troubleshooting at that
    end.

  • The application logs from the client’s workstation have the following events (italics
    used to anonymize the data):

    • Certificate enrollment for
      domainusername is successfully authenticated by policy server
    • Certificate enrollment for
      domainusername successfully load policy from policy server
    • Certificate enrollment for
      domainusername is successfully authenticated by enrollment server
    • Certificate enrollment for
      domainusername failed to enroll for a certificate with request ID N/A from
      Certificate Authority name (ASN1 corrupted data. 0x80093103 (ASN: 259)).
    • Automatic certificate enrollment for
      domainusername failed (0x80093103) ASN1 corrupted data.

    The first three events show no error in requesting a certificate. The final two are the same errors I can see from the Issuing CA. Nothing new there. I still can’t
    find any info regarding that ASN1 error.

    • Edited by
      MrBIGmog
      Friday, February 7, 2014 4:08 PM

Понравилась статья? Поделить с друзьями:
  • Леон ошибка саванны мультфильм
  • Лексическая ошибка пример и исправление
  • Лента для исправления ошибок
  • Легче найти ошибку чем истину кто сказал
  • Ленд ровер ошибка c1131