Cha*_*pta 5 compression ssl cocoa-touch ios
我需要压缩通过我的iOS应用程序中的安全通道发送的数据,我想知道是否可以使用TLS压缩.我无法弄清楚Apple的TLS实现Secure Transport是否支持相同的功能.
有没有其他人知道iOS是否支持TLS压缩?
我试图确定 Apple 的 SSL/TLS 实现是否支持压缩,但我不得不说恐怕不支持。
\n\n起初我希望有一个errSSLPeerDecompressFail错误代码,必须有一种方法来启用压缩。但我找不到它。
Apple 不\xe2\x80\x99t 支持压缩的第一个明显原因是我从我的设备 (6.1) 在不同端口中打开安全套接字时进行的多次线路捕获。在所有这些中,客户端 Hello 数据包仅报告一种压缩方法:null。
libsecurity_ssl然后我查看了Apple 提供的最后可用代码。这是 Mac OS X 10.7.5 的实现,但有件事告诉我,iOS 的实现即使不一样,也会非常相似,但肯定不会比 Mac OS X 更强大。
您可以在文件sslHandshakeHello.c第 186-187 行 ( SSLProcessServerHello) 中找到:
if (*p++ != 0) /* Compression */\n return unimpErr;\nRun Code Online (Sandbox Code Playgroud)\n\n该错误代码听起来很像 \xe2\x80\x9c,如果服务器发送另一个压缩,但是null(0),我们不\xe2\x80\x99t 实现它,所以失败\xe2\x80\x9d。
同样,同一个文件,第 325 行 ( SSLEncodeClientHello):
*p++ = 0; /* null compression */\nRun Code Online (Sandbox Code Playgroud)\n\n周围没有其他任何东西(DEFLATE根据 RFC 3749 是方法 1)。
下面,第 469、476 和 482-483 行 ( SSLProcessClientHello):
compressionCount = *(charPtr++);\n...\n/* Ignore list; we\'re doing null */\n...\n/* skip compression list */\ncharPtr += compressionCount;\nRun Code Online (Sandbox Code Playgroud)\n\n我认为很明显,这个实现只处理压缩null:它是在客户端Hello中发送的唯一一个,在服务器Hello中唯一理解的一个,并且当接收到客户端Hello时压缩方法被忽略(null必须实现并由每个客户提供)。
所以我认为你和我都必须实现应用程序级压缩。祝你好运。
\n| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |