logo Наши способы организации безопасного удалённого доступа к рабочим местам и корпоративным ресурсам
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline IGORPzzz  
#21 Оставлено : 29 сентября 2018 г. 17:15:07(UTC)
IGORPzzz

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

Группы: Участники
Зарегистрирован: 28.09.2018(UTC)
Сообщений: 25
Российская Федерация
Откуда: Moscow

Сказал(а) «Спасибо»: 1 раз
переустановил, все пакеты которые были.

Exception: Internal error. (0x8009001D)

Как я понимаю, нужно сбросить как то пароли, как? Я же их не использую.
Offline IGORPzzz  
#22 Оставлено : 29 сентября 2018 г. 17:23:24(UTC)
IGORPzzz

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

Группы: Участники
Зарегистрирован: 28.09.2018(UTC)
Сообщений: 25
Российская Федерация
Откуда: Moscow

Сказал(а) «Спасибо»: 1 раз
Устранил ошибку выше, установив пакет lsb-cprocsp-kc2-64-4.0.9944-5.x86_64.rpm

ошибка осталась.
Exception: Internal error. (0x80091004)
Offline IGORPzzz  
#23 Оставлено : 29 сентября 2018 г. 17:26:16(UTC)
IGORPzzz

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

Группы: Участники
Зарегистрирован: 28.09.2018(UTC)
Сообщений: 25
Российская Федерация
Откуда: Moscow

Сказал(а) «Спасибо»: 1 раз
Автор: Андрей Писарев Перейти к цитате
Проверить работу с сертификатом через плагин


У меня только терминал, речь о каком плагине?
Offline IGORPzzz  
#24 Оставлено : 29 сентября 2018 г. 17:28:39(UTC)
IGORPzzz

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

Группы: Участники
Зарегистрирован: 28.09.2018(UTC)
Сообщений: 25
Российская Федерация
Откуда: Moscow

Сказал(а) «Спасибо»: 1 раз
Вопрос, после переустановки csp сертификаты следует переустановить?
Offline IGORPzzz  
#25 Оставлено : 29 сентября 2018 г. 17:31:03(UTC)
IGORPzzz

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

Группы: Участники
Зарегистрирован: 28.09.2018(UTC)
Сообщений: 25
Российская Федерация
Откуда: Moscow

Сказал(а) «Спасибо»: 1 раз
Снова скопировал пример из офф. источника

Вот такая ошибка
Fatal error: Call to a member function get_Certificates()

Помню, она была на начальном этапе, когда не были установлены сертификаты, ну а сейчас то что?????
Offline IGORPzzz  
#26 Оставлено : 29 сентября 2018 г. 17:40:11(UTC)
IGORPzzz

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

Группы: Участники
Зарегистрирован: 28.09.2018(UTC)
Сообщений: 25
Российская Федерация
Откуда: Moscow

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


О ЧУДО!!!!!!!

Реальный пример не заработал, хз почему.

Вот этот заработал, на коленках собрал


Код:

include "../vendor/igorp/crypto-pro/csp/CPCertificate.php";
include "../vendor/igorp/crypto-pro/csp/CPCertificates.php";
include "../vendor/igorp/crypto-pro/csp/CPStore.php";
include "../vendor/igorp/crypto-pro/csp/CPSigner.php";
include "../vendor/igorp/crypto-pro/csp/CPSignedData.php";
include "../vendor/igorp/crypto-pro/csp/Version.php";



$methods = new CPStore();
$methods->Open(CURRENT_USER_STORE, 'My', STORE_OPEN_READ_ONLY);

/** @var CPCertificates $certificates */
$certificates = $methods->get_Certificates();

/** @var CPCertificates $certs */
$certs = $certificates->Find(CERTIFICATE_FIND_SUBJECT_NAME, 'SUPER_ADMIN', 0);

/** @var CPCertificate $cert */
$cert =  $certs->Item(1);

/** @var CPSigner $signer */
$class = "CPSigner";
$signer = new $class();
$signer->set_TSAAddress('http://testca.cryptopro.ru/tsp/tsp.srf');
$signer->set_Certificate($cert);

/** @var CPSignedData $sd */
$sd = new CPSignedData();
$sd->set_Content('my content');


$sm = $sd->Sign($signer, 0, STRING_TO_UCS2LE);
print_r($sm);
$sd->Verify($sm, 0, VERIFY_SIGNATURE_ONLY);
echo "Verify ok <br>";



