Я хочу написать d ++ c ++, который читает сертификат с моего USB-устройства и отправляет его в браузеры, такие как Firefox. И я должен упомянуть, что я собрал свое USB-устройство с ATMega32A, имеющим 2K EEPROM, и я сохранил на нем образец сертификата.
Я прочитал некоторые о стандарте PKCS # 11, но я не могу понять, с чего начать. Может ли кто-нибудь помочь мне в этом?
Вы не можете «добавить в Firefox», но вы можете открыть свои данные для Firefox и сделать их доступными для использования. Для этого вам нужно воплощать в жизнь PKCS # 11 API и создайте так называемый драйвер PKCS # 11 (DLL-библиотека пользовательского режима, которая реализует те 70 или около того функций, определенных в API PKCS # 11). Эти функции будут взаимодействовать с аппаратным устройством для выполнения определенных операций. Затем вы подключаете эту библиотеку PKCS # 11 к Firefox, и Firefox может использовать сертификаты на вашем устройстве.
Похоже, вы создаете аппаратное устройство PKI. Я думаю, что вашим самым большим препятствием будет доступ к ATMega32. Вам нужно реализовать интерфейс на стороне ATMega, будь то мост RS232-USB, USB Mass Storage или проприетарный с пользовательским драйвером.
Простым решением может быть использование интерфейса USB Mass Storage для представления сертификата в виде файла на псевдодиске.
Используя собственный маршрут драйвера, Firefox (и другие продукты Mozilla) используют библиотеки, которые имеют интерфейсы для аппаратного обеспечения PKI. Увидеть NSS а также OpenSC.
Возможно, вы можете реализовать API драйвера PKI / PKCS11 для Windows.
Шаг 1: напишите dll, которая может читать данные с USB-устройства. Вы могли бы использовать Winusb. Для этого потребуется прошивка для его поддержки.
Шаг 2: напишите dll, которая может добавить сертификат в Firefox
Шаг 3: объединить предыдущие шаги в одну DLL
Если вы застряли на чем-то конкретном, напишите новый вопрос и покажите нам, что вы уже сделали.