88use GuzzleHttp \Client ;
99use Psr \Log \LoggerInterface ;
1010use Psr \SimpleCache \CacheInterface ;
11+ use SimpleSAML \OpenID \Algorithms \AlgorithmManagerDecorator ;
1112use SimpleSAML \OpenID \Algorithms \SignatureAlgorithmBag ;
1213use SimpleSAML \OpenID \Algorithms \SignatureAlgorithmEnum ;
14+ use SimpleSAML \OpenID \Core \Factories \RequestObjectFactory as ConnectRequestObjectFactory ;
1315use SimpleSAML \OpenID \Decorators \CacheDecorator ;
1416use SimpleSAML \OpenID \Decorators \DateIntervalDecorator ;
1517use SimpleSAML \OpenID \Decorators \HttpClientDecorator ;
18+ use SimpleSAML \OpenID \Factories \AlgorithmManagerDecoratorFactory ;
1619use SimpleSAML \OpenID \Factories \CacheDecoratorFactory ;
20+ use SimpleSAML \OpenID \Factories \ClaimFactory ;
1721use SimpleSAML \OpenID \Factories \DateIntervalDecoratorFactory ;
1822use SimpleSAML \OpenID \Factories \HttpClientDecoratorFactory ;
23+ use SimpleSAML \OpenID \Factories \JwsSerializerManagerDecoratorFactory ;
24+ use SimpleSAML \OpenID \Federation \Factories \RequestObjectFactory as FederationRequestObjectFactory ;
25+ use SimpleSAML \OpenID \Jar \Factories \RequestObjectFactory as JarRequestObjectFactory ;
26+ use SimpleSAML \OpenID \Jwks \Factories \JwksDecoratorFactory ;
27+ use SimpleSAML \OpenID \Jws \Factories \JwsDecoratorBuilderFactory ;
28+ use SimpleSAML \OpenID \Jws \Factories \JwsVerifierDecoratorFactory ;
29+ use SimpleSAML \OpenID \Jws \JwsDecoratorBuilder ;
30+ use SimpleSAML \OpenID \Jws \JwsVerifierDecorator ;
31+ use SimpleSAML \OpenID \RequestObject \RequestObjectFactories ;
32+ use SimpleSAML \OpenID \RequestObject \RequestObjectParser ;
1933use SimpleSAML \OpenID \RequestObject \RequestUriFetcher ;
34+ use SimpleSAML \OpenID \Serializers \JwsSerializerManagerDecorator ;
2035use SimpleSAML \OpenID \Utils \ArtifactFetcher ;
2136
2237class RequestObject
@@ -33,6 +48,38 @@ class RequestObject
3348
3449 protected ?CacheDecorator $ cacheDecorator ;
3550
51+ protected ?RequestObjectFactories $ requestObjectFactories = null ;
52+
53+ protected ?RequestObjectParser $ requestObjectParser = null ;
54+
55+ protected ?ConnectRequestObjectFactory $ connectRequestObjectFactory = null ;
56+
57+ protected ?JarRequestObjectFactory $ jarRequestObjectFactory = null ;
58+
59+ protected ?FederationRequestObjectFactory $ federationRequestObjectFactory = null ;
60+
61+ protected ?AlgorithmManagerDecoratorFactory $ algorithmManagerDecoratorFactory = null ;
62+
63+ protected ?AlgorithmManagerDecorator $ algorithmManagerDecorator = null ;
64+
65+ protected ?JwsSerializerManagerDecoratorFactory $ jwsSerializerManagerDecoratorFactory = null ;
66+
67+ protected ?JwsSerializerManagerDecorator $ jwsSerializerManagerDecorator = null ;
68+
69+ protected ?JwsDecoratorBuilderFactory $ jwsDecoratorBuilderFactory = null ;
70+
71+ protected ?JwsDecoratorBuilder $ jwsDecoratorBuilder = null ;
72+
73+ protected ?JwsVerifierDecoratorFactory $ jwsVerifierDecoratorFactory = null ;
74+
75+ protected ?JwsVerifierDecorator $ jwsVerifierDecorator = null ;
76+
77+ protected ?JwksDecoratorFactory $ jwksDecoratorFactory = null ;
78+
79+ protected ?ClaimFactory $ claimFactory = null ;
80+
81+ protected ?Helpers $ helpers = null ;
82+
3683
3784 public function __construct (
3885 protected readonly SupportedAlgorithms $ supportedAlgorithms = new SupportedAlgorithms (
@@ -96,4 +143,148 @@ public function cacheDecorator(): ?CacheDecorator
96143 {
97144 return $ this ->cacheDecorator ;
98145 }
146+
147+
148+ public function requestObjectFactories (): RequestObjectFactories
149+ {
150+ return $ this ->requestObjectFactories ??= new RequestObjectFactories (
151+ $ this ->connectRequestObjectFactory (),
152+ $ this ->jarRequestObjectFactory (),
153+ $ this ->federationRequestObjectFactory (),
154+ );
155+ }
156+
157+
158+ public function requestObjectParser (): RequestObjectParser
159+ {
160+ return $ this ->requestObjectParser ??= new RequestObjectParser (
161+ $ this ->requestObjectFactories (),
162+ $ this ->requestUriFetcher (),
163+ $ this ->logger ,
164+ );
165+ }
166+
167+
168+ public function connectRequestObjectFactory (): ConnectRequestObjectFactory
169+ {
170+ return $ this ->connectRequestObjectFactory ??= new ConnectRequestObjectFactory (
171+ $ this ->jwsDecoratorBuilder (),
172+ $ this ->jwsVerifierDecorator (),
173+ $ this ->jwksDecoratorFactory (),
174+ $ this ->jwsSerializerManagerDecorator (),
175+ $ this ->timestampValidationLeewayDecorator (),
176+ $ this ->helpers (),
177+ $ this ->claimFactory (),
178+ );
179+ }
180+
181+
182+ public function jarRequestObjectFactory (): JarRequestObjectFactory
183+ {
184+ return $ this ->jarRequestObjectFactory ??= new JarRequestObjectFactory (
185+ $ this ->jwsDecoratorBuilder (),
186+ $ this ->jwsVerifierDecorator (),
187+ $ this ->jwksDecoratorFactory (),
188+ $ this ->jwsSerializerManagerDecorator (),
189+ $ this ->timestampValidationLeewayDecorator (),
190+ $ this ->helpers (),
191+ $ this ->claimFactory (),
192+ );
193+ }
194+
195+
196+ public function federationRequestObjectFactory (): FederationRequestObjectFactory
197+ {
198+ return $ this ->federationRequestObjectFactory ??= new FederationRequestObjectFactory (
199+ $ this ->jwsDecoratorBuilder (),
200+ $ this ->jwsVerifierDecorator (),
201+ $ this ->jwksDecoratorFactory (),
202+ $ this ->jwsSerializerManagerDecorator (),
203+ $ this ->timestampValidationLeewayDecorator (),
204+ $ this ->helpers (),
205+ $ this ->claimFactory (),
206+ );
207+ }
208+
209+
210+ public function jwsDecoratorBuilder (): JwsDecoratorBuilder
211+ {
212+ return $ this ->jwsDecoratorBuilder ??= $ this ->jwsDecoratorBuilderFactory ()->build (
213+ $ this ->jwsSerializerManagerDecorator (),
214+ $ this ->algorithmManagerDecorator (),
215+ $ this ->helpers (),
216+ );
217+ }
218+
219+
220+ public function jwsVerifierDecorator (): JwsVerifierDecorator
221+ {
222+ return $ this ->jwsVerifierDecorator ??= $ this ->jwsVerifierDecoratorFactory ()->build (
223+ $ this ->algorithmManagerDecorator (),
224+ );
225+ }
226+
227+
228+ public function jwsSerializerManagerDecorator (): JwsSerializerManagerDecorator
229+ {
230+ return $ this ->jwsSerializerManagerDecorator ??= $ this ->jwsSerializerManagerDecoratorFactory ()
231+ ->build ($ this ->supportedSerializers );
232+ }
233+
234+
235+ public function algorithmManagerDecorator (): AlgorithmManagerDecorator
236+ {
237+ return $ this ->algorithmManagerDecorator ??= $ this ->algorithmManagerDecoratorFactory ()
238+ ->build ($ this ->supportedAlgorithms );
239+ }
240+
241+
242+ public function algorithmManagerDecoratorFactory (): AlgorithmManagerDecoratorFactory
243+ {
244+ return $ this ->algorithmManagerDecoratorFactory ??= new AlgorithmManagerDecoratorFactory ();
245+ }
246+
247+
248+ public function jwsSerializerManagerDecoratorFactory (): JwsSerializerManagerDecoratorFactory
249+ {
250+ return $ this ->jwsSerializerManagerDecoratorFactory ??= new JwsSerializerManagerDecoratorFactory ();
251+ }
252+
253+
254+ public function jwsDecoratorBuilderFactory (): JwsDecoratorBuilderFactory
255+ {
256+ return $ this ->jwsDecoratorBuilderFactory ??= new JwsDecoratorBuilderFactory ();
257+ }
258+
259+
260+ public function jwsVerifierDecoratorFactory (): JwsVerifierDecoratorFactory
261+ {
262+ return $ this ->jwsVerifierDecoratorFactory ??= new JwsVerifierDecoratorFactory ();
263+ }
264+
265+
266+ public function jwksDecoratorFactory (): JwksDecoratorFactory
267+ {
268+ return $ this ->jwksDecoratorFactory ??= new JwksDecoratorFactory ();
269+ }
270+
271+
272+ public function claimFactory (): ClaimFactory
273+ {
274+ return $ this ->claimFactory ??= new ClaimFactory (
275+ $ this ->helpers (),
276+ );
277+ }
278+
279+
280+ public function helpers (): Helpers
281+ {
282+ return $ this ->helpers ??= new Helpers ();
283+ }
284+
285+
286+ public function timestampValidationLeewayDecorator (): DateIntervalDecorator
287+ {
288+ return $ this ->timestampValidationLeewayDecorator ;
289+ }
99290}
0 commit comments