Cryptsignmessage ошибка 0x80070057

Добрый день. Планировалось подписание в браузере с использованием КриптоПро плагина, однако если выставить алогоритм шифрования, отличный от CADESCOM_HASH_ALGORITHM_SHA1, возникает ошибка: Failed...

Форум КриптоПро
 » 
Средства криптографической защиты информации
 » 
КриптоПро CSP 5.0
 » 
Ошибка подписи хэша при использовании плагина и кастомного алгоритма хэша


Offline

НаталияНаталия

 


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

20 июля 2020 г. 19:03:49(UTC)

НаталияНаталия

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

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

Зарегистрирован: 20.07.2020(UTC)
Сообщений: 19
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 4 раз

Добрый день.

Планировалось подписание в браузере с использованием КриптоПро плагина, однако если выставить алогоритм шифрования, отличный от CADESCOM_HASH_ALGORITHM_SHA1, возникает ошибка:
Failed to create signature. Error: Параметр задан неверно. (0x80070057)

Версия плагина: 2.0.14071 Версия криптопровайдера: 5.0.10874
Криптопровайдер: Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider

Код:

var CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101;

function CreateSignature(sHashValue, certSubjectName) {
    return new Promise(function(resolve, reject){
        cadesplugin.async_spawn(function *(args) {
            try {
	        // Создаем объект CAdESCOM.HashedData
		var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");

		// Инициализируем объект заранее вычисленным хэш-значением
		// Алгоритм хэширования нужно указать до того, как будет передано хэш-значение
		yield oHashedData.propset_Algorithm(CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256);
		yield oHashedData.SetHashValue(sHashValue);
			
		// Создаем объект CAdESCOM.RawSignature
		var oRawSignature = yield cadesplugin.CreateObjectAsync("CAdESCOM.RawSignature");

		var oStore = yield cadesplugin.CreateObjectAsync("CAdESCOM.Store");
                yield oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);

                var CertificatesObj = yield oStore.Certificates;
                var oCertificates = yield CertificatesObj.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, certSubjectName);

                var Count = yield oCertificates.Count;
                if (Count == 0) {
                    throw("Certificate not found: " + args[0]);
                }
                var oCertificate = yield oCertificates.Item(1);
		// Создаем объект CAdESCOM.CPSigner
		var oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
		yield oSigner.propset_Certificate(oCertificate);

		// Создаем объект CAdESCOM.CadesSignedData
		var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");

                var sSignedMessage = yield oSignedData.SignHash(oHashedData, oSigner, CADESCOM_CADES_BES);
						
		yield oStore.Close();

                args[2](sSignedMessage);
            } catch (e) {
                args[3]("Failed to create signature. Error: " + cadesplugin.getLastError(e));
            }
        }, sHashValue, certSubjectName, resolve, reject);
     });
		
}

Может кто-то подсказать как подписать хэш?
Заранее спасибо

Отредактировано пользователем 20 июля 2020 г. 19:04:19(UTC)
 | Причина: Не указана


Вверх


Online

Андрей *

 


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

20 июля 2020 г. 19:11:06(UTC)

Андрей *

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

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

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

Сказал «Спасибо»: 451 раз
Поблагодарили: 1840 раз в 1423 постах

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

В сертификате — открый ключ по какому алгоритму?

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


Вверх

WWW


Online

Андрей *

 


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

20 июля 2020 г. 19:12:14(UTC)

Андрей *

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

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

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

Сказал «Спасибо»: 451 раз
Поблагодарили: 1840 раз в 1423 постах

Цитата:

.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, certSubjectName)

А если у меня 2 сертификата и попадётся первый с rsa…?

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


Вверх

WWW


Offline

НаталияНаталия

 


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

20 июля 2020 г. 19:25:30(UTC)

НаталияНаталия

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

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

Зарегистрирован: 20.07.2020(UTC)
Сообщений: 19
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 4 раз

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

Цитата:

.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, certSubjectName)

А если у меня 2 сертификата и попадётся первый с rsa…?

Это тестовый пример, сертификат точно один

Отредактировано пользователем 20 июля 2020 г. 19:26:12(UTC)
 | Причина: Не указана


Вверх


Online

Андрей *

 


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

20 июля 2020 г. 19:27:07(UTC)

Андрей *

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

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

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

Сказал «Спасибо»: 451 раз
Поблагодарили: 1840 раз в 1423 постах

