     [file defs.ru.inc not included]

Вызов SCDAEMON
**************

scdaemon.ru.1

ВЫЗОВ

ОПИСАНИЕ
Программа scdaemon представляет демон (программу фонового режима) для управления электронными картами. Обычно он вызывается программой gpg-agent и напрямую не применяется.

Указатель параметров содержит список команд и параметров scdaemon.

КОМАНДЫ

Команды
=======

Команды отличаются от параметров только тем, что в вызове допустима только одна команда (если в описании команды не указано иное).

--version
     Вывести версию программы и лицензионные сведения. Эту команду нельзя сокращать (напр., как --versio).

--help, -h
     Вывести подсказку по наиболее полезным параметрам командной строки. Эту команду нельзя сокращать (напр., как --hel).

--dump-options
     Вывести список всех имеющихся параметров и команд. Эту команду нельзя сокращать (напр., как --dump-option).

--server
     Работать в режиме сервера, ожидая команды со стандартного потока ввода. В исходном режиме создается сокет и команды читаются оттуда.

--multi-server
     Работать в режиме сервера, ожидая команды по стандартному потоку ввода, а также по дополнительному сокету домена Unix. Для получения имени этого сокета можно воспользоваться командой GETINFO.

--daemon
     Выполняться в фоновом режиме. Этот параметр требуется, чтобы предотвратить непреднамеренный перевод в фоновый режим.

ПАРАМЕТРЫ

Сводка параметров
=================

--options ФАЙЛ
     Читает настройки из заданного файла вместо исходного файла настроек пользователя. Исходный файл настроек под названием scdaemon.conf находится в каталоге .gnupg, который находится непосредственно в домашнем каталоге пользователя.

          [file opt-homedir.ru.texi not included]

-v

--verbose
     Выводит во время работы дополнительную информацию. Объем информации можно увеличивать, вводя параметр несколько раз, например, -vv.

--debug-level УРОВЕНЬ
     Выбрать уровень отладки для исследования проблем. Аргумент может быть числом либо ключевым словом:

     none
          Никаких отладочных сообщений. Соответствует значениям, меньшим 1.

     basic
          Некоторые простые отладочные сообщения. Соответствует значениям от 1 до 2.

     advanced
          Более подробные отладочные сообщения. Соответствует значениям от 3 до 5.

     expert
          Еще более подробные сообщения. Соответствует значениям от 6 до 8.

     guru
          Все отладочные сообщения, какие только есть. Соответствует значениям, большим 8.

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

          Все отладочные параметры могут изменяться и, таким образом, не должны применяться ни в каких прикладных программах. Как подсказывает название, они применяются, только как подспорье в отладке.

--debug ПРИЗНАКИ
     Этот параметр полезен только для отладки, его значение может меняться в любое время без объявления. Признаки кодируются по битам и задаются обычным синтаксисом Си. В настоящее время определены биты:

     0  (1)
          ввод-вывод команд

     1  (2)
          значения длинных чисел

     2  (4)
          криптографические операции низкого уровня

     5  (32)
          выделение памяти

     6  (64)
          буферизация

     7  (128)
          показывать статистику памяти

     9  (512)
          записывать хешируемые данные в файлы с именами dbgmd-000*

     10 (1024)
          отслеживать протокол Assuan. См. также параметр --debug-assuan-log-cats.

     11 (2048)
          отслеживать ввод-вывод единиц данных на карте. Это может раскрыть важные данные.

     12 (4096)
          отслеживать вызовы некоторых функций, связанных с устройством чтения карты.

--debug-all
     То же, что --debug=0xffffffff

--debug-wait N
     При работе в серверном режиме подождать указанное число секунд перед входом в цикл обработки и выводить идентификатор процесса. За это время можно подключить отладчик.

--debug-ccid-driver
     Включить отладочный вывод из собственного драйвера CCID для электронных карт. Если параметр задан дважды, включается также некоторое отслеживание протокола T=1. Обратите внимание, что этот параметр может раскрыть важные данные.

