Цепи OpenSSL Bio: уточнение документации - PullRequest
1 голос
/ 21 апреля 2010

Документация для приемников BIO памяти Openssl здесь .

Я создаю цепочку BIO, чтобы превратить двоичные строки в строки base64. Источник / приемник всегда является ячейкой памяти, и это позволяет мне просто держать одну и ту же цепочку вокруг. Однако данные (должны) помещаются в буфер памяти, управляемый OpenSSL, когда я записываю в него, и они должны поступать из предоставленного пользователем буфера памяти при чтении из цепочки.

BIO_set_mem_buf () - это функция, используемая для установки пользовательского буфера, и я буду устанавливать свойство BIO_NOCLOSE, когда я управляю своей памятью, используя new. Теперь, чтобы использовать ту же цепочку для записи, мне нужно изменить био памяти на управление собственной памятью. Мой вопрос: «Изменит ли BIO_reset () его обратно на управление собственной памятью после того, как пользователь предоставил пользовательский буфер?

1 Ответ

1 голос
/ 21 апреля 2010

Я не уверен, что вы правильно поняли, но вот как я обычно поступаю с OpenSSL:

Я считаю, что BIO-структуры OpenSSL представляют собой некие непрозрачные потоки.

Какие бы данные я не передавал (или не получал) от OpenSSL, они обычно хранятся в собственной пользовательской структуре данных, а затем копируются в / из OpenSSL BIO для обработки.

Как вы сказали, документация OpenSSL не совсем ясна по некоторым вопросам. Поскольку мы не можем разумно предположить его внутреннее поведение, я полагаю, что этот способ делать вещи безопаснее.

Однако, если вам нужна высокая производительность и вы хотите избежать бесполезной копии (это было бы законно), вам лучше спросить Список пользователей OpenSSL . Их ответы будут точными, и я верю, что только они могут отвечать на вопросы, которые точно не описаны в документации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...