Dmitry Belyavsky (beldmit) wrote,
Dmitry Belyavsky
beldmit

Categories:

Язык C: поработать со строками и не умереть

Когда-то в ТЦИ делали исследовательский проект по интернациональной почте (то есть с не-латиницей до собаки). Я в рамках этого проекта начал реализовывать драфт по поддержке таких адресов в X.509-сертификатах. Реализовал, понятно, с ошибками, но патч засабмитил, его почитали в OpenSSL и заставили переделать драфт. В итоге документ стал RFC 8398 только в этом году.

Автор документа меня, однако, запомнил, и спросил, не допилю ли я патч. Начал допиливать и стал изживать одну из претензий к собственно патчу — зависимость от лишней библиотеки в OpenSSL сочли недопустимой. Ок, всего одна функция. Причём частично прописана в RFC в формате C-шного кода.

А дальше, блин, начинается кино. Разбить доменное имя на части по точке. Сконвертировать каждую часть в последовательность байт (UTF8 же), склеить. Не вылезя нигде за пределы буфера. А длину буфера вернуть, чтобы вызывающая сторона знала, какой буфер передать. В общем, тут даже при готовых функциях то, что на Perl с использованием библиотеки — три вызова, split, map и join, на C даёт пол-экрана.

Написать я это написал. Даже скомпилировал. А вот запускать и отлаживать страшно.

Специально для [personal profile] ufm: нет, не-ASCII символы в именах доменов и email-адресах — не коварный замысел страшных любителей чебурнета, а нормальный ход нормальных любителей денег. Которым аудиторию по месту (нелатиноалфавитную) очень хочется расширить.

This entry was originally posted at https://beldmit.dreamwidth.org/855761.html. Your comment? (comment count unavailable comments)
Tags: криптография, лытдыбр, программирование, работа
Subscribe

  • ЦИАМ: мемуар

    Тут в ФБ Тим Жабко поинтересовался, что я делал в ЦИАМ и на какой площадке. После дефолта, закрытия игрового проекта и моего бегства в Екатеринбург…

  • День царя Соломона

    Ровно половину моей жизни назад был 1998 год. Личная жизнь у меня накрылась, и попытка уехать в Екатеринбург сразу после дефолта к возобновлению не…

  • Кошки++

    Вчера Нина с Таней поехали по местному объявлению и привезли мелкую шпротную короткошёрстную кошечку. Назвали Шаня. Прежние владельцы её где-то…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 24 comments

  • ЦИАМ: мемуар

    Тут в ФБ Тим Жабко поинтересовался, что я делал в ЦИАМ и на какой площадке. После дефолта, закрытия игрового проекта и моего бегства в Екатеринбург…

  • День царя Соломона

    Ровно половину моей жизни назад был 1998 год. Личная жизнь у меня накрылась, и попытка уехать в Екатеринбург сразу после дефолта к возобновлению не…

  • Кошки++

    Вчера Нина с Таней поехали по местному объявлению и привезли мелкую шпротную короткошёрстную кошечку. Назвали Шаня. Прежние владельцы её где-то…