OpenSSL扩展

必须安装有效的 openssl.cnf 以保证此类正确运行
属性
命名空间 fize\security
类名 OpenSSL
方法:
方法名 说明
__construct() 构造
__destruct() 析构
setCsr() 设置 CSR
setKey() 设置密钥
setPkey() 设置私钥公钥对
setPublicKey() 设置公钥
setPrivateKey() 设置私钥
setX509() 设置X509证书
setToPublicKeys() 设置接收方公钥
cipherIvLength() 获取密码初始化向量(IV)长度。
csrExportToFile() 将 CSR 导出到文件
csrExport() 将 CSR 作为字符串导出
csrGetPublicKey() 返回 CSR 的公钥
csrGetSubject() 返回 CSR 的主题
csrNew() 生成一个 CSR
csrSign() 用另一个证书签署 CSR (或者本身) 并且生成一个证书
decrypt() 解密数据
dhComputeKey() 计算远程 DH 密钥(公钥)和本地 DH 密钥的共享密钥
digest() 计算摘要
encrypt() 加密数据
errorString() 返回 openSSL 错误消息
freeKey() 释放密钥资源
getCertLocations() 检索可用的证书位置
getCipherMethods() 获取可用的加密算法
getCurveNames() 获得 ECC 的可用曲线名称列表
getMdMethods() 获取可用的摘要算法
getPrivatekey() 获取私钥
getPublickey() 从证书中解析公钥,以供使用
open() 打开密封的数据
pbkdf2() 生成一个 PKCS5 v2 PBKDF2 字符串
pkcs12ExportToFile() 输出一个 PKCS#12 兼容的证书存储文件
pkcs12Export() 将 PKCS#12 兼容证书存储文件导出到变量
pkcs12Read() 将 PKCS#12 证书存储区解析到数组中
pkcs7Decrypt() 解密一个 S/MIME 加密的消息
pkcs7Encrypt() 加密一个S/MIME消息
pkcs7Read() 将 PKCS7 文件导出为 PEM 格式证书的数组
pkcs7Sign() 对一个 S/MIME 消息进行签名
pkcs7Verify() 校验一个已签名的S/MIME消息的签名
pkeyExportToFile() 将密钥导出到文件中
pkeyExport() 将一个密钥的可输出表示转换为字符串
pkeyFree() 释放私钥
pkeyGetDetails() 返回包含密钥详情的数组
pkeyGetPrivate() 获取私钥
pkeyGetPublic() 从证书中解析公钥,以供使用
pkeyNew() 生成一个新的私钥
privateDecrypt() 使用私钥解密数据
privateEncrypt() 使用私钥加密数据
publicDecrypt() 使用公钥解密数据
publicEncrypt() 使用公钥加密数据
randomPseudoBytes() 生成一个伪随机字节串
seal() 密封 (加密) 数据
sign() 对数据签名
spkiExportChallenge() 导出与签名公钥和挑战相关的挑战字符串
spkiExport() 通过签名公钥和挑战导出一个可用的 PEM 格式的公钥
spki_new() 生成一个新的签名公钥和挑战
spki_verify() 验证签名公钥和挑战
verify() 验证签名
x509CheckPrivateKey() 检查私钥是否对应于证书
x509Checkpurpose() 验证是否可以为特定目的使用证书
x509ExportToFile() 导出证书至文件
x509Export() 以字符串格式导出证书
x509Fingerprint() 计算一个给定的 x.509 证书的指纹或摘要
x509Free() 释放证书资源
x509Parse() 解析一个 X509 证书并作为一个数组返回信息
x509Read() 解析一个 x.509 证书并返回一个资源标识符

方法

__construct()

构造

public function __construct ()

__destruct()

析构

public function __destruct ()

setCsr()

设置 CSR

public function setCsr (
    mixed $csr,
    bool $is_file = true
) : bool
参数:
名称 说明
csr CSR 资源对象或者 CSR 字符串或者 CSR 文件的路径
is_file 指明参数$csr是否为文件路径

setKey()

设置密钥

public function setKey (
    string $key
)
参数:
名称 说明
key 密钥

setPkey()

设置私钥公钥对

public function setPkey (
    resource $pkey
)
参数:
名称 说明
pkey  

setPublicKey()

设置公钥

public function setPublicKey (
    mixed $key,
    bool $is_file = true
) : bool
参数:
名称 说明
key 公钥字符串或则公钥文件的路径或者公钥资源对象
is_file 指明参数 $key 是否为文件路径

setPrivateKey()

设置私钥

