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 来加密消息。 |