@@ -190,28 +190,17 @@ func RequestPAR(
190190
191191func WaitForCallback (clientConfig ClientConfig , serverConfig ServerConfig , hc * http.Client ) (request Request , err error ) {
192192 var (
193- srv = http.Server {}
194- redirectURL * url.URL
195- signingKey jose.JSONWebKey
196- encryptionKey jose.JSONWebKey
197- done = make (chan struct {})
193+ srv = http.Server {}
194+ redirectURL * url.URL
195+ done = make (chan struct {})
198196 )
199197
200198 if redirectURL , err = url .Parse (clientConfig .RedirectURL ); err != nil {
201199 return request , errors .Wrapf (err , "failed to parse redirect url: %s" , clientConfig .RedirectURL )
202200 }
203201
204- if signingKey , err = ReadKey (SigningKey , serverConfig .JWKsURI , hc ); err != nil {
205- return request , errors .Wrapf (err , "failed to read signing key from %s" , serverConfig .JWKsURI )
206- }
207-
208- if clientConfig .EncryptionKey != "" {
209- if encryptionKey , err = ReadKey (EncryptionKey , clientConfig .EncryptionKey , hc ); err != nil {
210- return request , errors .Wrapf (err , "failed to read encryption key from %s" , clientConfig .EncryptionKey )
211- }
212- }
213-
214202 srv .Addr = redirectURL .Host
203+
215204 if redirectURL .Path == "" {
216205 redirectURL .Path = "/"
217206 }
@@ -234,9 +223,28 @@ func WaitForCallback(clientConfig ClientConfig, serverConfig ServerConfig, hc *h
234223 request .URL = r .URL
235224 request .Form = r .PostForm
236225
237- if err = request .ParseJARM (signingKey , encryptionKey ); err != nil {
238- log .Fatal (err )
239- return
226+ if request .Get ("response" ) != "" {
227+ var (
228+ signingKey jose.JSONWebKey
229+ encryptionKey jose.JSONWebKey
230+ )
231+
232+ if signingKey , err = ReadKey (SigningKey , serverConfig .JWKsURI , hc ); err != nil {
233+ log .Fatal (err )
234+ return
235+ }
236+
237+ if clientConfig .EncryptionKey != "" {
238+ if encryptionKey , err = ReadKey (EncryptionKey , clientConfig .EncryptionKey , hc ); err != nil {
239+ log .Fatal (err )
240+ return
241+ }
242+ }
243+
244+ if err = request .ParseJARM (signingKey , encryptionKey ); err != nil {
245+ log .Fatal (err )
246+ return
247+ }
240248 }
241249
242250 w .Header ().Add ("Content-Type" , "text/html" )
0 commit comments