public function setPrivateKey (
    mixed $key,
    bool $is_file = true,
    string $passphrase = ""
) : bool
参数:
名称 说明
key 私钥字符串或则私钥文件的路径或者密钥资源对象
is_file 指明参数 $key 是否为文件路径
passphrase 密码
参数 `$passphrase` :
如果指定的密钥已被加密了(受密码保护),可选参数 passphrase 是必须要的

setX509()

设置X509证书

public function setX509 (
    mixed $x509,
    bool $is_file = true
) : bool
参数:
名称 说明
x509 X509 证书资源对象或者证书字符串或则证书文件的路径
is_file 指明参数 $x509 是否为文件路径

setToPublicKeys()

设置接收方公钥

public function setToPublicKeys (
    array $keys
) : array
参数:
名称 说明
keys 要接收的公钥

cipherIvLength()

获取密码初始化向量(IV)长度。

public static function cipherIvLength (
    string $method
) : int
参数:
名称 说明
method 密码的方法
返回值:

失败时返回 false

参数 `$method` :
更多值查看 OpenSSL::getCipherMethods() 方法。

csrExportToFile()

将 CSR 导出到文件

public function csrExportToFile (
    string $outfilename,
    bool $notext = true
) : bool
参数:
名称 说明
outfilename 输出文件的路径
notext 如果设为 FALSE,输出内容将包含附加的人类可读信息

csrExport()

将 CSR 作为字符串导出

public function csrExport (
    string &$out,
    bool $notext = true
) : bool
参数:
名称 说明
out 在成功时,该字符串将包含 PEM 编码的 CSR 。
notext 如果设为 FALSE,输出内容将包含附加的人类可读信息

csrGetPublicKey()

返回 CSR 的公钥

public function csrGetPublicKey (
    bool $use_shortnames = true
) : resource
参数:
名称 说明
use_shortnames 是否使用短名称

csrGetSubject()

返回 CSR 的主题

public function csrGetSubject (
    bool $use_shortnames = true
) : array
参数:
名称 说明
use_shortnames 是否使用短名称

csrNew()

生成一个 CSR

public function csrNew (
    array $dn,
    array $configargs = null,
    array $extraattribs = null
) : resource
参数:
名称 说明
dn 在证书中使用的专有名称或主题字段
configargs 配置项
extraattribs 额外配置选项
返回值:

失败返回 false

csrSign()

用另一个证书签署 CSR (或者本身) 并且生成一个证书

public function csrSign (
    int $days,
    array $configargs = null,
    int $serial = 0
) : resource
参数:
名称 说明
days 指定生成的证书在几天内有效的时间长度
configargs 你可以通过 configargs 确定 CSR 签名
serial 可选的发行证书编号

decrypt()

解密数据

public function decrypt (
    string $data,
    string $method,
    int $options = 0,
    string $iv = "",
    string $tag = "",
    string $aad = ""
) : string
参数:
名称 说明
data 将被解密的密文
method 加密算法
options 选项
iv 非空的初始化向量
tag AEAD 密码模式中的身份验证标签
aad 额外的认证数据
返回值:

失败时返回 false

参数 `$options` :
  常量OPENSSL_RAW_DATA, OPENSSL_ZERO_PADDING中的一个。
参数 `$tag` :
  如果是错误的,验证失败,函数返回 FALSE

dhComputeKey()

计算远程 DH 密钥(公钥)和本地 DH 密钥的共享密钥

public function dhComputeKey (
    resource $dh_key
) : string
参数:
名称 说明
dh_key DH 密钥

digest()

计算摘要

public static function digest (
    string $data,
    string $method,
    bool $raw_output = false
) : string
参数:
名称 说明
data 给定的数据
method 要使用的摘要方法
raw_output 是否返回原始输出数据
参数 `$raw_output` :
 TRUE 时将会返回原始输出数据,否则返回值将会是 16 进制

encrypt()

加密数据

public function encrypt (
    string $data,
    string $method,
    int $options = 0,
    string $iv = "",
    bool $is_aead = false,
    string &$tag = null,
    string $aad = "",
    int $tag_length = 16
) : string
参数:
名称 说明
data 待加密的明文信息数据
method 密码学方式
options 选项
iv 非 NULL 的初始化向量
is_aead 是否使用使用 AEAD 密码模式
tag 引用的验证标签
aad 附加的验证数据
tag_length 验证 tag 的长度
参数 `$options` :
  常量 OPENSSL_RAW_DATA, OPENSSL_ZERO_PADDING 中的一个。
