在 wininet.h 中 SECURITY_SET_MASK 的用途是啥?
Posted
技术标签:
【中文标题】在 wininet.h 中 SECURITY_SET_MASK 的用途是啥?【英文标题】:In wininet.h what is SECURITY_SET_MASK intended to be used for?在 wininet.h 中 SECURITY_SET_MASK 的用途是什么? 【发布时间】:2017-06-14 09:53:14 【问题描述】:在 wininet.h 中 SECURITY_SET_MASK 的用途是什么?我在网上找不到任何文档。
【问题讨论】:
为WINHTTP_OPTION_SECURITY_FLAGS
寻找Option Flags
【参考方案1】:
它是一个mask,允许您一次设置或清除多个位(标志)。在这种情况下,它是所有可设置的安全标志。
SDK 标头中此常量的定义是确切包含在掩码中的标志的权威参考:
#define SECURITY_SET_MASK (SECURITY_FLAG_IGNORE_REVOCATION |
SECURITY_FLAG_IGNORE_UNKNOWN_CA |
SECURITY_FLAG_IGNORE_CERT_CN_INVALID |
SECURITY_FLAG_IGNORE_CERT_DATE_INVALID |
SECURITY_FLAG_IGNORE_WRONG_USAGE)
当然,每个标志都有自己的documentation。
【讨论】:
还要注意 wininet.h 中的文件注释:// setable flags
。换句话说,掩码过滤掉“setable flags”(相对于仅对查询有效的标志)。
我一直在阅读文档和标题。我只是想了解使用它的上下文。据推测,设置这些标志基本上会禁用所有 SSL 安全功能......这似乎是一件奇怪的事情:)
@JCx:您不直接将此常量用作参数。您正在使用它来屏蔽可设置的位。当您需要将可设置标志与其他标志分开时,当您有一个标志值时,就会这样做。
我正在查看某人的代码,内容如下:dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_SET_MASK; InternetSetOption (request, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof (dwFlags));对我来说看起来不太健康......
@JCx:用作掩码的常量绝不应与二元 OR (|
) 运算符一起使用。这根本没有意义。它只能与二进制 AND (&
) 一起使用。表达式SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_SET_MASK
与SECURITY_SET_MASK
相同,所以为什么还要对它进行OR 操作。如果没有额外的上下文,这应该被丢弃为 "unintentional"。以上是关于在 wininet.h 中 SECURITY_SET_MASK 的用途是啥?的主要内容,如果未能解决你的问题,请参考以下文章
使用 winInet.h 或 urlmon.h 下载和恢复下载?
Delphi WinAPI InternetGetConnectedState(wininet.h)
wininet.h 不使用带有代码块的 GNU GCC 编译器进行编译