我已经用 C++ 编写了一个 TLS 解析器库,现在我需要为其编写单元测试。该库只是简单地提供 TLS 数据流,并在 TLS 协议(protocol)中的某些事件上调用各种回调。我正在为客户端和服务器端搜索 TLS 协议(protocol)的 Python 实现,它允许我使用我选择的参数(密码套件、证书、传输不同的 TLS 协议(protocol)消息等)同时创建多个确定性和可重现的 TLS 数据连接将流量转储到原始二进制文件中。
twisted 是否允许我创建这样的测试设置?如果可以,是否有任何代码示例可以帮助我快速启动这个项目?
最佳答案
最终,Twisted 只会将 TLS 传输到传输层并将字节转储到其中;您可以根据需要指定配置的 pyOpenSSL 上下文对象。所以这实际上更像是一个关于 pyOpenSSL 或密码学的问题。
TLS 握手通常涉及在不同点生成随机数据( session key )。虽然我认为通过插入生成非随机数据的特殊 ENGINE
来让 OpenSSL 做一些完全确定性的事情可能可能,但这是一个用例Twisted TLS 工具链绝对不适合。 (例如,随机性在 OpenSSL 中始终是全局的,即使 SSL 堆栈的其他部分对于 SSL_CTX
是本地的。)
关于python - 在 Python twisted 中创建受控的 TLS 对话并将其存储以用作测试数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32794943/