GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Passed
Push — php72 ( efc120...19e113 )
by Joni
02:36
created
lib/JWX/JWE/Exception/AuthenticationException.php 1 patch
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types = 1);
3
+declare(strict_types=1);
4 4
 
5 5
 namespace Sop\JWX\JWE\Exception;
6 6
 
Please login to merge, or discard this patch.
lib/JWX/JWE/ContentEncryptionAlgorithm.php 2 patches
Indentation   +37 added lines, -37 removed lines patch added patch discarded remove patch
@@ -12,44 +12,44 @@
 block discarded – undo
12 12
  */
13 13
 interface ContentEncryptionAlgorithm extends EncryptionAlgorithmParameterValue, HeaderParameters
14 14
 {
15
-    /**
16
-     * Encrypt plaintext.
17
-     *
18
-     * @param string $plaintext Data to encrypt
19
-     * @param string $key       Encryption key
20
-     * @param string $iv        Initialization vector
21
-     * @param string $aad       Additional authenticated data
22
-     *
23
-     * @return array Tuple of ciphertext and authentication tag
24
-     */
25
-    public function encrypt(string $plaintext, string $key, string $iv,
26
-        string $aad): array;
15
+	/**
16
+	 * Encrypt plaintext.
17
+	 *
18
+	 * @param string $plaintext Data to encrypt
19
+	 * @param string $key       Encryption key
20
+	 * @param string $iv        Initialization vector
21
+	 * @param string $aad       Additional authenticated data
22
+	 *
23
+	 * @return array Tuple of ciphertext and authentication tag
24
+	 */
25
+	public function encrypt(string $plaintext, string $key, string $iv,
26
+		string $aad): array;
27 27
 
28
-    /**
29
-     * Decrypt ciphertext.
30
-     *
31
-     * @param string $ciphertext Data to decrypt
32
-     * @param string $key        Encryption key
33
-     * @param string $iv         Initialization vector
34
-     * @param string $aad        Additional authenticated data
35
-     * @param string $auth_tag   Authentication tag to compare
36
-     *
37
-     * @return string Plaintext
38
-     */
39
-    public function decrypt(string $ciphertext, string $key, string $iv,
40
-        string $aad, string $auth_tag): string;
28
+	/**
29
+	 * Decrypt ciphertext.
30
+	 *
31
+	 * @param string $ciphertext Data to decrypt
32
+	 * @param string $key        Encryption key
33
+	 * @param string $iv         Initialization vector
34
+	 * @param string $aad        Additional authenticated data
35
+	 * @param string $auth_tag   Authentication tag to compare
36
+	 *
37
+	 * @return string Plaintext
38
+	 */
39
+	public function decrypt(string $ciphertext, string $key, string $iv,
40
+		string $aad, string $auth_tag): string;
41 41
 
42
-    /**
43
-     * Get the required key size in bytes.
44
-     *
45
-     * @return int
46
-     */
47
-    public function keySize(): int;
42
+	/**
43
+	 * Get the required key size in bytes.
44
+	 *
45
+	 * @return int
46
+	 */
47
+	public function keySize(): int;
48 48
 
49
-    /**
50
-     * Get the required IV size in bytes.
51
-     *
52
-     * @return int
53
-     */
54
-    public function ivSize(): int;
49
+	/**
50
+	 * Get the required IV size in bytes.
51
+	 *
52
+	 * @return int
53
+	 */
54
+	public function ivSize(): int;
55 55
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types = 1);
3
+declare(strict_types=1);
4 4
 
5 5
 namespace Sop\JWX\JWE;
6 6
 
Please login to merge, or discard this patch.
lib/JWX/JWE/KeyAlgorithm/PBES2Algorithm.php 2 patches
Indentation   +195 added lines, -195 removed lines patch added patch discarded remove patch
@@ -22,199 +22,199 @@
 block discarded – undo
22 22
  */
23 23
 abstract class PBES2Algorithm extends KeyManagementAlgorithm
