S/MIME 函数使用标志,这些标志使用位字段指定,可以包含以下一个或多个值。
常量 | 描述 |
---|---|
PKCS7_TEXT (int) |
为加密/签名消息添加 text/plain 内容类型标头。如果解密或验证,则会从输出中删除这些标头 - 如果解密或验证的消息不是 MIME 类型 text/plain ,则会发生错误。 |
PKCS7_BINARY (int) |
通常,输入消息会转换为“规范”格式,有效地使用 CR 和 LF 作为行尾:这是 S/MIME 规范的要求。当存在此选项时,不会发生转换。这在处理可能不是 MIME 格式的二进制数据时很有用。 |
PKCS7_NOINTERN (int) |
验证消息时,消息中包含的证书(如果有)通常会搜索签名证书。使用此选项时,仅使用 openssl_pkcs7_verify() 的 untrusted_certificates_filename 参数中指定的证书。但是,提供的证书仍然可以用作不受信任的 CA。 |
PKCS7_NOVERIFY (int) |
不要验证签名消息的签名者证书。 |
PKCS7_NOCHAIN (int) |
不要链接验证签名者证书:即不要将签名消息中的证书用作不受信任的 CA。 |
PKCS7_NOCERTS (int) |
签名消息时,通常会包含签名者的证书 - 使用此选项时,它会被排除。这将减小签名消息的大小,但验证者必须在本地拥有签名者证书的副本(例如,通过 untrusted_certificates_filename 传递给 openssl_pkcs7_verify())。 |
PKCS7_NOATTR (int) |
通常,当消息被签名时,会包含一组属性,其中包括签名时间和支持的对称算法。使用此选项时,它们不会被包含。 |
PKCS7_DETACHED (int) |
签名消息时,使用带有 MIME 类型 "multipart/signed" 的明文签名。如果您没有为 openssl_pkcs7_sign() 指定任何 flags ,则这是默认设置。如果您关闭此选项,则消息将使用不透明签名进行签名,这更能抵抗邮件中继的转换,但邮件代理无法读取,这些邮件代理不支持 S/MIME。 |
PKCS7_NOSIGS (int) |
不要尝试验证消息上的签名。 |
PKCS7_NOOLDMIMETYPE (int) |
自 PHP 8.3.0 起可用。将内容类型设置为 application/pkcs7-mime 而不是 application/x-pkcs7-mime 以加密消息。 |