Автор: НаталияНаталия Перейти к цитате

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

Цитата:

.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, certSubjectName)

А если у меня 2 сертификата и попадётся первый с rsa…?

Это тестовый пример, сертификат точно один.

Алгоритм ключа: RSA

Разве это как-то влияет на то, каким образом у меня вычислен хэш?

Конечно,
ГОСТ хеш => ГОСТ подпись.

Подпись вычисляется с учётом хеша — его значения и алгоритма.

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


Вверх

WWW


Online

Андрей *

 


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

20 июля 2020 г. 19:34:00(UTC)

Андрей *

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

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

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

Сказал «Спасибо»: 451 раз
Поблагодарили: 1840 раз в 1423 постах

Так что с сертификатомалгоритмом?

Делайте правильно, пример будет работать.

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


Вверх

WWW


Offline

НаталияНаталия

 


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

20 июля 2020 г. 19:35:38(UTC)

НаталияНаталия

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

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

Зарегистрирован: 20.07.2020(UTC)
Сообщений: 19
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 4 раз

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

Конечно,
ГОСТ хеш => ГОСТ подпись.

Подпись вычисляется с учётом хеша — его значения и алгоритма.

Спасибо!
Но у меня все равно недопонимание, если я указываю:

Код:

yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_MD5);

и подписываю ключом с RSA, все равно возникает та же ошибка.


Вверх


Online

Андрей *

 


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

20 июля 2020 г. 19:45:16(UTC)

Андрей *

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

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

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

Сказал «Спасибо»: 451 раз
Поблагодарили: 1840 раз в 1423 постах

На тестовой странице — работает подписание этим сертификатом?

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


Вверх

WWW


Online

Андрей *

 


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

20 июля 2020 г. 19:47:03(UTC)

Андрей *

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

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

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

Сказал «Спасибо»: 451 раз
Поблагодарили: 1840 раз в 1423 постах

Автор: НаталияНаталия Перейти к цитате

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

Конечно,
ГОСТ хеш => ГОСТ подпись.

Подпись вычисляется с учётом хеша — его значения и алгоритма.

Спасибо!
Но у меня все равно недопонимание, если я указываю:

Код:

yield oHashedData.propset_Algorithm(cadesplugin.CADESCOM_HASH_ALGORITHM_MD5);

и подписываю ключом с RSA, все равно возникает та же ошибка.

RSA сертификат и алгоритм хеширования MD5… ?

Почему бы для начала не получить тестовый сертификат по ГОСТ 2012?

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


Вверх

WWW

thanks 1 пользователь поблагодарил Андрей * за этот пост.

НаталияНаталия

оставлено 20.07.2020(UTC)


Online

Андрей *

 


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

20 июля 2020 г. 19:54:58(UTC)

Андрей *

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

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

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

Сказал «Спасибо»: 451 раз
Поблагодарили: 1840 раз в 1423 постах

+ sHashValue — в каком виде?

Подпись файла с использованием FileAPI и чтением файла по частям
смотрели?

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


Вверх

WWW

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

Guest

Форум КриптоПро
 » 
Средства криптографической защиты информации
 » 
КриптоПро CSP 5.0
 » 
Ошибка подписи хэша при использовании плагина и кастомного алгоритма хэша

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

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

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

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

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

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

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

Добрый день, @vgoma.
Спасибо за разработанную библиотеку.

Есть проблемы с подписанием XML отделенной подписью.

Окружение:
OS Astra Linux (Smolensk) 1.6 64bit
Browser Firefox 72.0.1 (64bit)
cadesVersion 2.0.13642
cspVersion 5.0.11998

Воспроизведение:

  1. Получаем ArrayBuffer из XML файла
  2. Передаем ArrayBuffer в функцию createHash
  3. Полученный хеш и отпечаток ЭЦП передаем в функцию createDetachedSignature

Результат:
Подпись не создана, в консоли браузера ошибка:
«The parameter is incorrect (0x80070057)»

Ожидаемый результат:
Получаем подпись в формате PKCS7

Дополнительная информация:
Пробовали подписывать на MacOS 10.15.4 на cadesVersion 2.0.13642 (сертифицированная), получаем ошибку.
Пробовали подписывать на MacOS 10.15.4 на cadesVersion 2.0.14071, ошибки нет, подпись работает.
Версии CSP на MacOS и на Astra Linux идентичные.