参数 `$tag` :
  使用AEAD密码模式(GCM  CCM)时传引用的验证标签。
参数 `$tag_length` :
  GCM 模式时,它的范围是 4  16

errorString()

返回 openSSL 错误消息

public static function errorString () : string

freeKey()

释放密钥资源

public static function freeKey (
    resource $key_identifier
)
参数:
名称 说明
key_identifier 标识

getCertLocations()

检索可用的证书位置

public static function getCertLocations () : array

getCipherMethods()

获取可用的加密算法

public static function getCipherMethods (
    bool $aliases = false
) : array
参数:
名称 说明
aliases 密码别名应该包含在返回的 array 中

getCurveNames()

获得 ECC 的可用曲线名称列表

public static function getCurveNames ()

getMdMethods()

获取可用的摘要算法

public static function getMdMethods (
    bool $aliases = false
) : array
参数:
名称 说明
aliases 返回的 array 中是否包含摘要的别名

getPrivatekey()

获取私钥

public static function getPrivatekey (
    mixed $key,
    string $passphrase = ""
) : resource
参数:
名称 说明
key 私钥
passphrase 密码
返回值:

失败返回 false

参数 `$key` :
  格式字符串 “file://path/to/file.pem” 或者 PEM 格式的私钥
参数 `$passphrase` :
  如果指定的密钥已被加密了(受密码保护),可选参数 passphrase 是必须要的。

getPublickey()

从证书中解析公钥,以供使用

public static function getPublickey (
    mixed $certificate
) : resource
参数:
名称 说明
certificate 证书资源或者公钥
参数 `$certificate` :
X.509 证书资源或者格式字符串 “file://path/to/file.pem” 或者 PEM 格式的公钥

open()

打开密封的数据

public function open (
    string $sealed_data,
    string &$open_data,
    string $env_key,
    string $method = "RC4",
    string &$iv = null
) : bool
参数:
名称 说明
sealed_data 待解密数据
open_data 在这个参数中返回打开的数据
env_key 信封密钥
method 加解密算法
iv 初始化向量

pbkdf2()

生成一个 PKCS5 v2 PBKDF2 字符串

public static function pbkdf2 (
    string $password,
    string $salt,
    int $key_length,
    int $iterations,
    string $digest_algorithm = "sha1"
) : string
参数:
名称 说明
password 派生密钥所生成的密码
salt 盐值
key_length 希望输出密钥的长度
iterations 需要的迭代次数
digest_algorithm 可选的散列或摘要算法
返回值:

失败时返回 false

参数 `$salt` :
  PBKDF2 推荐一个不少于 64 ( 8 字节)的密码盐值。
参数 `$iterations` :
  NIST 建议至少 10,000 次。

pkcs12ExportToFile()

输出一个 PKCS#12 兼容的证书存储文件

public function pkcs12ExportToFile (
    string $filename,
    string $pass,
    array $args = null
) : bool
参数:
名称 说明
filename 输出文件的路径
pass 用于解锁 PKCS#12 文件的加密密码
args 可选数组

pkcs12Export()

将 PKCS#12 兼容证书存储文件导出到变量

public function pkcs12Export (
    string &$out,
    string $pass,
    array $args = null
) : bool
参数:
名称 说明
out 成功,该字符串将为 PKCS#12 格式
pass 用于解锁 PKCS#12 文件的加密密码
args 可选数组

pkcs12Read()

将 PKCS#12 证书存储区解析到数组中

public static function pkcs12Read (
    string $pkcs12,
    array &$certs,
    string $pass
) : bool
参数:
名称 说明
pkcs12 证书存储内容
certs 成功,将保存证书存储数据
pass 用来解锁 PKCS#12 文件的解密密码

pkcs7Decrypt()

解密一个 S/MIME 加密的消息

public function pkcs7Decrypt (
    string $infilename,
    string $outfilename
) : bool
参数:
名称 说明
infilename 加密信息文件路径
outfilename 解密的消息将被存入的文件名

pkcs7Encrypt()

加密一个S/MIME消息

public function pkcs7Encrypt (
    string $infile,
    string $outfile,
    array $headers,
    mixed $recipcerts = null,
    int $flags = 0,
    int $cipherid = 0
) : bool
参数:
名称 说明
infile 加密信息文件路径
outfile 加密的消息将被存入的文件
headers 包含头信息的数组
recipcerts 一个 X.509 证书[或数组]
flags 指定影响编码过程的选项
cipherid 密码常量之一
参数 `$headers` :
  在被加密后将对数据进行预处理
参数 `$recipcerts` :
  不指定则为当前证书

