我需要在普通计算机上运行OpenSSL客户端的嵌入式设备上实现TLS。数据传输一次限制在小于1 kB。我一直在看mbedtls,可以将记录缓冲区限制在2 kB以节省内存,但标准TLS记录最高可达16 kB。是否可以在TLS中限制记录大小,或者至少要求每个SSL_write命令创建自己的记录?否则,OpenSSL可能会连接数据并创建一个太长而无法接收的记录。我完全控制了连接的两端,因此不存在任何兼容性问题。
答案 0 :(得分:1)
尝试BIO_set_write_buffer_size()
,但您应该能够控制一次读取或发送的数量,并在每次写入后刷新BIO。
另一种策略可能是创建一个内存BIO,并传输它产生的输出字节。您无法控制其缓冲区的最大大小,但您应该能够以这种方式手动控制块大小。