24 24
 {
25
-    use RandomCEK;
26
-
27
-    /**
28
-     * Mapping from algorithm name to class name.
29
-     *
30
-     * @internal
31
-     *
32
-     * @var array
33
-     */
34
-    const MAP_ALGO_TO_CLASS = [
35
-        JWA::ALGO_PBES2_HS256_A128KW => PBES2HS256A128KWAlgorithm::class,
36
-        JWA::ALGO_PBES2_HS384_A192KW => PBES2HS384A192KWAlgorithm::class,
37
-        JWA::ALGO_PBES2_HS512_A256KW => PBES2HS512A256KWAlgorithm::class,
38
-    ];
39
-
40
-    /**
41
-     * Password.
42
-     *
43
-     * @var string
44
-     */
45
-    protected $_password;
46
-
47
-    /**
48
-     * Salt input.
49
-     *
50
-     * @var string
51
-     */
52
-    protected $_saltInput;
53
-
54
-    /**
55
-     * Iteration count.
56
-     *
57
-     * @var int
58
-     */
59
-    protected $_count;
60
-
61
-    /**
62
-     * Derived key.
63
-     *
64
-     * @var string
65
-     */
66
-    private $_derivedKey;
67
-
68
-    /**
69
-     * Constructor.
70
-     *
71
-     * @param string $password   Password
72
-     * @param string $salt_input Salt input
73
-     * @param int    $count      Iteration count
74
-     */
75
-    public function __construct(string $password, string $salt_input, int $count)
76
-    {
77
-        $this->_password = $password;
78
-        $this->_saltInput = $salt_input;
79
-        $this->_count = $count;
80
-    }
81
-
82
-    /**
83
-     * Initialize from JWK.
84
-     *
85
-     * @param JWK    $jwk
86
-     * @param Header $header
87
-     *
88
-     * @throws \UnexpectedValueException
89
-     *
90
-     * @return self
91
-     */
92
-    public static function fromJWK(JWK $jwk, Header $header): KeyManagementAlgorithm
93
-    {
94
-        $jwk = SymmetricKeyJWK::fromJWK($jwk);
95
-        if (!$header->hasPBES2SaltInput()) {
96
-            throw new \UnexpectedValueException('No salt input.');
97
-        }
98
-        $salt_input = $header->PBES2SaltInput()->saltInput();
99
-        if (!$header->hasPBES2Count()) {
100
-            throw new \UnexpectedValueException('No iteration count.');
101
-        }
102
-        $count = $header->PBES2Count()->value();
103
-        $alg = JWA::deriveAlgorithmName($header, $jwk);
104
-        if (!array_key_exists($alg, self::MAP_ALGO_TO_CLASS)) {
105
-            throw new \UnexpectedValueException("Unsupported algorithm '{$alg}'.");
106
-        }
107
-        $cls = self::MAP_ALGO_TO_CLASS[$alg];
108
-        return new $cls($jwk->key(), $salt_input, $count);
109
-    }
110
-
111
-    /**
112
-     * Initialize from a password with random salt and default iteration count.
113
-     *
114
-     * @param string $password   Password
115
-     * @param int    $count      Optional user defined iteration count
116
-     * @param int    $salt_bytes Optional user defined salt length
117
-     *
118
-     * @return self
119
-     */
120
-    public static function fromPassword(string $password, int $count = 64000,
121
-        int $salt_bytes = 8): self
122
-    {
123
-        $salt_input = openssl_random_pseudo_bytes($salt_bytes);
124
-        return new static($password, $salt_input, $count);
125
-    }
126
-
127
-    /**
128
-     * Get salt input.
129
-     *
130
-     * @return string
131
-     */
132
-    public function saltInput(): string
133
-    {
134
-        return $this->_saltInput;
135
-    }
136
-
137
-    /**
138
-     * Get computed salt.
139
-     *
140
-     * @return string
141
-     */
142
-    public function salt(): string
143
-    {
144
-        return PBES2SaltInputParameter::fromString($this->_saltInput)->salt(
145
-            AlgorithmParameter::fromAlgorithm($this));
146
-    }
147
-
148
-    /**
149
-     * Get iteration count.
150
-     *
151
-     * @return int
152
-     */
153
-    public function iterationCount(): int
154
-    {
155
-        return $this->_count;
156
-    }
157
-
158
-    /**
159
-     * {@inheritdoc}
160
-     */
161
-    public function headerParameters(): array
162
-    {
163
-        return array_merge(parent::headerParameters(),
164
-            [AlgorithmParameter::fromAlgorithm($this),
165
-                PBES2SaltInputParameter::fromString($this->_saltInput),
166
-                new PBES2CountParameter($this->_count), ]);
167
-    }
168
-
169
-    /**
170
-     * Get hash algorithm for hash_pbkdf2.
171
-     *
172
-     * @return string
173
-     */
174
-    abstract protected function _hashAlgo(): string;
175
-
176
-    /**
177
-     * Get derived key length.
178
-     *
179
-     * @return int
180
-     */
181
-    abstract protected function _keyLength(): int;
182
-
183
-    /**
184
-     * Get key wrapping algoritym.
185
-     *
186
-     * @return AESKeyWrapAlgorithm
187
-     */
188
-    abstract protected function _kwAlgo(): AESKeyWrapAlgorithm;
189
-
190
-    /**
191
-     * Get derived key.
192
-     *
193
-     * @return string
194
-     */
195
-    protected function _derivedKey(): string
196
-    {
197
-        if (!isset($this->_derivedKey)) {
198
-            $this->_derivedKey = hash_pbkdf2($this->_hashAlgo(),
199
-                $this->_password, $this->salt(), $this->_count,
200
-                $this->_keyLength(), true);
201
-        }
202
-        return $this->_derivedKey;
203
-    }
204
-
205
-    /**
206
-     * {@inheritdoc}
207
-     */
208
-    protected function _encryptKey(string $key, Header &$header): string
209
-    {
210
-        return $this->_kwAlgo()->wrap($key, $this->_derivedKey());
211
-    }
212
-
213
-    /**
214
-     * {@inheritdoc}
215
-     */
216
-    protected function _decryptKey(string $ciphertext, Header $header): string
217
-    {
218
-        return $this->_kwAlgo()->unwrap($ciphertext, $this->_derivedKey());
219
-    }
25
+	use RandomCEK;
26
+
27
+	/**
28
+	 * Mapping from algorithm name to class name.
29
+	 *
30
+	 * @internal
31
+	 *
32
+	 * @var array
33
+	 */
34
+	const MAP_ALGO_TO_CLASS = [
35
+		JWA::ALGO_PBES2_HS256_A128KW => PBES2HS256A128KWAlgorithm::class,
36
+		JWA::ALGO_PBES2_HS384_A192KW => PBES2HS384A192KWAlgorithm::class,
37
+		JWA::ALGO_PBES2_HS512_A256KW => PBES2HS512A256KWAlgorithm::class,
38
+	];
39
+
40
+	/**
41
+	 * Password.
42
+	 *
43
+	 * @var string
44
+	 */
45
+	protected $_password;
46
+
47
+	/**
48
+	 * Salt input.
49
+	 *
50
+	 * @var string
51
+	 */
52
+	protected $_saltInput;
53
+
54
+	/**
55
+	 * Iteration count.
56
+	 *
57
+	 * @var int
58
+	 */
59
+	protected $_count;
60
+
61
+	/**
62
+	 * Derived key.
63
+	 *
64
+	 * @var string
65
+	 */
66
+	private $_derivedKey;
67
+
68
+	/**
69
+	 * Constructor.
70
+	 *
71
+	 * @param string $password   Password
72
+	 * @param string $salt_input Salt input
73
+	 * @param int    $count      Iteration count
74
+	 */
75
+	public function __construct(string $password, string $salt_input, int $count)
76
+	{
77
+		$this->_password = $password;
78
+		$this->_saltInput = $salt_input;
79
+		$this->_count = $count;
80
+	}
81
+
82
+	/**
83
+	 * Initialize from JWK.
84
+	 *
85
+	 * @param JWK    $jwk
86
+	 * @param Header $header
87
+	 *
88
+	 * @throws \UnexpectedValueException
89
+	 *
90
+	 * @return self
91
+	 */
92
+	public static function fromJWK(JWK $jwk, Header $header): KeyManagementAlgorithm
93
+	{
94
+		$jwk = SymmetricKeyJWK::fromJWK($jwk);
95
+		if (!$header->hasPBES2SaltInput()) {
96
+			throw new \UnexpectedValueException('No salt input.');
97
+		}
98
+		$salt_input = $header->PBES2SaltInput()->saltInput();
99
+		if (!$header->hasPBES2Count()) {
100
+			throw new \UnexpectedValueException('No iteration count.');
101
+		}
102
+		$count = $header->PBES2Count()->value();
103
+		$alg = JWA::deriveAlgorithmName($header, $jwk);
104
+		if (!array_key_exists($alg, self::MAP_ALGO_TO_CLASS)) {
105
+			throw new \UnexpectedValueException("Unsupported algorithm '{$alg}'.");
106
+		}
107
+		$cls = self::MAP_ALGO_TO_CLASS[$alg];
108
+		return new $cls($jwk->key(), $salt_input, $count);
109
+	}
110
+
111
+	/**
112
+	 * Initialize from a password with random salt and default iteration count.
113
+	 *
114
+	 * @param string $password   Password
115
+	 * @param int    $count      Optional user defined iteration count
116
+	 * @param int    $salt_bytes Optional user defined salt length
117
+	 *
118
+	 * @return self
119
+	 */
120
+	public static function fromPassword(string $password, int $count = 64000,
121
+		int $salt_bytes = 8): self
122
+	{
123
+		$salt_input = openssl_random_pseudo_bytes($salt_bytes);
124
+		return new static($password, $salt_input, $count);
125
+	}
126
+
127
+	/**
128
+	 * Get salt input.
129
+	 *
130
+	 * @return string
131
+	 */
132
+	public function saltInput(): string
133
+	{
134
+		return $this->_saltInput;
135
+	}
136
+
137
+	/**
138
+	 * Get computed salt.
139
+	 *
140
+	 * @return string
141
+	 */
142
+	public function salt(): string
143
+	{
144
+		return PBES2SaltInputParameter::fromString($this->_saltInput)->salt(
145
+			AlgorithmParameter::fromAlgorithm($this));
146
+	}
147
+
148
+	/**
149
+	 * Get iteration count.
150
+	 *
151
+	 * @return int
152
+	 */
153
+	public function iterationCount(): int
154
+	{
155
+		return $this->_count;
156
+	}
157
+
158
+	/**
159
+	 * {@inheritdoc}
160
+	 */
161
+	public function headerParameters(): array
162
+	{
163
+		return array_merge(parent::headerParameters(),
164
+			[AlgorithmParameter::fromAlgorithm($this),
165
+				PBES2SaltInputParameter::fromString($this->_saltInput),
166
+				new PBES2CountParameter($this->_count), ]);
167
+	}
168
+
169
+	/**
170
+	 * Get hash algorithm for hash_pbkdf2.
171
+	 *
172
+	 * @return string
173
+	 */
174
+	abstract protected function _hashAlgo(): string;
175
+
176
+	/**
177
+	 * Get derived key length.
178
+	 *
179
+	 * @return int
180
+	 */
181
+	abstract protected function _keyLength(): int;
182
+
183
+	/**
184
+	 * Get key wrapping algoritym.
185
+	 *
186
+	 * @return AESKeyWrapAlgorithm
187
+	 */
188
+	abstract protected function _kwAlgo(): AESKeyWrapAlgorithm;
189
+
190
+	/**
191
+	 * Get derived key.
192
+	 *
193
+	 * @return string
194
+	 */
195
+	protected function _derivedKey(): string
196
+	{
197
+		if (!isset($this->_derivedKey)) {
198
+			$this->_derivedKey = hash_pbkdf2($this->_hashAlgo(),
199
+				$this->_password, $this->salt(), $this->_count,
200
+				$this->_keyLength(), true);
201
+		}
202
+		return $this->_derivedKey;
203
+	}
204
+
205
+	/**
206
+	 * {@inheritdoc}
207
+	 */
208
+	protected function _encryptKey(string $key, Header &$header): string
209
+	{
210
+		return $this->_kwAlgo()->wrap($key, $this->_derivedKey());
211
+	}
212
+
213
+	/**
214
+	 * {@inheritdoc}
215
+	 */
216
+	protected function _decryptKey(string $ciphertext, Header $header): string
217
+	{
218
+		return $this->_kwAlgo()->unwrap($ciphertext, $this->_derivedKey());
219
+	}
220 220
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types = 1);
3
+declare(strict_types=1);
4 4
 
