ssl_local. h openssl头文件包含以下内容
# define SSL_CONNECTION_FROM_SSL(ssl) \
SSL_CONNECTION_FROM_SSL_int(ssl, SSL_CONNECTION_NO_CONST)
# define SSL_CONNECTION_NO_CONST
# define SSL_CONNECTION_FROM_SSL_ONLY_int(ssl, c) \
((ssl) == NULL ? NULL \
: ((ssl)->type == SSL_TYPE_SSL_CONNECTION \
? (c SSL_CONNECTION *)(ssl) \
: NULL))
字符串
此宏的调用方式为:
int SSL_connect(SSL *s)
{
SSL_CONNECTION *sc = SSL_CONNECTION_FROM_SSL(s);
型
我不明白下面的宏是做什么的,因为它没有实际的定义。
# define SSL_CONNECTION_NO_CONST
型
然而,它被用在下面提到的宏above。
SSL_CONNECTION_FROM_SSL_ONLY_int(ssl, c)
型
1条答案
按热度按时间s4n0splo1#
如您所见,宏用作
c
到SSL_CONNECTION_FROM_SSL_ONLY_int
的第二个参数,并用作SSL_CONNECTION
的前缀:字符串
在
ssl_local.h
中,SSL_CONNECTION_FROM_SSL_ONLY_int
实际上有多种用法:型
在
SSL_CONNECTION_FROM_SSL
中使用SSL_CONNECTION_NO_CONST
调用时,会将c
扩展为空字符串,即型
在
SSL_CONNECTION_FROM_CONST_SSL
中使用const
调用时,会将c
扩展为const
,即型
SSL_CONNECTION_FROM_SSL
和SSL_CONNECTION_FROM_CONST_SSL
在OpenSSL源代码中的多个地方都有使用,因此这两种变体似乎都有用例--有const
的也有SSL_CONNECTION_FROM_SSL
的。