From 48ef22c94839d4e7e19732801d3a2378d3e40b54 Mon Sep 17 00:00:00 2001 From: Artem Vasilev Date: Mon, 24 Oct 2022 18:25:56 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=B4=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/CryptoPro.php | 56 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/src/CryptoPro.php b/src/CryptoPro.php index b767637..593ac55 100755 --- a/src/CryptoPro.php +++ b/src/CryptoPro.php @@ -7,6 +7,8 @@ use Webmasterskaya\CryptoPro\Helpers\ErrorMessageHelper; class CryptoPro { + protected const CP_MY_STORE = 'My'; + /** * Возвращает список сертификатов, доступных пользователю в системе * @@ -39,7 +41,7 @@ class CryptoPro static $certificates; if ($resetCache === true || !isset($certificates)) { - $certificates = self::getCertificatesFromStore(CURRENT_USER_STORE, MY_STORE, false, false); + $certificates = self::getCertificatesFromStore(CURRENT_USER_STORE, self::CP_MY_STORE, false, false); } return $certificates; @@ -77,7 +79,7 @@ class CryptoPro static $certificates; if ($resetCache === true || !isset($certificates)) { - $certificates = self::getCertificatesFromStore(CONTAINER_STORE, MY_STORE, false, false); + $certificates = self::getCertificatesFromStore(CONTAINER_STORE, self::CP_MY_STORE, false, false); } return $certificates; @@ -213,13 +215,14 @@ class CryptoPro /** * Создает совмещенную (присоединенную) подпись сообщения * - * @param string $thumbprint отпечаток сертификата - * @param string $unencryptedMessage подписываемое сообщение + * @param string $thumbprint отпечаток сертификата + * @param string $unencryptedMessage подписываемое сообщение + * @param string|null $pin пин-код доступа к закрытому ключу * * @throws \Exception * @return string подпись в формате PKCS#7 */ - public static function createAttachedSignature(string $thumbprint, string $unencryptedMessage) + public static function createAttachedSignature(string $thumbprint, string $unencryptedMessage, string $pin = null) { try { @@ -257,6 +260,11 @@ class CryptoPro try { + if (!empty($pin)) + { + $cadesSigner->set_KeyPin($pin); + } + $cadesSigner->set_Certificate($cadesCertificate); /** @var \CPAttributes $cadesAuthAttrs */ @@ -290,13 +298,14 @@ class CryptoPro /** * Создает отсоединенную (открепленную) подпись сообщения * - * @param string $thumbprint отпечаток сертификата - * @param string $messageHash хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит + * @param string $thumbprint отпечаток сертификата + * @param string $messageHash хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит + * @param string|null $pin пин-код доступа к закрытому ключу * * @throws \Exception * @return string подпись в формате PKCS#7 */ - public static function createDetachedSignature(string $thumbprint, string $messageHash) + public static function createDetachedSignature(string $thumbprint, string $messageHash, string $pin = null) { try { @@ -333,6 +342,11 @@ class CryptoPro try { + if (!empty($pin)) + { + $cadesSigner->set_KeyPin($pin); + } + $cadesSigner->set_Certificate($cadesCertificate); /** @var \CPAttributes $cadesAuthAttrs */ @@ -377,9 +391,14 @@ class CryptoPro /** * добавляет совмещенную (присоединенную) подпись к раннее подписанному документу (реализует метод coSign) * + * @param string $thumbprint отпечаток сертификата + * @param string $signedMessage + * @param string|null $pin пин-код доступа к закрытому ключу + * + * @throws \Exception * @return string */ - public static function addAttachedSignature(string $thumbprint, string $signedMessage) + public static function addAttachedSignature(string $thumbprint, string $signedMessage, string $pin = null) { try { @@ -417,6 +436,11 @@ class CryptoPro try { + if (!empty($pin)) + { + $cadesSigner->set_KeyPin($pin); + } + $cadesSigner->set_Certificate($cadesCertificate); /** @var \CPAttributes $cadesAuthAttrs */ @@ -450,14 +474,15 @@ class CryptoPro /** * Добавляет отсоединенную (открепленную) подпись к раннее подписанному документу (реализует метод coSign) * - * @param string $thumbprint отпечаток сертификата - * @param string $signedMessage подписанное сообщение - * @param string $messageHash хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит + * @param string $thumbprint отпечаток сертификата + * @param string $signedMessage подписанное сообщение + * @param string $messageHash хеш подписываемого сообщения, сгенерированный по ГОСТ Р 34.11-2012 256 бит + * @param string|null $pin пин-код доступа к закрытому ключу * * @throws \Exception * @return string подпись в формате PKCS#7 */ - public static function addDetachedSignature(string $thumbprint, string $signedMessage, string $messageHash) + public static function addDetachedSignature(string $thumbprint, string $signedMessage, string $messageHash, string $pin = null) { try { @@ -494,6 +519,11 @@ class CryptoPro try { + if (!empty($pin)) + { + $cadesSigner->set_KeyPin($pin); + } + $cadesSigner->set_Certificate($cadesCertificate); /** @var \CPAttributes $cadesAuthAttrs */