1 | <?php |
||||
2 | |||||
3 | namespace ByTIC\Hello\Utility; |
||||
4 | |||||
5 | use League\OAuth2\Server\CryptKey; |
||||
6 | use phpseclib\Crypt\RSA; |
||||
7 | |||||
8 | /** |
||||
9 | * Class Helper |
||||
10 | * @package ByTIC\Hello\Utility |
||||
11 | */ |
||||
12 | class CryptHelper |
||||
13 | { |
||||
14 | /** |
||||
15 | * The storage location of the encryption keys. |
||||
16 | * |
||||
17 | * @var string |
||||
18 | */ |
||||
19 | public static $keyPath; |
||||
20 | |||||
21 | /** |
||||
22 | * Set the storage location of the encryption keys. |
||||
23 | * |
||||
24 | * @param string $path |
||||
25 | * @return void |
||||
26 | */ |
||||
27 | public static function loadKeysFrom($path) |
||||
28 | { |
||||
29 | static::$keyPath = $path; |
||||
30 | } |
||||
31 | |||||
32 | /** |
||||
33 | * The location of the encryption keys. |
||||
34 | * |
||||
35 | * @param string $file |
||||
36 | * @return string |
||||
37 | */ |
||||
38 | 3 | public static function keyPath($file) |
|||
39 | { |
||||
40 | 3 | $file = ltrim($file, '/\\'); |
|||
41 | 3 | if (static::$keyPath) { |
|||
42 | return rtrim(static::$keyPath, '/\\') . DIRECTORY_SEPARATOR . $file; |
||||
43 | } |
||||
44 | 3 | if (function_exists('Nip\storage_path')) { |
|||
45 | 3 | return \Nip\storage_path('hello/keys/' . $file); |
|||
46 | } |
||||
47 | |||||
48 | if (function_exists('storage_path')) { |
||||
49 | return storage_path('hello/keys/' . $file); |
||||
50 | } |
||||
51 | return PathHelper::keys($file); |
||||
52 | } |
||||
53 | |||||
54 | /** |
||||
55 | * @param null $basePath |
||||
0 ignored issues
–
show
Documentation
Bug
introduced
by
![]() |
|||||
56 | * @return bool |
||||
57 | */ |
||||
58 | 2 | public static function generateKeys($basePath = null) |
|||
59 | { |
||||
60 | 2 | $privateKeyName = 'oauth-private.key'; |
|||
61 | 2 | $publicKeyName = 'oauth-public.key'; |
|||
62 | 2 | $privateKeyPath = $basePath ? $basePath . DIRECTORY_SEPARATOR . $privateKeyName : static::keyPath($privateKeyName); |
|||
0 ignored issues
–
show
|
|||||
63 | 2 | $publicKeyPath = $basePath ? $basePath . DIRECTORY_SEPARATOR . $publicKeyName : static::keyPath($publicKeyName); |
|||
0 ignored issues
–
show
|
|||||
64 | |||||
65 | 2 | $rsa = new RSA(); |
|||
66 | 2 | $keys = $rsa->createKey(2048, false); |
|||
0 ignored issues
–
show
false of type false is incompatible with the type integer expected by parameter $timeout of phpseclib\Crypt\RSA::createKey() .
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||
67 | |||||
68 | 2 | file_put_contents($privateKeyPath, $keys['privatekey']); |
|||
69 | 2 | file_put_contents($publicKeyPath, $keys['publickey']); |
|||
70 | |||||
71 | 2 | $result = chmod($privateKeyPath, 0600); |
|||
72 | 2 | $result = $result && chmod($publicKeyPath, 0600); |
|||
73 | |||||
74 | 2 | return $result; |
|||
75 | } |
||||
76 | |||||
77 | /** |
||||
78 | * @param $type |
||||
79 | * @return CryptKey |
||||
80 | */ |
||||
81 | 2 | public static function makeCryptKey($type) |
|||
82 | { |
||||
83 | 2 | $configKey = null; |
|||
0 ignored issues
–
show
|
|||||
84 | 2 | $configKey = ConfigHelper::get($type . '_key'); |
|||
85 | |||||
86 | 2 | $key = str_replace('\\n', "\n", $configKey); |
|||
87 | 2 | if (!$key) { |
|||
88 | 1 | $path = CryptHelper::keyPath('oauth-' . $type . '.key'); |
|||
89 | 1 | if (!file_exists($path)) { |
|||
90 | 1 | CryptHelper::generateKeys(dirname($path)); |
|||
91 | } |
||||
92 | 1 | $key = 'file://' . $path; |
|||
93 | } |
||||
94 | |||||
95 | 2 | return new CryptKey($key, null, false); |
|||
96 | } |
||||
97 | } |
||||
98 |