5 5
 namespace Sop\JWX\JWE\KeyAlgorithm;
6 6
 
Please login to merge, or discard this patch.
lib/JWX/JWE/KeyAlgorithm/A192GCMKWAlgorithm.php 2 patches
Indentation   +21 added lines, -21 removed lines patch added patch discarded remove patch
@@ -15,27 +15,27 @@
 block discarded – undo
15 15
  */
16 16
 class A192GCMKWAlgorithm extends AESGCMKWAlgorithm
17 17
 {
18
-    /**
19
-     * {@inheritdoc}
20
-     */
21
-    public function algorithmParamValue(): string
22
-    {
23
-        return JWA::ALGO_A192GCMKW;
24
-    }
18
+	/**
19
+	 * {@inheritdoc}
20
+	 */
21
+	public function algorithmParamValue(): string
22
+	{
23
+		return JWA::ALGO_A192GCMKW;
24
+	}
25 25
 
26
-    /**
27
-     * {@inheritdoc}
28
-     */
29
-    protected function _getGCMCipher(): Cipher
30
-    {
31
-        return new AES192Cipher();
32
-    }
26
+	/**
27
+	 * {@inheritdoc}
28
+	 */
29
+	protected function _getGCMCipher(): Cipher
30
+	{
31
+		return new AES192Cipher();
32
+	}
33 33
 
34
-    /**
35
-     * {@inheritdoc}
36
-     */
37
-    protected function _keySize(): int
38
-    {
39
-        return 24;
40
-    }
34
+	/**
35
+	 * {@inheritdoc}
36
+	 */
37
+	protected function _keySize(): int
38
+	{
39
+		return 24;
40
+	}
41 41
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types = 1);
3
+declare(strict_types=1);
4 4
 
