• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/paysystem/yandexcert.php
  • Класс: BitrixSalePaySystemYandexCert
  • Вызов: YandexCert::generate
public function generate($shopId, $companyName)
{
	$yandexCsr = self::loadFromOptions($shopId);
	if ($yandexCsr === '')
	{
		self::$cn = "/business/".$companyName;

		$config = array(
			"digest_alg" => "sha1",
			"private_key_bits" => 2048,
			"private_key_type" => OPENSSL_KEYTYPE_RSA,
		);

		$dnFull = array(
			"countryName" => "RU",
			"stateOrProvinceName" => "Russia",
			"localityName" => "Moscow",
			"commonName" => self::$cn,
		);

		$res = openssl_pkey_new($config);
		$csr_origin = openssl_csr_new($dnFull, $res);
		if ($csr_origin === false)
			return;
		$csr_full = "";
		openssl_pkey_export($res, self::$pkey);
		openssl_csr_export($csr_origin, self::$csr);

		openssl_csr_export($csr_origin, $csr_full, false);
		preg_match('"Signature Algorithm: (.*)-----BEGIN"ims', $csr_full, $sign);
		$sign = str_replace("t", "", $sign);
		if ($sign)
		{
			$sign = $sign[1];
			$a = explode("n", $sign);
			unset($a[0]);
			$sign = str_replace("         ", "", trim(join("n", $a)));
		}
		self::$sign = $sign;

		$dbRes = YandexSettingsTable::getById($shopId);
		if ($dbRes->fetch())
			YandexSettingsTable::update($shopId, array('SIGN' => self::$sign, 'CSR' => self::$csr, 'PKEY' => self::$pkey, 'CERT' => ''));
		else
			YandexSettingsTable::add(array('SHOP_ID' => $shopId, 'SIGN' => self::$sign, 'CSR' => self::$csr, 'PKEY' => self::$pkey));
	}
    }