Мне нужно реализовать TLS на встроенном устройстве с клиентом OpenSSL, работающим на обычном компьютере. Передача данных ограничена менее чем 1 кБ за раз. Я смотрю на mbedtls, и можно ограничить буфер записи до 2 кБ для экономии памяти, однако стандартная запись TLS может достигать 16 кБ. Возможно ли ограничить размер записи в TLS или, по крайней мере, потребовать от каждой команды SSL_write создать свою собственную запись? В противном случае OpenSSL может объединить данные и создать запись, которая слишком длинна для получения. У меня есть полный контроль над обоими концами соединения, поэтому не должно быть проблем с совместимостью.Ограничить размер записи в OpenSSL
ответ
Попробуйте BIO_set_write_buffer_size()
, но вы должны просто контролировать, сколько вы читаете или отправляете за раз, и очищайте BIO после каждой записи.
Другой стратегией может быть создание памяти BIO и передача байтов вывода, который она производит. Вы не можете контролировать максимальный размер своего буфера, но вы должны иметь возможность контролировать размер куска вручную таким образом.
Использование' BIO_set_write_buffer_size' может быть сложным. В соответствии с ['BIO_f_buffer (3)' man page] (https://www.openssl.org/docs/manmaster/crypto/BIO_f_buffer.html): * "... Начальный размер буфера DEFAULT_BUFFER_SIZE, в настоящее время 4096. Любая попытка уменьшить размер буфера ниже DEFAULT_BUFFER_SIZE игнорируется. * * Поэтому ему может потребоваться изменить «DEFAULT_BUFFER_SIZE». – jww
Без проверки, для меня это похоже на константу времени компиляции, поэтому, вероятно, потребуется перекомпилировать библиотеку и выполнить тесты регрессии. Может быть и другой код, который делает предположения об этом, так как это также размер страницы. – Davislor
Да, я жду, чтобы увидеть результат. Мы можем отправить отчет об ошибке, ссылаясь на это, и еще несколько вопросов о SO, если OpenSSL действительно нуждается в перекомпиляции. (Я рассматриваю SO как источник реальных проблем, которые могут быть решены). – jww
- 1. Ограничить размер файла при записи в java
- 2. C размер OpenSSL блок
- 3. Ограничить размер в Fabric.js
- 4. Ограничить размер в ObservableList
- 5. Как ограничить размер файла при записи файлов в python
- 6. Ограничить размер файла Размер файла в Gerrit
- 7. Windows Runtime API: MediaCapture как ограничить размер файла записи
- 8. Log4Net AdoNetAppender - обрезать таблицу/удалить старые записи/ограничить размер БД
- 9. Как я могу ограничить размер файла записи pppd?
- 10. Как ограничить размер текстового поля?
- 11. Ограничить размер списка в Python
- 12. Ограничить размер изображения в icepdf
- 13. Ограничить размер массива
- 14. Ограничить размер текстового виджета
- 15. Ограничить размер JSpinner
- 16. Ограничить размер базы данных
- 17. uploadify: ограничить размер изображения
- 18. Как ограничить размер кучи?
- 19. Ограничить размер UITextField
- 20. Ограничить размер встроенных типов
- 21. Как ограничить размер понимания?
- 22. Ограничить размер файла фильтра?
- 23. Ограничить размер scipy.signal.correlate
- 24. VS2005: Ограничить размер кучи
- 25. Как ограничить размер таблицы?
- 26. Ограничить размер TextView горизонтально
- 27. ограничить размер std :: set
- 28. OpenCL Ограничить размер петли?
- 29. Как ограничить размер загрузки?
- 30. Как ограничить размер текстовой
Из [BIO_f_buffer (3) '' человек страницы] (https://www.openssl.org/docs/manmaster/crypto/BIO_f_buffer.html): * "BIO_set_read_buffer_size(), BIO_set_write_buffer_size() и BIO_set_buffer_size() return 1, если буфер был успешно изменен или 0 для отказа "и *" ... начальный размер буфера равен 'DEFAULT_BUFFER_SIZE', в настоящее время 4096. Любые попытки уменьшить размер буфера ниже' DEFAULT_BUFFER_SIZE' игнорируются. "* – jww