5 5
 namespace Sop\JWX\JWE\KeyAlgorithm;
6 6
 
Please login to merge, or discard this patch.
lib/JWX/JWE/KeyAlgorithm/PBES2HS256A128KWAlgorithm.php 2 patches
Indentation   +28 added lines, -28 removed lines patch added patch discarded remove patch
@@ -15,35 +15,35 @@
 block discarded – undo
15 15
  */
16 16
 class PBES2HS256A128KWAlgorithm extends PBES2Algorithm
17 17
 {
18
-    /**
19
-     * {@inheritdoc}
20
-     */
21
-    public function algorithmParamValue(): string
22
-    {
23
-        return JWA::ALGO_PBES2_HS256_A128KW;
24
-    }
18
+	/**
19
+	 * {@inheritdoc}
20
+	 */
21
+	public function algorithmParamValue(): string
22
+	{
23
+		return JWA::ALGO_PBES2_HS256_A128KW;
24
+	}
25 25
 
26
-    /**
27
-     * {@inheritdoc}
28
-     */
29
-    protected function _hashAlgo(): string
30
-    {
31
-        return 'sha256';
32
-    }
26
+	/**
27
+	 * {@inheritdoc}
28
+	 */
29
+	protected function _hashAlgo(): string
30
+	{
31
+		return 'sha256';
32
+	}
33 33
 
34
-    /**
35
-     * {@inheritdoc}
36
-     */
37
-    protected function _keyLength(): int
38
-    {
39
-        return 16;
40
-    }
34
+	/**
35
+	 * {@inheritdoc}
36
+	 */
37
+	protected function _keyLength(): int
38
+	{
39
+		return 16;
40
+	}
41 41
 
42
-    /**
43
-     * {@inheritdoc}
44
-     */
45
-    protected function _kwAlgo(): AESKeyWrapAlgorithm
46
-    {
47
-        return new AESKW128();
48
-    }
42
+	/**
43
+	 * {@inheritdoc}
44
+	 */
45
+	protected function _kwAlgo(): AESKeyWrapAlgorithm
46
+	{
47
+		return new AESKW128();
48
+	}
49 49
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types = 1);
3
+declare(strict_types=1);
4 4
 
5 5
 namespace Sop\JWX\JWE\KeyAlgorithm;
6 6
 
Please login to merge, or discard this patch.
lib/JWX/JWE/KeyAlgorithm/Feature/RandomCEK.php 2 patches
Indentation   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -9,21 +9,21 @@
 block discarded – undo
9 9
  */
10 10
 trait RandomCEK
11 11
 {
12
-    /**
13
-     * Generate a random content encryption key.
14
-     *
15
-     * @param int $length Key length in bytes
16
-     *
17
-     * @throws \RuntimeException
18
-     *
19
-     * @return string
20
-     */
21
-    public function cekForEncryption(int $length): string
22
-    {
23
-        $ret = openssl_random_pseudo_bytes($length);
24
-        if (false === $ret) {
25
-            throw new \RuntimeException('openssl_random_pseudo_bytes() failed.');
26
-        }
27
-        return $ret;
28
-    }
12
+	/**
13
+	 * Generate a random content encryption key.
14
+	 *
15
+	 * @param int $length Key length in bytes
16
+	 *
17
+	 * @throws \RuntimeException
18
+	 *
19
+	 * @return string
20
+	 */
21
+	public function cekForEncryption(int $length): string
22
+	{
23
+		$ret = openssl_random_pseudo_bytes($length);
24
+		if (false === $ret) {
25
+			throw new \RuntimeException('openssl_random_pseudo_bytes() failed.');
26
+		}
27
+		return $ret;
28
+	}
29 29
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types = 1);
3
+declare(strict_types=1);
4 4
 
