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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline s-pro  
#1 Оставлено : 13 февраля 2013 г. 13:55:47(UTC)
s-pro

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

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

Сказал «Спасибо»: 1 раз
Windows XP
Крипто Про 3.6.6497 (КС2 3.6.5359). Лицензия действительна.
Создаём подпись CAdES-BES
Используем cades.dll (низкоуровневые или высокоуровневые функции).
Сертификат и вся цепочка (3 шт.) действительны. Ключи лежат на ruToken или eToken. То же при использовании сертификата с тестового УЦ с сайта.
Криптопровайдер Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider.
Алгоритм: 1.2.643.2.2.3 или 1.2.643.2.2.4
Ошибка: 0x80092004
Лог:
00000001 0.00000000 [5832] cades.dll: {4136} /CadesSignMessage/ cades.cpp(2108) : (pSignPara=0x020FC7A8, fDetachedSignature=-1, cToBeSigned=1, rgpbToBeSigned=0x0012FCFC, rgcbToBeSigned=0x0012FCF8, ppSignedBlob=0x0012FD00)
00000002 0.14050500 [5832] cades.dll: {4136} /CadesSignMessageImpl/ cades.cpp(1990) : Signer updating start
00000003 0.14053182 [5832] cades.dll: {4136} /CadesSignMessageImpl/ cades.cpp(1993) : Hash algorithm deduced
00000004 0.14055976 [5832] cades.dll: {4136} /CadesMsgOpenToEncodeImplNamespace::AttributeExists/ cades.cpp(185) : (pAttr=0)
00000005 0.14058742 [5832] cades.dll: {4136} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(381) : Signer does not have any of signing-certificate attributes
00000006 0.14061843 [5832] cades.dll: {4136} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(387) : Attributes copied
00000007 0.14178115 [5832] cades.dll: {4136} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(390) : signing-certificate(-v2) attribute assembled
00000008 0.14180852 [5832] cades.dll: {4136} /CadesMsgOpenToEncodeImplNamespace::UpdateSignedAttributes/ cades.cpp(393) : Signer is updated successfully
00000009 0.14183982 [5832] cades.dll: {4136} /CadesMsgOpenToEncode/ cades.cpp(495) : (dwMsgEncodingType=0x00010001, dwFlags=0x00000004, pvMsgEncodeInfo=0x0012F76C, pszInnerContentObjID=0, pStreamInfo=0x00000000)
00000010 0.14186524 [5832] cades.dll: {4136} /CadesMsgOpenToEncodeImpl/ cades.cpp(443) : Start
00000011 0.14189233 [5832] cades.dll: {4136} /CadesMsgOpenToEncodeImpl/ cades.cpp(447) : Input parameters checked
00000012 0.14191915 [5832] cades.dll: {4136} /CadesMsgOpenToEncodeImpl/ cades.cpp(456) : Copy of input structures is ready
00000013 0.14194654 [5832] cades.dll: {4136} /CadesMsgOpenToEncodeImpl/ cades.cpp(462) : Signers updating start
00000014 0.14197139 [5832] cades.dll: {4136} /CadesMsgOpenToEncodeImpl/ cades.cpp(467) : Signer #0
00000015 0.45925865 [5832] cades.dll: {4136} /CadesMsgOpenToEncodeImplNamespace::CheckAlgorithms/ cades.cpp(411) : Public key info is exported successfully
00000016 0.45929468 [5832] cades.dll: {4136} /CadesMsgOpenToEncodeImplNamespace::CheckAlgorithms/ cades.cpp(417) : Exception thrown: _hr
00000017 0.45934862 [5832] cades.dll: {4136} /CadesMsgOpenToEncode/ cades.cpp(514) : COleException, m_sc=0x80092004
00000018 0.45937765 [5832] cades.dll: {4136} /CadesMsgOpenToEncode/ cades.cpp(526) : (hMsg=0x00000000, GetLastError=0x80092004)
00000019 0.45940393 [5832] cades.dll: {4136} /CadesSignMessageImpl/ cades.cpp(2050) : Last win32 error thrown as exception
00000020 0.45970061 [5832] cades.dll: {4136} /CadesSignMessage/ cades.cpp(2128) : COleException, m_sc=0x80092004
00000021 0.45972827 [5832] cades.dll: {4136} /CadesSignMessage/ cades.cpp(2140) : (res=0, GetLastError=0x80092004


Точно такой же ситуации на форуме не нашёл – похоже, но не совсем то… Brick wall

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

С другими криптопровайдерами подпись CAdES-BES формируется нормально, например:
Aktiv ruToken CSP v1.0
eToken Base Cryptographic Provider

Также нормально создаётся подпись с сертификатом Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider средствами Crypto API CryptCreateHash, CryptHashData, CryptSignHash; алгоритм CALG_GR3411.


Offline Новожилова Елена  
#2 Оставлено : 13 февраля 2013 г. 17:13:02(UTC)
Новожилова Елена

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

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

Поблагодарили: 99 раз в 95 постах
Цитата:
Алгоритм: 1.2.643.2.2.3 или 1.2.643.2.2.4

Это OID'ы алгоритмов подписи. Вы куда эти алгоритмы передаете?

В функциях cades.dll среди входных параметров присутствует только алгоритм хэширования. Алгоритм подписи определяется на основе алгоритма хэширования и алгоритма открытого ключа в сертификате.

Попробуйте с этим алгоритмом:
#define szOID_CP_GOST_R3411 "1.2.643.2.2.9"
thanks 1 пользователь поблагодарил Новожилова Елена за этот пост.
s-pro оставлено 14.02.2013(UTC)
Offline s-pro  
#3 Оставлено : 14 февраля 2013 г. 8:14:54(UTC)
s-pro

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

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

Сказал «Спасибо»: 1 раз
Спасибо за быстрый ответ. Из него проистекает дополнительный вопрос…

Хочется, чтобы приложение было максимально универсальным. Посему, формирование параметров подписи не жёстко прибито гвоздями в коде, а происходит в зависимости от используемого сертификата.
1. Сначала определяем алгоритмы хэширования, поддерживаемые провайдером: CryptGetProvParam(PP_ENUMALGS) по условиию GET_ALG_CLASS = ALG_CLASS_HASH.
В случае с криптопровайдером Crypto-Pro GOST получается значение ALG_ID=32798. Пока всё нормально.
2. Далее вычисляем OID этого алгоритма (поскольку никакие функции библиотеки CAdES, вроде как, напрямую не переваривают уже готовый ALG_ID) при помощи CryptFindOIDInfo(CRYPT_OID_INFO_ALGID_KEY). Он нам возвращает "1.2.643.2.2.3" вместо ожидаемого "1.2.643.2.2.9". Получается, такой способ нельзя использовать для Crypto-Pro GOST?
Offline Новожилова Елена  
#4 Оставлено : 15 февраля 2013 г. 18:24:42(UTC)
Новожилова Елена

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

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

Поблагодарили: 99 раз в 95 постах
Для ALG_ID CALG_GR3411 (= 32798) зарегистрирован не только OID "1.2.643.2.2.9", но и "1.2.643.2.2.3".
Функция CryptFindOIDInfo находит первый зарегистрированный OID для данного ALG_ID.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.