mirror of
https://github.com/crypto-pro-web/crypto-pro-php.git
synced 2025-01-18 11:25:50 +03:00
Поправил получение сертификатов
This commit is contained in:
parent
2090e5cbce
commit
316ae87166
@ -2,9 +2,13 @@
|
|||||||
|
|
||||||
namespace Webmasterskaya\CryptoPro;
|
namespace Webmasterskaya\CryptoPro;
|
||||||
|
|
||||||
|
use Webmasterskaya\CryptoPro\Constants\CAPICOM_CERTIFICATE_FIND_TYPE;
|
||||||
|
use Webmasterskaya\CryptoPro\Constants\CAPICOM_PROPID;
|
||||||
use Webmasterskaya\CryptoPro\Helpers\CertificateHelper;
|
use Webmasterskaya\CryptoPro\Helpers\CertificateHelper;
|
||||||
use Webmasterskaya\CryptoPro\Helpers\ErrorMessageHelper;
|
use Webmasterskaya\CryptoPro\Helpers\ErrorMessageHelper;
|
||||||
|
|
||||||
|
const CONTAINER_STORE = 100;
|
||||||
|
|
||||||
class CryptoPro
|
class CryptoPro
|
||||||
{
|
{
|
||||||
protected const CP_MY_STORE = 'My';
|
protected const CP_MY_STORE = 'My';
|
||||||
@ -41,7 +45,7 @@ class CryptoPro
|
|||||||
static $certificates;
|
static $certificates;
|
||||||
if ($resetCache === true || !isset($certificates))
|
if ($resetCache === true || !isset($certificates))
|
||||||
{
|
{
|
||||||
$certificates = self::getCertificatesFromStore(CURRENT_USER_STORE, self::CP_MY_STORE, false, false);
|
$certificates = self::getCertificatesFromStore(CURRENT_USER_STORE, self::CP_MY_STORE, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $certificates;
|
return $certificates;
|
||||||
@ -79,7 +83,7 @@ class CryptoPro
|
|||||||
static $certificates;
|
static $certificates;
|
||||||
if ($resetCache === true || !isset($certificates))
|
if ($resetCache === true || !isset($certificates))
|
||||||
{
|
{
|
||||||
$certificates = self::getCertificatesFromStore(CONTAINER_STORE, self::CP_MY_STORE, false, false);
|
$certificates = self::getCertificatesFromStore(CONTAINER_STORE, self::CP_MY_STORE, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $certificates;
|
return $certificates;
|
||||||
@ -625,9 +629,33 @@ class CryptoPro
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static function getCertificatesFromStore(
|
/**
|
||||||
int $storeLocation, string $storeName = 'My', bool $validOnly = true, bool $withPrivateKey = true
|
* @param int $storeLocation
|
||||||
)
|
* @param string $storeName
|
||||||
|
* @param bool $validOnly Логическое значение , указывающее, возвращаются ли только действительные сертификаты.
|
||||||
|
* Если значение равно true, поиск не вернет следующие типы сертификатов:
|
||||||
|
* <ul>
|
||||||
|
* <li>
|
||||||
|
* Сертификаты, срок действия которых истек или еще не действителен.
|
||||||
|
* </li>
|
||||||
|
* <li>
|
||||||
|
* Сертификаты, в которых отсутствует закрытый ключ.
|
||||||
|
* </li>
|
||||||
|
* <li>
|
||||||
|
* Сертификаты не связаны должным образом.
|
||||||
|
* </li>
|
||||||
|
* <li>
|
||||||
|
* Сертификаты, у которых возникли проблемы с подписью.
|
||||||
|
* </li>
|
||||||
|
* <li>
|
||||||
|
* Отозванные сертификаты.
|
||||||
|
* </li>
|
||||||
|
* </ul>
|
||||||
|
*
|
||||||
|
* @throws \Exception
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected static function getCertificatesFromStore(int $storeLocation, string $storeName = 'My', bool $validOnly = true)
|
||||||
{
|
{
|
||||||
$certificates = [];
|
$certificates = [];
|
||||||
|
|
||||||
@ -653,20 +681,19 @@ class CryptoPro
|
|||||||
{
|
{
|
||||||
$cadesCertificates = $cadesStore->get_Certificates();
|
$cadesCertificates = $cadesStore->get_Certificates();
|
||||||
|
|
||||||
/**
|
|
||||||
* Не рассматриваются сертификаты не действительны на данный момент
|
|
||||||
*/
|
|
||||||
if ($validOnly === true)
|
if ($validOnly === true)
|
||||||
{
|
{
|
||||||
$cadesCertificates = $cadesCertificates->Find(CERTIFICATE_FIND_TIME_VALID);
|
$cadesCertificates = $cadesCertificates->Find(
|
||||||
}
|
CAPICOM_CERTIFICATE_FIND_TYPE::TIME_VALID,
|
||||||
|
'',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
$cadesCertificates = $cadesCertificates->Find(
|
||||||
* Не рассматриваются сертификаты, в которых отсутствует закрытый ключ
|
CAPICOM_CERTIFICATE_FIND_TYPE::EXTENDED_PROPERTY,
|
||||||
*/
|
CAPICOM_PROPID::KEY_PROV_INFO,
|
||||||
if ($withPrivateKey === true)
|
true
|
||||||
{
|
);
|
||||||
$cadesCertificates = $cadesCertificates->Find(CERTIFICATE_FIND_EXTENDED_PROPERTY, CAPICOM_PROPID_KEY_PROV_INFO);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$cadesCertificatesCount = $cadesCertificates->Count();
|
$cadesCertificatesCount = $cadesCertificates->Count();
|
||||||
@ -689,12 +716,12 @@ class CryptoPro
|
|||||||
|
|
||||||
$certificates[] = new Certificate(
|
$certificates[] = new Certificate(
|
||||||
$cadesCertificate,
|
$cadesCertificate,
|
||||||
CertificateHelper::extractCommonName($cadesCertificate->SubjectName),
|
CertificateHelper::extractCommonName($cadesCertificate->get_SubjectName()),
|
||||||
$cadesCertificate->IssuerName,
|
$cadesCertificate->get_IssuerName(),
|
||||||
$cadesCertificate->SubjectName,
|
$cadesCertificate->get_SubjectName(),
|
||||||
$cadesCertificate->Thumbprint,
|
$cadesCertificate->get_Thumbprint(),
|
||||||
$cadesCertificate->ValidFromDate,
|
$cadesCertificate->get_ValidFromDate(),
|
||||||
$cadesCertificate->ValidToDate
|
$cadesCertificate->get_ValidToDate()
|
||||||
);
|
);
|
||||||
|
|
||||||
$cadesCertificatesCount--;
|
$cadesCertificatesCount--;
|
||||||
|
Loading…
Reference in New Issue
Block a user