5 5
 namespace Sop\JWX\JWE\KeyAlgorithm\Feature;
6 6
 
Please login to merge, or discard this patch.
lib/JWX/JWE/KeyAlgorithm/AESGCMKWAlgorithm.php 2 patches
Indentation   +161 added lines, -161 removed lines patch added patch discarded remove patch
@@ -23,165 +23,165 @@
 block discarded – undo
23 23
  */
24 24
 abstract class AESGCMKWAlgorithm extends KeyManagementAlgorithm
25 25
 {
26
-    use RandomCEK;
27
-
28
-    /**
29
-     * Mapping from algorithm name to class name.
30
-     *
31
-     * @internal
32
-     *
33
-     * @var array
34
-     */
35
-    const MAP_ALGO_TO_CLASS = [
36
-        JWA::ALGO_A128GCMKW => A128GCMKWAlgorithm::class,
37
-        JWA::ALGO_A192GCMKW => A192GCMKWAlgorithm::class,
38
-        JWA::ALGO_A256GCMKW => A256GCMKWAlgorithm::class,
39
-    ];
40
-
41
-    /**
42
-     * Required IV size in bytes.
43
-     *
44
-     * @var int
45
-     */
46
-    const IV_SIZE = 12;
47
-
48
-    /**
49
-     * Authentication tag size in bytes.
50
-     *
51
-     * @var int
52
-     */
53
-    const AUTH_TAG_SIZE = 16;
54
-
55
-    /**
56
-     * Key encryption key.
57
-     *
58
-     * @var string
59
-     */
60
-    protected $_kek;
61
-
62
-    /**
63
-     * Initialization vector.
64
-     *
65
-     * @var string
66
-     */
67
-    protected $_iv;
68
-
69
-    /**
70
-     * Constructor.
71
-     *
72
-     * @param string $kek Key encryption key
73
-     * @param string $iv  Initialization vector
74
-     */
75
-    public function __construct(string $kek, string $iv)
76
-    {
77
-        if (strlen($kek) !== $this->_keySize()) {
78
-            throw new \LengthException('Invalid key size.');
79
-        }
80
-        if (self::IV_SIZE !== strlen($iv)) {
81
-            throw new \LengthException('Initialization vector must be 96 bits.');
82
-        }
83
-        $this->_kek = $kek;
84
-        $this->_iv = $iv;
85
-    }
86
-
87
-    /**
88
-     * Initialize from JWK.
89
-     *
90
-     * @param JWK    $jwk
91
-     * @param Header $header
92
-     *
93
-     * @throws \UnexpectedValueException
94
-     *
95
-     * @return self
96
-     */
97
-    public static function fromJWK(JWK $jwk, Header $header): KeyManagementAlgorithm
98
-    {
99
-        $jwk = SymmetricKeyJWK::fromJWK($jwk);
100
-        if (!$header->hasInitializationVector()) {
101
-            throw new \UnexpectedValueException('No initialization vector.');
102
-        }
103
-        $iv = $header->initializationVector()->initializationVector();
104
-        $alg = JWA::deriveAlgorithmName($header, $jwk);
105
-        if (!array_key_exists($alg, self::MAP_ALGO_TO_CLASS)) {
106
-            throw new \UnexpectedValueException("Unsupported algorithm '{$alg}'.");
107
-        }
108
-        $cls = self::MAP_ALGO_TO_CLASS[$alg];
109
-        return new $cls($jwk->key(), $iv);
110
-    }
111
-
112
-    /**
113
-     * Initialize from key encryption key with random IV.
114
-     *
115
-     * Key size must match the underlying cipher.
116
-     *
117
-     * @param string $key Key encryption key
118
-     *
119
-     * @return self
120
-     */
121
-    public static function fromKey(string $key): self
122
-    {
123
-        $iv = openssl_random_pseudo_bytes(self::IV_SIZE);
124
-        return new static($key, $iv);
125
-    }
126
-
127
-    /**
128
-     * {@inheritdoc}
129
-     */
130
-    public function headerParameters(): array
131
-    {
132
-        return array_merge(parent::headerParameters(),
133
-            [AlgorithmParameter::fromAlgorithm($this),
134
-                InitializationVectorParameter::fromString($this->_iv), ]);
135
-    }
136
-
137
-    /**
138
-     * Get GCM Cipher instance.
139
-     *
140
-     * @return Cipher
141
-     */
142
-    abstract protected function _getGCMCipher(): Cipher;
143
-
144
-    /**
145
-     * Get the required key size.
146
-     *
147
-     * @return int
148
-     */
149
-    abstract protected function _keySize(): int;
150
-
151
-    /**
152
-     * Get GCM instance.
153
-     *
154
-     * @return GCM
155
-     */
156
-    final protected function _getGCM(): GCM
157
-    {
158
-        return new GCM($this->_getGCMCipher(), self::AUTH_TAG_SIZE);
159
-    }
160
-
161
-    /**
162
-     * {@inheritdoc}
163
-     */
164
-    protected function _encryptKey(string $key, Header &$header): string
165
-    {
166
-        [$ciphertext, $auth_tag] = $this->_getGCM()
167
-            ->encrypt($key, '', $this->_kek, $this->_iv);
168
-        // insert authentication tag to the header
169
-        $header = $header->withParameters(
170
-            AuthenticationTagParameter::fromString($auth_tag));
171
-        return $ciphertext;
172
-    }
173
-
174
-    /**
175
-     * {@inheritdoc}
176
-     */
177
-    protected function _decryptKey(string $ciphertext, Header $header): string
178
-    {
179
-        if (!$header->hasAuthenticationTag()) {
180
-            throw new \RuntimeException(
181
-                "Header doesn't contain authentication tag.");
182
-        }
183
-        $auth_tag = $header->authenticationTag()->authenticationTag();
184
-        return $this->_getGCM()
185
-            ->decrypt($ciphertext, $auth_tag, '', $this->_kek, $this->_iv);
186
-    }
26
+	use RandomCEK;
27
+
28
+	/**
29
+	 * Mapping from algorithm name to class name.
30
+	 *
31
+	 * @internal
32
+	 *
33
+	 * @var array
34
+	 */
35
+	const MAP_ALGO_TO_CLASS = [
36
+		JWA::ALGO_A128GCMKW => A128GCMKWAlgorithm::class,
37
+		JWA::ALGO_A192GCMKW => A192GCMKWAlgorithm::class,
38
+		JWA::ALGO_A256GCMKW => A256GCMKWAlgorithm::class,
39
+	];
40
+
41
+	/**
42
+	 * Required IV size in bytes.
43
+	 *
44
+	 * @var int
45
+	 */
46
+	const IV_SIZE = 12;
47
+
48
+	/**
49
+	 * Authentication tag size in bytes.
50
+	 *
51
+	 * @var int
52
+	 */
53
+	const AUTH_TAG_SIZE = 16;
54
+
55
+	/**
56
+	 * Key encryption key.
57
+	 *
58
+	 * @var string
59
+	 */
60
+	protected $_kek;
61
+
62
+	/**
63
+	 * Initialization vector.
64
+	 *
65
+	 * @var string
66
+	 */
67
+	protected $_iv;
68
+
69
+	/**
70
+	 * Constructor.
71
+	 *
72
+	 * @param string $kek Key encryption key
73
+	 * @param string $iv  Initialization vector
74
+	 */
75
+	public function __construct(string $kek, string $iv)
76
+	{
77
+		if (strlen($kek) !== $this->_keySize()) {
78
+			throw new \LengthException('Invalid key size.');
79
+		}
80
+		if (self::IV_SIZE !== strlen($iv)) {
81
+			throw new \LengthException('Initialization vector must be 96 bits.');
82
+		}
83
+		$this->_kek = $kek;
84
+		$this->_iv = $iv;
85
+	}
86
+
87
+	/**
88
+	 * Initialize from JWK.
89
+	 *
90
+	 * @param JWK    $jwk
91
+	 * @param Header $header
92
+	 *
93
+	 * @throws \UnexpectedValueException
94
+	 *
95
+	 * @return self
96
+	 */
97
+	public static function fromJWK(JWK $jwk, Header $header): KeyManagementAlgorithm
98
+	{
99
+		$jwk = SymmetricKeyJWK::fromJWK($jwk);
100
+		if (!$header->hasInitializationVector()) {
101
+			throw new \UnexpectedValueException('No initialization vector.');
102
+		}
103
+		$iv = $header->initializationVector()->initializationVector();
104
+		$alg = JWA::deriveAlgorithmName($header, $jwk);
105
+		if (!array_key_exists($alg, self::MAP_ALGO_TO_CLASS)) {
106
+			throw new \UnexpectedValueException("Unsupported algorithm '{$alg}'.");
107
+		}
108
+		$cls = self::MAP_ALGO_TO_CLASS[$alg];
109
+		return new $cls($jwk->key(), $iv);
110
+	}
111
+
112
+	/**
113
+	 * Initialize from key encryption key with random IV.
114
+	 *
115
+	 * Key size must match the underlying cipher.
116
+	 *
117
+	 * @param string $key Key encryption key
118
+	 *
119
+	 * @return self
120
+	 */
121
+	public static function fromKey(string $key): self
122
+	{
123
+		$iv = openssl_random_pseudo_bytes(self::IV_SIZE);
124
+		return new static($key, $iv);
125
+	}
126
+
127
+	/**
128
+	 * {@inheritdoc}
129
+	 */
130
+	public function headerParameters(): array
131
+	{
132
+		return array_merge(parent::headerParameters(),
133
+			[AlgorithmParameter::fromAlgorithm($this),
134
+				InitializationVectorParameter::fromString($this->_iv), ]);
135
+	}
136
+
137
+	/**
138
+	 * Get GCM Cipher instance.
139
+	 *
140
+	 * @return Cipher
141
+	 */
142
+	abstract protected function _getGCMCipher(): Cipher;
143
+
144
+	/**
145
+	 * Get the required key size.
146
+	 *
147
+	 * @return int
148
+	 */
149
+	abstract protected function _keySize(): int;
150
+
151
+	/**
152
+	 * Get GCM instance.
153
+	 *
154
+	 * @return GCM
155
+	 */
156
+	final protected function _getGCM(): GCM
157
+	{
158
+		return new GCM($this->_getGCMCipher(), self::AUTH_TAG_SIZE);
159
+	}
160
+
161
+	/**
162
+	 * {@inheritdoc}
163
+	 */
164
+	protected function _encryptKey(string $key, Header &$header): string
165
+	{
166
+		[$ciphertext, $auth_tag] = $this->_getGCM()
167
+			->encrypt($key, '', $this->_kek, $this->_iv);
168
+		// insert authentication tag to the header
169
+		$header = $header->withParameters(
170
+			AuthenticationTagParameter::fromString($auth_tag));
171
+		return $ciphertext;
172
+	}
173
+
174
+	/**
175
+	 * {@inheritdoc}
176
+	 */
177
+	protected function _decryptKey(string $ciphertext, Header $header): string
178
+	{
179
+		if (!$header->hasAuthenticationTag()) {
180
+			throw new \RuntimeException(
181
+				"Header doesn't contain authentication tag.");
182
+		}
183
+		$auth_tag = $header->authenticationTag()->authenticationTag();
184
+		return $this->_getGCM()
185
+			->decrypt($ciphertext, $auth_tag, '', $this->_kek, $this->_iv);
186
+	}
187 187
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types = 1);
3
+declare(strict_types=1);
4 4
 
