mbedtls_ssl_write的输入参数长度是否有限制
时间: 2024-05-17 10:14:55 浏览: 6
是的,mbedtls_ssl_write的输入参数长度是有限制的。它的输入参数有三个:ssl上下文、发送缓冲区和缓冲区长度。其中,缓冲区长度是有限制的,它不能超过mbedtls_ssl_get_max_out_record_payload_length函数返回的值。这个值取决于协议版本和加密套件的配置。如果超过了这个长度,mbedtls_ssl_write函数会返回MBEDTLS_ERR_SSL_BAD_INPUT_DATA错误。
相关问题
怎么mbedtls_config.h 中定义 MBEDTLS_SSL_RENEGOTIATION 为 MBEDTLS_SSL_RENEGOTIATION_DISABLED
要在 mbedtls_config.h 中将 `MBEDTLS_SSL_RENEGOTIATION` 定义为 `MBEDTLS_SSL_RENEGOTIATION_DISABLED`,请按照以下步骤操作:
1. 打开 mbedtls_config.h 文件,该文件通常位于 mbedtls 库的 include/mbedtls 目录下。
2. 在文件中搜索 `MBEDTLS_SSL_RENEGOTIATION`。
3. 将找到的相关定义行的值更改为 `MBEDTLS_SSL_RENEGOTIATION_DISABLED`。
4. 保存文件并重新编译你的应用程序。
这样做将禁用 mbedtls 库中的重新协商功能。请注意,根据你使用的 mbedtls 版本,该选项的定义可能会略有不同,但通常以 `MBEDTLS_SSL_RENEGOTIATION` 开头。
请确保在修改 mbedtls_config.h 文件之前,仔细阅读相关文档并充分了解对系统的影响。同时,进行修改时要注意备份原始文件以便恢复。
mbedtls_ssl_handshake
mbedtls_ssl_handshake函数是Mbed TLS库中用于SSL/TLS握手的函数之一。它用于在客户端和服务器之间建立安全的连接。
在使用mbedtls_ssl_handshake函数之前,你需要完成一些必要的设置,如配置证书、密钥和加密套件等。一般情况下,你需要先调用mbedtls_ssl_config_init函数来初始化SSL配置对象,并设置相应的参数。接着,你可以使用mbedtls_ssl_setup函数来初始化SSL上下文对象,并将配置对象与上下文对象关联起来。
然后,你可以通过调用mbedtls_ssl_set_bio函数来设置输入/输出回调函数,并将底层的网络连接对象与SSL上下文对象绑定。这些回调函数负责读取和写入数据,以便进行握手过程中的数据交换。
最后,你可以调用mbedtls_ssl_handshake函数来执行SSL握手操作。这个函数将自动处理握手过程中的所有步骤,包括发送和接收握手消息、验证对方证书、生成和交换会话密钥等。
需要注意的是,mbedtls_ssl_handshake函数是一个阻塞式函数,它将一直等待握手完成或发生错误才返回。因此,在调用该函数之前,你可能需要设置合适的超时时间或使用非阻塞I/O操作。
希望这个回答对你有帮助!如果还有其他问题,请随时提出。