查询

openssl_cms_read()函数—用法及示例

「 从一个 PKCS7/CMS 编码的数字信封中解析出原始的加密数据和签名信息 」


函数名称:openssl_cms_read()

函数描述:openssl_cms_read() 函数用于从一个 PKCS7/CMS 编码的数字信封中解析出原始的加密数据和签名信息。

适用版本:PHP 5 >= 5.1.2, PHP 7

语法:openssl_cms_read(string $input, array &$certificates, array &$crls, int $flags = 0)

参数:

  • $input:要解析的 PKCS7/CMS 编码的数字信封。
  • &$certificates:一个数组,用于存储从数字信封中提取出的证书链。
  • &$crls:一个数组,用于存储从数字信封中提取出的证书吊销列表。
  • $flags:可选参数,用于指定解析标志。默认为 0。

返回值:如果成功解析数字信封,则返回原始的加密数据和签名信息的数组。如果解析失败,则返回 FALSE。

示例:

<?php
// 加载 PKCS7/CMS 编码的数字信封文件
$input = file_get_contents('encrypted.p7');

// 创建空数组来存储证书链和证书吊销列表
$certificates = [];
$crls = [];

// 解析数字信封并提取原始的加密数据和签名信息
$data = openssl_cms_read($input, $certificates, $crls);

if ($data !== false) {
    // 输出解析成功的原始加密数据
    echo $data['data'];

    // 输出解析成功的签名信息
    echo $data['signatures'][0]['signature'];

    // 输出解析成功的证书链
    foreach ($certificates as $certificate) {
        echo openssl_x509_export($certificate);
    }

    // 输出解析成功的证书吊销列表
    foreach ($crls as $crl) {
        echo openssl_crl_export($crl);
    }
} else {
    echo "解析数字信封失败";
}
?>

注意事项:

  • 在使用 openssl_cms_read() 函数之前,需要确保 OpenSSL 扩展已经正确安装和启用。
  • 数字信封通常以二进制格式存储,因此可以使用 file_get_contents() 函数加载数字信封文件。
  • 解析成功后,可以通过访问返回数组中的相应字段来获取原始的加密数据、签名信息、证书链和证书吊销列表。
  • 证书链和证书吊销列表存储在传递给函数的引用参数中,因此需要创建相应的空数组来接收解析结果。
补充纠错
上一个函数: openssl_cms_verify()函数
下一个函数: openssl_cms_encrypt()函数
热门PHP函数
分享链接