5 5
 namespace Sop\JWX\JWE\KeyAlgorithm;
6 6
 
Please login to merge, or discard this patch.
lib/JWX/JWE/KeyAlgorithm/A128KWAlgorithm.php 2 patches
Indentation   +21 added lines, -21 removed lines patch added patch discarded remove patch
@@ -15,27 +15,27 @@
 block discarded – undo
15 15
  */
16 16
 class A128KWAlgorithm extends AESKWAlgorithm
17 17
 {
18
-    /**
19
-     * {@inheritdoc}
20
-     */
21
-    public function algorithmParamValue(): string
22
-    {
23
-        return JWA::ALGO_A128KW;
24
-    }
18
+	/**
19
+	 * {@inheritdoc}
20
+	 */
21
+	public function algorithmParamValue(): string
22
+	{
23
+		return JWA::ALGO_A128KW;
24
+	}
25 25
 
26
-    /**
27
-     * {@inheritdoc}
28
-     */
29
-    protected function _kekSize(): int
30
-    {
31
-        return 16;
32
-    }
26
+	/**
27
+	 * {@inheritdoc}
28
+	 */
29
+	protected function _kekSize(): int
30
+	{
31
+		return 16;
32
+	}
33 33
 
34
-    /**
35
-     * {@inheritdoc}
36
-     */
37
-    protected function _AESKWAlgo(): AESKeyWrapAlgorithm
38
-    {
39
-        return new AESKW128();
40
-    }
34
+	/**
35
+	 * {@inheritdoc}
36
+	 */
37
+	protected function _AESKWAlgo(): AESKeyWrapAlgorithm
38
+	{
39
+		return new AESKW128();
40
+	}
41 41
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types = 1);
3
+declare(strict_types=1);
4 4
 
