[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [openssl-gost] [gost-engine/engine] a367f5: Added 'fake' OIDs for oid-less objects. Unfortunat...



On 2015.09.18 at 20:41:10 +0300, Dmitry Belyavsky wrote:

> Привет!
> 
> 
> 
> 2015-09-18 20:20 GMT+03:00 Victor Wagner <vitus@wagner.pp.ru>:
> 
> > On 2015.09.18 at 11:36:12 +0300, Dmitry Belyavsky wrote:
> >
> > > Привет!
> > >
> > > Вот не нравится мне это runtime добавление OIDов.
> > >
> > Наступил на интереснейшую граблю:
> >
> > У меня в качестве основной стоит openssl 1.0.2d попатченная на предмет
> > добавления gost89-cbc. С ней я engine и собирал.
> >
> > Но тут выяснил что в 1.0.2 (и даже по-моему 1.0.1) сломали загрузку
> > engine в команде enc. Вернее, отложили до конца разбора опций командной
> > строки, что приводит к тому, что engine-provided шифры не находятся.
> >
> > Собрал openssl из master, где обработку опций переделали нафиг и заодно
> > опять стали грузить engine сразу по обнаружении соответсвтующей опции.
> >
> > Гружу собранный ранее engine туда. И тут оно у меня gost89 находит,
> > gost89-cnt-12 находит, а gost89-cbc - не находит. Полчаса, наверное,
> > потратил, пока сообразил что в момент сборки NID_gost89_cbc был
> > отдефайненной константой, а в более новой версии перестал.
> >
> > Хотя вообще-то я дизайнил эту систему в предположении, что OID-ы будут
> > только добавляться, а не убавляться. И собирать engine будут с самой
> > старой openssl из тех, с которыми её будут использовать.
> >
> > Кстати, как ты думаешь, баг репорт на 1.0.2 ветку вешать надо? (надо бы
> > еще на cms и smime посмотреть в этом плане).
> >
> 
> 
> Баг-репорт вешать надо. Хотя я всю жизнь старался грузить engine через
> конфиг.
> Грабли красивые. Но кажется мне, что не последние.
 
> Проверять, видимо, правильно, пытаясь найти NID по Shortname, а не
> #ifdef-ами.

У меня сейчас используются оба механизма. На самом деле второй немного
сломан потому что дизайнистя из расчета что удастся добавить алгоритм
без OID-а, поэтому функция добалвления может быть вызвана с OID = NULL.

Сочетание этих механизмов рассчитано на то, что openssl может быть
сапгрейжена без апгрейда engine, и OID-ы которых в момент компиляции в
obj_mac.h не было, взяли и появились в таблице. Но вот на то, что они
могут оттуда исчезнуть - я не зарекался. Потому что уж больно много
вкусностей дает константность NID_ов.

P.S. Sorry за overquoting, но просто исходное письмо с описанием граблей
в список не попало. Пусть хоть так в архив ляжет.
--