Skip to content

Commit

Permalink
Merge pull request #9 from nikserg/curl
Browse files Browse the repository at this point in the history
Добавлен метод для curl-запросов с использованием гостовых сертификатов
  • Loading branch information
nikserg authored Aug 31, 2022
2 parents b66df7f + e7e8469 commit 5c93917
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.
40 changes: 40 additions & 0 deletions CryptoProCli.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ class CryptoProCli
*/
public string $certmgrExec = '/opt/cprocsp/bin/amd64/certmgr';

/**
* @var string Путь к исполняемому файлу curl КриптоПро
*/
public string $curlExec = '/opt/cprocsp/bin/amd64/curl';

public function __construct(bool $nochain = false)
{
$this->nochain = $nochain;
Expand Down Expand Up @@ -256,4 +261,39 @@ public function verifyFileDetached(string $fileSign, string $fileToBeSigned, str
throw new Cli("Неожиданный результат $shellCommand: \n$result");
}
}

/**
* Curl-запросы с использованием гостовых сертификатов
*
*
* @param string $url
* @param string|array $thumbprint
* @param string $method
* @param string|null $bearer
* @param string|null $contentType
* @param string|null $data
* @return bool|string
*/
public function proxyCurl(
string $url,
string|array $thumbprint,
string $method = 'GET',
string $bearer = null,
string $contentType = null,
string $data = null
): bool|string
{
list($hash, $pin) = is_array($thumbprint) ? $thumbprint : [$thumbprint, ''];
$shellCommand = self::getExec($this->curlExec)
. ' -k -s -X ' . $method
. ' ' . $url
. ' --cert-type CERT_SHA1_HASH_PROP_ID:CERT_SYSTEM_STORE_CURRENT_USER:My'
. ' --cert ' . $hash
. ($pin ? ' --pass ' . $pin : '')
. ($bearer ? ' --header \"Authorization: Bearer ' . $bearer . '\"' : '')
. ($contentType ? ' --header \"Content-Type: ' . $contentType . '\"' : '')
. ($data ? ' --data \'' . str_replace("'", "'\''", $data) . '\'' : '');

return shell_exec($shellCommand);
}
}
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

`composer require nikserg/cryptoprocli`

В свойстве `$cryptcpExec` объекта CryptoProCli хранится путь к утилите `cryptcp`. В свойстве `$certmgrExec` объекта CryptoProCli хранится путь к утилите `cryptcp`. Пути по умолчанию подходят для Linux-систем. Для Windows-систем пути нужно изменить.
В свойстве `$cryptcpExec` объекта CryptoProCli хранится путь к утилите `cryptcp`. В свойстве `$certmgrExec` объекта CryptoProCli хранится путь к утилите `cryptcp`. В свойстве `$curlExec` объекта CryptoProCli хранится путь к утилите `curl`. Пути по умолчанию подходят для Linux-систем. Для Windows-систем пути нужно изменить.

## Конструктор объекта CryptoProCli

Expand All @@ -28,3 +28,4 @@
* `addSignToFile(string $file, string $thumbprint)` - Добавить подпись в файл, уже содержащий подпись.
* `verifyFile(string $file)` - Проверяет корректность всех подписей, наложенных на файл. В случае ошибки выкидывает исключение, если все хорошо, ничего не происходит.
* `verifyFileContent(string $file)` - Аналогично verifyFile, но по содержимому.
* `proxyCurl(string $url, string|array $thumbprint, string $method = 'GET', string $bearer = null, string $contentType = null, string $data = null)` - Curl-запросы с использованием гостовых сертификатов

0 comments on commit 5c93917

Please sign in to comment.