Возможно Вы сталкивались с похожими проблемами, что можно предпринять в данном случае ? Не уверен что мы можем использовать версию 2.0.14071 т.к. она не сертифицирована.

Готов предоставить любую дополнительную информацию которая может потребоваться для разрешения данной проблемы.

Заранее благодарен.
С Уважением.

UPD:
Пробовали на версии CSP «5.0.11944», тоже получаем ошибку.

While implementing a two-tier PKI I ran into the issue that certutil.exe -crl, and PowerShell cmdlets such as Get-CACrlDistributionPoint would fail on the Subordinate Domain CA with a generic error which made finding a solution very difficult:

PS C:Windowssystem32> Get-CACrlDistributionPoint
Get-CACrlDistributionPoint : CCertAdmin::GetConfigEntry: The parameter is incorrect. 0x80070057 (WIN32:
ERROR_INVALID_PARAMETER)
At line:1 char:1
+ Get-CACrlDistributionPoint
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-CACrlDistributionPoint], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.CertificateServices.Administration.Comm
DistributionPointCommand

PS C:Windowssystem32> certutil -crl
CertUtil: -CRL command FAILED: 0x80070057 (WIN32: 87 ERROR_INVALID_PARAMETER)
CertUtil: The parameter is incorrect.
PS C:Windowssystem32>

I had started off by following this guide on Technet Blogs:
http://blogs.technet.com/b/yungchou/archive/2013/10/21/enterprise-pki-with-windows-server-2012-r2-active-directory-certificate-services-part-1-of-2.aspx

Not long after proceeding I realised that I needed to alter certain aspects of the way it was configured. I started again and continued to use the same CA server hostnames but with new CA names, this time preferring to follow this guide by Derek Seaman:
http://www.derekseaman.com/2014/01/windows-server-2012-r2-two-tier-pki-ca-pt-1.html

However I encountered the errors with the subordinate CA refusing to run the PowerShell cmdlets relating to the Certificate Authority. The errors were also encountered by commenter “Per” on Derek’s blog post, and similarly reported in the comments on the Windows Server 2012 R2 Active Directory Certificate Services Microsoft Test Lab page:
http://technet.microsoft.com/en-us/library/hh831348.aspx

There is a Microsoft KB referencing the same error at the time of creating the subordinate CA. The article implicates permissions, however this is a red herring.

It took a lot of trial and error, but eventually I did resolve this issue thanks to some pointers in a Microsoft Directory Services Team Blog post on troubleshooting Certificate Enrollment. I determined the root cause – several superfluous entries in Active Directory for an aborted CA installation. I needed to delete these with ADSIEdit, though I have subsequently discovered that you can also use the AD Sites and Services MMC snap-in to do this (at parent, View > Show Services Node). When I first attempted to set up the CAs I had been using the standard auto-generated names because I had thought that not doing so might invite trouble later on – so my subordinate domain CA had published itself to Active Directory at CN=Enrollment Services,CN=Public Key Services,CN=Services using the name domain-HOSTNAME-CA.

I had thought this entry was sane when I was looking back over the ADSIEdit output while investigating the problem – because I know it formats the cert request using this notation. Then I remembered that I had not used this CA name in my subsequent CA installation attempt. I removed this old name entry from Active Directory and it immediately fixed the issue. I guess because although it was for a different CA installation attempt, crucially it shared the same server hostname, hence the problem when PowerShell was invoking Certificate Services to query the Directory Service.

Following this, I then pruned similar superfluous records for the same abortive CA installation attempt which were located at:
CN=KRA,CN=Public Key Services,CN=Services
CN=AIA,CN=Public Key Services,CN=Services
CN=MY_CA_HOSTNAME,CN=CDP,CN=Public Key Services,CN=Services

Служба активации в операционной системе Windows способна сохранить любые данные, однако даже в таком случае перед пользователем может появиться ошибка вида «createComputeShader failed. HRESULT=0x80070057, Параметр задан неверно». Причем появиться она может практически в любой момент.

Ошибка при запуске HRESULT: 0x80070057

Ошибка при запуске HRESULT: 0x80070057

Однако следует учесть, что такая ошибка 0x80070057 появляется не очень часто, однако у некоторых пользователей она все-таки бывает. Как можно с ней справиться?

