Руслан Дзуцев |
|
Статус: Активный участник Группы: Участники Сказал(а) «Спасибо»: 4 раз |
добрый день, При установке Крипты происходит ошибка и появляется следующее окно с сообщением: Error: installation failed. LSB package may not be installed. Install LSB package and reinstall CryptoPro CSP. хотя установил пакет командой: |
|
|
Александр Лавник |
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 53 раз |
Автор: Руслан Дзуцев добрый день, При установке Крипты происходит ошибка и появляется следующее окно с сообщением: Error: installation failed. LSB package may not be installed. Install LSB package and reinstall CryptoPro CSP. хотя установил пакет командой: Здравствуйте. Попробуйте установить базовый набор пакетов КриптоПро CSP запуском скрипта install.sh из состава дистрибутива. |
Техническую поддержку оказываем тут |
|
|
|
Руслан Дзуцев |
|
Статус: Активный участник Группы: Участники Сказал(а) «Спасибо»: 4 раз |
Автор: Александр Лавник Автор: Руслан Дзуцев добрый день, При установке Крипты происходит ошибка и появляется следующее окно с сообщением: Error: installation failed. LSB package may not be installed. Install LSB package and reinstall CryptoPro CSP. хотя установил пакет командой: Здравствуйте. Попробуйте установить базовый набор пакетов КриптоПро CSP запуском скрипта install.sh из состава дистрибутива. эт просто в терминале ввести install.sh? |
|
|
Санчир Момолдаев |
|
Статус: Сотрудник Группы: Модератор, Участники Сказал(а) «Спасибо»: 83 раз |
Добрый день! |
Техническую поддержку оказываем тут |
|
|
|
Руслан Дзуцев |
|
Статус: Активный участник Группы: Участники Сказал(а) «Спасибо»: 4 раз |
Автор: Санчир Момолдаев уточните вашу ОС. Centos 7(XFCE) |
|
|
Руслан Дзуцев |
|
Статус: Активный участник Группы: Участники Сказал(а) «Спасибо»: 4 раз |
Автор: Санчир Момолдаев install.sh находится в составе дистрибутива linux-*.tar.gz у меня расширение .tgz |
|
|
Санчир Момолдаев |
|
Статус: Сотрудник Группы: Модератор, Участники Сказал(а) «Спасибо»: 83 раз |
простите ошибся с расширением. |
Техническую поддержку оказываем тут |
|
|
|
Руслан Дзуцев |
|
Статус: Активный участник Группы: Участники Сказал(а) «Спасибо»: 4 раз |
Автор: Санчир Момолдаев какой вывод install.sh? Вот: Deleting of the device [reader,rndm,media]: The device has been deleted successfully. Но когда после запускаю установку крипты все равно тоже сообщение!!! Отредактировано пользователем 3 июня 2020 г. 16:08:17(UTC) |
|
|
Санчир Момолдаев |
|
Статус: Сотрудник Группы: Модератор, Участники Сказал(а) «Спасибо»: 83 раз |
тогда попробуйте так |
Техническую поддержку оказываем тут |
|
|
|
Руслан Дзуцев |
|
Статус: Активный участник Группы: Участники Сказал(а) «Спасибо»: 4 раз |
Автор: Санчир Момолдаев тогда попробуйте так Добрый день, пишет что удалять нечего: sudo yum remove lsb: [ruslan.dzutsev@w0340213 ~]$ sudo yum remove lsb sudo yum install lsb-core-noarch: [ruslan.dzutsev@w0340213 ~]$ sudo yum install lsb-core-noarch |
|
|
Пользователи, просматривающие эту тему |
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Для работы нужна электронная подпись. Ключ — USB флешка. Для подписания документов нужна программа КриптоПро CSP 4.0 R3 — она есть в deb и rpm. В АУРЕ нет. Точно нет. Да искал. Нет не нашел.
Суть проблемы — скачал программу, формат linux-ia32_deb.tgz , собственно как я понял архив. Распаковываем, и видим кучу .deb пакетов и файл install.sh
Открываем install.sh и видим, то ли лицензию, то ли предупреждение и, как я понял (честно — не понял) инструкцию на исполнение установки, или как это называется
COMPAT_VERSION=«1.0.0-1»
VERSION=«4.0.*-5»
PACKAGE_NAMES=»»
FROM_REPO=0
# Exit codes.
SUCCESS=0
FAILURE=1
PACKAGES_NOT_AVAILABLE=2
parse_args() {
_enclosure=«kc1»
while! [ -z «$1» ]; do
case «$1» in
«kc1»)
;;
«kc2»)
_enclosure=«kc2»
;;
«—from-repo»)
FROM_REPO=1
;;
«-help»|»—help»)
show_help
exit «${SUCCESS}»
;;
*)
_additional_packages=»$*»
break
;;
esac
shift
done
PACKAGE_NAMES=«lsb-cprocsp-base
lsb-cprocsp-rdr lsb-cprocsp-${_enclosure} lsb-cprocsp-capilite cprocsp-curl
lsb-cprocsp-ca-certs
${_additional_packages}»
}
show_help() {
echo «
usage: ./install.sh [kc1|kc2] [package […]]
kc1: install kc1 packages (by default)
kc2: install kc2 packages
[package […]]: list of additional packages»
}
which_architecture() {
machine_architecture=»$(uname -m)»
case «${machine_architecture}» in
«x86_64»|«amd64»|«ppc64»|«ppc64le»)
bits_postfix=»-64″
;;
*)
bits_postfix=»»
;;
esac
case «${machine_architecture}» in
arm*)
is_arm=1
;;
*)
is_arm=0
;;
esac
}
check_if_debian_system() {
if [ -f /etc/debian_version ] ||
grep Ubuntu /etc/lsb-release > /dev/null 2>&1
then
is_debian_system=1
else
is_debian_system=0
fi
}
check_release_attributes() {
if ls ./lsb-cprocsp-base*.deb > /dev/null 2>&1; then
is_debian_release=1
else
is_debian_release=0
fi
if ls ./lsb-cprocsp-base*.rpm > /dev/null 2>&1; then
is_rpm_release=1
else
is_rpm_release=0
fi
if ls ./lsb-cprocsp-rdr-64* > /dev/null 2>&1; then
is_64_release=1
else
is_64_release=0
fi
}
# Use dpkg or alien on debian systems, otherwise use rpm.
set_inst_cmd() {
if [ «${is_debian_system}» -eq 1 ]; then
if [ «${is_debian_release}» -eq 1 ]; then
inst_cmd=«dpkg -i»
else
inst_cmd=«alien -kci»
fi
else
if [ «${is_rpm_release}» -eq 1 ]; then
inst_cmd=«rpm -i»
else
echo «Error: you are trying to install debian packages on not debian package system»
exit «${FAILURE}»
fi
fi
}
# The release variables are used to construct full names of packages.
set_release_variables() {
if [ «${is_debian_system}» -eq 1 ] &&
[ «${is_debian_release}» -eq 1 ]
then
first_delimeter=»_»
noarch=«all»
second_delimeter=»_»
extension=».deb»
else
first_delimeter=»-«
noarch=«noarch»
second_delimeter=».»
extension=».rpm»
fi
case «${machine_architecture}» in
# Enforce to install 64-bit packages on 64-bit system.
«x86_64»|«amd64»)
if [ «${is_debian_system}» -eq 1 ] &&
[ «${is_debian_release}» -eq 1 ]
then
arch=«amd64»
else
arch=«x86_64»
fi
;;
«ppc64»|«ppc64le»)
arch=»${machine_architecture}»
;;
arm*|«mips»)
arch=»${noarch}»
;;
*)
if [ «${is_debian_system}» -eq 1 ] &&
[ «${is_debian_release}» -eq 1 ]
then
arch=«i386»
elif ls ./*.i686.rpm > /dev/null 2>&1; then
arch=«i686»
else
arch=«i486»
fi
;;
esac
}
lsb_warning() {
echo «Warning: lsb-core or lsb-compat package not installed — installing cprocsp-compat-debian.
If you prefer to install system lsb-core or lsb-compat package then
* uninstall CryptoPro CSP
* install lsb-core or lsb-compat manually
* install CryptoPro CSP again
»
}
construct_compat_package() {
if [ -f /etc/cp-release ]; then
if grep Gaia /etc/cp-release > /dev/null 2>&1; then
_distr=«gaia»
else
_distr=«splat»
fi
elif [ -f /etc/altlinux-release ]; then
_distr=«altlinux${bits_postfix}»
elif [ -f /etc/os-rt-release ]; then
_distr=«osrt${bits_postfix}»
elif [ «${is_arm}» -eq 1 ]; then
_distr=«armhf»
elif [ «${is_debian_system}» -eq 1 ]; then
if dpkg -s lsb-core > /dev/null 2>&1 ||
dpkg -s lsb-compat > /dev/null 2>&1
then
compat_package=»»
return
else
lsb_warning
_distr=«debian»
fi
else
compat_package=»»
return
fi
compat_package=«cprocsp-compat-
${_distr}
${first_delimeter}
${COMPAT_VERSION}
${second_delimeter}
${noarch}
${extension}»
}
construct_other_packages() {
other_packages=»»
_absent=»»
for _name in ${PACKAGE_NAMES}; do
_package=»${_name}»
if [ «${is_64_release}» -eq 1 ]; then
_package=»${_package}${bits_postfix}»
fi
_package=»${_package}
${first_delimeter}
${VERSION}
${second_delimeter}
${arch}
${extension}»
# There are several packages which are NOT architecture-specific,
# e.g. lsb-cprocsp-base, lsb-cprocsp-ca-certs and devel-packages.
# If the architecture-specific package is not found, try to install
# the noarch package.
# shellcheck disable=SC2086
if! [ -f ${_package} ]; then
_package=»${_name}
${first_delimeter}
${VERSION}
${second_delimeter}
${noarch}
${extension}»
fi
# Even the noarch package wasn’t found.
# shellcheck disable=SC2086
if! [ -f ${_package} ]; then
_absent=»${_absent} ${_name}»
else
other_packages=»${other_packages} ${_package}»
fi
done
if! [ -z «${_absent}» ]; then
echo «Error: the following packages are not available in the current directory:»
echo «${_absent}» | xargs -n1 echo «*»
exit «${PACKAGES_NOT_AVAILABLE}»
fi
}
construct_list_of_packages() {
packages=»»
construct_compat_package
packages=»${packages} ${compat_package}»
# Other packages are the base packages and additional packages
# specified by command-line arguments.
construct_other_packages
packages=»${packages} ${other_packages}»
# Remove duplicate packages.
packages=»$(
echo «${packages}»
| awk ‘{for(i=1;i<=NF;i++)if(!a[$i]++)print $i}’ | xargs
)»
}
check_fail() {
echo «Error: installation failed. LSB package may not be installed.
Install LSB package and reinstall CryptoPro CSP. If it does not help, please
read installation documentation or contact the manufacturer: support@cryptopro.ru.»
exit «$1»
}
# Install packages one at a time before capilite, then batch install.
install_packages() {
while! [ -z «${packages}» ]; do
_head=»$(echo «${packages}» | awk ‘{print $1}’)»
_tail=»$(echo «${packages}» | awk ‘{for(i=2;i<=NF;i++)print $i}’ | xargs)»
echo «Installing ${_head}…» >&2
# shellcheck disable=SC2086
${inst_cmd} ${_head} >&2 || check_fail «$?»
if echo «${_head}» | grep capilite > /dev/null 2>&1 &&
! [ -z «${_tail}» ]
then
echo «Installing ${_tail}…» >&2
# shellcheck disable=SC2086
${inst_cmd} ${_tail} >&2 || check_fail «$?»
return
fi
packages=»${_tail}»
done
}
construct_list_of_packages_from_repository() {
_tmp_repo=»$(mktemp)»
# Если файл со списком пакетов в репозитории существует и единственный, то скопировать его во временный файл _tmp_repo.
# shellcheck disable=SC2144
if [ -f /var/lib/apt/lists/cryptopro.ru_debrepo_dists_*-unstable_main_binary-*_Packages* ]; then
cp /var/lib/apt/lists/cryptopro.ru_debrepo_dists_*-unstable_main_binary-*_Packages* «${_tmp_repo}»
fi
# Если lz-архив со списком пакетов в репозитории существует и единственный, то разархивировать его во временный файл _tmp_repo.
# shellcheck disable=SC2144
if [ -f /var/lib/apt/lists/cryptopro.ru_debrepo_dists_*-unstable_main_binary-*_Packages*.lz ]; then
lzip -d -c /var/lib/apt/lists/cryptopro.ru_debrepo_dists_*-unstable_main_binary-*_Packages*.lz > «${_tmp_repo}»
fi
packages=»»
_absent=»»
for _name in ${PACKAGE_NAMES}; do
_package=»${_name}${bits_postfix}»
if! grep ‘Package:’ «${_tmp_repo}» | grep «${_package}» > /dev/null 2>&1
then
_package=»${_name}»
fi
if! grep ‘Package:’ «${_tmp_repo}» | grep «${_package}» > /dev/null 2>&1
then
_absent=»${_absent} ${_name}»
else
packages=»${packages} ${_package}»
fi
done
rm -f «${_tmp_repo}»
if! [ -z «${_absent}» ]; then
echo «Error: the following packages are not available in the current repository:»
echo «${_absent}» | xargs -n1 echo «*»
exit «${PACKAGES_NOT_AVAILABLE}»
fi
# Remove duplicate packages.
packages=»$(
echo «${packages}»
| awk ‘{for(i=1;i<=NF;i++)if(!a[$i]++)print $i}’ | xargs
)»
}
main() {
if [ «$(id -u)» -ne 0 ]; then
echo «Error: this script must be run as root»
exit «${FAILURE}»
fi
cd «$(dirname «$0″)» || check_fail «$?»
parse_args «$@»
which_architecture
if [ «${FROM_REPO}» -eq 1 ]; then
construct_list_of_packages_from_repository
sh ./uninstall.sh >&2 || check_fail «$?»
# shellcheck disable=SC2086
apt-get —yes install ${packages} >&2 || check_fail «$?»
echo «CSP packages have been successfully installed from a repository»
exit «${SUCCESS}»
fi
check_if_debian_system
check_release_attributes
set_inst_cmd
set_release_variables
construct_list_of_packages
sh ./uninstall.sh >&2 || check_fail «$?»
install_packages
echo «CSP packages have been successfully installed»
exit «${SUCCESS}»
}
main «$@»
.
И собственно вопрос, как мне из всего этого собрать пакет для установки программы?
При попытке установить пакет lsb выходит сообщение такого рода (см. приложение), причем если попытаться установить lsb-desktop, то он будет просить другую зависимость, как решить эту проблему?
« Последнее редактирование: 13.12.2015 23:18:28 от SGx »
Записан
«Получить сведения» нажимали ?
Записан
Сноси Винду, переходи на Линукс !
Не обновлён идекс.
apt-get update
или
«Получить сведения»
Записан
Записан
В тексте (у меня картинки на телефоне отключены) что выводится при
apt-repo
apt-get update
apt-get install lsb
Записан
Андрей Черепанов (cas@)
apt-repo
rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/ x86_64 classic
rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/ noarch classic
apt-get update
Получено: 1 http://ftp.altlinux.org x86_64 release [915B]
Получено: 2 http://ftp.altlinux.org noarch release [709B]
Получено 1624B за 0s (7155B/s).
Найдено http://ftp.altlinux.org x86_64/classic pkglist
Найдено http://ftp.altlinux.org x86_64/classic release
Найдено http://ftp.altlinux.org noarch/classic pkglist
Найдено http://ftp.altlinux.org noarch/classic release
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
apt-get install lsb
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Некоторые пакеты установить невозможно. Это может означать, что Вы
потребовали невозможного, либо пользуетесь нестабильным репозиторием.
Часть необходимых пакетов либо ещё не создана, либо была удалена
из каталога 'Входящие'.
Так как для выполнения Вашего запроса достаточно одной операции, то
скорее всего этот пакет просто невозможно установить. Сообщите, пожалуйста,
об этом как о найденной ошибке в пакете.
Эти сведения могут помочь найти выход из ситуации:
Следующие пакеты имеют неудовлетворенные зависимости:
lsb: Требует: lsb-desktop (= 4.0)
E: Извините, `битые' пакеты
Записан
А у меня в системе он уже установлен
# apt-get install lsb
но у меня
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Последняя версия lsb уже установлена.
0 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 0 не будет обновлено.
# apt-repo
и свежеустановленный x86_64 simply с обновлениями по сегодняшний день.
rpm [p7] http://mirror.yandex.ru/altlinux/p7/branch/ x86_64 classic
rpm [p7] http://mirror.yandex.ru/altlinux/p7/branch/ x86_64-i586 classic
rpm [p7] http://mirror.yandex.ru/altlinux/p7/branch/ noarch classic
PS Память жрется по сравнению с i586 просто уйма, раза в два на глаз больше.
« Последнее редактирование: 13.12.2015 21:41:24 от sb »
Записан
У меня Сизиф, при установке Хрома требует этот пакет, но не в какую, а другие пакеты ставит.
Записан
apt-get install lsb-desktop
Записан
Андрей Черепанов (cas@)
apt-get install lsb-desktop
# apt-get install lsb-desktop
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Некоторые пакеты установить невозможно. Это может означать, что Вы
потребовали невозможного, либо пользуетесь нестабильным репозиторием.
Часть необходимых пакетов либо ещё не создана, либо была удалена
из каталога 'Входящие'.
Так как для выполнения Вашего запроса достаточно одной операции, то
скорее всего этот пакет просто невозможно установить. Сообщите, пожалуйста,
об этом как о найденной ошибке в пакете.
Эти сведения могут помочь найти выход из ситуации:
Следующие пакеты имеют неудовлетворенные зависимости:
lsb-desktop: Требует: libQtNetwork.so.4()(64bit)
E: Извините, `битые' пакеты
Записан
Что-то у вас «левое» стоит?
Записан
И что вам мешает установить libqt4-network?
Записан
А у меня в системе он уже установлен
В первых сборках 7.0.x не было, потом добавили вроде бы.
Записан
Сноси Винду, переходи на Линукс !
Проблема решилась таким способом: я обновил libqt4-core, при обновлении удалились пакеты которые мешали установке lsb. После этого пакет установился.
Записан
- Печать
Страницы: [1] Вниз
Тема: Не могу установить пакет lsb. [Решено] (Прочитано 1008 раз)
0 Пользователей и 1 Гость просматривают эту тему.
![Оффлайн](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E)
batareika_if
Здравствуйте!
Установка драйвера (Эпсон) требует предварительной установки пакета lsb.
Вот что у меня получается:
Буду признателен за подсказку.
« Последнее редактирование: 18 Марта 2020, 11:48:25 от zg_nico »
![Онлайн](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E)
andytux
Буду признателен за подсказку.
Она у вас перед глазами:
E: Невозможно исправить ошибки: у вас зафиксированы сломанные пакеты.
Пока не почините, не сможете установить ничего. Такое часто случается когда ставят программы из левых репозиториев. Левые, в данном случае, это все, кроме стандартных репозиториев данной версии *бунту.
Как лечить, поищите на форуме. Пишется едва-ли не каждый день. Примерно так:
apt install -f
![Оффлайн](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E)
batareika_if
Попытки «ремонта» особым успехом не увенчались, а вот переустановка системы решила проблему полностью, принтер заработал.
- Печать
Страницы: [1] Вверх
-
Yamah
- Сообщения: 1373
- Зарегистрирован: 04 май 2012, 06:30
- Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10 - Контактная информация:
УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Потихоньку назревает вопрос о приобретении УЭК.
Как я понял, для работы с картой на ПК должен стоять плагин для броузера, который на офф-сайте под Убунту собран (deb-пакет) и считывать смарт-карт. Теперь интересуюсь следующими вопросами:
Какой считыватель смарт-карт будет работать под Росой (64-хбитной) (если еще и под Android то вообще была бы сказка)?
Есть ли возможность собрать необходимый для работы плагин в RPM?
-
akdengi
- Сообщения: 1381
- Зарегистрирован: 12 сен 2011, 13:44
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
akdengi » 24 дек 2013, 19:14
Зависит от исходников — если их нету, то возможно поможет раздеребанивание deb пакета. Хотя опять же тут проблема в версиях и линковке.
-
tverskoy
- Сообщения: 1145
- Зарегистрирован: 12 сен 2011, 13:30
- Operating system: Rosa 2016.1 Fresh
- Откуда: Тверь
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
tverskoy » 25 дек 2013, 13:55
Если сильно надо, то для установки deb можно использовать alien
-
ans
- Сообщения: 2719
- Зарегистрирован: 11 сен 2011, 08:42
- Operating system: Rosa
- Откуда: Ekaterinburg
- Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
ans » 25 дек 2013, 14:20
CAPICOM бы ещё обойти…
Сбербанк вроде контора солидная, а работать с электронной подписью через windows заставляет…
Браузер для работы с торговыми площадками — только Internet Explorer.
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 25 дек 2013, 19:24
ans писал(а):CAPICOM бы ещё обойти…
Сбербанк вроде контора солидная, а работать с электронной подписью через windows заставляет…
Браузер для работы с торговыми площадками — только Internet Explorer.
Wine, Crossover?
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
ans
- Сообщения: 2719
- Зарегистрирован: 11 сен 2011, 08:42
- Operating system: Rosa
- Откуда: Ekaterinburg
- Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
ans » 25 дек 2013, 20:46
Галахов Роман писал(а):
Wine, Crossover?
Если бы, …
А то сама техподержка ихняя говорит — только из win или виртуалбокс с win
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 25 дек 2013, 21:02
ans писал(а):
Галахов Роман писал(а):
Wine, Crossover?Если бы, …
А то сама техподержка ихняя говорит — только из win или виртуалбокс с win
А сами они пробовали Wine, Crossover?
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
ans
- Сообщения: 2719
- Зарегистрирован: 11 сен 2011, 08:42
- Operating system: Rosa
- Откуда: Ekaterinburg
- Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
ans » 26 дек 2013, 10:29
Галахов Роман писал(а):
А сами они пробовали Wine, Crossover?
Смысла нет. Работает только с IE MS Windows.
CAPICOM — снятый с поддержки элемент управления ActiveX, созданный Microsoft с целью помочь разработчикам приложений в получении доступа к услугам, которые позволяют обеспечить безопасность для приложений на основе криптографических функций http://ru.wikipedia.org/wiki/CAPICOM
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 26 дек 2013, 19:37
А если IE в wine/crossover?
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
Yamah
- Сообщения: 1373
- Зарегистрирован: 04 май 2012, 06:30
- Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10 - Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Yamah » 27 дек 2013, 08:39
akdengi писал(а):Зависит от исходников — если их нету, то возможно поможет раздеребанивание deb пакета. Хотя опять же тут проблема в версиях и линковке.
Это понятно.
Но вещь со временем может стать реально полезной.
tverskoy писал(а):Если сильно надо, то для установки deb можно использовать alien
Поставить deb не проблема.
Проблема с установкой его из репозитория.
ans писал(а):CAPICOM бы ещё обойти…
Для работы с электронным правительством вроде как и Firefox в Ubuntu подходит.
ans писал(а):Сбербанк вроде контора солидная, а работать с электронной подписью через windows заставляет…
![]()
Ну коль смогли только реализовать запрос ключа через реестр…
ans писал(а):Браузер для работы с торговыми площадками — только Internet Explorer.
Та же причина, что и со Сбером.
-
akdengi
- Сообщения: 1381
- Зарегистрирован: 12 сен 2011, 13:44
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
akdengi » 28 дек 2013, 18:42
В репы мы можем ложить только то, что можно пересобрать. Как тут пересобрать то?
-
Yamah
- Сообщения: 1373
- Зарегистрирован: 04 май 2012, 06:30
- Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10 - Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Yamah » 30 дек 2013, 12:59
akdengi писал(а):В репы мы можем ложить только то, что можно пересобрать. Как тут пересобрать то?
Хм. Я думал, что и тут так же все как и со стимом…
PS: С Наступающим.
-
ДроноваЮ
- Сообщения: 2636
- Зарегистрирован: 01 июн 2011, 13:11
- Operating system: Ubuntu/ROSA
- Откуда: Москва
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
ДроноваЮ » 30 дек 2013, 16:40
Yamah писал(а):Хм. Я думал, что и тут так же все как и со стимом…
Пристала к Саше по этому вопросу, и он сказал, можно по идее сделать прелоад, распаковку и ресборку как в skype, но тут требуется и железка ещё, то есть без считывателя УЭК сделать нереально.
С наступающим всех последовательных пользователей РОСЫ!
-
PastorDi
- Сообщения: 2743
- Зарегистрирован: 25 авг 2011, 12:34
- Operating system: IBM DOS, OS/2
- Откуда: Санкт-Петербург
- Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
PastorDi » 07 янв 2014, 17:54
Мне кажется нам надо Вот это прикручивать. Судя по описанию он поддерживает CAPICOM. И после получения лицензии можно установить на линукс.
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 07 янв 2014, 20:30
PastorDi писал(а):Мне кажется нам надо Вот это прикручивать. Судя по описанию он поддерживает CAPICOM. И после получения лицензии можно установить на линукс.
А если и банки заставят перейти на это, то банк-клиент для Linux станет реальностью — а это значительный сектор бытовой криптозащиты.
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
Yamah
- Сообщения: 1373
- Зарегистрирован: 04 май 2012, 06:30
- Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10 - Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Yamah » 22 янв 2014, 16:23
Кое-что уже проясняется:
1. CSUserPlugin.deb хоть с трудом, но конвертируется в RPM.
2. Но он нифига не работает в 64-хюитной системе. Буду пробовать в 32-хбитной запустить.
-
akdengi
- Сообщения: 1381
- Зарегистрирован: 12 сен 2011, 13:44
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
akdengi » 22 янв 2014, 18:20
Скорее всего он 32-битный и надо какие то либы 32-битные доустановить.
-
Yamah
- Сообщения: 1373
- Зарегистрирован: 04 май 2012, 06:30
- Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10 - Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Yamah » 22 янв 2014, 20:21
На форуме оффсайта читал, что работает только под 32-хбитным файерфоксом.
Попробую на нетбук поставить. Как раз и выясню, что он из 32-хбитных библиотек тянет.
UPD.
В 32-хбитной пакет сконвертировался, установился:
Код: Выделить всё
[root@netbook ~]# alien -v -r CSuserPlugin.deb --script
dpkg-deb --info 'CSuserPlugin.deb' control 2>/dev/null
dpkg-deb --info 'CSuserPlugin.deb' control 2>/dev/null
dpkg-deb --info 'CSuserPlugin.deb' conffiles 2>/dev/null
dpkg-deb --fsys-tarfile 'CSuserPlugin.deb' | tar tf -
dpkg-deb --info 'CSuserPlugin.deb' postinst 2>/dev/null
dpkg-deb --info 'CSuserPlugin.deb' postrm 2>/dev/null
dpkg-deb --info 'CSuserPlugin.deb' preinst 2>/dev/null
dpkg-deb --info 'CSuserPlugin.deb' prerm 2>/dev/null
mkdir csuser-1.0.13.01
chmod 755 csuser-1.0.13.01
dpkg-deb -x CSuserPlugin.deb csuser-1.0.13.01
rpm --showrc
cd csuser-1.0.13.01; rpmbuild --buildroot='/root/csuser-1.0.13.01' -bb --target i386 'csuser-1.0.13.01-2.spec' 2>&1
Package build failed. Here's the log of the command (cd csuser-1.0.13.01; rpmbuild --buildroot='/root/csuser-1.0.13.01' -bb --target i386 'csuser-1.0.13.01-2.spec'):
Платформы для сборки: i386
Обрабатываются файлы: csuser-1.0.13.01-2.i586
/usr/lib/libjcPKCS11.so.1: Нет такого файла или каталога
Removing dependency on self: R libjcPKCS11.so.1
Provides: libacsccid.so.0 libjcPKCS11.so.1 libjcPKCS11x.so.1 npCSuser.so
Requires: libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.1.3) libc.so.6(GLIBC_2.4) libdl.so.2 libdl.so.2(GLIBC_2.0) libdl.so.2(GLIBC_2.1) libgcc_s.so.1 libgcc_s.so.1(GCC_3.0) libgcc_s.so.1(GLIBC_2.0) libm.so.6 libm.so.6(GLIBC_2.0) libpcsclite.so.1 libpthread.so.0 libpthread.so.0(GLIBC_2.0) libpthread.so.0(GLIBC_2.1) libpthread.so.0(GLIBC_2.3.2) libstdc++.so.6 libstdc++.so.6(CXXABI_1.3) libstdc++.so.6(GLIBCXX_3.4) libstdc++.so.6(GLIBCXX_3.4.11) libstdc++.so.6(GLIBCXX_3.4.15) libstdc++.so.6(GLIBCXX_3.4.5) libstdc++.so.6(GLIBCXX_3.4.9)
Проверка на неупакованный(е) файл(ы): /usr/lib/rpm/check-files /root/csuser-1.0.13.01
warning: Обнаружен(ы) установленный(е) (но не упакованный(е)) файл(ы):
/csuser-1.0.13.01-2.spec
Записан: ../csuser-1.0.13.01-2.i586.rpm
Executing "/usr/bin/rpmlint -T -f /root/rpmbuild/SOURCES/csuser.rpmlintrc ../csuser-1.0.13.01-2.i586.rpm":
csuser.i586: E: unstripped-binary-or-object (Badness: 50) /usr/lib/mozilla/plugins/npCSuser.so
csuser.i586: E: summary-ended-with-dot (Badness: 50) C User version of plugin for Goverment service portal.
csuser.i586: E: standard-dir-owned-by-package (Badness: 50) /usr/lib
csuser.i586: E: standard-dir-owned-by-package (Badness: 50) /usr
csuser.i586: E: standard-dir-owned-by-package (Badness: 50) /
csuser.i586: E: standard-dir-owned-by-package (Badness: 50) /lib
csuser.i586: E: standard-dir-owned-by-package (Badness: 50) /usr/share
csuser.i586: E: standard-dir-owned-by-package (Badness: 50) /usr/share/doc
csuser.i586: W: spurious-executable-perm /usr/share/doc/libacsccid1/copyright
csuser.i586: W: spurious-executable-perm /usr/share/doc/libacsccid1/changelog.Debian.gz
csuser.i586: W: spurious-executable-perm /usr/share/doc/csuser/copyright
csuser.i586: W: spurious-executable-perm /usr/share/doc/libacsccid1/README.gz
csuser.i586: W: spelling-error Summary(en_US) plugin -> plug in, plug-in, plugging
csuser.i586: W: script-without-shebang /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Info.plist
csuser.i586: W: script-without-shebang /lib/udev/rules.d/92-libacsccid1.rules
csuser.i586: E: non-standard-group (Badness: 50) Converted/lib
csuser.i586: E: non-standard-executable-perm (Badness: 1) /usr/lib/libjcPKCS11x.so.1.2.6 0775
csuser.i586: E: non-standard-executable-perm (Badness: 1) /usr/lib/libjcPKCS11.so.1.2.6 0775
csuser.i586: W: non-coherent-filename csuser-1.0.13.01-2.i586.rpm csuser-1.0.13.01-2-rosa2012.1.i586.rpm
csuser.i586: W: no-url-tag
csuser.i586: W: no-ldconfig-symlink /usr/lib/libjcPKCS11x.so.1.2.6
csuser.i586: W: no-ldconfig-symlink /usr/lib/libjcPKCS11.so.1.2.6
csuser.i586: W: invalid-license see /usr/share/doc/csuser/copyright
csuser.i586: E: description-line-too-long (Badness: 50) C This package contains a cross-browser plug-in used by the portal of the Goverment service portal for use with carriers of digital signatures. PC/SC driver for ACS USB CCID smart card readers is included.
csuser.i586: W: dangerous-command-in-%preun rm
csuser.i586: W: dangerous-command-in-%pre rm
csuser.i586: W: dangerous-command-in-%post mv
1 packages and 0 specfiles checked; 12 errors, 15 warnings.
(none): E: badness 502 exceeds threshold 49.
error: Package check "/usr/bin/rpmlint -T -f /root/rpmbuild/SOURCES/csuser.rpmlintrc ../csuser-1.0.13.01-2.i586.rpm" failed.
Ошибки сборки пакетов:
Обнаружен(ы) установленный(е) (но не упакованный(е)) файл(ы):
/csuser-1.0.13.01-2.spec
Package check "/usr/bin/rpmlint -T -f /root/rpmbuild/SOURCES/csuser.rpmlintrc ../csuser-1.0.13.01-2.i586.rpm" failed.
find csuser-1.0.13.01 -type d -exec chmod 755 {} ;
rm -rf csuser-1.0.13.01
[root@netbook ~]# urpmi csuser-1.0.13.01-2.i586.rpm
Пакеты glibc-2.15-8-rosa2012.1.i586, libgcc1-4.7.3_2012.10-3.1-rosa2012.1.i586, libpcsclite1-1.8.6-1-rosa2012.1.i586, libstdc++6-4.7.3_2012.10-3.1-rosa2012.1.i586 уже установлен
устанавливается csuser-1.0.13.01-2.i586.rpm
Подготовка... #############################################################################
1/1: csuser
Но в списках плагинов его так и нет.
Для работы ему похоже еще нужен рутокен
Для работы электронных идентификаторов Рутокен в deb-based системе должны быть установлены: библиотека libccid не ниже 1.3.11, пакеты pcscd и libpcsclite1.
Для работы в RPM-based системе должны быть установлены: пакеты ccid, pcscd и pcsc-lite.
Тут есть инструкция для настройки Firefox-а для работы с CSUserPlugin.
Пока проверить не могу — нет ни карты, ни картридера.
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 09 май 2014, 00:45
Pulfer писал(а):
В принципе, локально я пакет собрал, но когда собрался тестировать, то увидел вот что:Плагин вроде как работает, но «Для использования УЭК необходимо загрузить и установить криптопровайдер КриптоПро УЭК CSP». Версия которого только под Windows!!! Я в шоке. Это получается, что плагин есть под Linux и MacOS, а самого пакета Крипто-про Уэк CSP так и нет под них.
…
Для УЭК нужна спец-версия на основе 3.6.1, которая есть только под Windows. Версию под Линукс нужно у тех.поддержки выпрашивать, насколько я понял. Так что забил…http://forum.altlinux.org/index.php/top … #msg224791
Так что не понятно, что с этим делать.
Отписался на форум Криптопро http://www.cryptopro.ru/forum2/default. … #post48599
Написал обращение по форме «Обратная связь» на сайте https://www.roi.ru/
Про версию 3.6.1 пока нашел, только подобное:
https://support.cryptopro.ru/index.php? … u—rutoken
http://www.cryptopro.ru/forum2/default. … #post46117
Но не знаю это именно про УЭК версию или нет.
Пока буду ждать ответов на посланные сообщения (на форум и сайт). Как ответят отпишусь.
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 13 май 2014, 20:20
Смог раскачать ситуацию. Мне Ответили
Прикладываю присланный файл.
Pulfer посмотрите, пожалуйста, может это именно то недостающее в цепочке звено, чтобы получать госуслуги и в Linux? Если у вас не хватает времени, думаю можно обратиться за помощью и на Linuxforum/Unixforum. Наверняка захотят и в свои дистрибутивы добавить эту поддержку. Если все заработает нормально, думаю, сможем договориться с Криптопро об умеренных тарифах или вообще бесплатности пользования, за тестирование с нашей стороны.
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 15 май 2014, 23:14
Кто нибудь уже имеет карту УЭК и картридер к ней? Нужно проверить работу программы криптопро и плагина для браузера (сайт госуслуги).
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
ans
- Сообщения: 2719
- Зарегистрирован: 11 сен 2011, 08:42
- Operating system: Rosa
- Откуда: Ekaterinburg
- Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
ans » 20 май 2014, 06:30
Галахов Роман писал(а):
PastorDi писал(а):Мне кажется нам надо Вот это прикручивать. Судя по описанию он поддерживает CAPICOM. И после получения лицензии можно установить на линукс.
А если и банки заставят перейти на это, то банк-клиент для Linux станет реальностью — а это значительный сектор бытовой криптозащиты.
Как их заставить, если всё настроено под windows?
Для примера почитать инструкции по настройке электронной торговой площадки Сбербанка (российского сбербанка!!!!):
то только Windows, без вариантов.
Представляете — это всё за деньги, и уже куплено для работы в windows.
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 20 май 2014, 19:40
ans писал(а):
то только Windows, без вариантов.Представляете — это всё за деньги, и уже куплено для работы в windows.
Я сей час мучаю Linux плагин к сайту госуслуг и электронную подпись. Почти доделал. По УЭК — мне дали предварительную версию программы (в моем предыдущем посте), но проверить не могу — карты и картридера пока нет.
Но думаю и тут можно сделать, так что не так страшна проблема.
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
antichrist
- Сообщения: 80
- Зарегистрирован: 22 авг 2012, 11:26
- Operating system: Ubuntu 12.04, Роса Desctop 2012
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
antichrist » 21 май 2014, 04:20
Галахов Роман писал(а):
ans писал(а):
то только Windows, без вариантов.Представляете — это всё за деньги, и уже куплено для работы в windows.
Я сей час мучаю Linux плагин к сайту госуслуг и электронную подпись. Почти доделал. По УЭК — мне дали предварительную версию программы (в моем предыдущем посте), но проверить не могу — карты и картридера пока нет.
Но думаю и тут можно сделать, так что не так страшна проблема.
Ну как успехи? Хотел тоже поковырять все руки не доходят. Интересует работа с сайтом госзакупки и аст-сбербанк. Иногда девушка берет работу на дом, приходится для этого держать винду в виртуалке.
-
Yamah
- Сообщения: 1373
- Зарегистрирован: 04 май 2012, 06:30
- Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10 - Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Yamah » 21 май 2014, 05:57
Я сейчас жду картридер (карту уже получил).
В городе фиг найдешь.
-
ans
- Сообщения: 2719
- Зарегистрирован: 11 сен 2011, 08:42
- Operating system: Rosa
- Откуда: Ekaterinburg
- Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
ans » 21 май 2014, 06:38
antichrist писал(а): аст-сбербанк
Я пробовал, но windows пока победил без вариантов.
-
antichrist
- Сообщения: 80
- Зарегистрирован: 22 авг 2012, 11:26
- Operating system: Ubuntu 12.04, Роса Desctop 2012
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
antichrist » 21 май 2014, 07:57
ans писал(а):
antichrist писал(а): аст-сбербанк
Я пробовал, но windows пока победил без вариантов.
Печаль =(…
-
ans
- Сообщения: 2719
- Зарегистрирован: 11 сен 2011, 08:42
- Operating system: Rosa
- Откуда: Ekaterinburg
- Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
ans » 21 май 2014, 08:58
antichrist писал(а):
Печаль =(…
остаётся надеяться, что с последними событиями (санкции США) начнут делать сервис и для линукс.
Например, сделать как прагматичные соседи «Китай официально запретил использовать Windows 8 на всех правительственных компьютерах. Информационное агентство Xinhua, один из медиарупоров Китая, сообщило, что этот шаг был предпринят для того, чтобы повысить уровень госбезопасности.» http://apparatmag.com/news/china-bans-windows-8/
И даже есть такое: «Представитель правительства упомянул Россию как одну из стран, в которых уже начался переход на Linux.»
http://it.tut.by/398848
Типа мы образец.
Последний раз редактировалось ans 21 май 2014, 09:10, всего редактировалось 1 раз.
-
antichrist
- Сообщения: 80
- Зарегистрирован: 22 авг 2012, 11:26
- Operating system: Ubuntu 12.04, Роса Desctop 2012
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
antichrist » 21 май 2014, 09:09
ans писал(а):
antichrist писал(а):
Печаль =(…остаётся надеяться, что с последними событиями (санкции США) начнут делать сервис и для линукс.
Например, сделать как прагматичные соседи «Китай официально запретил использовать Windows 8 на всех правительственных компьютерах. Информационное агентство Xinhua, один из медиарупоров Китая, сообщило, что этот шаг был предпринят для того, чтобы повысить уровень госбезопасности.» http://apparatmag.com/news/china-bans-windows-8/И даже есть такое: «Представитель правительства упомянул Россию как одну из стран, в которых уже начался переход на Linux.»
![]()
http://it.tut.by/398848
Как раз все эти дот неты и капикомы тормозят развитие it области в гос. секторе
-
ans
- Сообщения: 2719
- Зарегистрирован: 11 сен 2011, 08:42
- Operating system: Rosa
- Откуда: Ekaterinburg
- Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
ans » 21 май 2014, 09:14
antichrist писал(а):
Как раз все эти дот неты и капикомы тормозят развитие it области в гос. секторе
Слишком много пилили под Windows, и не думали о последствиях. А MS за это доплачивал(скидки делал).
-
antichrist
- Сообщения: 80
- Зарегистрирован: 22 авг 2012, 11:26
- Operating system: Ubuntu 12.04, Роса Desctop 2012
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
antichrist » 21 май 2014, 09:33
ans писал(а):
antichrist писал(а):
Как раз все эти дот неты и капикомы тормозят развитие it области в гос. сектореСлишком много пилили под Windows, и не думали о последствиях. А MS за это доплачивал(скидки делал).
Я достаточно поработал в гос. структурах, там даже некоторый софт под вин 7 не работает, не говоря про линукс =). Закупают лицензию 7ки с даунгрейдом до хр.
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 21 май 2014, 23:51
antichrist писал(а):
Ну как успехи? Хотел тоже поковырять все руки не доходят. Интересует работа с сайтом госзакупки и аст-сбербанк. Иногда девушка берет работу на дом, приходится для этого держать винду в виртуалке.
По последней переписке с техподдержкой выяснилось, что нужен LSB 3.2, 4.0, а у нас или 2 или 4.1
Плагины Pulfer пересобрал x86_64 http://abf-downloads.rosalinux.ru/impor … n/release/ i586 http://rghost.ru/55151001
Сам пока остановился на этом:
Используемые браузеры ROSA — firefox 28, XP ie8.
1) Зашел на сайт (вход в личный кабинет)
2) Вставил ключ в usb
3) Нажал «По электронной подписи»
Вылезло окно ввода pin кода и тут же идет перенаправление на страницу с плагинами
4) Установил плагин
5) Перезагрузил браузер
6) Зашел на сайт (вход в личный кабинет)
7) Вставил ключ в usb
Нажал «По электронной подписи»
9) Нажимаю «войти»
Получаю:
При этом про pin код ничего не выводится, хотя в памятке к ключу указан pin по умолчанию и, что его надо сменить. Получается его надо вводить при каждом входе. А страницы ввода pin — нет. Может по этому и не находит сертификат?
На данный момент жду решения вопроса с LSB.
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 22 май 2014, 09:48
В заявлении ALT идет речь о
В результате тестирования было подтверждено, что обновленная версия сертифицированного ФСТЭК дистрибутива Альт Линукс СПТ 6.0 полностью совместима с КриптоПро CSP 3.6 R2, сертифицированным ФСБ.
Который стоит дорого, кто знает может и наши спец. версии совместимы — только вы купили бы их за предложенную цену?
А если читать их форум http://forum.altlinux.org/index.php/top … #msg224791 ?
Я предварительную версию выпросил http://forum.rosalab.ru/posting.php?mod … 10#pr27549
Установка:
Так. Чистая, только, что установленная Rosa Fresh R2 LXDE, обновленная до последних обновлений:
1-я попыткаКод: Выделить всё
[root@r-VirtualBox uec_linux_x86]# ./install_uec.sh Installing lsb-cprocsp-base-3.9.0-4.noarch.rpm... error: Failed dependencies: lsb >= 3.0 нужен для lsb-cprocsp-base-3.9.0-4.noarch Installation failed. LSB package may not be installed. Install LSB package and reinstall CryptoPro CSP. If it does not help, please read installation documentation or contact the manufacturer: support@cryptopro.ru.
Установил LSB 4.1 (стояла 2(даже после обновления)
2-я попыткаКод: Выделить всё
root@r-VirtualBox uec_linux_x86]# sh install_uec.sh Installing lsb-cprocsp-base-3.9.0-4.noarch.rpm... Installing lsb-cprocsp-rdr... Adding new reader: Nick name: FLASH Name device: FLASH Succeeded, code:0x0 Installing lsb-cprocsp-capilite... Installing lsb-cprocsp-kc1... Installing lsb-cprocsp-fkc... Installing cprocsp-rdr-pcsc... Installing cprocsp-rdr-uec... Certmgr 1.0 (c) "CryptoPro", 2007-2010. program for managing certificates, CRLs and stores Install: ============================================================================= 1------- Issuer : OGRN=1037700085444, INN=007717107991, STREET="ул. Сущёвский вал, д. 16, стр. 5", E=uecard@cryptopro.ru, C=RU, S=г. Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ УЭК Subject : OGRN=1037700085444, INN=007717107991, STREET="ул. Сущёвский вал, д. 16, стр. 5", E=uecard@cryptopro.ru, C=RU, S=г. Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ УЭК Serial : 0x072DD2AE7A6BB7A443F4F06852F404AA SHA1 Hash : 0xfedc83c35fa928a8bdcf73b56eebae8ae19f0bbf Not valid before : 16/11/2012 08:26:11 UTC Not valid after : 16/11/2027 08:35:29 UTC PrivateKey Link : No ============================================================================= [ErrorCode: 0x00000000] Certmgr 1.0 (c) "CryptoPro", 2007-2010. program for managing certificates, CRLs and stores Install: ============================================================================= 1------- Issuer : OGRN=1037700085444, INN=007717107991, STREET=ул. Сущёвский вал д. 18, E=uecard@cryptopro.ru, C=RU, S=г. Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ УЭК Subject : OGRN=1037700085444, INN=007717107991, STREET=ул. Сущёвский вал д. 18, E=uecard@cryptopro.ru, C=RU, S=г. Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ УЭК Serial : 0x1B3260A7B17EABA543A80449A1D3D77F SHA1 Hash : 0xb9ef4f166257a1a986cbfae17e01e3881dae6279 Not valid before : 30/01/2014 14:38:36 UTC Not valid after : 29/01/2029 14:47:54 UTC PrivateKey Link : No ============================================================================= [ErrorCode: 0x00000000]
Только, что за ошибка [ErrorCode: 0x00000000] — я не знаю. Может картридера не видит?
Задействованные папки: (файлов очень много даю папки)
/ect/init.d/cprocsp
/ect/opt/cprocsp
/ect/profile.d/cprocsp.sh
/opt/cprocsp
/var/opt/cprocsp
Но получить карту пока не могу.
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
Aesculapius
- Сообщения: 279
- Зарегистрирован: 28 апр 2013, 07:24
- Operating system: ROSA.Desktop.Fresh.2012.x86_64
- Откуда: Оттуда/From there
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Aesculapius » 22 май 2014, 10:24
Т.е. Вам нужен LSB 3.2 или 4.0?
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 22 май 2014, 10:26
Aesculapius писал(а):Т.е. Вам нужен LSB 3.2 или 4.0?
Получается да.
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
Aesculapius
- Сообщения: 279
- Зарегистрирован: 28 апр 2013, 07:24
- Operating system: ROSA.Desktop.Fresh.2012.x86_64
- Откуда: Оттуда/From there
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Aesculapius » 22 май 2014, 10:37
Галахов Роман писал(а):
Aesculapius писал(а):Т.е. Вам нужен LSB 3.2 или 4.0?
Получается да.
Может здесь поискать. Ещё здесь. Не знаю, то или не то.
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 22 май 2014, 11:00
Aesculapius писал(а):
Может здесь поискать. Ещё здесь. Не знаю, то или не то.
Увы там только testkit а не релиз. Возможно в Марафоне есть, но как от туда достать + зависимости нужна пересборка под Fresh.
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
Aesculapius
- Сообщения: 279
- Зарегистрирован: 28 апр 2013, 07:24
- Operating system: ROSA.Desktop.Fresh.2012.x86_64
- Откуда: Оттуда/From there
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Aesculapius » 22 май 2014, 11:12
Прошу прощения за назойливость. Мне стало интересно про эту УЭК. Я так понял помимо УЭК требуется ещё считыватель смарт-карт и к нему прилагается драйвер, даже под Линукс есть.
-
Aesculapius
- Сообщения: 279
- Зарегистрирован: 28 апр 2013, 07:24
- Operating system: ROSA.Desktop.Fresh.2012.x86_64
- Откуда: Оттуда/From there
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Aesculapius » 22 май 2014, 11:17
Моя последняя попытка Вам помочь. Если ещё вот тут пробежаться.
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 22 май 2014, 15:15
Aesculapius писал(а):Моя последняя попытка Вам помочь. Если ещё вот тут пробежаться.
Не я в такую даль не полезу.
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
Yamah
- Сообщения: 1373
- Зарегистрирован: 04 май 2012, 06:30
- Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10 - Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Yamah » 20 янв 2015, 20:54
Ой, блин! Что-то я не могу разобраться с настройкой КриптоПРО для УЭК.
Использовал инструкцию с форума AltLinux. Поставил пакеты, а контейнер не создается.
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 21 янв 2015, 07:36
Yamah писал(а):Ой, блин! Что-то я не могу разобраться с настройкой КриптоПРО для УЭК.
Использовал инструкцию с форума AltLinux. Поставил пакеты, а контейнер не создается.
Fresh? Может тоже, что и у меня было:
По последней переписке с техподдержкой выяснилось, что нужен LSB 3.2, 4.0, а у нас или 2 или 4.1
Но я ставил на реальную систему и в дебри других ОС лезть не захотел.
А так как спец. версии сделаны на основе Марафона — в нем не должно быть проблем.
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
Yamah
- Сообщения: 1373
- Зарегистрирован: 04 май 2012, 06:30
- Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10 - Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Yamah » 21 янв 2015, 16:40
Пока метод «сделать тоже самое в совсем оффтопике» выдал результат, что на карте просто нет контейнера с ЭЦП. Почему и как надо разбираться.
-
Yamah
- Сообщения: 1373
- Зарегистрирован: 04 май 2012, 06:30
- Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10 - Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Yamah » 02 фев 2015, 13:59
Обновляю результаты по своему эксперименту.
Картридер система видит. Плагин криптопро в броузере работает.
Но сама криптопро не создает контейнеры с ключом, в результате карту УЭК система не видит.
-
Yamah
- Сообщения: 1373
- Зарегистрирован: 04 май 2012, 06:30
- Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10 - Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Yamah » 06 фев 2015, 07:14
Таки добился того, что бы УЖК читалась плагином броузера для работы с КриптоПРО (Спасибо сообществам AltLinux и КриптоПРО). Но подписать им сообщение на тестовой странице не смог.
Хотя с консоли подписать файл смог. (Похоже нужно писать гую для этого.)
А на портале Госуслуг при попытке зайти с УЭК меня отфутболивает с заявлением, что действующих сертификатов у меня не найдено. написал им в ТП.
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 06 фев 2015, 18:59
Yamah писал(а):
А на портале Госуслуг при попытке зайти с УЭК меня отфутболивает с заявлением, что действующих сертификатов у меня не найдено. написал им в ТП.
Я тоже остановился на этом (сертификат до мая 2015).
И писал им об этом
Вот, что ответили
Это был май 2014 го. Я так и не смог найти нужные LSB
По последней переписке с техподдержкой выяснилось, что нужен LSB 3.2, 4.0, а у нас или 2 или 4.1
Скорее всего и вас на этом остановят. Думаю, что без решения вопроса по LSB — ошибка не уйдет.
Если сможете запустить ключ на госуслугах, опишите как, мне этот вопрос тоже интересен (каждый раз вводить снилс и пароль нехочется ).
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
Yamah
- Сообщения: 1373
- Зарегистрирован: 04 май 2012, 06:30
- Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10 - Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Yamah » 07 фев 2015, 20:38
Код: Выделить всё
lsb_release -a
LSB Version: core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:[b]core-4.0-amd64[/b]:[b]core-4.0-noarch[/b]:core-4.1-amd64:core-4.1-noarch:core-5.0-amd64:core-5.0-noarch:cxx-3.1-amd64:cxx-3.1-noarch:cxx-3.2-amd64:cxx-3.2-noarch:graphics-3.1-amd64:graphics-3.1-noarch:graphics-3.2-amd64:graphics-3.2-noarch:lsb-2.0-amd64:lsb-2.0-noarch:lsb-3.0-amd64:lsb-3.0-noarch:lsb-3.1-amd64:lsb-3.1-noarch:lsb-3.2-amd64:lsb-3.2-noarch:[b]lsb-4.0-amd64[/b]:lsb-4.0-noarch:lsb-4.1-amd64:lsb-4.1-noarch:lsb-5.0-amd64:lsb-5.0-noarch
Distributor ID: RosaDesktopFresh
Description: ROSA Desktop Fresh R5
Release: 2014.1
Codename: belka
Что им еще нужно?
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 07 фев 2015, 23:37
Yamah писал(а):
Код: Выделить всё
lsb_release -a LSB Version: core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:[b]core-4.0-amd64[/b]:[b]core-4.0-noarch[/b]:core-4.1-amd64:core-4.1-noarch:core-5.0-amd64:core-5.0-noarch:cxx-3.1-amd64:cxx-3.1-noarch:cxx-3.2-amd64:cxx-3.2-noarch:graphics-3.1-amd64:graphics-3.1-noarch:graphics-3.2-amd64:graphics-3.2-noarch:lsb-2.0-amd64:lsb-2.0-noarch:lsb-3.0-amd64:lsb-3.0-noarch:lsb-3.1-amd64:lsb-3.1-noarch:lsb-3.2-amd64:lsb-3.2-noarch:[b]lsb-4.0-amd64[/b]:lsb-4.0-noarch:lsb-4.1-amd64:lsb-4.1-noarch:lsb-5.0-amd64:lsb-5.0-noarch Distributor ID: RosaDesktopFresh Description: ROSA Desktop Fresh R5 Release: 2014.1 Codename: belka
Что им еще нужно?
У меня сейчас также — тогда как проверить не знал. (да и не было в R3 наверное).
Кстати, у вас ключ включен (светодиод горит)? Я включаю,загорается, но сразу выключается + не могу пробросить в VBox, похоже система перестает видеть usb-ключ, хотя по началу видит:
Код: Выделить всё
[21278.441969] usb 2-1.1: new full-speed USB device number 9 using ehci-pci
[21278.529599] usb 2-1.1: New USB device found, idVendor=24dc, idProduct=0101
[21278.529604] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[21278.529605] usb 2-1.1: Product: JaCarta
[21278.529607] usb 2-1.1: Manufacturer: ARDS
У вас так же?
+ поддержка госуслуг отводит на проверку решения вопроса 3 дня (тогда я при поиске LSB просрочил ответ). Может вам повезет
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
Yamah
- Сообщения: 1373
- Зарегистрирован: 04 май 2012, 06:30
- Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10 - Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Yamah » 08 фев 2015, 15:52
Галахов Роман писал(а):
У меня сейчас также — тогда как проверить не знал. (да и не было в R3 наверное).
Кстати, у вас ключ включен (светодиод горит)? Я включаю,загорается, но сразу выключается + не могу пробросить в VBox, похоже система перестает видеть usb-ключ, хотя по началу видит:Код: Выделить всё
[21278.441969] usb 2-1.1: new full-speed USB device number 9 using ehci-pci [21278.529599] usb 2-1.1: New USB device found, idVendor=24dc, idProduct=0101 [21278.529604] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [21278.529605] usb 2-1.1: Product: JaCarta [21278.529607] usb 2-1.1: Manufacturer: ARDS
У вас так же?
+ поддержка госуслуг отводит на проверку решения вопроса 3 дня (тогда я при поиске LSB просрочил ответ). Может вам повезет
У меня ридер: ACR38UH1
Код: Выделить всё
[18719.312489] usb 7-1: new full-speed USB device number 3 using ohci-pci
[18719.462476] usb 7-1: New USB device found, idVendor=072f, idProduct=90cc
[18719.462480] usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[18719.462482] usb 7-1: Product: CCID USB Reader
[18719.462483] usb 7-1: Manufacturer: ACS
При подключении устройства горит красный светодиод, зеленый мегает раз в 1,5 секунды.
При установки карты ничего не меняется. Зеленый начинает активнее мигать, когда какое-либо ПО читает данные с карты.
Мне удалось подписать ЭЦП-шкой файлы.
В VirtualBox вообще не подбрасывается — картридер виден в хостевой системе, но в VB этого девайса вообще нет.
-
Галахов Роман
- Сообщения: 2332
- Зарегистрирован: 26 фев 2012, 20:02
- Operating system: Rosa R12.1 Fresh Plasma (HP ProBook 440 G4 (y7z81ea))
- Откуда: Моск. обл. Волоколамск
УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Галахов Роман » 08 фев 2015, 19:55
Yamah писал(а):
У меня ридер: ACR38UH1Код: Выделить всё
[18719.312489] usb 7-1: new full-speed USB device number 3 using ohci-pci [18719.462476] usb 7-1: New USB device found, idVendor=072f, idProduct=90cc [18719.462480] usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [18719.462482] usb 7-1: Product: CCID USB Reader [18719.462483] usb 7-1: Manufacturer: ACS
При подключении устройства горит красный светодиод, зеленый мегает раз в 1,5 секунды.
При установки карты ничего не меняется. Зеленый начинает активнее мигать, когда какое-либо ПО читает данные с карты.
Мне удалось подписать ЭЦП-шкой файлы.В VirtualBox вообще не подбрасывается — картридер виден в хостевой системе, но в VB этого девайса вообще нет.
Получал в Москве (Сущевский вал), как и большинство.
А вы имеете, как я понял, полноценный ридер для УЭК
Почему то не проверенный в УЭК ( смотрите доп список) http://www.cryptopro.ru/faq/spisok-podd … boty-s-uek
Проверил ключ на 8ке — работает. Причем индикатор горел все время, а в момент чтения мигал.
Попробовал на старом нетбуке с ubuntu (у брата) — плагин установить не смог (много требует обновлять), но одно заметил сразу — светодиод горел все время, пока ключ был вставлен, а не выключался через 1 сек после подключения ключа.
Почему не работает у нас не знаю, но похоже связано с подсистемой USB (прерывается подача питания)
https://linux-hardware.org/?probe=92a6009cc0
Вот он в Dmesg:
Код: Выделить всё
[ 8868.891613] usb 2-1.1: USB disconnect, device number 7
[ 8873.677050] usb 2-1.1: new full-speed USB device number 8 using ehci-pci
[ 8873.764549] usb 2-1.1: New USB device found, idVendor=24dc, idProduct=0101
[ 8873.764555] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 8873.764557] usb 2-1.1: Product: JaCarta
[ 8873.764559] usb 2-1.1: Manufacturer: ARDS
Rosa 2021.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea))
-
Yamah
- Сообщения: 1373
- Зарегистрирован: 04 май 2012, 06:30
- Operating system: Десктоп (дом): Rosa Fresh R8.1, Rosa Fresh R10
Десктоп (работа): Rosa Fresh R8.1/Rosa Fresh R10
Сервер (работа): Rosa Enterprise Linux Sercver 6.7
Нетбук: Rosa Fresh R10 - Контактная информация:
Re: УЭК: ПО и оборудование работающее под управлением Rosa Fresh?
Сообщение
Yamah » 09 фев 2015, 19:12
Полноценный ридер. Проверенный (ссылка есть на сайте УЭК), работающий в Linux,MacOS X,Android.
Получал в Москве (Сущевский вал), как и большинство.
Мне до Москвы далековато (и дороговато) ехать за одной картой. (Скорее всего два раза).
Почему не работает у нас не знаю, но похоже связано с подсистемой USB (прерывается подача питания)
Я в любой момент могу запустить программу подписи файла. Она вызывает окошко (разработчики КриптоПРО даже забыли убрать оттуда «Привет Ку» или что типа этого), где я ввожу пароль от ЭЦП-шки. После этого зеленый диод на ридере очень быстро мигает несколько секунд. В итоге рядом с отправленным на подпись файлом появляется его подписанная копия с расширением sign.
Завтра в ТП ГосУслуг направлю экспортнутый публичный сертификат по их просьбе. (Им он нужен в формате DER, и инструкцию для его получения дают исключительно под Windows.)
I have an Epson ET-2600 printer at home. I tried configuring it using CUPS, but the printing is very slow and constantly in a very high quality (which results in a lot of ink being wasted). I tried to download the .deb packages from here, but it requires the lsb
package which I cannot retrieve. I currently have Debian 10 installed. I tried to put in my /etc/apt/sources.list
the link for Debian Jessie and running sudo apt install lsb
, but it did not work.
Any ideas on how I can get a better working open driver or the lsb package to install the official Epson driver?
Thanks in advance.
asked Oct 7, 2019 at 14:29
2
The package lsb
is deprecated , debian recommend to create the deb
package through alien (from rpm
):
e,g (redhat-lsb):
sudo apt install alien
wget http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/redhat-lsb-4.1-47.el8.x86_64.rpm
sudo alien --to-deb -c redhat-lsb-4.1-47.el8.x86_64.rpm
sudo apt install ./redhat-lsb_4.1-48_amd64.deb
Debian discontinued LSB support in 2015 …
LSB applications are provided in either the RPM package format or in an LSB-compliant self-installing executable. In the case of RPM packages, use the alien(1) tool to convert the rpm to a Debian package and then install normally. Make sure to use the
-c
option to alien to ensure that package scripts are converted as well.
Debian LSB
answered Oct 7, 2019 at 14:47
GAD3RGAD3R
60.9k30 gold badges126 silver badges189 bronze badges
2
LSB or Linux Standard Base support in Debian has been discontinued as of 2015
. They have kept some of the features in the packages lsb-base
and lsb-release
.
While not especially dangerous, I would recommend that you stick to only using Debian stable repositories and remove the Jessie sources from your /etc/apt/sources.list
. After you have done that (and updated apt with apt update
), you can install these packages with apt install lsb-base lsb-release
.
Now test installing your printer drivers and see if they work.
However, I am not sure if this will provide the necessary LSB feature set that your printer may need. You can also choose to go to the LSB main site and download and install the latest version of LSB manually if necessary.
I will recommend that if you need to support specific hardware not supported by Debian it may be best to change over to a Linux distro that supports your hardware. Your printer currently works using CUPS, however you are complaining that the configuration wastes ink and print jobs takes too long. You should look into or ask about how to get your CUPS configuration to a more desirable state if this solution does not work.
answered Oct 7, 2019 at 14:47
kemotepkemotep
4,9507 gold badges16 silver badges34 bronze badges
2
My take: I installed an lsb-compat
forward port deb package package which provides lsb
. I downloaded it from an MX Linux forum: https://forum.mxlinux.org/viewtopic.php?f=104&t=55746&hilit=lsb+compat#p555628
I was able to install the epson-inkjet-printer-scpr
and the epson-printer-utility
packages obtained from Epson after that. Shame on the printer manufacturers that they make us go through such hoops.
For the record I’m using https://devuan.org/ ceres, so I’m not with Linux Mint. Devuan is a Debian derivative.
answered Sep 15, 2020 at 23:43
Возникла задача — добавить в нашу МИС интеграцию с сервисом ФСС по обработке электронных больничных — здесь описание.
МИСка наша крутится на сервере с линуксом. Реализовать взаимодействие с сервисом оказалось в итоге не просто.
Опытом своим хочу поделиться
Возникла задача — добавить в нашу МИС интеграцию с сервисом ФСС по обработке электронных больничных — здесь описание.
МИСка наша крутится на сервере с линуксом. Реализовать взаимодействие с сервисом оказалось в итоге не просто.
Опытом своим хочу поделиться
Статья пока незакончена, в процессе….
У меня сервер на CENTOS достаточно старенький конечно — ну что поделать, так исторически сложилось©, работать то надо.
1 шаг. Установка Крипто-Про
Скачиваем и устанавливаем Крипто-Про
У меня лицензия на 4-ю версию, поэтому берем ее — https://www.cryptopro.ru/products/csp/downloads#latest_csp40r4_linux
Выбор пал на КриптоПро CSP 4.0 для Linux (x64, rpm) https://www.cryptopro.ru/sites/default/files/private/csp/40/9963/linux-amd64.tgz
Также нам понадобится КриптоПро ЭЦП SDK 2.0 (нам нужна поддержка ГОСТ-2012 — в более ранних версиях ее нет) https://www.cryptopro.ru/products/cades/downloads
выбор опять же пал на — Linux 64 бита https://www.cryptopro.ru/sites/default/files/products/cades/current_release_2_0/cades_linux_amd64.tar.gz
Также на всякий случай лучше запастись stunnel-msspi https://www.cryptopro.ru/products/other/stunnel-msspi,
нам он понадобился в следующем проекте с МДЛП о котором я расскажу вот здесь (типа ссылка тут будет)
Закидываем скаченные архивы на сервер, распаковываем — там куча rpm-ок
[root@bars srv]# tar -xf linux-amd64.tgz [root@bars srv]# cd linux-amd64 [root@bars linux-amd64]# ls -la total 21360 drwxr-xr-x 2 nobody nobody 4096 Nov 23 2018 . drwxr-xr-x. 4 root root 4096 Jun 5 11:23 .. -rw-r--r-- 1 nobody nobody 2203 Nov 23 2018 cprocsp-compat-altlinux-64-1.0.0-1.noarch.rpm -rw-r--r-- 1 nobody nobody 3202690 Nov 23 2018 cprocsp-cpopenssl-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 12244 Nov 23 2018 cprocsp-cpopenssl-base-4.0.9963-5.noarch.rpm -rw-r--r-- 1 nobody nobody 323564 Nov 23 2018 cprocsp-cpopenssl-devel-4.0.9963-5.noarch.rpm -rw-r--r-- 1 nobody nobody 39404 Nov 23 2018 cprocsp-cpopenssl-gost-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 417875 Nov 23 2018 cprocsp-curl-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 2089134 Nov 23 2018 cprocsp-drv-64-4.0.9963-5.src.rpm -rw-r--r-- 1 nobody nobody 2132178 Nov 23 2018 cprocsp-drv-devel-4.0.9963-5.noarch.rpm -rw-r--r-- 1 nobody nobody 84568 Nov 23 2018 cprocsp-ipsec-devel-4.0.9963-5.noarch.rpm -rw-r--r-- 1 nobody nobody 170341 Nov 23 2018 cprocsp-ipsec-esp-64-4.0.9963-5.src.rpm -rw-r--r-- 1 nobody nobody 33792 Nov 23 2018 cprocsp-ipsec-genpsk-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 89975 Nov 23 2018 cprocsp-ipsec-ike-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 18558 Nov 23 2018 cprocsp-rdr-emv-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 58823 Nov 23 2018 cprocsp-rdr-esmart-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 30293 Nov 23 2018 cprocsp-rdr-gui-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 49544 Nov 23 2018 cprocsp-rdr-gui-gtk-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 15854 Nov 23 2018 cprocsp-rdr-infocrypt-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 33521 Nov 23 2018 cprocsp-rdr-inpaspot-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 466398 Nov 23 2018 cprocsp-rdr-jacarta-64-3.6.408.695-4.x86_64.rpm -rw-r--r-- 1 nobody nobody 12460 Nov 23 2018 cprocsp-rdr-mskey-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 12706 Nov 23 2018 cprocsp-rdr-novacard-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 45655 Nov 23 2018 cprocsp-rdr-pcsc-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 13911 Nov 23 2018 cprocsp-rdr-rosan-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 47162 Nov 23 2018 cprocsp-rdr-rutoken-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 144178 Nov 23 2018 cprocsp-rsa-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 134583 Nov 23 2018 cprocsp-stunnel-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 49816 Nov 23 2018 cprocsp-xer2print-4.0.9963-5.noarch.rpm -rwxr-xr-x 1 nobody nobody 301229 Nov 23 2018 cpverify -rw-r--r-- 1 nobody nobody 63820 Nov 23 2018 ifd-rutokens-1.0.1-1.x86_64.rpm -rwxr-xr-x 1 nobody nobody 211 Nov 23 2018 install.desktop -rwxr-xr-x 1 nobody nobody 20617 Nov 23 2018 install_gui.sh -rwxr-xr-x 1 nobody nobody 10548 Nov 23 2018 install.sh -rwxr-xr-x 1 nobody nobody 6718 Nov 23 2018 integrity.sh -rw-r--r-- 1 nobody nobody 88 Nov 23 2018 linux-amd64.ini -rw-r--r-- 1 nobody nobody 186031 Nov 23 2018 lsb-cprocsp-base-4.0.9963-5.noarch.rpm -rw-r--r-- 1 nobody nobody 11667 Nov 23 2018 lsb-cprocsp-ca-certs-4.0.9963-5.noarch.rpm -rw-r--r-- 1 nobody nobody 6755056 Nov 23 2018 lsb-cprocsp-capilite-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 1197101 Nov 23 2018 lsb-cprocsp-devel-4.0.9963-5.noarch.rpm -rw-r--r-- 1 nobody nobody 720274 Nov 23 2018 lsb-cprocsp-kc1-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 1015425 Nov 23 2018 lsb-cprocsp-kc2-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 192800 Nov 23 2018 lsb-cprocsp-pkcs11-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 1478332 Nov 23 2018 lsb-cprocsp-rdr-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 8682 Nov 23 2018 lsb-cprocsp-rdr-accord-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 10722 Nov 23 2018 lsb-cprocsp-rdr-ancud-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 13518 Nov 23 2018 lsb-cprocsp-rdr-crypton-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 8297 Nov 23 2018 lsb-cprocsp-rdr-maxim-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 8719 Nov 23 2018 lsb-cprocsp-rdr-sobol-64-4.0.9963-5.x86_64.rpm -rw-r--r-- 1 nobody nobody 10814 Nov 23 2018 sobol-1-7.src.rpm -rwxr-xr-x 1 nobody nobody 3574 Nov 23 2018 uninstall.sh
ну что, шашки наголо и в атаку!
[root@bars linux-amd64]# ./install.sh Uninstalling CSP packages... CSP packages have been successfully uninstalled Installing lsb-cprocsp-base-4.0.9963-5.noarch.rpm ... error: Failed dependencies: lsb-core-noarch >= 3.0 is needed by lsb-cprocsp-base-4.0.9963-5.noarch Error: installation failed. LSB package may not be installed. Install LSB package and reinstall CryptoPro CSP. If it does not help, please read installation documentation or contact the manufacturer: support@cryptopro.ru.
Ха, не так все просто (а кто вообще обещал что будет легко?)
Ну давай, потанцуем
[root@bars linux-amd64]# yum install lsb-core-noarch ... тут куча всякого, в итоге Installed: redhat-lsb-core.x86_64 0:4.0-7.el6.centos Dependency Installed: at.x86_64 0:3.1.10-49.el6 bc.x86_64 0:1.06.95-1.el6 cvs.x86_64 0:1.11.23-16.el6 ed.x86_64 0:1.1-3.3.el6 gettext.x86_64 0:0.17-18.el6 mailx.x86_64 0:12.4-10.el6_10 patch.x86_64 0:2.6-8.el6_9 pax.x86_64 0:3.4-10.1.el6 perl-CGI.x86_64 0:3.51-144.el6 perl-Test-Simple.x86_64 0:0.92-144.el6 time.x86_64 0:1.7-38.el6 Dependency Updated: perl.x86_64 4:5.10.1-144.el6 perl-CPAN.x86_64 0:1.9402-144.el6 perl-Digest-SHA.x86_64 1:5.47-144.el6 perl-ExtUtils-MakeMaker.x86_64 0:6.55-144.el6 perl-ExtUtils-ParseXS.x86_64 1:2.2003.0-144.el6 perl-Module-Pluggable.x86_64 1:3.90-144.el6 perl-Pod-Escapes.x86_64 1:1.04-144.el6 perl-Pod-Simple.x86_64 1:3.13-144.el6 perl-Test-Harness.x86_64 0:3.17-144.el6 perl-devel.x86_64 4:5.10.1-144.el6 perl-libs.x86_64 4:5.10.1-144.el6 perl-version.x86_64 3:0.77-144.el6 Complete! [root@bars linux-amd64]#
Ну будем надеятся что ничего не поломается — вон сколько всего понаобновлял…
Второй заход…
[root@bars linux-amd64]# ./install.sh Uninstalling CSP packages... CSP packages have been successfully uninstalled Installing lsb-cprocsp-base-4.0.9963-5.noarch.rpm ... Installing lsb-cprocsp-rdr-64-4.0.9963-5.x86_64.rpm ... Adding new reader: Nick name: FLASH Name device: FLASH Succeeded, code:0x0 Installing lsb-cprocsp-kc1-64-4.0.9963-5.x86_64.rpm ... Installing lsb-cprocsp-capilite-64-4.0.9963-5.x86_64.rpm ... Installing cprocsp-curl-64-4.0.9963-5.x86_64.rpm lsb-cprocsp-ca-certs-4.0.9963-5.noarch.rpm ... CSP packages have been successfully installed
Основные каталоги в которых понадобится полазить
[root@bars linux-amd64]# ls -la /etc/opt/cprocsp/ total 40 drwxr-xr-x 2 root root 4096 Jun 5 11:33 . drwxr-xr-x. 3 root root 4096 Jun 5 11:33 .. -rw-r--r-- 1 root root 17703 Jun 5 11:33 config64.ini -rw-r--r-- 1 root root 255 Jun 5 11:33 license.ini -rw-r--r-- 1 root root 33 Nov 22 2018 release -rwxr-xr-x 1 root root 1206 Nov 22 2018 stunnel.conf [root@bars linux-amd64]# ls -la /var/opt/cprocsp/ total 32 drwxr-xr-x 8 root root 4096 Jun 5 11:33 . drwxr-xr-x. 3 root root 4096 Jun 5 11:33 .. drwxr-xr-x 4 root root 4096 Jun 5 11:33 dsrf drwxrwxrwt 3 root root 4096 Jun 5 11:33 keys drwx--x--x 10 root root 4096 Jun 5 11:33 mnt drwxrwxrwt 2 root root 4096 Jun 5 11:33 tmp drwxr-xr-x 4 root root 4096 Jun 5 11:33 tmpcerts drwxrwxrwt 4 root root 4096 Jun 5 11:33 users [root@bars linux-amd64]# ls -la /opt/cprocsp/ total 24 drwxr-xr-x 6 root root 4096 Jun 5 11:33 . drwxr-xr-x. 8 root root 4096 Jun 5 11:33 .. drwxr-xr-x 3 root root 4096 Jun 5 11:33 bin drwxr-xr-x 4 root root 4096 Jun 5 11:33 lib drwxr-xr-x 3 root root 4096 Jun 5 11:33 sbin drwxr-xr-x 4 root root 4096 Jun 5 11:33 share
2 шаг. Устанавливаем SDK
[root@bars srv]# tar -xf cades_linux_amd64.tar.gz [root@bars srv]# cd cades_linux_amd64 [root@bars cades_linux_amd64]# ls -la total 31880 drwxr-xr-x 2 meksik games 4096 Sep 19 2019 . drwxr-xr-x. 5 root root 4096 Jun 5 11:53 .. -rw------- 1 meksik games 13744817 Sep 17 2019 cprocsp-pki-2.0.0-amd64-cades.rpm -rw------- 1 meksik games 307637 Sep 17 2019 cprocsp-pki-2.0.0-amd64-phpcades.rpm -rw------- 1 meksik games 812649 Sep 17 2019 cprocsp-pki-2.0.0-amd64-plugin.rpm -rw------- 1 meksik games 13727006 Sep 17 2019 cprocsp-pki-cades_2.0.0-1_amd64.deb -rw------- 1 meksik games 302540 Sep 17 2019 cprocsp-pki-phpcades_2.0.0-1_amd64.deb -rw------- 1 meksik games 804876 Sep 17 2019 cprocsp-pki-plugin_2.0.0-1_amd64.deb -rw-r--r-- 1 meksik games 212 Sep 19 2019 ._.DS_Store -rw-r--r-- 1 meksik games 6148 Sep 19 2019 .DS_Store -rw------- 1 meksik games 212 Aug 13 2019 ._lsb-cprocsp-devel_5.0.11535-4_all.deb -rw------- 1 meksik games 1442962 Aug 13 2019 lsb-cprocsp-devel_5.0.11535-4_all.deb -rw------- 1 meksik games 212 Aug 13 2019 ._lsb-cprocsp-devel-5.0.11535-4.noarch.rpm -rw------- 1 meksik games 1455146 Aug 13 2019 lsb-cprocsp-devel-5.0.11535-4.noarch.rpm [root@bars cades_linux_amd64]#
нам нужно установить cprocsp-pki-2.0.0-amd64-cades.rpm, cprocsp-pki-2.0.0-amd64-phpcades.rpm и lsb-cprocsp-devel-5.0.11535-4.noarch.rpm
[root@bars cades_linux_amd64]# rpm -i cprocsp-pki-2.0.0-amd64-cades.rpm License 0A202-U0030-00ECW-RRLMF-UU2WK is set [ErrorCode: 0x00000000] License TA200-G0030-00ECW-RRLNE-BTDVV is set [ReturnCode: 0x00000000] [root@bars cades_linux_amd64]# rpm -i cprocsp-pki-2.0.0-amd64-phpcades.rpm [root@bars cades_linux_amd64]#
Если устанавливать rpm-ку от Крипто-Про 4, lsb-cprocsp-devel-4.0.9963-5.noarch.rpm, то она не даст собрать расширение,
надо устанавливать именно ту которая во втором архиве, но она просит зависимость — КриптоПро 5, потому указываем игнорировать зависимость
[root@bars cades_linux_amd64]# rpm -i lsb-cprocsp-devel-5.0.11535-4.noarch.rpm error: Failed dependencies: lsb-cprocsp-base >= 5.0 is needed by lsb-cprocsp-devel-5.0.11535-4.noarch [root@bars cades_linux_amd64]# rpm -i --nodeps lsb-cprocsp-devel-5.0.11535-4.noarch.rpm
3 шаг Сборка PHP расширения
смотрим какая версия php установлена, и смотрим установлен ли пакет devel чтобы мы могли собрать расширение phpcades
[root@bars cades_linux_amd64]# yum list installed |grep php cprocsp-pki-phpcades.x86_64 2.0.0-1 installed php56w.x86_64 5.6.40-1.w6 @webtatic php56w-cli.x86_64 5.6.40-1.w6 @webtatic php56w-common.x86_64 5.6.40-1.w6 @webtatic php56w-devel.x86_64 5.6.40-1.w6 @webtatic php56w-gd.x86_64 5.6.40-1.w6 @webtatic php56w-imap.x86_64 5.6.40-1.w6 @webtatic php56w-ldap.x86_64 5.6.40-1.w6 @webtatic php56w-mbstring.x86_64 5.6.40-1.w6 @webtatic php56w-mysql.x86_64 5.6.38-1.w6 @webtatic php56w-pdo.x86_64 5.6.40-1.w6 @webtatic php56w-pear.noarch 1:1.10.4-1.w6 @webtatic php56w-pgsql.x86_64 5.6.40-1.w6 @webtatic php56w-process.x86_64 5.6.40-1.w6 @webtatic php56w-soap.x86_64 5.6.40-1.w6 @webtatic php56w-xml.x86_64 5.6.40-1.w6 @webtatic [root@bars cades_linux_amd64]# cd /opt/cprocsp/src/phpcades/
если нет devel — устанавливаем или скачиваем исходники текущей версии php
читаем /opt/cprocsp/src/phpcades/README.txt, приступаем
в файле /opt/cprocsp/src/phpcades/Makefile.unix в первой строке ставим
PHPDIR=/usr/include/php
далее, сказано поставить libboost-dev — надо, значит надо…
[root@bars phpcades]# yum install boost-devel ... Installed: boost-devel.x86_64 0:1.41.0-28.el6 Dependency Installed: boost.x86_64 0:1.41.0-28.el6 boost-date-time.x86_64 0:1.41.0-28.el6 boost-filesystem.x86_64 0:1.41.0-28.el6 boost-graph.x86_64 0:1.41.0-28.el6 boost-iostreams.x86_64 0:1.41.0-28.el6 boost-math.x86_64 0:1.41.0-28.el6 boost-program-options.x86_64 0:1.41.0-28.el6 boost-python.x86_64 0:1.41.0-28.el6 boost-regex.x86_64 0:1.41.0-28.el6 boost-serialization.x86_64 0:1.41.0-28.el6 boost-signals.x86_64 0:1.41.0-28.el6 boost-system.x86_64 0:1.41.0-28.el6 boost-test.x86_64 0:1.41.0-28.el6 boost-thread.x86_64 0:1.41.0-28.el6 boost-wave.x86_64 0:1.41.0-28.el6 libicu.x86_64 0:4.2.1-15.el6_10 Complete! [root@bars phpcades]#
[root@bars phpcades]# [root@bars phpcades]# eval `/opt/cprocsp/src/doxygen/CSP/../setenv.sh --64`; make -f Makefile.unix g++ -DLINUX -DUNIX -DHAVE_LIMITS_H -D_COMPACT -DHAVE_STDINT_H -I/opt/cprocsp/include/ -I/opt/cprocsp/include/cpcsp -I/opt/cprocsp/include/pki -I/opt/cprocsp/include/pki/atl -I/opt/cprocsp/include/pk i/cppcades -I/opt/cprocsp/include/pki/cplib -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/Zend -I/usr/include/php/TSRM -DSIZEOF_VOID_P=8 -fPIC -DPIC -c -o PHPCadesCPSigners.o PHPCadesCP Signers.cpp ..... g++ -shared PHPCadesCPSigners.o PHPCadesCPSigner.o PHPCadesCPExtendedKeyUsage.o PHPCadesCPAttribute.o PHPCadesCPEKU.o PHPCadesCPEKUs.o PHPCadesCPBasicConstraints.o PHPCadesCPSignedData.o PHPCadesCPPubl icKey.o PHPCadesCPPrivateKey.o PHPCadesCPOID.o PHPCadesCPEncodedData.o PHPCadesCPAttributes.o PHPCadesCPCertificateStatus.o PHPCadesCPEnvelopedData.o PHPCadesCPAlgorithm.o PHPCadesCPRecipients.o PHPCade sCPKeyUsage.o PHPCadesAbout.o PHPCadesCPCardholderData.o PHPCadesCPCertificates.o PHPCadesCPSignedXML.o PHPCadesCPHashedData.o PHPCadesCPRawSignature.o PHPCadesCPCertificate.o PHPCadesCPStore.o dllmain. o PHPCadesVersion.o PHPCadesSymmetricAlgorithm.o errormsg.o -L/opt/cprocsp/lib/amd64 -lcppcades -lcapi10 -lcapi20 -lrdrsup -lcplib -g -o libphpcades.so [root@bars phpcades]#
Скопируем его ко всем остальным модулям и включим
[root@bars phpcades]# cp libphpcades.so /usr/lib64/php/modules [root@bars phpcades]# echo "extension=libphpcades.so" > /etc/php.d/cryptopro.ini
Все. на этом установка расширения для PHP завершена. Но для php версии 7 так легко все не проходит, нужны дополнительные шаги
Download file EncryptFSS.c
#include <stdio.h> #include <string.h> #ifdef _WIN32 # include <windows.h> # include <wincrypt.h> # include <tchar.h> #else # include <stdlib.h> # include <CSP_WinDef.h> # include <CSP_WinCrypt.h> # include "reader/tchar.h" #endif #include <WinCryptEx.h> #include <stdint.h> //#define DEBUG_OUT 1 #define BLOCK_LENGTH 8 #define ASN1_LENGTH 172 #define ENCRKEY_OFFSET 7 #define ENCRKEY_LEN 32 #define MACKEY_OFFSET 41 #define MACKEY_LEN 4 #define PUBKEY_OFFSET 98 #define PUBKEY_LEN 64 #define SV_OFFSET 164 #define SV_LEN 8 static BYTE encoding_table[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'}; static BYTE *decoding_table = NULL; static int mod_table[] = {0, 2, 1}; BYTE * base64_encode(const BYTE *data, DWORD input_length, DWORD *output_length); static void HandleError(char *s); static void CleanUp(void); static HCRYPTPROV hProv = 0; // Дескриптор CSP static HCRYPTKEY hKey = 0; // Дескриптор закрытого ключа static HCRYPTKEY hSessionKey = 0; // Дескриптор сессионного ключа static HCRYPTKEY hAgreeKey = 0; // Дескриптор ключа согласования static HCRYPTKEY hEphemeralKey = 0; // Дескриптор эфемерного ключа static FILE *fhCert=NULL; // Файл, в котором хранится сертификат static FILE *fhSource=NULL; // Исходный файл static FILE *fhOutput=NULL; // Исходный файл #ifdef DEBUG_OUT static FILE *fhEncrypt=NULL; // Зашифрованный файл static FILE *fhSession_SV=NULL; // Файл для хранения сессионного ключа (вектор инициализации) static FILE *fhSession_EncryptedKey=NULL; // Файл для хранения сессионного ключа (зашифрованный ключ) static FILE *fhSession_PublicKey=NULL; // Файл для хранения публичного эфемерного ключа static FILE *fhSession_MacKey=NULL; // Файл для хранения сессионного ключа (имита) static FILE *fhVector=NULL; // Файл для хранения вектора инициализации static FILE *fhEncryptionParam; // Файл для хранения неменяемой части блоба #endif static BYTE *pbKeyBlobSimple = NULL; // Указатель на сессионный ключевой BLOB static BYTE *pbIV = NULL; // Вектор инициализации сессионного ключа static BYTE *pbCipherValue = NULL; // Указатель шифрованный контент #define MAX_PUBLICKEYBLOB_SIZE 200 int main(int argc, char *argv[]) { BYTE pbKeyBlob[MAX_PUBLICKEYBLOB_SIZE]; // Указатель на ключевой BLOB DWORD dwBlobLen = MAX_PUBLICKEYBLOB_SIZE; // Длина ключевого BLOBа DWORD dwBlobLenSimple; // Длина сессионного ключевого BLOBа BYTE pbSenderPublicKeyBlob[MAX_PUBLICKEYBLOB_SIZE]; // Указатель на ключевой BLOB публичный, отправителя DWORD dwSenderPublicBlobLen = MAX_PUBLICKEYBLOB_SIZE; // Длина ключевого BLOBа, публичного, отправителя DWORD keyParam = CRYPT_MODE_CBC; DWORD paddingMode = ISO10126_PADDING; //cpm_ISO10126 BYTE * pbBufferB64; DWORD dwBufferB64Len; DWORD dwCipherValue; BYTE * pbPubCertData; DWORD dwPubCertData; BYTE * pbContent; // указатель на исходное содержимое DWORD cbContent = 0; // Длина содержимого DWORD dwIV = 0; // Длина вектора инициализации DWORD bufLen = sizeof(pbContent); // Длина буфера ALG_ID ke_alg = CALG_PRO_EXPORT /*CALG_PRO12_EXPORT*/; // алгоритм ключа согласования DWORD cbEncryptionParamSetStandart; // длина неизменяемой части блоба DWORD cbCert = 4000; // максимальный размер файла сертификата BYTE pbCert[4000]; // указатель на сертификат PCCERT_CONTEXT pCertContext = NULL; HCRYPTKEY hPubKey; BYTE pbKeyCipherValue[ASN1_LENGTH] = {0x30, 0x81, 0xA9, 0x30, 0x28, 4, 0x20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // offs 7: len 32 = Session Encrypted Key 4, 4, 0, 0, 0, 0, // offs 41 len 4 = Session Mac Key 0xA0, 0x7D, 6, 9, 0x2A, 0x85, 3, 7, 1, 2, 5, 1, 1, // OBJECT IDENTIFIER 1.2.643.7.1.2.5.1.1 tc26CipherZ (TC26 params Z for GOST 28147-89) 0xA0, 0x66, 0x30, 0x1F, 6, 8, 0x2A, 0x85, 3, 7, 1, 1, 1, 1, // OBJECT IDENTIFIER 1.2.643.7.1.1.1.1 gost2012PublicKey256 (GOST R 34.10-2012 256 bit public key) 0x30, 0x13, 6, 7, 0x2A, 0x85, 3, 2, 2, 0x24, 0, // OBJECT IDENTIFIER 1.2.643.2.2.36.0 cryptoProSignXA (CryptoPro ell.curve XA for GOST R 34.10-2001) 6, 8, 0x2A, 0x85, 3, 7, 1, 1, 2, 2, 3, // OBJECT IDENTIFIER 1.2.643.7.1.1.2.2 gost2012Digest256 (GOST R 34.11-2012 256 bit digest) 0x43, 0, 4, 0x40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // offs 98 = : len 64 = Session Public Key 0x4, 0x8, 0, 0, 0, 0, 0, 0, 0, 0 // offs 164: len 8 = Session SV }; // Указатель на структуру ASN1 для ключа DWORD dwKeyCipherValue = ASN1_LENGTH; static BYTE xml_1[] = "<?xml version="1.1" encoding="UTF-8"?>" "<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">" "<SOAP-ENV:Header/>" "<SOAP-ENV:Body>" "<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">" "<EncryptionMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gost28147"/>" "<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">" "<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">" "<EncryptionMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2001"/>" "<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">" "<X509Data>" "<X509Certificate>"; static BYTE xml_2[] = "</X509Certificate>" "</X509Data>" "</KeyInfo>" "<CipherData>" "<CipherValue>"; static BYTE xml_3[] = "</CipherValue>" "</CipherData>" "</EncryptedKey>" "</KeyInfo>" "<CipherData>" "<CipherValue>"; static BYTE xml_4[] = "</CipherValue>" "</CipherData>" "</EncryptedData>" "</SOAP-ENV:Body>" "</SOAP-ENV:Envelope>"; if(argc < 5) { printf("Encryption tool for FSS ELN service.nver 0.01, IbZ(c) Studio (tm) :)n" ); printf("ntusing: %s <container_name> <certificate_filename> <source_file> <output.xml>nn", argv[0]); HandleError( "Not enough input parameters given" ); } // Открытие файла, который будет зашифрован. if(!(fhSource = fopen(argv[3], "rb"))) HandleError( "Problem opening the source file n" ); fseek(fhSource, 0, SEEK_END); cbContent = ftell(fhSource); rewind(fhSource); #ifdef DEBUG_OUT printf( "01. The file '%s' was opened, length = %d bytesn", argv[3],cbContent ); #endif pbContent = (BYTE *)malloc(cbContent); if(!pbContent) HandleError("Out of memory. n"); if(!(fhOutput = fopen(argv[4], "wb"))) HandleError( "Problem opening the file output xml filen" ); #ifdef DEBUG_OUT printf( "tThe file '%s' was openedn", argv[4] ); // Открытие файла, в который будет производится запись блока зашифрованного файла. if(!(fhEncrypt = fopen("encrypt.bin", "wb"))) HandleError( "Problem opening the file 'encrypt.bin'n" ); printf( "tThe file 'encrypt.bin' was openedn" ); // Открытие файла, в который производится запись синхропосылки. if(!(fhSession_SV = fopen("session_SV.bin", "wb"))) HandleError( "Problem opening the file 'session_SV.bin'n" ); printf( "tThe file 'session_SV.bin' was openedn" ); // Открытие файла, в который производится запись сессионного ключа. if(!(fhSession_EncryptedKey = fopen("session_EncryptedKey.bin", "wb"))) HandleError( "Problem opening the file 'session_EncryptedKey.bin'n" ); printf( "tThe file 'session_EncryptedKey.bin' was openedn" ); if(!(fhSession_PublicKey = fopen("session_PublicKey.bin", "wb"))) HandleError( "Problem opening the file 'session_PublicKey.bin'n" ); printf( "tThe file 'session_PublicKey.bin' was openedn" ); // Открытие файла, в который производится запись MAC сессионного ключа. if(!(fhSession_MacKey = fopen("session_MacKey.bin", "wb"))) HandleError( "Problem opening the file 'session_MacKey.bin'n" ); printf( "tThe file 'session_MacKey.bin' was openedn" ); // Открытие файла, в который производится запись вектора инициализации. if(!(fhVector = fopen("vector.bin", "wb"))) HandleError( "Problem opening the file 'vector.bin'n" ); printf( "tThe file 'vector.bin' was openedn" ); // Открытие файла, в который производится запись вектора инициализации. if (!(fhEncryptionParam = fopen("EncryptionParam.bin", "wb"))) HandleError("Problem opening the file 'EncryptionParam.bin'n"); printf( "tThe file 'EncryptionParam.bin' was openedn"); #endif // Получение дескриптора контейнера отправителя, находящегося в рамках провайдера. // if(CryptAcquireContext( &hProv, _TEXT("HDIMAGE\\2019rnik.000\026C"), NULL, PROV_GOST_2012_256, 0)) if(!CryptAcquireContext( &hProv, argv[1], NULL, PROV_GOST_2012_256, 0)) HandleError("Error during CryptAcquireContext."); #ifdef DEBUG_OUT printf("02. The key container "%s" has been acquired. n", argv[1]); #endif // Загрузка PUBLICKEYBLOB из сертификата, открытие файла, в котором содержится открытый ключ получателя. if((fhCert = fopen(argv[2], "rb"))) { #ifdef DEBUG_OUT printf( "tThe file '%s' was openedn", argv[2]); #endif cbCert = (DWORD)fread(pbCert, 1, cbCert, fhCert); if(!cbCert) HandleError( "Failed to read certificaten" ); #ifdef DEBUG_OUT printf( "tCertificate was read from the '%s'n", argv[2] ); #endif pCertContext = CertCreateCertificateContext ( X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, pbCert, cbCert); if (!pCertContext) HandleError( "CertCreateCertificateContext" ); // Импортируем открытый ключ if (!CryptImportPublicKeyInfoEx( hProv, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, &(pCertContext->pCertInfo->SubjectPublicKeyInfo), 0, 0, NULL, &hPubKey)) { CertFreeCertificateContext(pCertContext); HandleError( "CryptImportPublicKeyInfoEx" ); } #ifdef DEBUG_OUT printf("tPublic key imported from cert filen"); #endif CertFreeCertificateContext(pCertContext); // экспорт открытого ключа получателя в BLOB if (!CryptExportKey( hPubKey, 0, PUBLICKEYBLOB, 0, pbKeyBlob, &dwBlobLen)) HandleError( "CryptExportKey" ); #ifdef DEBUG_OUT printf("tPublic key exported to blobn"); #endif } // begin hack // генерация эфемерной ключевой пары if(!CryptGenKey(hProv, /* CALG_DH_EL_EPHEM */ CALG_DH_GR3410_12_256_EPHEM, CRYPT_EXPORTABLE, &hEphemeralKey)) HandleError("Error during CryptGenKey Ephemeral key."); #ifdef DEBUG_OUT printf("03. The Ephemeral key has been acquired. n"); #endif // экспорт открытого ключа отправителя в BLOB if(!CryptExportKey(hEphemeralKey, 0, PUBLICKEYBLOB, 0, pbSenderPublicKeyBlob, &dwSenderPublicBlobLen)) HandleError("Error during CryptExportKey of Sender's public key."); #ifdef DEBUG_OUT printf("04. The Sender public key has been acquired. size of Blob = %d bytesn", dwSenderPublicBlobLen); #endif // получаем значение открытого ключа отправителя из PUBLICKEYBLOB memcpy(&pbKeyCipherValue[PUBKEY_OFFSET], &pbSenderPublicKeyBlob[dwSenderPublicBlobLen-PUBKEY_LEN], PUBKEY_LEN); #ifdef DEBUG_OUT if(!fwrite( pbSenderPublicKeyBlob, 1, dwSenderPublicBlobLen, fhSession_PublicKey)) HandleError( "The session key can not be written to the 'session_PublicKey.bin'n" ); printf("tThe session key was written to the 'session_PublicKey.bin'n" ); #endif // Получение дескриптора закрытого ключа отправителя. нам нужно для получения сертификата который вставим в запрос if(!CryptGetUserKey( hProv, AT_KEYEXCHANGE, &hKey)) HandleError("Error during CryptGetUserKey private key."); #ifdef DEBUG_OUT printf("05. The private key has been acquired. n"); #endif // определяем размер блока памяти для получения нашего сертификата который мы пошлем в ФСС if(!CryptGetKeyParam(hKey, KP_CERTIFICATE, NULL, &dwPubCertData, 0)) HandleError("Error during CryptGetKeyParam for determinating size of certificate."); #ifdef DEBUG_OUT printf("06. The size for Public Certificate has been acquired. n"); #endif pbPubCertData = (BYTE*)malloc(dwPubCertData); if(!pbPubCertData) HandleError("Out of memory. n"); // получачем сам сертификата который мы пошлем в ФСС в подготовленную область памяти if(!CryptGetKeyParam(hKey, KP_CERTIFICATE, pbPubCertData, &dwPubCertData, 0)) HandleError("Error during CryptGetKeyParam when get certificate"); #ifdef DEBUG_OUT printf("07. The our Certificate has been acquired. n"); #endif // Получение ключа согласования импортом открытого ключа получателя на эфемерном ключе, ----не на закрытом ключе отправителя. if(!CryptImportKey(hProv, pbKeyBlob, dwBlobLen, hEphemeralKey, 0, &hAgreeKey)) HandleError("Error during CryptImportKey public key."); #ifdef DEBUG_OUT printf("08. get AgreeKey by importing the responder public key. n"); #endif // Установление ----PRO12_EXPORT (на саомм деле нет, PRO_EXPORT) алгоритма ключа согласования if(!CryptSetKeyParam( hAgreeKey, KP_ALGID, (LPBYTE)&ke_alg, 0)) HandleError("Error during CryptSetKeyParam agree key."); //printf("22. PRO12_EXPORT agree key algorithm has been set. n"); #ifdef DEBUG_OUT printf("09. PRO_EXPORT agree key algorithm has been set. n"); #endif // Генерация случайного сессионного ключа. if(!CryptGenKey( hProv, CALG_G28147, CRYPT_EXPORTABLE, &hSessionKey)) HandleError("ERROR -- CryptGenKey failed for random session key."); #ifdef DEBUG_OUT printf("10. Original session key is created. n"); #endif //-------------------------------------------------------------------- // Зашифрование сессионного ключа. //-------------------------------------------------------------------- // экспорт сессионного ключа в BLOB // Определение размера BLOBа сессионного ключа и распределение памяти. if(!CryptExportKey( hSessionKey, hAgreeKey, SIMPLEBLOB, 0, NULL, &dwBlobLenSimple)) HandleError("Error computing BLOB length."); #ifdef DEBUG_OUT printf("11. Size of the BLOB for the sender session key determined. n"); #endif pbKeyBlobSimple = (BYTE*)malloc(dwBlobLenSimple); if(!pbKeyBlobSimple) HandleError("Out of memory. n"); // Зашифрование сессионного ключа на ключе Agree. экспорт сессионного ключа на ключе согласования if(!CryptExportKey( hSessionKey, hAgreeKey, SIMPLEBLOB, 0, pbKeyBlobSimple, &dwBlobLenSimple)) HandleError("Error during CryptExportKey."); #ifdef DEBUG_OUT printf("12. Contents have been written to the BLOB. n"); #endif memcpy(&pbKeyCipherValue[SV_OFFSET], ((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bSV, SV_LEN); memcpy(&pbKeyCipherValue[ENCRKEY_OFFSET], ((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bEncryptedKey, ENCRKEY_LEN); memcpy(&pbKeyCipherValue[MACKEY_OFFSET], ((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bMacKey, MACKEY_LEN); // режим шифрования CBC if(!CryptSetKeyParam(hSessionKey, KP_MODE, (LPBYTE)&keyParam, 0)) HandleError("Error during CryptSetKeyParam cipher mode."); #ifdef DEBUG_OUT printf("tSet crypt param CRYPT_MODE_CBC. n"); #endif // режим паддинга if(!CryptSetKeyParam(hSessionKey, KP_PADDING, (LPBYTE)&paddingMode, 0)) HandleError("Error during CryptSetKeyParam padding mode."); #ifdef DEBUG_OUT printf("tSet crypt param ISO10126_PADDING. n"); #endif //end hacking // Определение размера вектора инициализации сессионного ключа. if(!CryptGetKeyParam( hSessionKey, KP_IV, NULL, &dwIV, 0)) HandleError("Error computing IV length."); #ifdef DEBUG_OUT printf("13. Size of the IV for the session key determined. n"); #endif pbIV = (BYTE*)malloc(dwIV); if (!pbIV) HandleError("Out of memory. n"); // Получение вектора инициализации сессионного ключа. if(!CryptGetKeyParam( hSessionKey, KP_IV, pbIV, &dwIV, 0)) HandleError("Error during CryptGetKeyParam."); #ifdef DEBUG_OUT printf( "14. CryptGetKeyParam succeeded. n"); //-------------------------------------------------------------------- // Запись вектора инициализации в файл. if(!fwrite( pbIV, 1, dwIV, fhVector)) HandleError( "The IV can not be written to the 'vector.bin'n" ); printf( "tThe IV was written to the 'vector.bin'n" ); //-------------------------------------------------------------------- // Запись сессионного вектора в файл. if(!fwrite( ((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bSV, 1, SEANCE_VECTOR_LEN, fhSession_SV)) HandleError( "The session vector can not be written to the 'session_SV.bin'n" ); printf( "tThe session vector was written to the 'session_SV.bin'n" ); //-------------------------------------------------------------------- // Запись сессионного зашифрованного ключа в файл. if(!fwrite( ((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bEncryptedKey, 1, G28147_KEYLEN, fhSession_EncryptedKey)) HandleError( "The session key can not be written to the 'session_EncryptedKey.bin'n" ); printf( "tThe session key was written to the 'session_EncryptedKey.bin'n" ); //-------------------------------------------------------------------- // Запись сессионного MAC ключа в файл. if(!fwrite( ((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bMacKey, 1, EXPORT_IMIT_SIZE, fhSession_MacKey)) HandleError( "The session key can not be written to the 'session_MacKey.bin'n" ); printf( "tThe session key was written to the 'session_MacKey.bin'n" ); #endif //-------------------------------------------------------------------- // Запись неизменяемой части блоба в файл. if (((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bEncryptionParamSet[0] != 0x30) HandleError("The EncryptionParam can not be written to the 'EncryptionParam.bin' - first byte is not 0x30n"); cbEncryptionParamSetStandart = (DWORD)((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bEncryptionParamSet[1] + sizeof((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bEncryptionParamSet[0] + sizeof((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bEncryptionParamSet[1]; #ifdef DEBUG_OUT if (!fwrite(((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bEncryptionParamSet, 1, cbEncryptionParamSetStandart, fhEncryptionParam)) HandleError("The EncryptionParam can not be written to the 'EncryptionParam.bin'n"); printf("tThe EncryptionParam was written to the 'EncryptionParam.bin'n"); //-------------------------------------------------------------------- // Чтение файла, и шифрование прочитанного блока и запись его в файл "encrypt.bin". Это будет // 'SOAP-ENV:Envelope -> SOAP-ENV:Body -> EncryptedData -> CipherData -> CipherValue //-------------------------------------------------------------------- printf( "15. Begin Encryption:n"); #endif // сначала копируем вектор инициализации dwCipherValue = dwIV; pbCipherValue = (BYTE*)malloc(dwIV); if (!pbCipherValue) HandleError("Out of memory. n"); memcpy(pbCipherValue,pbIV,dwIV); bufLen = cbContent; if( (DWORD)fread(pbContent, 1, cbContent, fhSource) != cbContent ) HandleError( "Problem reading the source xml file n" ); // сначала определяем необходимый размер блока памяти if(!CryptEncrypt(hSessionKey, 0, TRUE, 0, NULL, &bufLen, 0)) HandleError("get memory size for Encryption failed."); #ifdef DEBUG_OUT printf( "tget memory size %d bytes for encryption success....n", bufLen); #endif pbContent = (BYTE*)realloc(pbContent, bufLen); if (!pbContent) HandleError("Out of memory. n"); if(!CryptEncrypt(hSessionKey, 0, TRUE, 0, pbContent, &cbContent, bufLen)) HandleError("Encryption failed."); pbCipherValue = (BYTE*)realloc(pbCipherValue, dwCipherValue+cbContent); if (!pbCipherValue) HandleError("Out of memory. n"); memcpy(&pbCipherValue[dwCipherValue], pbContent, cbContent); dwCipherValue += cbContent; #ifdef DEBUG_OUT if(!fwrite( pbContent, 1, cbContent, fhEncrypt)) HandleError( "The encrypted content can not be written n" ); printf( "tencrypted %d bytes, to %d bytes....n" , cbContent, bufLen); #endif // ------------------------------------------------------- // начинаем запись результирующего зашифрованного XML // ------------------------------------------------------- if(!fwrite(xml_1, 1,sizeof(xml_1)-1, fhOutput)) HandleError( "The 1st part of xml can not be written to the output xml filen" ); #ifdef DEBUG_OUT printf( "-------- writing result file xml ----------ntThe 1st part of xml was written to the '%s'n", argv[4] ); #endif pbBufferB64 = base64_encode(pbPubCertData, dwPubCertData, &dwBufferB64Len); if(!fwrite( pbBufferB64, 1, dwBufferB64Len, fhOutput)) HandleError( "The encrypted data can not be written to the output xml filen" ); #ifdef DEBUG_OUT printf( "tThe encrypted data was written to the '%s'n", argv[4] ); #endif if(!fwrite(xml_2, 1,sizeof(xml_2)-1, fhOutput))HandleError( "The 2nd part of xml can not be written to the output xml filen" ); #ifdef DEBUG_OUT printf( "tThe 2nd part of xml was written to the '%s'n", argv[4] ); #endif pbBufferB64 = base64_encode(pbKeyCipherValue, ASN1_LENGTH, &dwBufferB64Len); if(!fwrite( pbBufferB64, 1, dwBufferB64Len, fhOutput)) HandleError( "The session structure can not be written to the output xml filen" ); #ifdef DEBUG_OUT printf( "tThe session structure was written to the '%s'n", argv[4] ); #endif if(!fwrite(xml_3, 1,sizeof(xml_3)-1, fhOutput)) HandleError( "The 3rd part of xml can not be written to the output xml filen" ); #ifdef DEBUG_OUT printf( "tThe 3rd part of xml was written to the '%s'n", argv[4] ); #endif pbBufferB64 = base64_encode(pbCipherValue, dwCipherValue, &dwBufferB64Len); if(!fwrite( pbBufferB64, 1, dwBufferB64Len, fhOutput)) HandleError( "The encrypted data can not be written to the output xml filen" ); #ifdef DEBUG_OUT printf( "tThe encrypted data was written to the '%s'n", argv[4] ); #endif if(!fwrite(xml_4, 1,sizeof(xml_4)-1, fhOutput)) HandleError( "The 4th part of xml can not be written to the output xml filen" ); #ifdef DEBUG_OUT printf( "tThe 4th part of xml was written to the '%s'n---- writing result file xml complete ------n", argv[4] ); #endif CleanUp(); #ifdef DEBUG_OUT printf("nThe program ran to completion without error. n"); #endif return 0; } void CleanUp(void) { if(fhSource) fclose (fhSource); if(fhOutput) fclose (fhOutput); if(fhCert) fclose (fhCert); #ifdef DEBUG_OUT if(fhEncrypt) fclose (fhEncrypt); if(fhSession_SV) fclose (fhSession_SV); if(fhSession_EncryptedKey) fclose (fhSession_EncryptedKey); if(fhSession_PublicKey) fclose (fhSession_PublicKey); if(fhSession_MacKey) fclose (fhSession_MacKey); if(fhVector) fclose (fhVector); if(fhEncryptionParam) fclose(fhEncryptionParam); #endif if(hKey) CryptDestroyKey(hKey); if(hEphemeralKey) CryptDestroyKey(hEphemeralKey); if(hSessionKey) CryptDestroyKey(hSessionKey); if(hAgreeKey) CryptDestroyKey(hAgreeKey); if(hProv) CryptReleaseContext(hProv, 0); if(pbKeyBlobSimple) free(pbKeyBlobSimple); if(pbIV) free(pbIV); } BYTE * base64_encode(const BYTE *data, DWORD input_length, DWORD *output_length) { WORD i, j; DWORD octet_a, octet_b, octet_c, triple; *output_length = 4 * ((input_length + 2) / 3); BYTE * encoded_data = malloc(*output_length); if (encoded_data == NULL) return NULL; for (i = 0, j = 0; i < input_length;) { octet_a = i < input_length ? (BYTE)data[i++] : 0; octet_b = i < input_length ? (BYTE)data[i++] : 0; octet_c = i < input_length ? (BYTE)data[i++] : 0; triple = (octet_a << 0x10) + (octet_b << 0x08) + octet_c; encoded_data[j++] = encoding_table[(triple >> 3 * 6) & 0x3F]; encoded_data[j++] = encoding_table[(triple >> 2 * 6) & 0x3F]; encoded_data[j++] = encoding_table[(triple >> 1 * 6) & 0x3F]; encoded_data[j++] = encoding_table[(triple >> 0 * 6) & 0x3F]; } for (i = 0; i < mod_table[input_length % 3]; i++) encoded_data[*output_length - 1 - i] = '='; return encoded_data; } void HandleError(char *s) { DWORD err = GetLastError(); printf("Error number : 0x%xn", err); printf("Error description: %sn", s); CleanUp(); if(!err) err = 1; exit(err); }
Download file DecryptFSS.c
#include <stdio.h> #include <stdlib.h> #include <string.h> #ifdef _WIN32 # include <windows.h> # include <wincrypt.h> # include <tchar.h> #else # include <stdlib.h> # include <CSP_WinDef.h> # include <CSP_WinCrypt.h> # include "reader/tchar.h" #endif #include <WinCryptEx.h> //#define DEBUG_OUT 1 #define BLOCK_LENGTH 4096 #define ENCRKEY_OFFSET 7 #define ENCRKEY_LEN 32 #define MACKEY_OFFSET 41 #define MACKEY_LEN 4 #define PUBKEY_OFFSET 98 #define PUBKEY_LEN 64 #define SV_OFFSET 164 #define SV_LEN 8 #define IV_LEN 8 #define ENCPARAMSET_LEN 13 static BYTE encoding_table[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'}; static BYTE *decoding_table = NULL; static int mod_table[] = {0, 2, 1}; void build_decoding_table(); BYTE *base64_decode(const BYTE *data, DWORD input_length, DWORD *output_length); static void CleanUp(void); static void HandleError(char *s); static HCRYPTPROV hProv = 0; // Дескриптор CSP static HCRYPTKEY hKey = 0; // Дескриптор закрытого ключа static HCRYPTKEY hPubKey = 0; // Дескриптор открытого ключа ФСС static HCRYPTKEY hSessionKey = 0; // Дескриптор сессионного ключа static HCRYPTKEY hAgreeKey = 0; // Дескриптор ключа согласования static FILE *fhEncrypt=NULL; // Зашифрованный файл static FILE *fhOutput=NULL; // Расшифрованный файл #ifdef DEBUG_OUT static FILE *fhCertB64=NULL; // Сертификат ФСС из xml в base64 static FILE *fhCert=NULL; // Сертификат ФСС из xml бинарный static FILE *fhEncodingParametersB64; // Параметры шифрования из xml в base64 static FILE *fhEncodingParameters; // Параметры шифрования из xml в бинарном виде static FILE *fhEncodedContentB64; // Содержимое из xml в base64 static FILE *fhEncodedContent; // Содержимое из xml которое надо расшифровать в бинарном виде с вектором инициализации static FILE *fhMacKey; static FILE *fhKeyBlobSimple; static FILE *fhKeyBlob; static FILE *fhContent; // чистое содержимое которое надо расшифровать без вектора инициализации #endif char SearchStr1[] = "<ds:X509Data><ds:X509Certificate>"; char SearchStr2[] = "</ds:X509Certificate></ds:X509Data></ds:KeyInfo><xenc:CipherData><xenc:CipherValue>"; char SearchStr3[] = "</xenc:CipherValue></xenc:CipherData></xenc:EncryptedKey></ds:KeyInfo><xenc:CipherData><xenc:CipherValue>"; char SearchStr4[] = "</xenc:CipherValue></xenc:CipherData></xenc:EncryptedData>"; #define MAX_PUBLICKEYBLOB_SIZE 200 int main(int argc, char *argv[]) { BYTE * pbEncrypt; // Указатель на содержимое зашифрованного файла DWORD cbEncrypt = 0; // Длина содержимого BYTE * pbClrContent; // Указатель на содержимое зашифрованного файла, после очистки от спецсимволов и пробелов DWORD cbClrContent = 0; // Длина содержимого после очистики BYTE * pbContent; DWORD cbContent = 0; BYTE * pbCert; // Указатель на сертификат ФСС DWORD cbCert = 0; // длина блока памяти BYTE pbKeyBlob[MAX_PUBLICKEYBLOB_SIZE]; // Указатель на ключевой BLOB DWORD dwBlobLen = MAX_PUBLICKEYBLOB_SIZE; // Длина ключевого BLOBа BYTE pPublicKeyBlob[PUBKEY_LEN]; DWORD cbPublicKeyBlob; BYTE *pbKeyBlobSimple = NULL; // Указатель на сессионный ключевой BLOB DWORD cbBlobLenSimple; // Длина сессионного ключевого BLOBа BYTE pbIV[IV_LEN]; // Вектор инициализации сессионного ключа DWORD dwIV = IV_LEN; // Длина вектора инициализации DWORD keyParam = CRYPT_MODE_CBC; DWORD paddingMode = ISO10126_PADDING; //cpm_ISO10126 ALG_ID ke_alg = CALG_PRO_EXPORT /*CALG_PRO12_EXPORT*/; // алгоритм ключа согласования CRYPT_SIMPLEBLOB_HEADER tSimpleBlobHeaderStandart; //неменяемая часть блоба BYTE pbEncryptionParamSetStandart[ENCPARAMSET_LEN] = {0x30, 0x0B, 6, 9, 0x2A, 0x85, 3, 7, 1, 2, 5, 1, 1 }; // OBJECT IDENTIFIER 1.2.643.7.1.2.5.1.1 tc26CipherZ (TC26 params Z for GOST 28147-89) DWORD cbEncryptionParamSetStandart = ENCPARAMSET_LEN; //длина неменяемой части блоба PCCERT_CONTEXT pCertContext = NULL; DWORD dwBytesRead; DWORD i, pos_Cert1, pos_Cert2, pos_EncP1, pos_EncP2, pos_Enc1, pos_Enc2; BYTE * pbBufferB64; DWORD cbBufferB64; tSimpleBlobHeaderStandart.BlobHeader.aiKeyAlg = CALG_G28147; tSimpleBlobHeaderStandart.BlobHeader.bType = SIMPLEBLOB; tSimpleBlobHeaderStandart.BlobHeader.bVersion = BLOB_VERSION; tSimpleBlobHeaderStandart.BlobHeader.reserved = 0; tSimpleBlobHeaderStandart.EncryptKeyAlgId = CALG_G28147; tSimpleBlobHeaderStandart.Magic = G28147_MAGIC; if(argc < 4) { printf("Decryption tool for FSS ELN service.nver 0.01, IbZ(c) Studio (tm) :)n" ); printf("ntusing: %s <container_name> <encrypted_xml> <output.xml>nn", argv[0]); HandleError( "Not enough input parameters given" ); } // Открытие файла, в котором хранится зашифрованный ответ FSS. if(!(fhEncrypt = fopen(argv[2], "r+b" ))) HandleError( "Problem opening the file with encrypted xmln" ); #ifdef DEBUG_OUT printf( "01. The file '%s' was openedn", argv[2] ); #endif fseek(fhEncrypt, 0, SEEK_END); cbEncrypt = sizeof(char)*ftell(fhEncrypt); rewind(fhEncrypt); // Выделяем память для чтения файла целиком и читаем его в эту область pbEncrypt = (BYTE*)malloc(cbEncrypt); if (pbEncrypt == NULL) HandleError("Out of memory. n"); dwBytesRead = (DWORD)fread(pbEncrypt, 1, cbEncrypt, fhEncrypt); if (dwBytesRead != cbEncrypt) HandleError("The Encrypted file can not be reading from the 'EncryptionParam.bin'n"); #ifdef DEBUG_OUT printf( "02. The file '%s' was readed, size = %d butesn", argv[2], dwBytesRead ); #endif // Убираем разрывы строк, пробелы и другие спецсимволы - поля же файле е закодированы в base64, чтобы потом легчо было пропарсить pbClrContent = (BYTE*)malloc(cbEncrypt); if (pbClrContent == NULL) HandleError("Out of memory. n"); for(i=0; i<strlen(pbEncrypt); i++) { // if( ! ( (pbEncrypt[i] = 13) or (pbEncrypt[i] = 10) or (pbEncrypt[i] = 32) pbEncrypt[i] = 9) ) if((pbEncrypt[i] >32)&&(pbEncrypt[i]<127)) pbClrContent[cbClrContent++] = pbEncrypt[i]; } #ifdef DEBUG_OUT printf( "tClear size = %d bytesn", cbClrContent ); #endif // Находим позиции сертификата FSS pbContent = (char *)strstr(pbClrContent, SearchStr1); if ( pbContent == NULL) HandleError("Not found Encoding parameters structuren"); pos_Cert1 = pbContent-pbClrContent+1+strlen(SearchStr1); pbContent = (char *)strstr(pbClrContent, SearchStr2); if ( pbContent == NULL) HandleError("Not found End of Certificaten"); pos_Cert2 = pbContent-pbClrContent+1; #ifdef DEBUG_OUT printf ("03. Found Certificate at positions %d - %dn",pos_Cert1, pos_Cert2); #endif // Копируем сертификат в pbCert pbCert = base64_decode(&pbClrContent[pos_Cert1-1], pos_Cert2-pos_Cert1, &cbCert); #ifdef DEBUG_OUT // Для отладки пишем сертификат в файл. if(!(fhCertB64 = fopen("certificate.txt", "w+b" ))) HandleError( "Problem opening the file 'certificate.txt'n" ); printf( "tThe file 'certificate.txt' was openedn" ); if(!fwrite( &pbClrContent[pos_Cert1-1], 1, pos_Cert2-pos_Cert1, fhCertB64)) HandleError( "The content can not be written to the 'certificate.txt'n" ); printf( "tThe content was written to the 'certificate.txt'n" ); if(!(fhCert = fopen("certificate.bin", "w+b" ))) HandleError( "Problem opening the file 'certificate.bin'n" ); printf( "tThe file 'certificate.bin' was openedn" ); if(!fwrite( pbCert, 1, cbCert, fhCert)) HandleError( "The content can not be written to the 'certificate.bin'n" ); printf( "tThe content was written to the 'certificate.bin'n" ); #endif // Находим позиции параметров шифрования pbContent = (char *)strstr(pbClrContent, SearchStr2); if ( pbContent == NULL) HandleError("Not found Encoding parametersn"); pos_EncP1 = pbContent-pbClrContent+1+strlen(SearchStr2); pbContent = (char *)strstr(pbClrContent, SearchStr3); if ( pbContent == NULL) HandleError("Not found End of Encoding parameters structuren"); pos_EncP2 = pbContent-pbClrContent+1; #ifdef DEBUG_OUT printf ("04. Found Encoding parameters at positions %d - %dn",pos_EncP1, pos_EncP2); #endif pbBufferB64 = base64_decode(&pbClrContent[pos_EncP1-1], pos_EncP2-pos_EncP1, &cbBufferB64); //----------------------------------------------- // Готовим блоб структуру //----------------------------------------------- cbBlobLenSimple = cbEncryptionParamSetStandart + sizeof(CRYPT_SIMPLEBLOB_HEADER) + SEANCE_VECTOR_LEN + G28147_KEYLEN + EXPORT_IMIT_SIZE; pbKeyBlobSimple = malloc(cbBlobLenSimple); if(!pbKeyBlobSimple) HandleError("Out of memory. n"); //копируем неменяемый хедер в блобе memcpy(&((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->tSimpleBlobHeader, &tSimpleBlobHeaderStandart, sizeof(CRYPT_SIMPLEBLOB_HEADER)); //копируем неменяемую ASN структуру memcpy(&((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bEncryptionParamSet, pbEncryptionParamSetStandart, cbEncryptionParamSetStandart); // копируем session_SV memcpy(&((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bSV, &pbBufferB64[SV_OFFSET], SEANCE_VECTOR_LEN); // копируем session_EncryptedKey memcpy(&((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bEncryptedKey, &pbBufferB64[ENCRKEY_OFFSET], G28147_KEYLEN); // копируем session_MacKey memcpy(&((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bMacKey, &pbBufferB64[MACKEY_OFFSET], EXPORT_IMIT_SIZE); #ifdef DEBUG_OUT if(!(fhMacKey = fopen("bMacKey.txt", "w+b" ))) HandleError( "Problem opening the file 'bMacKey.txt'n" ); printf( "tThe file 'bMacKey.txt' was openedn" ); if(!fwrite( ((CRYPT_SIMPLEBLOB*)pbKeyBlobSimple)->bMacKey, 1, EXPORT_IMIT_SIZE, fhMacKey)) HandleError( "The content can not be written to the 'bMacKey.txt'n" ); printf( "tThe content was written to the 'bMacKey.txt'n"); printf( "tt%d bytes of tSimpleBlobHeader n" "tt%d bytes of bEncryptionParamSetn" "tt%d bytes of bSVn" "tt%d bytes of bEncryptedKeyn" "tt%d bytes of bMacKeyn" "tt%d bytes of total copiedn", sizeof(CRYPT_SIMPLEBLOB_HEADER),cbEncryptionParamSetStandart,SEANCE_VECTOR_LEN,G28147_KEYLEN,EXPORT_IMIT_SIZE, cbBlobLenSimple ); if(!(fhKeyBlobSimple = fopen("pbKeyBlobSimple.txt", "w+b" ))) HandleError( "Problem opening the file 'pbKeyBlobSimple.txt'n" ); printf( "tThe file 'pbKeyBlobSimple.txt' was openedn" ); if(!fwrite( pbKeyBlobSimple, 1, cbBlobLenSimple, fhKeyBlobSimple)) HandleError( "The content can not be written to the 'pbKeyBlobSimple.txt'n" ); printf( "tThe content was written to the 'pbKeyBlobSimple.txt'n" ); #endif memcpy(&pPublicKeyBlob, &pbBufferB64[PUBKEY_OFFSET], PUBKEY_LEN); #ifdef DEBUG_OUT // для отладки пишем в файл. if(!(fhKeyBlob = fopen("pbKeyBlob.txt", "w+b" ))) HandleError( "Problem opening the file 'pbKeyBlob.txt'n" ); printf( "tThe file 'pbKeyBlob.txt' was openedn" ); if(!fwrite( pPublicKeyBlob, 1, PUBKEY_LEN, fhKeyBlob)) HandleError( "The content can not be written to the 'pbKeyBlob.txt'n" ); printf( "tThe content was written to the 'pbKeyBlob.txt'n"); if(!(fhEncodingParametersB64 = fopen("encoding_parameters.txt", "w+b" ))) HandleError( "Problem opening the file 'encoding_parameters.txt'n" ); printf( "tThe file 'encoding_parameters.txt' was openedn" ); if(!fwrite( &pbClrContent[pos_EncP1-1], 1, pos_EncP2-pos_EncP1, fhEncodingParametersB64)) HandleError( "The content can not be written to the 'encoding_parameters.txt'n" ); printf( "tThe content was written to the 'encoding_parameters.txt'n" ); if(!(fhEncodingParameters = fopen("encoding_parameters.bin", "w+b" ))) HandleError( "Problem opening the file 'encoding_parameters.bin'n" ); printf( "tThe file 'encoding_parameters.bin' was openedn" ); if(!fwrite( pbBufferB64, 1, cbBufferB64, fhEncodingParameters)) HandleError( "The content can not be written to the 'encoding_parameters.bin'n" ); printf( "tThe content was written to the 'encoding_parameters.bin'n" ); #endif // Находим основное зашифрованое содержимое pbContent = (char *)strstr(pbClrContent, SearchStr3); if ( pbContent == NULL ) HandleError("Not found Encoded contentn"); pos_Enc1 = pbContent-pbClrContent+1+strlen(SearchStr3); pbContent = (char *)strstr(pbClrContent, SearchStr4); if ( pbContent == NULL ) HandleError("Not found End of encoded contentn"); pos_Enc2 = pbContent-pbClrContent+1; #ifdef DEBUG_OUT printf ("05. Found Encoded content at positions %d - %dn",pos_Enc1, pos_Enc2); #endif // В pbBufferB64 - первые 8 байт будут вектор инициализации, затем само зашифрованное содержимое pbBufferB64 = base64_decode(&pbClrContent[pos_Enc1-1], pos_Enc2-pos_Enc1, &cbBufferB64); #ifdef DEBUG_OUT // для отладки пишем в файл. if(!(fhEncodedContentB64 = fopen("encoded_content.txt", "w+b" ))) HandleError( "Problem opening the file 'encoded_content.txt'n" ); printf( "tThe file 'encoded_content.txt' was openedn" ); if(!fwrite( &pbClrContent[pos_Enc1-1], 1, pos_Enc2-pos_Enc1, fhEncodedContentB64)) HandleError( "The content can not be written to the 'encoded_content.txt'n" ); printf( "tThe content was written to the 'encoded_content.txt'n" ); if(!(fhEncodedContent = fopen("encoded_content.bin", "w+b" ))) HandleError( "Problem opening the file 'encoded_content.bin'n" ); printf( "tThe file 'encoded_content.bin' was openedn" ); if(!fwrite( pbBufferB64, 1, cbBufferB64, fhEncodedContent)) HandleError( "The content can not be written to the 'encoded_content.bin'n" ); printf( "tThe content was written to the 'encoded_content.bin'n" ); #endif // Чтение вектора инициализации из файла. memcpy(pbIV, pbBufferB64, dwIV); pbContent = &pbBufferB64[dwIV]; cbContent = cbBufferB64-dwIV; // ------------------------------------------------------------------ // Закончили чтение файла и подготовку структур - начинаем дешифровку // ------------------------------------------------------------------ if(!CryptAcquireContext( &hProv, argv[1], NULL, PROV_GOST_2012_256, 0)) HandleError("Error during CryptAcquireContext."); #ifdef DEBUG_OUT printf("06. The key container "%s" has been acquired. n", argv[1]); #endif // Загрузка PUBLICKEYBLOB из сертификата, открытие файла, в котором содержится открытый ключ получателя. pCertContext = CertCreateCertificateContext ( X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, pbCert, cbCert); if (!pCertContext) HandleError( "CertCreateCertificateContext" ); #ifdef DEBUG_OUT printf("07. Certificate context createdn"); #endif // Импортируем открытый ключ if (!CryptImportPublicKeyInfoEx( hProv, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, &(pCertContext->pCertInfo->SubjectPublicKeyInfo), 0, 0, NULL, &hPubKey)) HandleError( "CryptImportPublicKeyInfoEx" ); #ifdef DEBUG_OUT printf("08. Public key imported from cert filen"); #endif // экспорт открытого ключа получателя в BLOB if (!CryptExportKey( hPubKey, 0, PUBLICKEYBLOB, 0, pbKeyBlob, &dwBlobLen)) HandleError( "CryptExportKey" ); #ifdef DEBUG_OUT printf("09. Public key exported to blobn"); #endif memcpy(&pbKeyBlob[dwBlobLen-PUBKEY_LEN], pPublicKeyBlob, PUBKEY_LEN); // получение закрытого ключа if(!CryptGetUserKey( hProv, AT_KEYEXCHANGE, &hKey)) HandleError("Error during CryptGetUserKey private key."); #ifdef DEBUG_OUT printf("10. The private key has been acquired. n"); #endif //получение ключа согласования импортом открытого ключа отправителя на закрытом ключе if(!CryptImportKey(hProv, pbKeyBlob, dwBlobLen, hKey, 0, &hAgreeKey)) HandleError("Error during CryptImportKey public key."); #ifdef DEBUG_OUT printf("11. The sender public key has been imported. n"); #endif // установление PRO_EXPORT алгоритма ключа согласования ---не PRO12_EXPORT ! if(!CryptSetKeyParam( hAgreeKey, KP_ALGID, (LPBYTE)&ke_alg, 0)) HandleError("Error during CryptSetKeyParam agree key."); #ifdef DEBUG_OUT printf("12. PRO_EXPORT agree key algorithm has been set. n"); #endif // Получение сессионного ключа импортом зашифрованного сессионного ключа на ключе согласования Agree. if(!CryptImportKey( hProv, pbKeyBlobSimple, cbBlobLenSimple, hAgreeKey, 0, &hSessionKey)) HandleError("Error during CryptImportKey session key."); #ifdef DEBUG_OUT printf("13. The session key has been imported. n"); #endif // Установка вектора инициализации - без него первые 8 байт расшифруются неправильно. if(!CryptSetKeyParam( hSessionKey, KP_IV, pbIV, 0)) HandleError("Error during CryptSetKeyParam."); #ifdef DEBUG_OUT printf("14. CryptSetKeyParam setting IV succeeded. n"); #endif // установка режима шифрования CBC if(!CryptSetKeyParam( hSessionKey, KP_MODE, (LPBYTE)&keyParam, 0)) HandleError("Error during CryptSetKeyParam."); #ifdef DEBUG_OUT printf("15. CryptSetKeyParam setting CBC mode succeeded. n"); #endif // установка режима паддинга if(!CryptSetKeyParam( hSessionKey, KP_PADDING, (LPBYTE)&paddingMode, 0)) HandleError("Error during CryptSetKeyParam."); #ifdef DEBUG_OUT printf("16. CryptSetKeyParam setting ISO10126 padding succeeded. n"); #endif #ifdef DEBUG_OUT if(!(fhContent = fopen("content.bin", "w+b" ))) HandleError( "Problem opening the file 'content.bin'n" ); printf( "tThe file 'content.bin' was openedn" ); if(!fwrite( pbContent, 1, cbContent, fhContent)) HandleError( "The content can not be written to the 'content.bin'n" ); printf( "tThe content was written to the 'content.bin', size = %dn", cbContent ); #endif // Дешифрование зашифрованного базового SOAP-запроса, после которого в // decryptedData будет содержать дешифрованные данные, // а decryptedDataLen - длину расшифрованных данных if(!CryptDecrypt( hSessionKey, 0, TRUE, 0, pbContent, &cbContent)) HandleError("Decryption failed."); #ifdef DEBUG_OUT printf("17. Decryption succeeded. n"); #endif // Запись расшифрованного блока в файл. if(!(fhOutput = fopen(argv[3], "w+b" ))) HandleError( "Problem opening the file for encoded xmln" ); #ifdef DEBUG_OUT printf( "tThe file '%s' was openedn", argv[3] ); #endif if(!fwrite( pbContent, 1, cbContent, fhOutput)) HandleError( "The decrypted content can not be written 'n" ); #ifdef DEBUG_OUT printf( "18. The decrypted content was written to the '%s'n", argv[3] ); #endif CleanUp(); #ifdef DEBUG_OUT printf("The program ran to completion without error. n"); #endif return 0; } void CleanUp(void) { if(fhEncrypt) fclose (fhEncrypt); if(fhOutput) fclose (fhOutput); #ifdef DEBUG_OUT if(fhCert) fclose (fhCert); if(fhCertB64) fclose (fhCertB64); if(fhMacKey) fclose (fhMacKey); if(fhKeyBlobSimple) fclose (fhKeyBlobSimple); if(fhKeyBlob) fclose (fhKeyBlob); if(fhEncodingParametersB64) fclose (fhEncodingParametersB64); if(fhEncodingParameters) fclose (fhEncodingParameters); if(fhEncodedContentB64) fclose (fhEncodedContentB64); if(fhEncodedContent) fclose (fhEncodedContent); if(fhContent) fclose (fhContent); #endif if(hKey) CryptDestroyKey(hKey); // Уничтожение дескриптора закрытого ключа. if(hSessionKey) CryptDestroyKey(hSessionKey); // Уничтожение дескриптора сессионного ключа. if(hAgreeKey) CryptDestroyKey(hAgreeKey); // Уничтожение дескриптора ключа согласования. if(hProv) CryptReleaseContext(hProv, 0); // Освобождение дескриптора провайдера. } BYTE *base64_decode(const BYTE *data, DWORD input_length, DWORD *output_length) { int i, j; DWORD sextet_a, sextet_b, sextet_c, sextet_d, triple; if (decoding_table == NULL) build_decoding_table(); if (input_length % 4 != 0) return NULL; *output_length = input_length / 4 * 3; if (data[input_length - 1] == '=') (*output_length)--; if (data[input_length - 2] == '=') (*output_length)--; BYTE *decoded_data = malloc(*output_length); if (decoded_data == NULL) return NULL; for (i = 0, j = 0; i < input_length;) { sextet_a = data[i] == '=' ? 0 & i++ : decoding_table[data[i++]]; sextet_b = data[i] == '=' ? 0 & i++ : decoding_table[data[i++]]; sextet_c = data[i] == '=' ? 0 & i++ : decoding_table[data[i++]]; sextet_d = data[i] == '=' ? 0 & i++ : decoding_table[data[i++]]; triple = (sextet_a << 3 * 6) + (sextet_b << 2 * 6) + (sextet_c << 1 * 6) + (sextet_d << 0 * 6); if (j < *output_length) decoded_data[j++] = (triple >> 2 * 8) & 0xFF; if (j < *output_length) decoded_data[j++] = (triple >> 1 * 8) & 0xFF; if (j < *output_length) decoded_data[j++] = (triple >> 0 * 8) & 0xFF; } return decoded_data; } void build_decoding_table() { int i; decoding_table = malloc(256); for (i = 0; i < 64; i++) decoding_table[(BYTE) encoding_table[i]] = i; } //-------------------------------------------------------------------- // В этом примере используется функция HandleError, функция обработки // простых ошибок, для печати сообщения и выхода из программы. // В большинстве приложений эта функция заменяется другой функцией, // которая выводит более полное сообщение об ошибке. void HandleError(char *s) { DWORD err = GetLastError(); printf("Error number : 0x%xn", err); printf("Error description: %sn", s); CleanUp(); if(!err) err = 1; exit(err); }