Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline xxxivanov667  
#1 Оставлено : 31 мая 2019 г. 16:56:41(UTC)
xxxivanov667

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

Группы: Участники
Зарегистрирован: 31.05.2019(UTC)
Сообщений: 6

Имеется небольшая самописная утилита для формирования цифровой подписи, написанная с использованием cades.
В версии криптопро 4 работает замечательно, при переходе на версию 5 функция CadesSignMessage стала возвращать ошибку 0x80090008 - Invalid algorithm specified

Алгоритм хэширования используется - szOID_CP_GOST_R3411_12_256 (1.2.643.7.1.1.2.2)
Тип усовершенствованной подписи - CADES_X_LONG_TYPE_1

CryptAcquireContext вызывается с dwProvType = 81 (гост 2012)
Offline Санчир Момолдаев  
#2 Оставлено : 1 июня 2019 г. 12:00:09(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 226 раз в 213 постах
Автор: xxxivanov667 Перейти к цитате
Имеется небольшая самописная утилита для формирования цифровой подписи, написанная с использованием cades.
В версии криптопро 4 работает замечательно, при переходе на версию 5 функция CadesSignMessage стала возвращать ошибку 0x80090008 - Invalid algorithm specified

Алгоритм хэширования используется - szOID_CP_GOST_R3411_12_256 (1.2.643.7.1.1.2.2)
Тип усовершенствованной подписи - CADES_X_LONG_TYPE_1

CryptAcquireContext вызывается с dwProvType = 81 (гост 2012)

szOID_CP_GOST_R3411_12_256 "1.2.643.7.1.1.2.2" Функция хэширования ГОСТ Р 34.11-2012, длина выхода 256 бит provtype 80
szOID_CP_GOST_R3411_12_512 "1.2.643.7.1.1.2.3" Функция хэширования ГОСТ Р 34.11-2012, длина выхода 512 бит provtype 81

для 2012 с длиной 256 это тип 80
2012 с 512 тип 81
Техническую поддержку оказываем тут
Наша база знаний
Offline xxxivanov667  
#3 Оставлено : 3 июня 2019 г. 9:39:57(UTC)
xxxivanov667

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

Группы: Участники
Зарегистрирован: 31.05.2019(UTC)
Сообщений: 6

К сожалению тип провайдера 80 не помог. Проверено на ключе типа Rutoken S (работает под криптопро 4)

На ключе свойства сертификата такие:

Версия - v3
Алгоритм подписи - ГОСТ Р 34.11-2012/34.10-2012 256 бит
Алгоритм хэширования подписи - ГОСТ Р 34.11-2012 256 бит
Открытый ключ - ГОСТ Р 34.10-2012 256 бит (512 бит)

Улучшенный ключ -
Пользователь службы штампов времени (1.2.643.2.2.34.25)
Пользователь службы актуальных статусов (1.2.643.2.2.34.26)
Пользователь Центра Регистрации, HTTP, TLS клиент (1.2.643.2.2.34.6)
Неизвестное использование ключа (1.2.643.2.64.1.1.1)
Неизвестное использование ключа (1.2.643.3.157.2.13)
Неизвестное использование ключа (1.2.643.6.37.1.1)
Неизвестное использование ключа (1.2.643.6.40.1)
Неизвестное использование ключа (1.2.643.6.41.1.1.1)
Неизвестное использование ключа (1.2.643.6.42.5.5.5)
Неизвестное использование ключа (1.2.643.6.44.1.1.1)
Неизвестное использование ключа (1.2.643.6.45.1.1.1)
Неизвестное использование ключа (1.2.643.7.2.21.1.2)
Проверка подлинности клиента (1.3.6.1.5.5.7.3.2)
Защищенная электронная почта (1.3.6.1.5.5.7.3.4)



Формирование подписи в программе реализовано так:

HCRYPTPROV hCertContainer = 0;
if( !CryptAcquireContext( &hCertContainer, container_name, NULL, 80, 0 )) return -1;

PCCERT_CONTEXT context = GetCertificatFromContainer(hCertContainer);
if( !context ) return -1;

CRYPT_SIGN_MESSAGE_PARA signPara = { sizeof(signPara) };
signPara.dwMsgEncodingType = X509_ASN_ENCODING | PKCS_7_ASN_ENCODING;
signPara.pSigningCert = context;
signPara.HashAlgorithm.pszObjId = szOID_CP_GOST_R3411_12_256;

CADES_SERVICE_CONNECTION_PARA tspConnectionPara = { sizeof(tspConnectionPara) };
tspConnectionPara.wszUri = "http://tax4.tensor.ru/tsp/tsp.srf";

