generate keys ids improvements

This commit is contained in:
Yuri Kuznetsov
2020-04-06 10:36:01 +03:00
parent 8607c95c6e
commit af1fc53e10
7 changed files with 28 additions and 19 deletions

View File

@@ -219,7 +219,7 @@ class DataManager
$cryptKey = $config->get('cryptKey');
if (!$cryptKey) {
$cryptKey = \Espo\Core\Utils\Util::generateKey();
$cryptKey = \Espo\Core\Utils\Util::generateSecretKey();
$config->set('cryptKey', $cryptKey);
}

View File

@@ -97,6 +97,6 @@ class Crypt
public function generateKey()
{
return \Espo\Core\Utils\Util::generateKey();
return \Espo\Core\Utils\Util::generateSecretKey();
}
}

View File

@@ -555,28 +555,35 @@ class Util
return true;
}
public static function generateId()
public static function generateId() : string
{
return uniqid() . substr(md5(rand()), 0, 4);
}
public static function generateApiKey()
public static function generateMoreEntropyId() : string
{
return substr(md5(uniqid(rand(), true)), 0, 16) . substr(md5(rand()), 0, 4);
}
public static function generateCryptId() : string
{
if (!function_exists('random_bytes')) {
return self::generateId();
return self::generateMoreEntropyId();
}
return bin2hex(random_bytes(16));
}
public static function generateSecretKey()
public static function generateApiKey() : string
{
if (!function_exists('random_bytes')) {
return self::generateId();
}
return bin2hex(random_bytes(16));
return self::generateCryptId();
}
public static function generateKey()
public static function generateSecretKey() : string
{
return self::generateCryptId();
}
public static function generateKey() : string
{
return md5(uniqid(rand(), true));
}

View File

@@ -31,6 +31,8 @@ namespace Espo\Entities;
class UniqueId extends \Espo\Core\ORM\Entity
{
public function getIdValue() : ?string
{
return $this->get('name');
}
}

View File

@@ -44,7 +44,7 @@ class UniqueId extends \Espo\Core\ORM\Repositories\RDB
public function getNew() : ?Entity
{
$entity = parent::getNew();
$entity->set('name', \Espo\Core\Utils\Util::generateId());
$entity->set('name', \Espo\Core\Utils\Util::generateMoreEntropyId());
return $entity;
}
}

View File

@@ -52,7 +52,7 @@ class Webhook extends \Espo\Core\ORM\Repositories\RDB
protected function fillSecretKey(Entity $entity)
{
$secretKey = \Espo\Core\Utils\Util::generateKey();
$secretKey = \Espo\Core\Utils\Util::generateSecretKey();
$entity->set('secretKey', $secretKey);
}

View File

@@ -245,7 +245,7 @@ class User extends Record
throw new Forbidden(json_encode(['reason' => 'Already-Sent']));
}
$requestId = Util::generateId() . Util::generateKey();
$requestId = Util::generateCryptId();
$passwordChangeRequest = $this->getEntityManager()->getEntity('PasswordChangeRequest');
$passwordChangeRequest->set([
@@ -411,7 +411,7 @@ class User extends Record
$entity->set('apiKey', $apiKey);
if ($entity->get('authMethod') === 'Hmac') {
$secretKey = \Espo\Core\Utils\Util::generateKey();
$secretKey = \Espo\Core\Utils\Util::generateSecretKey();
$entity->set('secretKey', $secretKey);
}
@@ -508,7 +508,7 @@ class User extends Record
$entity->set('apiKey', $apiKey);
if ($entity->get('authMethod') === 'Hmac') {
$secretKey = \Espo\Core\Utils\Util::generateKey();
$secretKey = \Espo\Core\Utils\Util::generateSecretKey();
$entity->set('secretKey', $secretKey);
}
}
@@ -559,7 +559,7 @@ class User extends Record
if ($entity->isApi()) {
if ($entity->isAttributeChanged('authMethod') && $entity->get('authMethod') === 'Hmac') {
$secretKey = \Espo\Core\Utils\Util::generateKey();
$secretKey = \Espo\Core\Utils\Util::generateSecretKey();
$entity->set('secretKey', $secretKey);
}
}