--debug-disable-ticker
     Этот параметр выключает все периодические функции, такие как поиск новых карт.

--debug-allow-core-dump
     По соображениям безопасности мы не выводим дамп памяти. В целях отладки иногда лучше это позволить. Этот параметр включает вывод дампа, а также меняет рабочий каталог на /tmp при работе в режиме --server.

--debug-log-tid
     Добавляет идентификаторы процесса и потока управления в протокол работы.

--debug-assuan-log-cats КАТЕГОРИИ
     Изменяет действующие категории протоколирования Libassuan. Значение аргумента представляет целое без знака в обычном синтаксисе Си. Значение 0 переключает на исходную категорию. Если параметр не задан, категории берутся из переменной среды ASSUAN_DEBUG. Обратите внимание, что этот параметр действует, только если параметром --debug был установлен признак отладки Assuan. Список категорий см. в руководстве по Libassuan.

--no-detach
     Не отрывать процесс от консоли. Это полезно главным образом для отладки.

--log-file ФАЙЛ
     Дописывать весь протокол работы в указанный файл. Это очень полезно, когда нужно понять, что же делает программа. Укажите socket://, если нужно протоколировать в сокет.

--pcsc-driver БИБЛИОТЕКА
     Использовать указанную библиотеку для доступа к устройству чтения электронных карт. В настоящее время исходное значение равно libpcsclite.so. Вместо этого параметра можно создать символическую ссылку на исходное имя файла (напр., из libpcsclite.so.1).

--ctapi-driver БИБЛИОТЕКА
     Использовать указанную библиотеку для доступа к устройству чтения электронных карт. В настоящее время исходное значение равно libtowitoko.so. Обратите внимание, что этот интерфейс не рекомендован к употреблению; в будущих выпусках GnuPG он может быть удален.

--disable-ccid
     Выключить интегрированную поддержку устройств чтения, совместимых с CCID. Это позволяет использовать в качестве запасного варианта один из других драйверов, даже если внутренний драйвер CCID может работать с устройством чтения. Обратите внимание, что поддержка CCID есть, только если libusb присутствовала во время компиляции.

--reader-port ЧИСЛО ИЛИ СТРОКА
     Этим параметром можно задавать порт терминала карты. Число 0 указывает на первое последовательное устройство; добавьте 32768 для устройств USB. Исходное значение равно 32768 (первое устройство USB). Для устройств чтения PC/SC или CCID здесь может потребоваться строка; чтобы получить список имеющихся устройств чтения, запустите программу с параметром --verbose. Тогда исходное значение соответствует первому найденному устройству чтения.

     Получить список имеющихся устройств чтения CCID можно такой командой:

            echo scd getinfo reader_list \
              | gpg-connect-agent --decode | awk '/^D/ {print $2}'

--card-timeout N
     Если аргумент не равен 0 и никакая программа-клиент активно не пользуется картой, через указанное количество секунд с карты снимается питание. Это предотвращает потенциальный риск повреждения карты в определенных дешевых устройствах чтения. Это позволяет также приложениям, которым неизвестно о scdaemon, получить доступ к карте. Недостаток такого выключения состоит в том, что доступ к карте замедляется и что пользователю нужно заново вводить пароль после следующего включения.

     Обратите внимание, что в текущей версии scdaemon карта выключается немедленно на следующем цикле таймера при любом значении аргумента, отличном от 0.

--enable-pinpad-varlen
     Указывайте этот параметр, пожалуйста, когда устройство чтения карт поддерживает ввод данных переменной длины с кнопок для ввода пароля (по умолчанию не поддерживает). Для известных устройств чтения (перечисленных в ccid-driver.c и adpu.c) этот параметр не нужен. Обратите внимание, что если ваше устройство чтения карт не поддерживает ввод данных переменной длины, но вы хотите этим пользоваться, вам нужно указать запрос к набору кнопок на вашей карте.

