function get_certificate($id) { $crf = Certificate::find((int) $id); $certificate = $crf->toArray(); if ($crf->user_id !== Auth::user()->id) { if (!$crf->public) { abort(404); } unset($certificate['public']); unset($certificate['private']); } $info = \App\RSA::unserialize($crf->rsa)->getInfo(); // Доп информация return view('certificate.info', ['certificate' => $certificate, 'info' => $info]); }
private function fileDecrypt($filename, RSA $rsa) { // Временная директория $workdir = sys_get_temp_dir() . '/' . md5(RSA::bcrand('0', '9999999999999999999999') . date('-Y-m-d-H-i-s')); mkdir($workdir); // Распаковываем фрхив с зашифрованными файлами $zip = new \ZipArchive(); $zip->open($filename); $zip->extractTo($workdir); $zip->close(); // Расшифровываем файл с описанием $finfo = json_decode(base64_decode($rsa->decrypt(file_get_contents($workdir . '/info'), filesize($workdir . '/info')))); //Расшифровываем исходный файл и сохраняем его используя информацию из описания file_put_contents($filename = $workdir . '/../' . $finfo->name, $rsa->decrypt(file_get_contents($workdir . '/file'), $finfo->size)); // Удаляем временные файлы unlink($workdir . '/file'); unlink($workdir . '/info'); rmdir($workdir); return $filename; }
function rsaObject() { return RSA::unserialize($this->rsa); }