pkcs7Read()

将 PKCS7 文件导出为 PEM 格式证书的数组

public static function pkcs7Read (
    string $infilename,
    array &$certs
) : bool
参数:
名称 说明
infilename PKCS7 文件路径
certs 成功后 PEM 格式证书的数组

pkcs7Sign()

对一个 S/MIME 消息进行签名

public function pkcs7Sign (
    string $infilename,
    string $outfilename,
    array $headers,
    int $flags = 64,
    string $extracerts = null
) : bool
参数:
名称 说明
infilename 你打算用来进行数字签名的输入文件
outfilename 将写入数字签名的文件
headers 个包含头信息的数组
flags 可以用来改变输出
extracerts 指定一个文件的名称
参数 `$extracerts` :
其中包含一组含有签名的额外的证书

pkcs7Verify()

校验一个已签名的S/MIME消息的签名

public function pkcs7Verify (
    string $filename,
    int $flags,
    string $outfilename = null,
    array $cainfo = null,
    string $extracerts = null,
    string $content = null
) : bool
参数:
名称 说明
filename 消息文件的路径
flags 可以用来影响如何校验签名
outfilename 指定输出文件
cainfo 保存关于受信任的 CA 证书的信息
extracerts 指定不受信任的 ca 使用的证书
content 已被验证数据的文件名
返回值:

错误时返回1

参数 `$outfilename` :
  如果已指定 outfilename 输出文件,它应该是一个用以保存文件的字符串名称,签名消息的个人证书将以PEM的格式保存起来.
参数 `$cainfo` :
  供在验证过程中使用。
参数 `$extracerts` :
  如果 extracerts 被指定了,该文件包含了一堆会被作为不受信任的 ca 使用的证书
参数 `$content` :
  你可以使用 content 来指定带有已被验证数据的文件名,该文件内容已去掉了签名信息

pkeyExportToFile()

将密钥导出到文件中

public function pkeyExportToFile (
    string $outfilename,
    string $passphrase = null,
    array $configargs = null
) : bool
参数:
名称 说明
outfilename 输出文件的路径
passphrase 密码
configargs 配置文件选项
参数 `$passphrase` :
  密钥可以通过值为 passphrase 的密码来保护
参数 `$configargs` :
  用来调整导出流程,通过指定或者覆盖 openssl 配置文件选项

pkeyExport()

将一个密钥的可输出表示转换为字符串

public function pkeyExport (
    string &$out,
    string $passphrase = null,
    array $configargs = null
) : bool
参数:
名称 说明
out 成功时该变量取得字符串内容
passphrase 密码
configargs 配置文件选项
参数 `$passphrase` :
  密钥可以通过 passphrase 来保护

参数 `$configargs` :
  用来调整导出流程,通过指定或者覆盖 openssl 配置文件选项

pkeyFree()

释放私钥

public function pkeyFree ()

pkeyGetDetails()

返回包含密钥详情的数组

public function pkeyGetDetails () : array

pkeyGetPrivate()

获取私钥

public static function pkeyGetPrivate (
    mixed $key,
    string $passphrase = ""
) : resource
参数:
名称 说明
key 私钥
passphrase 密码
返回值:

失败返回 false

参数 `$key` :
  格式字符串 “file://path/to/file.pem” 或者 PEM 格式的私钥
参数 `$passphrase` :
  如果指定的密钥已被加密了(受密码保护),可选参数 passphrase 是必须要的

pkeyGetPublic()

从证书中解析公钥,以供使用

public static function pkeyGetPublic (
    mixed $certificate,
    bool $from_private = false,
    string $passphrase = ""
) : resource
参数:
名称 说明
certificate 证书或者公钥
from_private 指明 $certificate 是否为私钥
passphrase 密码
返回值:

失败返回 false

参数 `$certificate` :
  X.509 证书资源或者格式字符串 “file://path/to/file.pem” 或者 PEM 格式的公钥
参数 `$passphrase` :
  如果指定的密钥已被加密了(受密码保护),可选参数 passphrase 是必须要的

pkeyNew()

生成一个新的私钥

public static function pkeyNew (
    array $configargs = null
) : resource
参数:
名称 说明
configargs 配置选项
返回值:

错误时返回 false

参数 `$configargs` :
使用 configargs 参数微调密钥的生成

privateDecrypt()

使用私钥解密数据

public function privateDecrypt (
    string $data,
    int $padding = 1
) : string
参数:
名称 说明
data 待解密数据
padding 常量之一
返回值:

返回解密结果

privateEncrypt()

