tx_service = $tx_service; $this->repository = $repository; } /** * @param array $params * @return IAsymmetricKey */ abstract public function register(array $params); /** * @param int $key_id * @return bool */ public function delete($key_id) { $repository = $this->repository; return $this->tx_service->transaction(function() use($key_id, $repository) { $key = $repository->getById($key_id); if(!$key) return false; $repository->delete($key); return true; }); } /** * @param int $key_id * @param array $params * @return bool */ public function update($key_id, array $params) { $repository = $this->repository; return $this->tx_service->transaction(function () use ($key_id, $params, $repository) { $key = $repository->getById($key_id); if (is_null($key)) { return false; } $key_active = $repository->getActiveByCriteria($key->getType(), $key->getUse(), $key->getAlg()->getName()); if($key_active && $params['active'] === true) { $key_active->active = false; $repository->add($key_active); } $allowed_update_params = array ( 'active', ); foreach ($allowed_update_params as $param) { if (array_key_exists($param, $params)) { $key->{$param} = $params[$param]; } } $repository->add($key); return true; }); } }