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;
 }
Exemple #3
0
 function rsaObject()
 {
     return RSA::unserialize($this->rsa);
 }