5 5
 namespace Sop\JWX\JWE\KeyAlgorithm;
6 6
 
Please login to merge, or discard this patch.
lib/JWX/JWE/KeyAlgorithm/AESKWAlgorithm.php 2 patches
Indentation   +106 added lines, -106 removed lines patch added patch discarded remove patch
@@ -20,121 +20,121 @@
 block discarded – undo
20 20
  */
21 21
 abstract class AESKWAlgorithm extends KeyManagementAlgorithm
22 22
 {
23
-    use RandomCEK;
23
+	use RandomCEK;
24 24
 
25
-    /**
26
-     * Mapping from algorithm name to class name.
27
-     *
28
-     * @internal
29
-     *
30
-     * @var array
31
-     */
32
-    const MAP_ALGO_TO_CLASS = [
33
-        JWA::ALGO_A128KW => A128KWAlgorithm::class,
34
-        JWA::ALGO_A192KW => A192KWAlgorithm::class,
35
-        JWA::ALGO_A256KW => A256KWAlgorithm::class,
36
-    ];
25
+	/**
26
+	 * Mapping from algorithm name to class name.
27
+	 *
28
+	 * @internal
29
+	 *
30
+	 * @var array
31
+	 */
32
+	const MAP_ALGO_TO_CLASS = [
33
+		JWA::ALGO_A128KW => A128KWAlgorithm::class,
34
+		JWA::ALGO_A192KW => A192KWAlgorithm::class,
35
+		JWA::ALGO_A256KW => A256KWAlgorithm::class,
36
+	];
37 37
 
38
-    /**
39
-     * Key encryption key.
40
-     *
41
-     * @var string
42
-     */
43
-    protected $_kek;
38
+	/**
39
+	 * Key encryption key.
40
+	 *
41
+	 * @var string
42
+	 */
43
+	protected $_kek;
44 44
 
45
-    /**
46
-     * Key wrapping algorithm.
47
-     *
48
-     * Lazily initialized.
49
-     *
50
-     * @var null|AESKeyWrapAlgorithm
51
-     */
52
-    protected $_kw;
45
+	/**
46
+	 * Key wrapping algorithm.
47
+	 *
48
+	 * Lazily initialized.
49
+	 *
50
+	 * @var null|AESKeyWrapAlgorithm
51
+	 */
52
+	protected $_kw;
53 53
 
54
-    /**
55
-     * Constructor.
56
-     *
57
-     * @param string $kek Key encryption key
58
-     */
59
-    public function __construct(string $kek)
60
-    {
61
-        if (strlen($kek) !== $this->_kekSize()) {
62
-            throw new \LengthException(
63
-                'Key encryption key must be ' . $this->_kekSize() . ' bytes.');
64
-        }
65
-        $this->_kek = $kek;
66
-    }
54
+	/**
55
+	 * Constructor.
56
+	 *
57
+	 * @param string $kek Key encryption key
58
+	 */
59
+	public function __construct(string $kek)
60
+	{
61
+		if (strlen($kek) !== $this->_kekSize()) {
62
+			throw new \LengthException(
63
+				'Key encryption key must be ' . $this->_kekSize() . ' bytes.');
64
+		}
65
+		$this->_kek = $kek;
66
+	}
67 67
 
68
-    /**
69
-     * Initialize from JWK.
70
-     *
71
-     * @param JWK    $jwk
72
-     * @param Header $header
73
-     *
74
-     * @throws \UnexpectedValueException
75
-     *
76
-     * @return self
77
-     */
78
-    public static function fromJWK(JWK $jwk, Header $header): KeyManagementAlgorithm
79
-    {
80
-        $jwk = SymmetricKeyJWK::fromJWK($jwk);
81
-        $alg = JWA::deriveAlgorithmName($header, $jwk);
82
-        if (!array_key_exists($alg, self::MAP_ALGO_TO_CLASS)) {
83
-            throw new \UnexpectedValueException("Unsupported algorithm '{$alg}'.");
84
-        }
85
-        $cls = self::MAP_ALGO_TO_CLASS[$alg];
86
-        return new $cls($jwk->key());
87
-    }
68
+	/**
69
+	 * Initialize from JWK.
70
+	 *
71
+	 * @param JWK    $jwk
72
+	 * @param Header $header
73
+	 *
74
+	 * @throws \UnexpectedValueException
75
+	 *
76
+	 * @return self
77
+	 */
78
+	public static function fromJWK(JWK $jwk, Header $header): KeyManagementAlgorithm
79
+	{
80
+		$jwk = SymmetricKeyJWK::fromJWK($jwk);
81
+		$alg = JWA::deriveAlgorithmName($header, $jwk);
82
+		if (!array_key_exists($alg, self::MAP_ALGO_TO_CLASS)) {
83
+			throw new \UnexpectedValueException("Unsupported algorithm '{$alg}'.");
84
+		}
85
+		$cls = self::MAP_ALGO_TO_CLASS[$alg];
86
+		return new $cls($jwk->key());
87
+	}
88 88
 
89
-    /**
90
-     * {@inheritdoc}
91
-     */
92
-    public function headerParameters(): array
93
-    {
94
-        return array_merge(parent::headerParameters(),
95
-            [AlgorithmParameter::fromAlgorithm($this)]);
96
-    }
89
+	/**
90
+	 * {@inheritdoc}
91
+	 */
92
+	public function headerParameters(): array
93
+	{
94
+		return array_merge(parent::headerParameters(),
95
+			[AlgorithmParameter::fromAlgorithm($this)]);
96
+	}
97 97
 
98
-    /**
99
-     * Get the size of the key encryption key in bytes.
100
-     *
101
-     * @return int
102
-     */
103
-    abstract protected function _kekSize(): int;
98
+	/**
99
+	 * Get the size of the key encryption key in bytes.
100
+	 *
101
+	 * @return int
102
+	 */
103
+	abstract protected function _kekSize(): int;
104 104
 
105
-    /**
106
-     * Get key wrapping algorithm instance.
107
-     *
108
-     * @return AESKeyWrapAlgorithm
109
-     */
110
-    abstract protected function _AESKWAlgo(): AESKeyWrapAlgorithm;
105
+	/**
106
+	 * Get key wrapping algorithm instance.
107
+	 *
108
+	 * @return AESKeyWrapAlgorithm
109
+	 */
110
+	abstract protected function _AESKWAlgo(): AESKeyWrapAlgorithm;
111 111
 
112
-    /**
113
-     * Get key wrapping algorithm.
114
-     *
115
-     * @return AESKeyWrapAlgorithm
116
-     */
117
-    protected function _kw(): AESKeyWrapAlgorithm
118
-    {
119
-        if (!isset($this->_kw)) {
120
-            $this->_kw = $this->_AESKWAlgo();
121
-        }
122
-        return $this->_kw;
123
-    }
112
+	/**
113
+	 * Get key wrapping algorithm.
114
+	 *
115
+	 * @return AESKeyWrapAlgorithm
116
+	 */
117
+	protected function _kw(): AESKeyWrapAlgorithm
118
+	{
119
+		if (!isset($this->_kw)) {
120
+			$this->_kw = $this->_AESKWAlgo();
121
+		}
122
+		return $this->_kw;
123
+	}
124 124
 
125
-    /**
126
-     * {@inheritdoc}
127
-     */
128
-    protected function _encryptKey(string $key, Header &$header): string
129
-    {
130
-        return $this->_kw()->wrap($key, $this->_kek);
131
-    }
125
+	/**
126
+	 * {@inheritdoc}
127
+	 */
128
+	protected function _encryptKey(string $key, Header &$header): string
129
+	{
130
+		return $this->_kw()->wrap($key, $this->_kek);
131
+	}
132 132
 
133
-    /**
134
-     * {@inheritdoc}
135
-     */
136
-    protected function _decryptKey(string $ciphertext, Header $header): string
137
-    {
138
-        return $this->_kw()->unwrap($ciphertext, $this->_kek);
139
-    }
133
+	/**
134
+	 * {@inheritdoc}
135
+	 */
136
+	protected function _decryptKey(string $ciphertext, Header $header): string
137
+	{
138
+		return $this->_kw()->unwrap($ciphertext, $this->_kek);
139
+	}
140 140
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types = 1);
3
+declare(strict_types=1);
4 4
 
5 5
 namespace Sop\JWX\JWE\KeyAlgorithm;
6 6
 
Please login to merge, or discard this patch.