• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/rsaopenssl.php
  • Класс: CRsaOpensslProvider
  • Вызов: CRsaOpensslProvider::Keygen
public function Keygen($keylen=false)
{
	if($keylen === false)
		$keylen = 1024;
	else
		$keylen = intval($keylen);

	$fname = $_SERVER["DOCUMENT_ROOT"]."/bitrix/tmp/openssl.cnf";
	if(!file_exists($fname))
	{
		CheckDirPath($fname);
		file_put_contents($fname, '');
	}

	$keys = openssl_pkey_new(array(
		"private_key_type"=>OPENSSL_KEYTYPE_RSA, 
		"private_key_bits"=>$keylen,
	    "config" => $fname,
	));

	if($keys)
	{
		openssl_pkey_export($keys, $privkey, null, array("config" => $fname));
		$k = self::get_openssl_key_details($privkey);

		if(is_array($k))
		{
			return array(
				"M" => base64_encode(strrev($k['n'])),
				"E" => base64_encode(strrev($k['e'])),
				"D" => base64_encode(strrev($k['d'])),
				"PRIV" => $privkey,
				"chunk" => $keylen/8,
			);
		}
	}
	return false;
}