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

Re: Репозиторий



On Fri, 14 Aug 2015 14:14:46 +0300
Dmitry Belyavsky <beldmit@gmail.com> wrote:


> >
> > На мой взгляд, более правильным будет следующее:
> >
> > 1. Позвать OBJ_txt2nid на dotted-decimal представление OID, если оно
> > есть, и на short name, если это, скажем nid некоего режима
> > шифрования. не имеющего своего OID.
> >
> > 2. Если вернуло не NID_undef, использовать (прописать в
> > инициализированные структуры) именно его.
> >
> > 3. Если вернуло NID_undef, звать OBJ_create, но передавать туда
> > динамически размещенные копии всех строк.
> >
> > 4. При выгрузке engine OBJ_cleanup не делать.
> >
> > Тогда получается, что при первой загрузке engine мы загрузим в
> > object database все нужные нам OID-ы которых там изначально не
> > было, и там они и останутся до конца жизни процесса. Если engine
> > выгрузят и загрузят повторно, она найдет те же NID-ы, которые были
> > созданы первой копией.
> >
> > Если же часть (произвольная) OID-ов в Object Database была, то мы
> > будем использовать те NID-ы, которые были.
> >
> 
> Под юниксы это пройдёт, хотя, возможно, получим ругань на утечку
> памяти. Под Windows - я не уверен.
> 

Никуда не денется. Под Windows c разрядностью больше 16 нужно
предпринимать очень специальные меры, чтобы у dll был собственный
сегмент данных, которых в данном случае, естественно, никто не
предпринимает.

А размещать мы будем с помощью импортированной из основной 
libcrypto функции OPENSSL_malloc.

Чтобы получить ругань придется явным образом включать OPENSSL_MEM_DEBUG.