Issues (174)

src/Utility/CryptHelper.php (5 issues)

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
Are you sure the doc-type for parameter $basePath is correct as it would always require null to be passed?
Loading history...
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
$basePath is of type null, thus it always evaluated to false.
Loading history...
63 2
        $publicKeyPath = $basePath ? $basePath . DIRECTORY_SEPARATOR . $publicKeyName : static::keyPath($publicKeyName);
0 ignored issues
show
$basePath is of type null, thus it always evaluated to false.
Loading history...
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 ignore-type  annotation

66
        $keys = $rsa->createKey(2048, /** @scrutinizer ignore-type */ false);
Loading history...
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
The assignment to $configKey is dead and can be removed.
Loading history...
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