49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Illuminate\Encryption;
 | |
| 
 | |
| use RuntimeException;
 | |
| use Illuminate\Support\Str;
 | |
| use Illuminate\Support\ServiceProvider;
 | |
| 
 | |
| class EncryptionServiceProvider extends ServiceProvider
 | |
| {
 | |
|     /**
 | |
|      * Register the service provider.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     public function register()
 | |
|     {
 | |
|         $this->app->singleton('encrypter', function ($app) {
 | |
|             $config = $app->make('config')->get('app');
 | |
| 
 | |
|             if (Str::startsWith($key = $config['key'], 'base64:')) {
 | |
|                 $key = base64_decode(substr($key, 7));
 | |
|             }
 | |
| 
 | |
|             return $this->getEncrypterForKeyAndCipher($key, $config['cipher']);
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the proper encrypter instance for the given key and cipher.
 | |
|      *
 | |
|      * @param  string  $key
 | |
|      * @param  string  $cipher
 | |
|      * @return mixed
 | |
|      *
 | |
|      * @throws \RuntimeException
 | |
|      */
 | |
|     protected function getEncrypterForKeyAndCipher($key, $cipher)
 | |
|     {
 | |
|         if (Encrypter::supported($key, $cipher)) {
 | |
|             return new Encrypter($key, $cipher);
 | |
|         } elseif (McryptEncrypter::supported($key, $cipher)) {
 | |
|             return new McryptEncrypter($key, $cipher);
 | |
|         } else {
 | |
|             throw new RuntimeException('No supported encrypter found. The cipher and / or key length are invalid.');
 | |
|         }
 | |
|     }
 | |
| }
 | 