К основным причинам появления ошибки 0x80070057 можно отнести следующие:

  1. Нарушения в работе одной или нескольких динамических библиотек. Связано это может как с различными вредоносными и вирусными файлами, так и с некорректным выключением компьютера. Обычно из-за этих причин операционная система не способна найти несколько крайне важных файлов, из-за чего и появляется ошибка с такой кодировкой.
  2. Разделители представлены теми символами, которые отличаются от точки.

Также проблема может появиться и во время установки ОС Windows. Здесь можно отметить такие причины, как:

  1. Проблемы с HDD.
  2. AHCI технология в BIOS.
  3. Неправильно работающий блок питания.

Читайте также: re2.exe — Неустранимая ошибка приложения — что делать

Как же можно разобраться с ошибкой 0x80070057?

Способ N1: Изменение десятичных разделителей

Как уже было сказано выше, 0x80070057 может появится из-за незначительного регионального отличия, а именно из-за десятичного разделителя. Все, что нужно сделать пользователю – это лишь изменить десятичный разделитель, после чего проблема архивации ОС будет решена. Для того, чтобы изменить десятичный разделитель, следует сделать следующее:

  1. Открыть ПУ
  2. Открыть параметры часов, региона и языка.
  3. Перейти в «Форматы».
  4. Нажать на дополнительные параметры.
  5. Найти «Десятичный разделитель» и поставить значение «.».
  6. Сохранить изменения и перезагрузить ОС.

После этого пользователю нужно воспользоваться архивацией Windows еще раз и убедиться в разрешении проблемы с 0x80070057. Чаще всего проблема заключается именно в этом.

Способ N2: переименование каталога SoftwareDistribution

Для того, чтобы исправить ошибку таким методом, необходимо зажать те же две кнопки Winr+R, а в открытом после этого окне следует ввести параметр %SystemRoot%, а после этого нажать на кнопку Enter.

После этого необходимо прокрутить страницу до самого низа и нажать выбрать там папку под названием SoftwareDistribution. Ее необходимо переименовать в папку SoftwareDistributon.old и перезагрузить компьютер. Проблема должна будет исчезнуть.

Способ N3: Изменение реестра

Ошибка 0x80070057 также может быть связана с реестром. В таком случае нужно установить в реестр Windows определенный раздел. Для этого нужно:

  1. Нажат на Win+R.
  2. Написать regedit.exe.
  3. Найти раздел System в HKEY_LOCAL_MACHINE (дальше software – Policies – Microsoft).
  4. Нажать в разделе System ПКМ на любое пустое место и выбрать пункт создать параметр Dword.
  5. Дать параметру название CopyFileBufferedSynchronousIo.
  6. Нажать ПКМ и перейти в пункт «изменить».
  7. Выставить этому параметру значение, равное единице.
  8. Сохранить все произведенные изменения и перезагрузить компьютер.

После перезагрузки системы можно проверить, была ли исправлена ошибка HRESULT: 0x80070057, и проверить это можно в этот раз при помощи одного из стандартных средств операционной системы. В данном случае это будет такой способ, как архивация файлов Windows.

В том случае, если у пользователя по какой-либо причине не вышло воспользоваться подобным методом по какой-либо причине, пользователь всегда может воспользоваться профессиональным Microsoft средством. Этим средством является Fix it. Программа позволяет без помощи и действий пользователя автоматически исправить любые неполадки с реестром Windows и с процессом архивации.

В чем особенность программы Microsoft Fix it

Программное обеспечение Fix it – это бесплатно распространяющая утилита, необходимая для того, чтобы исправить ошибки в операционной системе. Главная задача этой программы – продиагностировать операционную систему и исправить ошибки. Многие специалисты рекомендуют применять это приложение любому неопытному пользователю, если он только начал изучать компьютер.

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

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

В заключение

Любой из способов сможет помочь в тех случаях, когда пользователь столкнется с проблемой hresult 0x80070057, однако следует производить все действия осторожно, особенно если дело касается реестра.

Оценка статьи:

Загрузка…

Понравилась статья? Поделить с друзьями:
  • Cryptopro tls error 0x80090014 calling csp invalid provider type specified
  • Cryptopro checksum validation error
  • Cryptoki initialize error 5
  • Cryptoenergypro ошибка при проверке цифровой подписи файла checkintac exe
  • Crypto library internal error windows 10 при установке