$methods = get_class_methods('CPStore');

foreach ( $methods as $item){
    echo "public function $item()<br>";
    echo "{<br>";
    echo "}<br>";
    echo "<br><br>";
}
Offline IGORPzzz  
#27 Оставлено : 29 сентября 2018 г. 18:54:23(UTC)
IGORPzzz

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

Группы: Участники
Зарегистрирован: 28.09.2018(UTC)
Сообщений: 25
Российская Федерация
Откуда: Moscow

Сказал(а) «Спасибо»: 1 раз
Спасибо всем кто откликнулся!!!
Всё пока замечательно. Подозреваю что, есть еще подводные камни. Будем надеяться на лучшее.

Напоследок задам еще пару вопросов.

Результат подписи это конечный файл?
Исходный файл как-то подвернулся модификации?

Еще раз спасибо.


Хотя на последней и сам могу ответить, сравнив хэши)))
Offline Андрей Писарев  
#28 Оставлено : 29 сентября 2018 г. 20:00:16(UTC)
Андрей *

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

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

Сказал «Спасибо»: 334 раз
Поблагодарили: 1310 раз в 1023 постах
Результат - электронная подпись+исходные данные, т.к. в Sign указали 0 - присоединенная подпись => исходный файл не нужен.

p.s. при подписании файлов - обычно используется отсоединенная ЭП.
Техническую поддержку оказываем тут
Наша база знаний
Offline IGORPzzz  
#29 Оставлено : 29 сентября 2018 г. 20:09:40(UTC)
IGORPzzz

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

Группы: Участники
Зарегистрирован: 28.09.2018(UTC)
Сообщений: 25
Российская Федерация
Откуда: Moscow

Сказал(а) «Спасибо»: 1 раз
Извините за назойливость.
Напрашивается очередной вопрос.


В результате мы имеем исходный файл и подпись отдельно
итого 2 файла.

Теперь если модифицировать файл (документ который подписывали) как убедится что он не модифицировался?
Offline Андрей Писарев  
#30 Оставлено : 29 сентября 2018 г. 21:31:01(UTC)
Андрей *

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

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

Сказал «Спасибо»: 334 раз
Поблагодарили: 1310 раз в 1023 постах
Автор: IGORPzzz Перейти к цитате
Извините за назойливость.
Напрашивается очередной вопрос.


В результате мы имеем исходный файл и подпись отдельно
итого 2 файла.

Теперь если модифицировать файл (документ который подписывали) как убедится что он не модифицировался?



Вызвать метод проверки SignedData.Verify


Создание и проверка отделенной подписи
Техническую поддержку оказываем тут
Наша база знаний
Offline Дмитрий (LV)  
#31 Оставлено : 30 марта 2020 г. 20:41:47(UTC)
Дмитрий (LV)

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

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

Автор: Андрей * Перейти к цитате
Результат - электронная подпись+исходные данные, т.к. в Sign указали 0 - присоединенная подпись => исходный файл не нужен.

p.s. при подписании файлов - обычно используется отсоединенная ЭП.


Скажите, а какой параметр надо передать для отсоединенной подписи? Нигде не могу найти подходящую документацию...
Offline Андрей *  
#32 Оставлено : 30 марта 2020 г. 20:45:47(UTC)
Андрей *

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

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

Сказал «Спасибо»: 334 раз
Поблагодарили: 1310 раз в 1023 постах
Автор: Дмитрий (LV) Перейти к цитате
Автор: Андрей * Перейти к цитате
Результат - электронная подпись+исходные данные, т.к. в Sign указали 0 - присоединенная подпись => исходный файл не нужен.

p.s. при подписании файлов - обычно используется отсоединенная ЭП.


Скажите, а какой параметр надо передать для отсоединенной подписи? Нигде не могу найти подходящую документацию...



по документации из CPDN:
Цитата:

sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_BES, true);



Для варианта с Sign
Цитата:

SignedData.Sign( _
[ ByVal Signer ], _
[ ByVal bDetached ], _
[ ByVal EncodingType ] _
)
Техническую поддержку оказываем тут
Наша база знаний
Offline Дмитрий (LV)  
#33 Оставлено : 30 марта 2020 г. 21:12:27(UTC)
Дмитрий (LV)

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

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