--disable-pinpad
     Даже если в устройстве чтения карт есть кнопки ввода пароля, не пытаться ими пользоваться.

--deny-admin
     Этот параметр отключает у приложений электронных карт команды административного класса, когда это поддерживается. В настоящее время мы поддерживаем это для карт OpenPGP. Этот параметр полезен, чтобы предотвратить случайный доступ к команде административного класса, которая могла бы заблокировать карту с помощью неверных значений пароля. Обратите внимание, что в версиях GnuPG старше 2.0.11 был параметр --allow-admin, который требовался для таких административных команд. Сейчас этот параметр больше не действует, потому что административные команды по умолчанию допускаются.

--disable-application НАЗВАНИЕ
     Этот параметр отключает указанное приложение карты. Это полезно главным образом для отладки или когда по умолчанию должно применяться приложение с более низким приоритетом.

Все длинные параметры можно размещать также в файле настроек, удалив начальные символы «--».

ПРИЛОЖЕНИЯ КАРТЫ

Описание приложений карт
========================

scdaemon поддерживает описанные ниже приложения карт.

Приложение карты OpenPGP «openpgp»
----------------------------------

Это приложение в настоящее время применяется только программой gpg, но в будущем может быть полезно с gpgsm. Поддерживаются версии карты 1 и 2.

Спецификации этих карт можно взять в

http://g10code.com/docs/openpgp-card-1.0.pdf и

http://g10code.com/docs/openpgp-card-2.0.pdf.

Карта Telesec NetKey «nks»
--------------------------

Это главное приложение карт Telesec, доступных в Германии. Это надмножество немецких карт DINSIG. Карта применяется в gpgsm.

Карта DINSIG «dinsig»
---------------------

Это приложение, описанное в предварительном немецком стандарте DIN V 66291-1. Оно предназначено для карт, поддерживающих немецкий закон о подписи, а также его подзаконные акты (SigG и SigV).

Приложение карты PKCS#15 «p15»
------------------------------

Это общий каркас для приложений электронных карт. Он применяется в gpgsm.

Приложение карты Geldkarte «geldkarte»
--------------------------------------

Простое приложение для отображения информации с немецкой Geldkarte. Geldkarte представляет приложение карты для небольших дебетовых счетов, которое присутствует почти на всех немецких банковских картах.

Приложение карты SmartCard-HSM «sc-hsm»
---------------------------------------

