• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/paysystem/yandexcert.php
  • Класс: BitrixSalePaySystemYandexCert
  • Вызов: YandexCert::setCert
public function setCert($file, $shopId)
{
	if (!empty($file['name']))
	{
		if (mb_substr($file['name'], -4) != '.cer')
			self::$errors[]  = Loc::getMessage('YANDEX_CERT_ERR_EXT');
		elseif ($file['error'] != UPLOAD_ERR_OK)
			self::$errors[]  = Loc::getMessage('YANDEX_CERT_ERR_LOAD');
		elseif (filesize($file['tmp_name']) > 2048)
			self::$errors[]  = Loc::getMessage('YANDEX_CERT_ERR_SIZE');
	}
	else
	{
		self::$errors[]  = Loc::getMessage('YANDEX_CERT_ERR_LOAD');
	}

	if (empty(self::$errors))
	{
		$cert = file_get_contents($file['tmp_name']);
		$cert_info = openssl_x509_parse($cert);
		if (isset($cert_info['subject']['CN']))
		{
			if ($cert_info['subject']['CN'] != self::getCn($shopId))
			{
				self::$errors[] = Loc::getMessage('YANDEX_CERT_ERR_CN');
			}
			else
			{
				$pkey = static::getValue('PKEY', $shopId);
				if (openssl_x509_check_private_key($cert, $pkey))
				{
					YandexSettingsTable::update($shopId, array('CERT' => $cert));
				}
				else
				{
					self::$errors[] = Loc::getMessage('YANDEX_CERT_ERR_ACCORDING_PKEY_TO_CERT');
				}
			}
		}
		else
		{
			self::$errors[] = Loc::getMessage('YANDEX_CERT_ERR_NULL');
		}
	}
}