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 证书并返回一个资源标识符 |
方法¶
setCsr()¶
设置 CSR
public function setCsr (
mixed $csr,
bool $is_file = true
) : bool
参数: |
|
---|
setPublicKey()¶
设置公钥
public function setPublicKey (
mixed $key,
bool $is_file = true
) : bool
参数: |
|
---|
setPrivateKey()¶
设置私钥
public function setPrivateKey (
mixed $key,
bool $is_file = true,
string $passphrase = ""
) : bool
参数: |
|
---|
参数 `$passphrase` :
如果指定的密钥已被加密了(受密码保护),可选参数 passphrase 是必须要的
setX509()¶
设置X509证书
public function setX509 (
mixed $x509,
bool $is_file = true
) : bool
参数: |
|
---|
setToPublicKeys()¶
设置接收方公钥
public function setToPublicKeys (
array $keys
) : array
参数: |
|
---|
cipherIvLength()¶
获取密码初始化向量(IV)长度。
public static function cipherIvLength (
string $method
) : int
参数: |
|
||||
---|---|---|---|---|---|
返回值: | 失败时返回 false |
参数 `$method` :
更多值查看 OpenSSL::getCipherMethods() 方法。
csrExportToFile()¶
将 CSR 导出到文件
public function csrExportToFile (
string $outfilename,
bool $notext = true
) : bool
参数: |
|
---|
csrExport()¶
将 CSR 作为字符串导出
public function csrExport (
string &$out,
bool $notext = true
) : bool
参数: |
|
---|
csrGetPublicKey()¶
返回 CSR 的公钥
public function csrGetPublicKey (
bool $use_shortnames = true
) : resource
参数: |
|
---|
csrGetSubject()¶
返回 CSR 的主题
public function csrGetSubject (
bool $use_shortnames = true
) : array
参数: |
|
---|
csrNew()¶
生成一个 CSR
public function csrNew (
array $dn,
array $configargs = null,
array $extraattribs = null
) : resource
参数: |
|
||||||||
---|---|---|---|---|---|---|---|---|---|
返回值: | 失败返回 false |
csrSign()¶
用另一个证书签署 CSR (或者本身) 并且生成一个证书
public function csrSign (
int $days,
array $configargs = null,
int $serial = 0
) : resource
参数: |
|
---|
decrypt()¶
解密数据
public function decrypt (
string $data,
string $method,
int $options = 0,
string $iv = "",
string $tag = "",
string $aad = ""
) : string
参数: |
|
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
返回值: | 失败时返回 false |
参数 `$options` :
常量OPENSSL_RAW_DATA, OPENSSL_ZERO_PADDING中的一个。
参数 `$tag` :
如果是错误的,验证失败,函数返回 FALSE。
dhComputeKey()¶
计算远程 DH 密钥(公钥)和本地 DH 密钥的共享密钥
public function dhComputeKey (
resource $dh_key
) : string
参数: |
|
---|
digest()¶
计算摘要
public static function digest (
string $data,
string $method,
bool $raw_output = false
) : string
参数: |
|
---|
参数 `$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
参数: |
|
---|
参数 `$options` :
常量 OPENSSL_RAW_DATA, OPENSSL_ZERO_PADDING 中的一个。
参数 `$tag` :
使用AEAD密码模式(GCM 或 CCM)时传引用的验证标签。
参数 `$tag_length` :
GCM 模式时,它的范围是 4 到 16。
freeKey()¶
释放密钥资源
public static function freeKey (
resource $key_identifier
)
参数: |
|
---|
getCipherMethods()¶
获取可用的加密算法
public static function getCipherMethods (
bool $aliases = false
) : array
参数: |
|
---|
getMdMethods()¶
获取可用的摘要算法
public static function getMdMethods (
bool $aliases = false
) : array
参数: |
|
---|
getPrivatekey()¶
获取私钥
public static function getPrivatekey (
mixed $key,
string $passphrase = ""
) : resource
参数: |
|
||||||
---|---|---|---|---|---|---|---|
返回值: | 失败返回 false |
参数 `$key` :
格式字符串 “file://path/to/file.pem” 或者 PEM 格式的私钥
参数 `$passphrase` :
如果指定的密钥已被加密了(受密码保护),可选参数 passphrase 是必须要的。
getPublickey()¶
从证书中解析公钥,以供使用
public static function getPublickey (
mixed $certificate
) : resource
参数: |
|
---|
参数 `$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
参数: |
|
---|
pbkdf2()¶
生成一个 PKCS5 v2 PBKDF2 字符串
public static function pbkdf2 (
string $password,
string $salt,
int $key_length,
int $iterations,
string $digest_algorithm = "sha1"
) : string
参数: |
|
||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
返回值: | 失败时返回 false |
参数 `$salt` :
PBKDF2 推荐一个不少于 64 位( 8 字节)的密码盐值。
参数 `$iterations` :
NIST 建议至少 10,000 次。
pkcs12ExportToFile()¶
输出一个 PKCS#12 兼容的证书存储文件
public function pkcs12ExportToFile (
string $filename,
string $pass,
array $args = null
) : bool
参数: |
|
---|
pkcs12Export()¶
将 PKCS#12 兼容证书存储文件导出到变量
public function pkcs12Export (
string &$out,
string $pass,
array $args = null
) : bool
参数: |
|
---|
pkcs12Read()¶
将 PKCS#12 证书存储区解析到数组中
public static function pkcs12Read (
string $pkcs12,
array &$certs,
string $pass
) : bool
参数: |
|
---|
pkcs7Decrypt()¶
解密一个 S/MIME 加密的消息
public function pkcs7Decrypt (
string $infilename,
string $outfilename
) : bool
参数: |
|
---|
pkcs7Encrypt()¶
加密一个S/MIME消息
public function pkcs7Encrypt (
string $infile,
string $outfile,
array $headers,
mixed $recipcerts = null,
int $flags = 0,
int $cipherid = 0
) : bool
参数: |
|
---|
参数 `$headers` :
在被加密后将对数据进行预处理
参数 `$recipcerts` :
不指定则为当前证书
pkcs7Read()¶
将 PKCS7 文件导出为 PEM 格式证书的数组
public static function pkcs7Read (
string $infilename,
array &$certs
) : bool
参数: |
|
---|
pkcs7Sign()¶
对一个 S/MIME 消息进行签名
public function pkcs7Sign (
string $infilename,
string $outfilename,
array $headers,
int $flags = 64,
string $extracerts = null
) : bool
参数: |
|
---|
参数 `$extracerts` :
其中包含一组含有签名的额外的证书
pkcs7Verify()¶
校验一个已签名的S/MIME消息的签名
public function pkcs7Verify (
string $filename,
int $flags,
string $outfilename = null,
array $cainfo = null,
string $extracerts = null,
string $content = null
) : bool
参数: |
|
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
返回值: | 错误时返回1 |
参数 `$outfilename` :
如果已指定 outfilename 输出文件,它应该是一个用以保存文件的字符串名称,签名消息的个人证书将以PEM的格式保存起来.
参数 `$cainfo` :
供在验证过程中使用。
参数 `$extracerts` :
如果 extracerts 被指定了,该文件包含了一堆会被作为不受信任的 ca 使用的证书
参数 `$content` :
你可以使用 content 来指定带有已被验证数据的文件名,该文件内容已去掉了签名信息
pkeyExportToFile()¶
将密钥导出到文件中
public function pkeyExportToFile (
string $outfilename,
string $passphrase = null,
array $configargs = null
) : bool
参数: |
|
---|
参数 `$passphrase` :
密钥可以通过值为 passphrase 的密码来保护
参数 `$configargs` :
用来调整导出流程,通过指定或者覆盖 openssl 配置文件选项
pkeyExport()¶
将一个密钥的可输出表示转换为字符串
public function pkeyExport (
string &$out,
string $passphrase = null,
array $configargs = null
) : bool
参数: |
|
---|
参数 `$passphrase` :
密钥可以通过 passphrase 来保护
参数 `$configargs` :
用来调整导出流程,通过指定或者覆盖 openssl 配置文件选项
pkeyGetPrivate()¶
获取私钥
public static function pkeyGetPrivate (
mixed $key,
string $passphrase = ""
) : resource
参数: |
|
||||||
---|---|---|---|---|---|---|---|
返回值: | 失败返回 false |
参数 `$key` :
格式字符串 “file://path/to/file.pem” 或者 PEM 格式的私钥
参数 `$passphrase` :
如果指定的密钥已被加密了(受密码保护),可选参数 passphrase 是必须要的
pkeyGetPublic()¶
从证书中解析公钥,以供使用
public static function pkeyGetPublic (
mixed $certificate,
bool $from_private = false,
string $passphrase = ""
) : resource
参数: |
|
||||||||
---|---|---|---|---|---|---|---|---|---|
返回值: | 失败返回 false |
参数 `$certificate` :
X.509 证书资源或者格式字符串 “file://path/to/file.pem” 或者 PEM 格式的公钥
参数 `$passphrase` :
如果指定的密钥已被加密了(受密码保护),可选参数 passphrase 是必须要的
pkeyNew()¶
生成一个新的私钥
public static function pkeyNew (
array $configargs = null
) : resource
参数: |
|
||||
---|---|---|---|---|---|
返回值: | 错误时返回 false |
参数 `$configargs` :
使用 configargs 参数微调密钥的生成
privateDecrypt()¶
使用私钥解密数据
public function privateDecrypt (
string $data,
int $padding = 1
) : string
参数: |
|
||||||
---|---|---|---|---|---|---|---|
返回值: | 返回解密结果 |
privateEncrypt()¶
使用私钥加密数据
public function privateEncrypt (
string $data,
int $padding = 1
) : string
参数: |
|
||||||
---|---|---|---|---|---|---|---|
返回值: | 返回加密结果 |
publicDecrypt()¶
使用公钥解密数据
public function publicDecrypt (
string $data,
int $padding = 1
) : string
参数: |
|
||||||
---|---|---|---|---|---|---|---|
返回值: | 返回解密结果 |
publicEncrypt()¶
使用公钥加密数据
public function publicEncrypt (
string $data,
int $padding = 1
) : string
参数: |
|
||||||
---|---|---|---|---|---|---|---|
返回值: | 返回加密结果 |
randomPseudoBytes()¶
生成一个伪随机字节串
public static function randomPseudoBytes (
int $length,
bool &$crypto_strong = null
) : string
参数: |
|
---|
参数 `$crypto_strong` :
如果传递到该函数中,将会保存为一个 boolean 值来表明是否使用了"强加密"
seal()¶
密封 (加密) 数据
public function seal (
string $data,
string &$sealed_data,
array &$env_keys,
string $method = "RC4",
string $iv = ""
) : int
参数: |
|
---|
sign()¶
对数据签名
public function sign (
string $data,
int $signature_alg = 1
) : string
参数: |
|
||||||
---|---|---|---|---|---|---|---|
返回值: | 返回签名字符串 |
spkiExportChallenge()¶
导出与签名公钥和挑战相关的挑战字符串
public static function spkiExportChallenge (
string &$spkac
) : string
参数: |
|
||||
---|---|---|---|---|---|
返回值: | 失败返回 null |
spkiExport()¶
通过签名公钥和挑战导出一个可用的 PEM 格式的公钥
public static function spkiExport (
string &$spkac
) : string
参数: |
|
||||
---|---|---|---|---|---|
返回值: | 失败返回null |
spki_new()¶
生成一个新的签名公钥和挑战
public function spki_new (
string &$challenge,
int $algorithm = 0
) : string
参数: |
|
---|
spki_verify()¶
验证签名公钥和挑战
public static function spki_verify (
string &$spkac
) : bool
参数: |
|
---|
verify()¶
验证签名
public function verify (
string $data,
string $signature,
int $signature_alg = 1
) : bool
参数: |
|
||||||||
---|---|---|---|---|---|---|---|---|---|
返回值: | 如果签名正确返回 true, 签名错误返回 false |
x509Checkpurpose()¶
验证是否可以为特定目的使用证书
public function x509Checkpurpose (
int $purpose,
array $cainfo = null,
string $untrustedfile = null
) : int
参数: |
|
---|
参数 `$purpose` :
常量 X509_PURPOSE_*
x509ExportToFile()¶
导出证书至文件
public function x509ExportToFile (
string $outfilename,
bool $notext = true
) : bool
参数: |
|
---|
x509Export()¶
以字符串格式导出证书
public function x509Export (
string &$output,
bool $notext = true
) : bool
参数: |
|
---|
x509Fingerprint()¶
计算一个给定的 x.509 证书的指纹或摘要
public function x509Fingerprint (
string $hash_algorithm = "sha1",
bool $raw_output = false
) : string
参数: |
|
||||||
---|---|---|---|---|---|---|---|
返回值: | 失败返回 false |
x509Parse()¶
解析一个 X509 证书并作为一个数组返回信息
public function x509Parse (
bool $shortnames = true
) : array
参数: |
|
---|
x509Read()¶
解析一个 x.509 证书并返回一个资源标识符
public static function x509Read (
mixed $x509certdata
) : resource
参数: |
|
---|