CADES_SIGN_PARA cadesSignPara = { sizeof(cadesSignPara) };
cadesSignPara.dwCadesType = CADES_X_LONG_TYPE_1;
cadesSignPara.pTspConnectionPara = &tspConnectionPara;

CADES_SIGN_MESSAGE_PARA para = { sizeof(para) };
para.pSignMessagePara = &signPara;
para.pCadesSignPara = &cadesSignPara;

const unsigned char *pbToBeSigned[] = { (unsigned char*)data };
DWORD cbToBeSigned[] = { size };

PCRYPT_DATA_BLOB pSignedMessage = 0;

if( !CadesSignMessage( &para, 0, 1, pbToBeSigned, cbToBeSigned, &pSignedMessage ) )
{
printf( "%x\n", GetLastError() );
}

Offline Максим Коллегин  
#4 Оставлено : 3 июня 2019 г. 12:05:43(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Очень странно. Какая платформа? Библиотеки CAdES достаточно свежие?
CADES_BES создаётся?
Знания в базе знаний, поддержка в техподдержке
Offline xxxivanov667  
#5 Оставлено : 3 июня 2019 г. 13:14:08(UTC)
xxxivanov667

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

Группы: Участники
Зарегистрирован: 31.05.2019(UTC)
Сообщений: 6

Windows 7 ultimate 64bit
КриптоПро CSP - 5.0.11453
КриптоПро ЭЦП Runtime - 2.0.12777
Драйвер Рутокен - 4.7.0.0

Цитата:
CADES_BES создаётся?


Вы имеете в виду попробовать cadesSignPara.dwCadesType = CADES_BES; ?
С таким вариантом та же ошибка 80090008 в версии 5. Версия 4 нормально отработала и в таком варианте.
Offline Максим Коллегин  
#6 Оставлено : 3 июня 2019 г. 16:58:22(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Включите аудит:
Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Crypto Pro\Cryptography\CurrentVersion\Debug]
"capi10"=dword:0000003f
"capi20"=dword:0000003f

Сообщения об ошибках искать в DbgView
Знания в базе знаний, поддержка в техподдержке
Offline xxxivanov667  
#7 Оставлено : 4 июня 2019 г. 9:41:30(UTC)
xxxivanov667

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

Группы: Участники
Зарегистрирован: 31.05.2019(UTC)
Сообщений: 6

DbgView выдал

00000001 0.00000000 [2584] Externs.cpp(33) : /Init/
00000002 0.00014053 [2584] CPSettings.cpp(305) : /Init/
00000003 0.00504390 [2584] Externs.cpp(33) : /Init/
00000004 0.00597235 [2584] CPSettings.cpp(305) : /Init/
00000005 0.04973917 [2584] Externs.cpp(33) : /Init/
00000006 0.07150251 [2584] CPSettings.cpp(305) : /Init/
00000007 0.73902947 [2584] <cloud>test.exe:Thread:function text xcode(dcode) (file:line)level: 3000000

Offline Максим Коллегин  
#8 Оставлено : 4 июня 2019 г. 11:10:50(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Как-то маловато. Вы установили компонент совместимости с продуктами MSFT?
Знания в базе знаний, поддержка в техподдержке
Offline xxxivanov667  
#9 Оставлено : 4 июня 2019 г. 11:57:49(UTC)
xxxivanov667

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

Группы: Участники
Зарегистрирован: 31.05.2019(UTC)
Сообщений: 6

Ну КриптоПро 5 ставился в режиме "все по умолчанию". Сейчас запустил установщик в режиме "изменить" - "Компонент совместимости с продуктами Microsoft" был не установлен. При попытке доустановить установщик выдал ошибку:

Цитата:
Ошибка 577: Системе Windows не удается проверить цифровую подпись этого файла. При последнем изменении оборудования или программного обеспечения могла быть произведена установка неправильно подписанного или поврежденного файла либо вредоносной программы неизвестного происхождения


Файл CSPSetup-5.0.11453.exe размером 7121608 байт, его MD5 - 43077d4074ac5f77f9a793102f749e39,
цифровая подпись LLC Crypto-Pro от ‎7 ‎мая ‎2019 ‎г. 0:35:06
путь сертификации DigiCert -> DigiCert EV Code Signing CA -> LLC Crypto-Pro

Offline Максим Коллегин  
#10 Оставлено : 4 июня 2019 г. 13:20:36(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Странно, попробуйте удалить и установить заново.
Знания в базе знаний, поддержка в техподдержке
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.