使用私钥加密数据

public function privateEncrypt (
    string $data,
    int $padding = 1
) : string
参数:
名称 说明
data 待加密数据
padding 常量之一
返回值:

返回加密结果

publicDecrypt()

使用公钥解密数据

public function publicDecrypt (
    string $data,
    int $padding = 1
) : string
参数:
名称 说明
data 待解密数据
padding 常量之一
返回值:

返回解密结果

publicEncrypt()

使用公钥加密数据

public function publicEncrypt (
    string $data,
    int $padding = 1
) : string
参数:
名称 说明
data 待加密数据
padding 常量之一
返回值:

返回加密结果

randomPseudoBytes()

生成一个伪随机字节串

public static function randomPseudoBytes (
    int $length,
    bool &$crypto_strong = null
) : string
参数:
名称 说明
length 所需字节串的长度
crypto_strong 表明是否使用了”强加密”
参数 `$crypto_strong` :
如果传递到该函数中,将会保存为一个 boolean 值来表明是否使用了"强加密"

seal()

密封 (加密) 数据

public function seal (
    string $data,
    string &$sealed_data,
    array &$env_keys,
    string $method = "RC4",
    string $iv = ""
) : int
参数:
名称 说明
data 要密封的数据
sealed_data 保存被密封后的数据
env_keys 保存已被加密的密钥数组
method 加密算法
iv 初始化向量

sign()

对数据签名

public function sign (
    string $data,
    int $signature_alg = 1
) : string
参数:
名称 说明
data 待签名数据
signature_alg 签名参数
返回值:

返回签名字符串

spkiExportChallenge()

导出与签名公钥和挑战相关的挑战字符串

public static function spkiExportChallenge (
    string &$spkac
) : string
参数:
名称 说明
spkac 包含一个可用的签名公钥和挑战
返回值:

失败返回 null

spkiExport()

通过签名公钥和挑战导出一个可用的 PEM 格式的公钥

public static function spkiExport (
    string &$spkac
) : string
参数:
名称 说明
spkac 期望一个有效的签名公钥和挑战字符串
返回值:

失败返回null

spki_new()

生成一个新的签名公钥和挑战

public function spki_new (
    string &$challenge,
    int $algorithm = 0
) : string
参数:
名称 说明
challenge 与 SPKAC 有关的挑战
algorithm 摘要算法

spki_verify()

验证签名公钥和挑战

public static function spki_verify (
    string &$spkac
) : bool
参数:
名称 说明
spkac 期望一个有效的签名公钥和挑战

verify()

验证签名

public function verify (
    string $data,
    string $signature,
    int $signature_alg = 1
) : bool
参数:
名称 说明
data 用来生成签名的数据字符串
signature 签名
signature_alg 签名算法
返回值:

如果签名正确返回 true, 签名错误返回 false

x509CheckPrivateKey()

检查私钥是否对应于证书

public function x509CheckPrivateKey () : bool

x509Checkpurpose()

验证是否可以为特定目的使用证书

public function x509Checkpurpose (
    int $purpose,
    array $cainfo = null,
    string $untrustedfile = null
) : int
参数:
名称 说明
purpose 目的
cainfo 一个受信任的 CA 文件/文件夹组成的数组
untrustedfile PEM 编码文件的名称
参数 `$purpose` :
常量 X509_PURPOSE_*

x509ExportToFile()

导出证书至文件

public function x509ExportToFile (
    string $outfilename,
    bool $notext = true
) : bool
参数:
名称 说明
outfilename 输出文件的路径
notext 影响输出的冗余度

x509Export()

以字符串格式导出证书

public function x509Export (
    string &$output,
    bool $notext = true
) : bool
参数:
名称 说明
output 成功,将会存储 PEM
notext 影响输出的冗余度

x509Fingerprint()

计算一个给定的 x.509 证书的指纹或摘要

public function x509Fingerprint (
    string $hash_algorithm = "sha1",
    bool $raw_output = false
) : string
参数:
名称 说明
hash_algorithm 使用的摘要方法或散列算法
raw_output 是否输出原始二进制数据
返回值:

失败返回 false

x509Free()

释放证书资源

public function x509Free ()

x509Parse()

解析一个 X509 证书并作为一个数组返回信息

public function x509Parse (
    bool $shortnames = true
) : array
参数:
名称 说明
shortnames 控制数据在数组中的索引

x509Read()

解析一个 x.509 证书并返回一个资源标识符

public static function x509Read (
    mixed $x509certdata
) : resource
参数:
名称 说明
x509certdata X509 证书