ГОСТ в ЛибреССЛ

10.11.2014 23:23:59

Люблю я читать коммиты в ЛибреССЛ, бывает интересное, бывает смешное, особенно смешное когда работа также часто пересекается с тем же ОпенССЛом. Сегодня заглянул, а там бац! и патч, добавляющий ГОСТовые алгоритмы. Плюс небольшой набор патчей сверху по исправлению всякого. Это же праздник, товарищи!

Изначально, поддержка ГОСТов из ЛибреССЛа была выпилена, вместе со всеми остальными модулями (энжинами) ОпенССЛа. Бдительные граждане даже интересовались, не политическим ли причинам такое произошло?

Признаться честно, желание добавить ГОСТовые шифры в ЛибреССЛ у меня было у самого, тогда можно было бы использовать библиотеку в рабочих проектах, но тут две проблемы — во-первых, кто ж даст времени на это, а во-вторых, с разработкой ЛибреССЛ есть один нюанс, она жёстко привязана к ОпенБСД. Понятно, что ОпенБСДшникам от этого хорошо, но со стороны это вполне конкретный барьер для входа, который надо преодолевать. Есть, конечно, гитовый клон, в том числе портируемой версии, но если работать с портируемой версией, то потом будет проблема импорта в ОпенБСД. Разумеется, всё решаемо, при желании, но это барьер.

С барьером этим столкнулся и Дмитрий Еремин-Солеников, однако он его успешно преодолел, за что ему респект. Понятно, что будет ещё доводка всего этого хозяйства до полностью работоспособного состояния, плюс ТЛС, но основная часть уже есть, и это радует.

LibreSSL

23.04.2014 11:23:20

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

А форкнуть ОпенССЛ, видимо, надо было уже давно. Я неоднократно лазил внутрь него и даже кое-что делал, ничего кроме адского кошмара там нет. При наличии возможности выбора, просто брал ГнуТЛС. Но возможность такая есть не всегда, поскольку все уже привыкли лепить костыли вокруг ОпенССЛа и переделывать их, как водится, никто не собирается.

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

На данный момент говорят о 90 000 выпиленных строк кода без потери совместимости, это при том, что там всего их около 335 000 (включая автогенерируемые файлы). Грубо говоря, треть кода — мусор. Значит, скорее всего, можно ещё тысяч 50 выпилить. А если ещё начать работать над интерфейсом библиотеки, то совсем туши свет.

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

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

По счастью, именно с командой у ОпенБСД проблем нет, что и позволяет надеяться на достойный результат.