first commit
This commit is contained in:
86
lib/Config/Support/ConfigUtils.php
Normal file
86
lib/Config/Support/ConfigUtils.php
Normal file
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace Yeepay\Yop\Sdk\Config\Support;
|
||||
|
||||
use Yeepay\Yop\Sdk\Exception\YopClientException;
|
||||
|
||||
class ConfigUtils
|
||||
{
|
||||
|
||||
/**
|
||||
* @param array $config
|
||||
* @return array
|
||||
* @throws YopClientException
|
||||
*/
|
||||
public static function loadPublicKey(array $config)
|
||||
{
|
||||
$certType = $config['cert_type'];
|
||||
if ($config['store_type'] == 'string') {
|
||||
return [$certType, self::getPublicKey($config['value'])];
|
||||
} else {
|
||||
throw new YopClientException('unsupported publicKey storeType:'.$config['store_type']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $config
|
||||
* @return array
|
||||
* @throws YopClientException
|
||||
*/
|
||||
public static function loadPrivateKey(array $config)
|
||||
{
|
||||
$certType = $config['cert_type'];
|
||||
if ($config['store_type'] == 'string') {
|
||||
return [$certType, self::getPrivateKey($config['value'])];
|
||||
} else {
|
||||
if ($config['store_type'] == 'file_12') {
|
||||
$certs = [];
|
||||
$pkcs12 = file_get_contents($config['value']);
|
||||
openssl_pkcs12_read($pkcs12, $certs, $config['password']);
|
||||
|
||||
return [$certType, $certs['pkey']];
|
||||
} else {
|
||||
throw new YopClientException('unsupported publicKey storeType:'.$config['store_type']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $publicKey
|
||||
* @return resource
|
||||
* @throws YopClientException
|
||||
*/
|
||||
public static function getPublicKey($publicKey)
|
||||
{
|
||||
$publicKey = "-----BEGIN PUBLIC KEY-----\n".
|
||||
wordwrap($publicKey, 64, "\n", true).
|
||||
"\n-----END PUBLIC KEY-----";
|
||||
$result = openssl_pkey_get_public($publicKey);
|
||||
if (empty($result)) {
|
||||
throw new YopClientException("illegal publicKey");
|
||||
}
|
||||
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $privateKey
|
||||
* @return resource
|
||||
* @throws YopClientException
|
||||
*/
|
||||
public static function getPrivateKey($privateKey)
|
||||
{
|
||||
$privateKey = "-----BEGIN RSA PRIVATE KEY-----\n".
|
||||
wordwrap($privateKey, 64, "\n", true).
|
||||
"\n-----END RSA PRIVATE KEY-----";
|
||||
$result = openssl_pkey_get_private($privateKey);
|
||||
if (empty($result)) {
|
||||
throw new YopClientException("illegal privateKey");
|
||||
}
|
||||
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user