Инструменты
Шесть небольших вещей, которые пригодились по ходу работы над клиентом и оказались полезнее выложенными, чем оставленными у себя. Все работают целиком в вашем браузере, аккаунта не просят и ничем не ограничены.
Почему они работают в браузере
Все шесть принимают то, к чему люди справедливо относятся осторожно. Файл конфигурации называет ваши хосты, ваших пользователей и ваши промежуточные машины; публичный ключ на то и публичный, но приходит из того же каталога, что и приватный; файл .ppk — это приватный ключ; файл .rdp может нести сохранённый пароль. Ничему из этого нечего делать на чужом сервере ради работы, которая локально занимает мгновение.
Поэтому ни одна страница инструментов никуда не отправляет вставленное и ни одна не несёт счётчиков. В скриптах остальных пяти нет ни fetch, ни XMLHttpRequest, ни отправки формы; единственный fetch конвертера — за его собственным файлом WebAssembly, при открытии страницы и до того, как вы что-нибудь вставили. Отказ от счётчиков стоит нам статистики по этим адресам, и оно того стоит: обещание проверяется за десять секунд с открытой вкладкой «Сеть», а не принимается на веру.
Как они проверены
Проверка ключа и отпечатки сверены с самим ssh-keygen. Для проверки ключа создаются пять настоящих типов ключей, и разрядность вместе с отпечатком SHA256 сравниваются с тем, что печатает ssh-keygen -lf. Для отпечатков — 50 файлов ключей всех типов, которые читает OpenSSH, включая сертификаты, плюс authorized_keys и хэшированный known_hosts: вывод SHA256 и MD5, рисунки и каждый поиск хоста совпадают с выводом самого ssh-keygen. Совпадение с внешним авторитетом — более сильная проверка, чем любое утверждение, написанное тем же человеком, что написал разбор.
Сборщик команды проверяется тем, что собранное запускается: для macOS и Linux каждый вариант ключа Ed25519, ECDSA и RSA, который он предлагает, прогнан через ssh-keygen 10.2 в песочнице, а получившийся ключ сверен по типу, длине, комментарию, парольной фразе и кругам KDF. Исключение — команды для аппаратных ключей: такой ключ без токена не создать, поэтому для них тест подтверждает только то, что ssh-keygen принимает все параметры. Просмотр .rdp проверен на файлах во всех кодировках, в которых пишет Windows, и на файле, собранном так, чтобы сработало каждое предупреждение.
Проверка конфига держится на правиле, которое легко сформулировать и легко провалить: конфиг, который она сама собирает, обязан пройти её же проверки без единой ошибки и без единого замечания.
Конвертер сверен с двумя программами, которые и задают эти форматы: каждый записанный им ключ OpenSSH читает обратно ssh-keygen, каждый .ppk целиком загружает PuTTYgen, а незашифрованный .ppk на выходе совпадает с файлом PuTTYgen байт в байт.
Это уже окупилось. Тесты поймали обрезанный ключ, получавший оценку A, — тело SSH-ключа это цепочка полей с длиной впереди, и ключ, обрезанный посередине, часто разбирается без единой жалобы. И поймали линтер, который советовал добавить IdentityFile в пустой файл.