Теперь доступно больше 16 считывателей
pcsc-lite и драйвер CCID больше не ограничены 16 считывателями. Обновлены версии pcsc-lite: 2.5.0 и libccid: 1.8.0.
pcsc-lite и драйвер CCID больше не ограничены 16 считывателями. Обновлены версии pcsc-lite: 2.5.0 и libccid: 1.8.0.
История
С момента выхода первой версии pcsc-lite в 2002 году максимальное количество считывателей было установлено на уровне 16. Эта цифра определяется константой PCSCLITE_MAX_READERS_CONTEXTS.
Из-за ограничения pcsc-lite на 16 считывателей также было очевидно, что количество устройств, поддерживаемых драйвером CCID, должно быть ограничено до 16. Это ограничение создавало проблемы для определенных сценариев использования. Хотя можно было изменить значение PCSCLITE_MAX_READERS_CONTEXTS и пересобрать как pcsc-lite, так и драйвер, это имело свои побочные эффекты. Дополнительную информацию можно найти в материалах о Fedora, flatpak и pcsc-lite.
Изменения
Запрос на изменение существовал как минимум с 2018 года. Можно ознакомиться с работами по ссылкам: https://salsa.debian.org/rousseau/CCID/-/work_items/4 и https://salsa.debian.org/rousseau/PCSC/-/work_items/4.
Я уже подсчитал, сколько оперативной памяти можно сэкономить, используя список вместо массива фиксированного размера:
Теперь вы можете использовать столько считывателей, сколько хотите.
На самом деле, существует лимит в 256 считывателей из-за схемы именования, используемой pcsc-lite для считывателей. Считыватели будут именоваться от 00 до FF. Дополнительную информацию можно найти в разделе "Что такое имя считывателя PC/SC?".
Обратная совместимость
В версии 2.4.1 pcsc-lite была введена возможность смешивания различных версий внутреннего протокола связи между демоном PC/SC (pcscd) и библиотекой PC/SC (libpcsclite). Смотрите информацию о совместимости pcsc-lite.
Чтобы устранить ограничение по количеству считывателей, мне пришлось снова обновить этот внутренний протокол связи. Однако я постарался сделать его умным, чтобы старая версия libpcsclite могла взаимодействовать с новой версией pcscd и наоборот. Приложение все равно будет распознавать только до 16 считывателей, но, по крайней мере, оно должно работать.
Заключение
Надеюсь, вы оцените это изменение:
- Меньше потребление оперативной памяти при использовании только 1 считывателя.
- Возможность использования более 16 считывателей.


