牛牛在线工具

openssl_cms_sign()

收录 8868 个 PHP 函数,含用途说明与用法示例。

openssl_cms_sign()

创建一个 CMS (Cryptographic Message Syntax) 签名

函数名称:openssl_cms_sign() 适用版本:PHP 5 >= 5.4.0, PHP 7 函数说明:openssl_cms_sign() 函数用于创建一个 CMS (Cryptographic Message Syntax) 签名。 语法:openssl_cms_sign(string $input, string &$output, mixed $signcert, mixed $privkey, array $headers [, int $flags = 0]) 参数: $input:要签名的输入数据,可以是字符串或文件路径。 &$output:签名结果的输出变量。 $signcert:用于签名的证书,可以是字符串或 X.509 证书资源。 $privkey:用于签名的私钥,可以是字符串或私钥资源。 $headers:签名时添加的头部信息,是一个包含键值对的数组。 $flags:可选参数,用于设置签名的行为标志。 返回值:成功时返回 TRUE,失败时返回 FALSE。 示例: // 创建一个 CMS 签名 $input = "This is the input data to be signed"; $output = null; $signcert = file_get_contents('signcert.pem'); $privkey = openssl_pkey_get_private('privatekey.pem'); $headers = array( 'Content-Type' => 'text/plain', 'Date' => '2022-01-01', ); if (openssl_cms_sign($input, $output, $signcert, $privkey, $headers)) { echo "CMS signature created successfully.\n"; file_put_contents('signed_data.cms', $output); } else { echo "Failed to create CMS signature.\n"; } // 验证 CMS 签名 $cmsdata = file_get_contents('signed_data.cms'); $verifycert = file_get_contents('verifycert.pem'); if (openssl_cms_verify($cmsdata, CMS_NOINTERN | CMS_NOCERTS, $verifycert)) { echo "CMS signature is valid.\n"; } else { echo "CMS signature is invalid.\n"; } 以上示例中,首先使用 openssl_cms_sign() 函数创建一个 CMS 签名,将签名结果保存到文件 signed_data.cms 中。然后使用 openssl_cms_verify() 函数验证该 CMS 签名的有效性,使用的验证证书为 verifycert.pem。