Еще вопрос - мне кажется или подпись включает в себя сертификат? или публичный ключ... у меня просто подпись 1.5 килобайта занимает для любой маленькой строчки.
Хотя в документации Tinkoff API в примерах подписи очень короткие...
Offline Андрей *  
#34 Оставлено : 30 марта 2020 г. 22:29:32(UTC)
Андрей *

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

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

Сказал «Спасибо»: 334 раз
Поблагодарили: 1310 раз в 1023 постах
Автор: Дмитрий (LV) Перейти к цитате
Еще вопрос - мне кажется или подпись включает в себя сертификат? или публичный ключ... у меня просто подпись 1.5 килобайта занимает для любой маленькой строчки.


Верно.
Создается CMS, с сертификатом внутри.



Автор: Дмитрий (LV) Перейти к цитате

Хотя в документации Tinkoff API в примерах подписи очень короткие...


- нужно использовать другой объект - RawSignature



Техническую поддержку оказываем тут
Наша база знаний
Offline Дмитрий (LV)  
#35 Оставлено : 31 марта 2020 г. 11:20:05(UTC)
Дмитрий (LV)

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

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

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

- нужно использовать другой объект - RawSignature


Никак не удается найти, как в таком случае передавать пароль на контейнер... как в случае с CPSigner->set_KeyPin

Offline Дмитрий (LV)  
#36 Оставлено : 31 марта 2020 г. 11:36:46(UTC)
Дмитрий (LV)

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

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

Я вижу по исходникам плагина, что есть метод set_Key() который вроде как принимает строку, но при вызове валится "The parameter is incorrect. (0x80070057)"
Offline Андрей *  
#37 Оставлено : 31 марта 2020 г. 12:20:54(UTC)
Андрей *

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

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

Сказал «Спасибо»: 334 раз
Поблагодарили: 1310 раз в 1023 постах
Автор: Дмитрий (LV) Перейти к цитате
Я вижу по исходникам плагина, что есть метод set_Key() который вроде как принимает строку, но при вызове валится "The parameter is incorrect. (0x80070057)"


т.е. если не вызывать set_KeyPin - то работает после указания пароля в диалоге?
Техническую поддержку оказываем тут
Наша база знаний
Offline Дмитрий (LV)  
#38 Оставлено : 31 марта 2020 г. 12:21:55(UTC)
Дмитрий (LV)

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

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

Автор: Андрей * Перейти к цитате
т.е. если не вызывать set_KeyPin - то работает после указания пароля в диалоге?


Да, возвращает base64

Offline Дмитрий (LV)  
#39 Оставлено : 3 апреля 2020 г. 12:36:47(UTC)
Дмитрий (LV)

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

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

Добрый день, есть такой вопрос:

для создания подписи использую код

$raw = new CPRawSignature();
$hd = new CPHashedData();
$hd->set_Algorithm(CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512);

$hd->Hash("какой-то текст для подписи");
$digest = $hd->get_Value();

$signature = $raw->SignHash($hd, $cert);

Получаю ошибку: Invalid algorithm specified. (0x80090008)

При этом в информации о сертификате у меня:

Signature Algorithm : GOST R 34.11-2012/34.10-2012 512 bit
Signature Hash Algorithm : GOST R 34.11-2012 512 bit

Однако если я в коде установлю 256: $hd->set_Algorithm(CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256);
То ошибки нету и подпись создается.

Правда, принимающая сторона жалуется на неверную подпись ) Куда можно посмотреть?
Offline Андрей *  
#40 Оставлено : 3 апреля 2020 г. 14:13:05(UTC)
Андрей *

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

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

Сказал «Спасибо»: 334 раз
Поблагодарили: 1310 раз в 1023 постах
Цитата:
$hd->set_Algorithm(CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512);

256 нужно указывать.

Цитата:

$hd->Hash("какой-то текст для подписи");


Указать DataEncoding CADESCOM_BASE64_TO_BINARY
Передать в Hash(base64(данные))
Получить правильный хеш.

Интерфейс ICPHashedData
Свойство ICPHashedData::DataEncoding

Цитата:

Данное свойство задает кодировку данных, передаваемых в метод Hash, и должно быть задано до того, как будет впервые вызван метод Hash.

По умолчанию свойство имеет значение CADESCOM_STRING_TO_UCS2LE.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
3 Страницы<123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.