TLS握手消息解析

Jam*_*eet 5 c++ ssl proxy networking openssl

我目前正在尝试将tls握手实现到我正在编写的http代理中.我知道我可以使用OpenSSL为我做这项工作,但我有兴趣自己编写.

我目前正在研究TLS RFC,并对如何解析ClientHello消息感到困惑,特别是它可能有也可能没有会话ID这一事实,并且似乎没有计算密码套件或压缩方法的数量.

有谁知道这样做的最佳方式?

Jum*_*ram 7

session_id前面是长度.与密码套件和压缩算法相同.

你缺少的是RFC的第4.3节:

通过使用符号指定法定长度的子范围来定义可变长度向量.编码时,实际长度位于字节流中向量的内容之前.长度将采用数字的形式,消耗尽可能多的字节数来保存向量的指定最大(天花板)长度.实际长度字段为零的可变长度矢量被称为空矢量.