Это приложение подключает поддержку чтения (без возможности записи) ключей и сертификатов, хранящихся на SmartCard-HSM (http://www.smartcard-hsm.com).

Для создания и хранения сертификатов можно воспользоваться OpenSC (https://github.com/OpenSC/OpenSC/wiki/SmartCardHSM) или средствами OpenSCDP (http://www.openscdp.org).

Карты SmartCard-HSM требуют устройства чтения, которое поддерживает единицы данных повышенной длины.

Приложение неопределенной карты «undefined»
-------------------------------------------

Это приложение-заглушка, которая позволяет пользоваться командами протокола, даже если на карте не найдены никакие из поддерживаемых приложений. Автоматически это приложение не используется, его нужно запрашивать явным образом с помощью команды SERIALNO.

ФАЙЛЫ

Файлы настроек
==============

Есть несколько файлов настроек для управления определенными аспектами работы scdaemon. Если специально не оговорено, они располагаются в текущем домашнем каталоге (see параметр --homedir).

scdaemon.conf
     Это обычный файл настроек, который gpgsm читает при запуске. В нем могут быть только допустимые длинные параметры; символов «--» перед названием параметра быть не должно, сокращать параметры нельзя. Это исходное имя файла можно изменить в командной строке (see параметр --options).

scd-event
     Если этот файл существует и может выполняться, он вызывается при каждом изменении состояния устройства чтения карты. Пример такого сценария есть в дистрибутиве.

reader_N.status
     Этот файл создается программой scdaemon, чтобы уведомлять другие приложения об изменениях состояния устройств чтения карт. В настоящее время вместо него рекомендуется применять scd-event.

ПРИМЕРЫ

Примеры
=======

     $ scdaemon --server -v

Протокол Assuan Scdaemon
========================

Программа scdaemon должна запускаться системой для обеспечения доступа к электронным картам. На многопользовательской системе пользоваться электронными картами есть смысл только для системных служб, но в этом случае учетные записи обычных пользователей на машине не ведутся.

Программа-клиент подключается к scdaemon по сокету с именем LOCALRUNDIR/scdaemon/socket, информация о настройках считывается из SYSCONFDIR/SCDAEMON.CONF

Каждое подключение работает как один сеанс, scdaemon обеспечивает синхронизацию доступа к электронной карте между сеансами.

Вернуть серийный номер
----------------------

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

Пояснение: мы хотим, чтобы в программе-клиенте смена карт между операциями не обрабатывалась; т.е. она может считать, что все операции проводятся с одной и той же картой, если не вызывается эта функция.

       SERIALNO

Вернуть серийный номер карты в ответе вида:

       S SERIALNO D27600000000000000000000

Серийный номер представляет шестнадцатеричное число, на которое указывает метка 0x5A в файле GDO (FIX=0x2F02).

Считать с карты всю полезную информацию
---------------------------------------

       LEARN [--force]

Считать всю полезную информацию со вставленной в настоящий момент карты. Если команда отдана без параметра --force, программа может выдать запрос вида:

           INQUIRE KNOWNCARDP <шестнадцатеричный серийный номер>

Программа-клиент должна отослать END, если обработку нужно проводить, или CANCEL, чтобы принудительно завершить команду с сообщением об отмене. В ответ на эту команду выдается список строк состояния такого вида:

          S KEYPAIRINFO КОД КЛЮЧА ШЕСТНАДЦАТЕРИЧНЫЙ ИДЕНТИФИКАТОР

Если на карте пока не хранится ни одного сертификата, на месте кода ключа возвращается одиночный символ «X».

Вернуть сертификат
------------------

      READCERT ШЕСТНАДЦАТЕРИЧНЫЙ ИДЕНТИФИКАТОР СЕРТИФИКАТА|ИДЕНТИФИКАТОР КЛЮЧА

Эта функция предназначена для чтения с карты указанного сертификата. Для чтения с карт OpenPGP версии 2 можно пользоваться идентификатором ключа OpenPGP.3.

Вернуть открытый ключ
---------------------

     READKEY ШЕСТНАДЦАТЕРИЧНЫЙ ИДЕНТИФИКАТОР СЕРТИФИКАТА

Вернуть открытый ключ данного сертификата или идентификатора ключа в виде S-выражения.

Подпись данных с помощью электронной карты
------------------------------------------

Для подписи данных нужно передать их в scdaemon командой

      SETDATA ШЕСТНАДЦАТЕРИЧНАЯ СТРОКА

Данные передаются в шестнадцатеричном виде. Сама подпись осуществляется командой

       PKSIGN ИДЕНТИФИКАТОР КЛЮЧА

Здесь ИДЕНТИФИКАТОР КЛЮЧА дается в шестнадцатеричном виде. Идентификаторы можно получить командой LEARN. Если используется не SHA-1, алгоритм задается параметром --hash:

       PKSIGN --hash=АЛГОРИТМ ИДЕНТИФИКАТОР КЛЮЧА

В качестве аргумента могут быть строки sha1, rmd160 и md5.

Расшифровка данных с помощью электронной карты
----------------------------------------------

Данные для расшифровки передаются в scdaemon командой

      SETDATA ШЕСТНАДЦАТЕРИЧНАЯ СТРОКА

Данные представляются в шестнадцатеричной записи. Сама расшифровка осуществляется командой

       PKDECRYPT ИДЕНТИФИКАТОР КЛЮЧА

Здесь ИДЕНТИФИКАТОР КЛЮЧА дается в шестнадцатеричном виде.

Если карта может работать с заполнениями, перед расшифрованными данными посылается строка состояния с информацией о заполнении. Эта строка состояния содержит ключевое слово PADDING с единственным определенным значением, равным 0, которое указывает на то, что заполняющие символы удалены.

Прочесть значение атрибута
--------------------------

ПРОДОЛЖЕНИЕ СЛЕДУЕТ.

Обновить значение атрибута
--------------------------

ПРОДОЛЖЕНИЕ СЛЕДУЕТ.

Записать ключ на карту
----------------------

       WRITEKEY [--force] ИДЕНТИФИКАТОР КЛЮЧА

Эта команда предназначена для сохранения секретного ключа на электронной карте. Допустимые идентификаторы ключа зависят от выбранного в данный момент приложения электронной карты. Сами данные ключа пересылаются по запросу KEYDATA и должны вводиться безо всякой защиты. Если задан параметр --force, новый ключ будет записывается поверх старого ключа с указанным идентификатором. Данные ключа должны быть в канонической кодировке S-выражения.

В большинстве случаев будет запрошен пароль. Однако это зависит от текущего приложения карты.

Создать на карте новый ключ
---------------------------

ПРОДОЛЖЕНИЕ СЛЕДУЕТ.

Вернуть случайные байты, сгенерированные на карте
-------------------------------------------------

ПРОДОЛЖЕНИЕ СЛЕДУЕТ.

Изменить пароли
---------------

        PASSWD [--reset] [--nullpin] НОМЕР ВЕКТОРА

Сменить пароль или сбросить счетчик попыток с указанного номера вектора проверок владельца карты. Параметром --nullpin инициализируются пароли карт TCOS (только с 6-байтным NullPIN).

Выполнить проверку
------------------

       CHECKPIN СТРОКА-ИДЕНТИФИКАТОР

Выполнить операцию проверки VERIFY, не делая ничего другого. Это можно использовать для инициализации буфера паролей перед длительными операциями. Команда сильно зависит от приложения:

OpenPGP

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

     Однако если строка-идентификатор содержит суффикс [CHV3], происходит переход в особый режим: в этом случае административный пароль проверяется, если и только если счетчик попыток остается равным 3.

Выполнить переподключение
-------------------------

       RESTART

Перезапустить текущее подключение; это своего рода теплый перезапуск. При этом удаляется контекст, использованный в текущем подключении, но сама карта не перезапускается.

Это применяется в gpg-agent для повторного использования первичного подключения по каналу ввода-вывода и может использоваться программами-клиентами для восстановления после конфликта в последовательной команде, т.е. для выбора другого приложения.

Отправить на карту единицу данных буквально
-------------------------------------------

       APDU [--atr] [--more] [--exlen[=N]] [ШЕСТНАДЦАТЕРИЧНАЯ СТРОКА]

Отправить в текущее устройство чтения карт единицу данных. Эта команда обходит функции высокого уровня и посылает данные в карту напрямую. Шестнадцатеричная строка должна представлять правильную единицу данных. Если строка не задана, команды на карту не отправляются; однако команда неявно проверяет, готова ли карта к использованию.

Если задан параметр --atr, перед любыми данными в качестве сообщения о состоянии карты возвращается ATR карты в виде:

          S CARD-ATR 3BFA1300FF813180450031C173C00100009000B1

С помощью параметра --more можно обрабатывать слово состояния карты MORE_DATA (61xx), связывая ответы в единый блок.

Если задан параметр --exlen, возвращаемые единицы данных могут удлиняться до N байт. Если N не задано, подразумевается исходное значение (в настоящее время 4096).

СМ. ТАКЖЕ
     [file see-also-note.ru.texi not included]