Забытый тег: KEYGEN

Реализация парсеров HTML различных браузеров содержит массу забытых тегов, о существовании которых помнят единицы, да и тем уже незачем их использовать. Один из таких тегов — KEYGEN, придуман, если не ошибаюсь, компанией Netscape для своего браузера (ещё до того как Netscape стал использовать Mozilla), содержит два атрибута — name и challenge и используется в составе форм (FORM).

Под Windows тег поддерживается всеми основными браузерами (с разным успехом) и не поддерживается альтернативным (вплоть по версии 8.0 beta2). В настоящий момент тег почти не используется. Прошло много лет и члены комитета WHATWG (основное детище который — куча браузеров и стандарт HTML5) вспомнили об этом теге.

Использование вкратце:

<form>
   <keygen name="pubkey" challenge="случайная строка">
   <input type="submit" value="Сгенерировать">
 </form>

Если ваш браузер поддерживает тег KEYGEN, вы увидите список из нескольких элементов, содержимое его зависит от браузера, но сводится к одному — длине ключа. При нажатии на кпопку отправки формы браузер сгенерирует пару ключей, публичный ключ (в формате SPKAC) будет отправлен на сервер (в поле, указанном в атрибуте «name» тега).

Сервер, получив сертификат, готовит специальный файл подписывает его и отсылает назад браузеру с заголовоком «application/x-x509-user-cert», вся процедура подробно описана в соответствующем письме из рассылки WHATWG.

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

4 комментария

Плагины Thunderbird

Два дня писал плагин к Thunderbird (почтовый клиент на Gecko), получил level up. Документация скудная, разбросана по куче сайтов, часто приходится читать XUL-исходники интерфейса Thunderbird. А я ещё ругал документацию на Python…

Не то, чтобы я сходу сейчас напишу любой плагин, но знаю как всё устроено, умею биндить пункты меню, обращаться к заголовкам (в т.ч. нестандартным), обращаться с панелью письма и умею делать ещё дюжину разных трюков. Не дошли пока руки разобраться с довольно простой вещью — как делать локализацию. Кажется всё достаточно просто, но пока не взлетело.

10 комментариев