CMS 函数使用标志,这些标志使用位域指定,可以包含以下一个或多个值。
常量 | 描述 |
---|---|
OPENSSL_CMS_TEXT (int) |
在加密/签名消息中添加 text/plain 内容类型标头。如果解密或验证,它会从输出中剥离这些标头 - 如果解密或验证的消息不是 MIME 类型 text/plain,则会发生错误。 |
OPENSSL_CMS_BINARY (int) |
通常,输入消息将转换为“规范”格式,实际上使用 CR 和 LF 作为行尾:这是 CMS 规范的要求。当存在此选项时,不会进行转换。这在处理可能不是 CMS 格式的二进制数据时很有用。 |
OPENSSL_CMS_NOINTERN (int) |
验证消息时,通常会搜索消息中包含的证书(如果有)以查找签名证书。使用此选项,仅使用 openssl_cms_verify() 的 untrusted_certificates_filename 参数中指定的证书。但是,提供的证书仍然可以作为不受信任的 CA 使用。 |
OPENSSL_CMS_NOVERIFY (int) |
不要验证签名消息的签名者证书。 |
OPENSSL_CMS_NOCERTS (int) |
签名消息时,通常会包含签名者的证书 - 使用此选项会将其排除在外。这将减少签名消息的大小,但验证者必须在本地拥有签名者证书的副本(例如,通过将 untrusted_certificates_filename 传递给 openssl_cms_verify())。 |
OPENSSL_CMS_NOATTR (int) |
通常,当消息被签名时,会包含一组属性,其中包括签名时间和支持的对称算法。使用此选项,它们不会被包含。 |
OPENSSL_CMS_DETACHED (int) |
签名消息时,使用具有 MIME 类型 "multipart/signed" 的明文签名。如果未为 openssl_cms_sign() 指定任何 flags ,则这是默认值。如果关闭此选项,消息将使用不透明签名进行签名,这更能抵抗邮件中继的转换,但无法被不支持 S/MIME 的邮件代理读取。 |
OPENSSL_CMS_NOSIGS (int) |
不要尝试验证消息上的签名。 |
OPENSSL_CMS_OLDMIMETYPE (int) |
从 PHP 8.3.0 开始可用。将内容类型设置为 application/x-pkcs7-mime 而不是 application/pkcs7-mime 来加密消息。 |