【发布时间】:2010-03-29 08:16:40
【问题描述】:
在将消息发送到套接字之前,openssl 是否提供了额外的标头?
谢谢
【问题讨论】:
在将消息发送到套接字之前,openssl 是否提供了额外的标头?
谢谢
【问题讨论】:
我假设您说的是 TLS(“安全 TCP”)。
那么是的。一旦客户端和服务器之间的握手完成,“数据”消息通常以 3 个特殊字节开始(如果我没记错的话),向 SSL 层表明该帧已加密。
另一方面,您不能假设加密帧的大小与原始帧/数据的大小相同。
这里有一个 C/C++ 示例函数。
bool isCiphered(const char* buf, size_t buflen)
{
if (buflen < 3)
{
return false;
}
uint8_t c = buf[0];
switch (c)
{
case 0x14:
case 0x15:
case 0x16:
case 0x17:
{
uint8_t v1 = buf[1];
uint8_t v2 = buf[2];
/* TLS v1 */
if ((v1 == 0x03) && (v2 == 0x01))
{
return true;
}
/* DTLS v1 */
if ((v1 == 0xfe) && (v2 == 0xff))
{
return true;
}
break;
}
}
return false;
}
我必须调整我现有的代码,所以我不确定是否可以编译,但你应该明白了。
【讨论】: