Skip to content

Commit cd826e7

Browse files
committed
Fix ECDH-SS alg and AlgorithmManagerFactory construct method
1 parent 2e0a0aa commit cd826e7

File tree

10 files changed

+100
-82
lines changed

10 files changed

+100
-82
lines changed

src/Library/Core/AlgorithmManagerFactory.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,16 @@ class AlgorithmManagerFactory
1414
{
1515
private array $algorithms = [];
1616

17+
/**
18+
* @param Algorithm[] $algorithms
19+
*/
20+
public function __construct(array $algorithms = [])
21+
{
22+
foreach ($algorithms as $algorithm) {
23+
$this->add($algorithm->name(), $algorithm);
24+
}
25+
}
26+
1727
/**
1828
* Adds an algorithm.
1929
*

src/Library/Encryption/Algorithm/KeyEncryption/AbstractECDH.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,6 @@ public function getAgreementKey(
6262
return ConcatKDF::generate($agreed_key, $algorithm, $encryptionKeyLength, $apu, $apv);
6363
}
6464

65-
public function name(): string
66-
{
67-
return 'ECDH-ES';
68-
}
69-
7065
public function getKeyManagementMode(): string
7166
{
7267
return self::MODE_AGREEMENT;

src/Library/Encryption/Algorithm/KeyEncryption/ECDHES.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,8 @@
66

77
final class ECDHES extends AbstractECDH
88
{
9+
public function name(): string
10+
{
11+
return 'ECDH-ES';
12+
}
913
}

src/Library/Encryption/Algorithm/KeyEncryption/ECDHSS.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99

1010
final class ECDHSS extends AbstractECDH
1111
{
12+
public function name(): string
13+
{
14+
return 'ECDH-SS';
15+
}
16+
1217
/**
1318
* @param array<string, mixed> $complete_header
1419
* @param array<string, mixed> $additional_header_values

tests/Component/Core/AlgorithmManagerFactoryTest.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,7 @@ public function iCannotGetAnAlgorithmThatDoesNotExist(): void
5050
private function getAlgorithmManagerFactory(): AlgorithmManagerFactory
5151
{
5252
if ($this->algorithmManagerFactory === null) {
53-
$this->algorithmManagerFactory = new AlgorithmManagerFactory();
54-
$this->algorithmManagerFactory->add('foo', new FooAlgorithm());
53+
$this->algorithmManagerFactory = new AlgorithmManagerFactory([new FooAlgorithm()]);
5554
}
5655

5756
return $this->algorithmManagerFactory;

tests/Component/Encryption/EncryptionTestCase.php

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -63,34 +63,35 @@ abstract class EncryptionTestCase extends TestCase
6363
protected function getAlgorithmManagerFactory(): AlgorithmManagerFactory
6464
{
6565
if ($this->algorithmManagerFactory === null) {
66-
$this->algorithmManagerFactory = new AlgorithmManagerFactory();
67-
$this->algorithmManagerFactory->add('A128GCM', new A128GCM());
68-
$this->algorithmManagerFactory->add('A192GCM', new A192GCM());
69-
$this->algorithmManagerFactory->add('A256GCM', new A256GCM());
70-
$this->algorithmManagerFactory->add('A128CBC-HS256', new A128CBCHS256());
71-
$this->algorithmManagerFactory->add('A192CBC-HS384', new A192CBCHS384());
72-
$this->algorithmManagerFactory->add('A256CBC-HS512', new A256CBCHS512());
73-
$this->algorithmManagerFactory->add('A128GCMKW', new A128GCMKW());
74-
$this->algorithmManagerFactory->add('A192GCMKW', new A192GCMKW());
75-
$this->algorithmManagerFactory->add('A256GCMKW', new A256GCMKW());
76-
$this->algorithmManagerFactory->add('A128KW', new A128KW());
77-
$this->algorithmManagerFactory->add('A192KW', new A192KW());
78-
$this->algorithmManagerFactory->add('A256KW', new A256KW());
79-
$this->algorithmManagerFactory->add('dir', new Dir());
80-
$this->algorithmManagerFactory->add('ECDH-ES', new ECDHES());
81-
$this->algorithmManagerFactory->add('ECDH-ES+A128KW', new ECDHESA128KW());
82-
$this->algorithmManagerFactory->add('ECDH-ES+A192KW', new ECDHESA192KW());
83-
$this->algorithmManagerFactory->add('ECDH-ES+A256KW', new ECDHESA256KW());
84-
$this->algorithmManagerFactory->add('ECDH-SS', new ECDHSS());
85-
$this->algorithmManagerFactory->add('ECDH-SS+A128KW', new ECDHSSA128KW());
86-
$this->algorithmManagerFactory->add('ECDH-SS+A192KW', new ECDHSSA192KW());
87-
$this->algorithmManagerFactory->add('ECDH-SS+A256KW', new ECDHSSA256KW());
88-
$this->algorithmManagerFactory->add('PBES2-HS256+A128KW', new PBES2HS256A128KW());
89-
$this->algorithmManagerFactory->add('PBES2-HS384+A192KW', new PBES2HS384A192KW());
90-
$this->algorithmManagerFactory->add('PBES2-HS512+A256KW', new PBES2HS512A256KW());
91-
$this->algorithmManagerFactory->add('RSA1_5', new RSA15());
92-
$this->algorithmManagerFactory->add('RSA-OAEP', new RSAOAEP());
93-
$this->algorithmManagerFactory->add('RSA-OAEP-256', new RSAOAEP256());
66+
$this->algorithmManagerFactory = new AlgorithmManagerFactory([
67+
new A128GCM(),
68+
new A192GCM(),
69+
new A256GCM(),
70+
new A128CBCHS256(),
71+
new A192CBCHS384(),
72+
new A256CBCHS512(),
73+
new A128GCMKW(),
74+
new A192GCMKW(),
75+
new A256GCMKW(),
76+
new A128KW(),
77+
new A192KW(),
78+
new A256KW(),
79+
new Dir(),
80+
new ECDHES(),
81+
new ECDHESA128KW(),
82+
new ECDHESA192KW(),
83+
new ECDHESA256KW(),
84+
new ECDHSS(),
85+
new ECDHSSA128KW(),
86+
new ECDHSSA192KW(),
87+
new ECDHSSA256KW(),
88+
new PBES2HS256A128KW(),
89+
new PBES2HS384A192KW(),
90+
new PBES2HS512A256KW(),
91+
new RSA15(),
92+
new RSAOAEP(),
93+
new RSAOAEP256(),
94+
]);
9495
}
9596

9697
return $this->algorithmManagerFactory;

tests/Component/NestedToken/NestedTokenTestCase.php

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -59,30 +59,31 @@ abstract class NestedTokenTestCase extends TestCase
5959
protected function getAlgorithmManagerFactory(): AlgorithmManagerFactory
6060
{
6161
if ($this->algorithmManagerFactory === null) {
62-
$this->algorithmManagerFactory = new AlgorithmManagerFactory();
63-
$this->algorithmManagerFactory->add('A128GCM', new A128GCM());
64-
$this->algorithmManagerFactory->add('A192GCM', new A192GCM());
65-
$this->algorithmManagerFactory->add('A256GCM', new A256GCM());
66-
$this->algorithmManagerFactory->add('A128CBC-HS256', new A128CBCHS256());
67-
$this->algorithmManagerFactory->add('A192CBC-HS384', new A192CBCHS384());
68-
$this->algorithmManagerFactory->add('A256CBC-HS512', new A256CBCHS512());
69-
$this->algorithmManagerFactory->add('A128GCMKW', new A128GCMKW());
70-
$this->algorithmManagerFactory->add('A192GCMKW', new A192GCMKW());
71-
$this->algorithmManagerFactory->add('A256GCMKW', new A256GCMKW());
72-
$this->algorithmManagerFactory->add('A128KW', new A128KW());
73-
$this->algorithmManagerFactory->add('A192KW', new A192KW());
74-
$this->algorithmManagerFactory->add('A256KW', new A256KW());
75-
$this->algorithmManagerFactory->add('dir', new Dir());
76-
$this->algorithmManagerFactory->add('ECDH-ES', new ECDHES());
77-
$this->algorithmManagerFactory->add('ECDH-ES+A128KW', new ECDHESA128KW());
78-
$this->algorithmManagerFactory->add('ECDH-ES+A192KW', new ECDHESA192KW());
79-
$this->algorithmManagerFactory->add('ECDH-ES+A256KW', new ECDHESA256KW());
80-
$this->algorithmManagerFactory->add('PBES2-HS256+A128KW', new PBES2HS256A128KW());
81-
$this->algorithmManagerFactory->add('PBES2-HS384+A192KW', new PBES2HS384A192KW());
82-
$this->algorithmManagerFactory->add('PBES2-HS512+A256KW', new PBES2HS512A256KW());
83-
$this->algorithmManagerFactory->add('RSA1_5', new RSA15());
84-
$this->algorithmManagerFactory->add('RSA-OAEP', new RSAOAEP());
85-
$this->algorithmManagerFactory->add('RSA-OAEP-256', new RSAOAEP256());
62+
$this->algorithmManagerFactory = new AlgorithmManagerFactory([
63+
new A128GCM(),
64+
new A192GCM(),
65+
new A256GCM(),
66+
new A128CBCHS256(),
67+
new A192CBCHS384(),
68+
new A256CBCHS512(),
69+
new A128GCMKW(),
70+
new A192GCMKW(),
71+
new A256GCMKW(),
72+
new A128KW(),
73+
new A192KW(),
74+
new A256KW(),
75+
new Dir(),
76+
new ECDHES(),
77+
new ECDHESA128KW(),
78+
new ECDHESA192KW(),
79+
new ECDHESA256KW(),
80+
new PBES2HS256A128KW(),
81+
new PBES2HS384A192KW(),
82+
new PBES2HS512A256KW(),
83+
new RSA15(),
84+
new RSAOAEP(),
85+
new RSAOAEP256(),
86+
]);
8687
}
8788
return $this->algorithmManagerFactory;
8889
}

tests/Component/NestedToken/NestingTokenBuilderTest.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,10 +163,11 @@ private function getJWSSerializerManagerFactory(): JwsSerializer\JWSSerializerMa
163163
private function getAlgorithmManagerFactory(): AlgorithmManagerFactory
164164
{
165165
if ($this->algorithmManagerFactory === null) {
166-
$this->algorithmManagerFactory = new AlgorithmManagerFactory();
167-
$this->algorithmManagerFactory->add('A128GCM', new A128GCM());
168-
$this->algorithmManagerFactory->add('RSA-OAEP', new RSAOAEP());
169-
$this->algorithmManagerFactory->add('PS256', new PS256());
166+
$this->algorithmManagerFactory = new AlgorithmManagerFactory([
167+
new A128GCM(),
168+
new RSAOAEP(),
169+
new PS256(),
170+
]);
170171
}
171172

172173
return $this->algorithmManagerFactory;

tests/Component/NestedToken/NestingTokenUsingNestedTokenLoaderTest.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -203,10 +203,11 @@ private function getJWSVerifierFactory(): JWSVerifierFactory
203203
private function getAlgorithmManagerFactory(): AlgorithmManagerFactory
204204
{
205205
if ($this->algorithmManagerFactory === null) {
206-
$this->algorithmManagerFactory = new AlgorithmManagerFactory();
207-
$this->algorithmManagerFactory->add('A128GCM', new A128GCM());
208-
$this->algorithmManagerFactory->add('RSA-OAEP', new RSAOAEP());
209-
$this->algorithmManagerFactory->add('PS256', new PS256());
206+
$this->algorithmManagerFactory = new AlgorithmManagerFactory([
207+
new A128GCM(),
208+
new RSAOAEP(),
209+
new PS256(),
210+
]);
210211
}
211212

212213
return $this->algorithmManagerFactory;

tests/Component/Signature/SignatureTestCase.php

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,22 @@ abstract class SignatureTestCase extends TestCase
4646
protected function getAlgorithmManagerFactory(): AlgorithmManagerFactory
4747
{
4848
if ($this->algorithmManagerFactory === null) {
49-
$this->algorithmManagerFactory = new AlgorithmManagerFactory();
50-
$this->algorithmManagerFactory->add('HS256', new HS256());
51-
$this->algorithmManagerFactory->add('HS384', new HS384());
52-
$this->algorithmManagerFactory->add('HS512', new HS512());
53-
$this->algorithmManagerFactory->add('ES256', new ES256());
54-
$this->algorithmManagerFactory->add('ES384', new ES384());
55-
$this->algorithmManagerFactory->add('ES512', new ES512());
56-
$this->algorithmManagerFactory->add('RS256', new RS256());
57-
$this->algorithmManagerFactory->add('RS384', new RS384());
58-
$this->algorithmManagerFactory->add('RS512', new RS512());
59-
$this->algorithmManagerFactory->add('PS256', new PS256());
60-
$this->algorithmManagerFactory->add('PS384', new PS384());
61-
$this->algorithmManagerFactory->add('PS512', new PS512());
62-
$this->algorithmManagerFactory->add('none', new None());
63-
$this->algorithmManagerFactory->add('EdDSA', new EdDSA());
49+
$this->algorithmManagerFactory = new AlgorithmManagerFactory([
50+
new HS256(),
51+
new HS384(),
52+
new HS512(),
53+
new ES256(),
54+
new ES384(),
55+
new ES512(),
56+
new RS256(),
57+
new RS384(),
58+
new RS512(),
59+
new PS256(),
60+
new PS384(),
61+
new PS512(),
62+
new None(),
63+
new EdDSA(),
64+
]);
6465
}
6566

6667
return $this->algorithmManagerFactory;

0 commit comments

Comments
 (0)